Oihana PHP System

HasUninvoicedTrade

The trade that is not invoiced yet.

Two stages of a sale that HasTradingMeasures::$revenue cannot see, since it counts what was invoiced : what was delivered and is still to invoice (uninvoicedRevenue), and what is ordered and still to deliver (orderBacklog). Read beside revenue, they tell how the trade of a month stands before its invoices are all out.

🔑 The three never overlap, and that is why they add up. A sale sits in one of them at a time and moves along as it goes — ordered, then delivered, then invoiced. On a record stepped month by month (P1M) :

March, one record :
  revenue.values[2]            12 000   invoiced in March
  uninvoicedRevenue.values[2]   3 500   delivered in March, not invoiced yet
  orderBacklog.values[2]        4 200   ordered, delivery planned in March, not delivered yet

  delivered in March               = 12 000 + 3 500 = 15 500
  delivered or to deliver in March = 15 500 + 4 200 = 19 700

On 2 April, March is invoiced : uninvoicedRevenue.values[2] falls to 0 — or the series goes altogether — and revenue.values[2] rises to 15 500. What was delivered in March has not moved ; it has changed column.

⚠️ Both are transitional. Their amounts are on their way to revenue, and a record whose trade is all invoiced carries no such series at all : absent, not twelve zeros — zeros would state that something was measured and found empty.

⚠️ Both are runs only : values, never value. A total over the year would add months that each stand at a different stage of their invoicing, and read as a figure of the year it is not.

💶 What was delivered and not invoiced has a cost too : uninvoicedCostPrice is to uninvoicedRevenue what HasTradingMeasures::$costPrice is to revenue, so the margin over what was delivered reads from four runs a reader already has :

March, one record :
  revenue.values[2]               12 000   costPrice.values[2]             9 300
  uninvoicedRevenue.values[2]      3 500   uninvoicedCostPrice.values[2]   2 700

  margin over what was delivered in March = ( 12 000 + 3 500 ) − ( 9 300 + 2 700 ) = 3 500

And a purchase cost : uninvoicedPurchaseCost is to uninvoicedRevenue what HasTradingMeasures::$purchaseCost is to revenue, so the margin on the purchase cost reads the same way, from four other runs :

March, one record :
  revenue.values[2]               12 000   purchaseCost.values[2]             9 000
  uninvoicedRevenue.values[2]      3 500   uninvoicedPurchaseCost.values[2]   2 600

  margin on the purchase cost over what was delivered in March = ( 12 000 + 3 500 ) − ( 9 000 + 2 600 ) = 3 900

The backlog has no such series : what is ordered is not delivered yet, and its cost can still move before it is.

They are not among the ten measures of HasTradingMeasures : those hold for every family, while a stage of a sale belongs to the record of whoever made it. A family composes this trait when it has such stages to carry.

A property is typed null|array|ObservationSeries for the same reason as the ten measures : the union names a single class, so Reflection::hydrate() resolves a stored row on its own.

Tags
author

Marc Alcaraz (eKameleon)

since
1.5.0

Table of Contents

Properties

$orderBacklog  : null|array<string|int, mixed>|ObservationSeries
What is ordered and not yet delivered, filed under the month the delivery is planned for.
$uninvoicedCostPrice  : null|array<string|int, mixed>|ObservationSeries
The cost price of what was delivered and not yet invoiced, month by month — the cost of {@see HasUninvoicedTrade::$uninvoicedRevenue}, filed under the same month.
$uninvoicedPurchaseCost  : null|array<string|int, mixed>|ObservationSeries
The purchase cost of what was delivered and not yet invoiced, month by month — the purchase cost of {@see HasUninvoicedTrade::$uninvoicedRevenue}, filed under the same month.
$uninvoicedRevenue  : null|array<string|int, mixed>|ObservationSeries
What was delivered and not yet invoiced, month by month.

Properties

$orderBacklog

What is ordered and not yet delivered, filed under the month the delivery is planned for.

public null|array<string|int, mixed>|ObservationSeries $orderBacklog

Not a revenue : nothing of it is delivered, and a planned date can move. Not the quotes either : an order is an offer the customer has accepted. A month may lie in the future — the backlog is the trade still to come — and a past month may still hold some : a delivery planned for it that has not happened.

Transitional, and a run only — see HasUninvoicedTrade.

Tags
since
1.5.0
Attributes
#[HydrateAs]
\xyz\oihana\schema\statistics\ObservationSeries::class

$uninvoicedCostPrice

The cost price of what was delivered and not yet invoiced, month by month — the cost of {@see HasUninvoicedTrade::$uninvoicedRevenue}, filed under the same month.

public null|array<string|int, mixed>|ObservationSeries $uninvoicedCostPrice

Read beside HasTradingMeasures::$costPrice as uninvoicedRevenue is read beside revenue : the two never overlap, and what was delivered in a month cost their sum. No margin series goes with it — a reader subtracts the two runs it already has.

⚠️ Absent is not zero. A record may carry uninvoicedRevenue without its cost, when its source cannot price what was delivered. A reader then has no margin to show for that record : reading the missing cost as zero would turn the whole revenue into margin.

Transitional, and a run only — see HasUninvoicedTrade.

Tags
since
1.5.0
Attributes
#[HydrateAs]
\xyz\oihana\schema\statistics\ObservationSeries::class

$uninvoicedPurchaseCost

The purchase cost of what was delivered and not yet invoiced, month by month — the purchase cost of {@see HasUninvoicedTrade::$uninvoicedRevenue}, filed under the same month.

public null|array<string|int, mixed>|ObservationSeries $uninvoicedPurchaseCost

Read beside HasTradingMeasures::$purchaseCost as uninvoicedRevenue is read beside revenue : the two never overlap, and what was delivered in a month was bought for their sum. No margin series goes with it — a reader subtracts the two runs it already has.

⚠️ Absent is not zero. A record may carry uninvoicedRevenue without its purchase cost, when its source cannot price what was delivered, or when its reader is not allowed to see a purchase cost. A reader then has no margin on the purchase cost to show for that record : reading the missing cost as zero would turn the whole revenue into margin.

Transitional, and a run only — see HasUninvoicedTrade.

Tags
since
1.5.0
Attributes
#[HydrateAs]
\xyz\oihana\schema\statistics\ObservationSeries::class

$uninvoicedRevenue

What was delivered and not yet invoiced, month by month.

public null|array<string|int, mixed>|ObservationSeries $uninvoicedRevenue

Not the invoiced trade : that is HasTradingMeasures::$revenue, and the two never overlap — what was delivered in a month is their sum. Not what is ordered and still to deliver : that is HasUninvoicedTrade::$orderBacklog.

A transitional run : once the month is invoiced its amounts leave this series for revenue, and a record whose deliveries are all invoiced carries no such series at all — absent, not twelve zeros. A run only : no yearly value.

Tags
since
1.5.0
Attributes
#[HydrateAs]
\xyz\oihana\schema\statistics\ObservationSeries::class
On this page

Search results