Oihana PHP System

HasReceivables

What is owed and late.

The part of a customer's account that is past its due date, read at one date : the amount itself (overdue), the same amount split by how long it has been late (four buckets), the part of it booked on doubtful accounts (doubtful), how late the oldest piece is (daysLate) and how many pieces make it up (numberOfDocuments). Nothing not yet due, nothing settled : a record that carries these figures says what is late, and only that.

๐Ÿ”‘ The four buckets add up to overdue, and nothing else does. A piece sits in exactly one bucket, decided by its due date and the date the figures were read at. On a record read on 22 September :

Vialaret Joinery, read on 22 September :
  overdue1To30.value        3 100    due 21 days ago
  overdue31To60.value           0
  overdue61To90.value       5 400    due 62 days ago
  overdueOver90.value       2 650    due 98 days ago
  overdue.value            11 150    = 3 100 + 0 + 5 400 + 2 650
  doubtful.value            2 650    the oldest piece, booked on a doubtful account
  daysLate.value               98    the oldest due date passed
  numberOfDocuments             3    three pieces past due

โš ๏ธ These figures are a snapshot, not a series. They are true at the date they were read and at no other : a payment recorded the next morning changes every one of them. A new reading replaces the previous one โ€” nothing is ever added across time โ€”, and the date it was read at travels with it, on whatever holds the trait (CustomerReceivables::$observationDate). For the same reason every measure carries a value and never a values : a snapshot has no months.

โš ๏ธ Absent means ยซ nothing of that kind ยป, never zero. A record with no doubtful has nothing booked on a doubtful account ; a record with no daysLate has nothing past due โ€” and then it should not exist at all, since these figures describe what is late. A zero would state that something was measured and found empty.

โš ๏ธ daysLate does not add up. The amounts sum term by term across records โ€” the overdue of a portfolio is the sum of its customers' โ€”, but the days do not : ten customers ninety days late are not nine hundred days late. Whoever summarizes several records takes the largest, or leaves it out, and says which.

The amounts are those of the books, tax included, as the books state them : a salesperson collecting a payment needs the figure the customer actually owes.

They are not among the ten measures of HasTradingMeasures : those describe a year of trade, cut month by month ; this describes a debt at one date, with no month at all. A family composes this trait when it has such a debt 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

$daysLate  : null|array<string|int, mixed>|ObservationSeries
How late the oldest piece past due is, in days, at the date the figures were read.
$doubtful  : null|array<string|int, mixed>|ObservationSeries
The part of {@see HasReceivables::$overdue} booked on doubtful accounts โ€” the pieces the books have moved out of the customer's ordinary account because their recovery is in doubt.
$numberOfDocuments  : null|int
How many pieces past due make up {@see HasReceivables::$overdue}, credit notes included.
$overdue  : null|array<string|int, mixed>|ObservationSeries
What is owed and past its due date, at the date the figures were read : the sum of the balances of the pieces not settled whose due date has passed, credit notes deducted.
$overdue1To30  : null|array<string|int, mixed>|ObservationSeries
The part of {@see HasReceivables::$overdue} due between 1 and 30 days ago.
$overdue31To60  : null|array<string|int, mixed>|ObservationSeries
The part of {@see HasReceivables::$overdue} due between 31 and 60 days ago.
$overdue61To90  : null|array<string|int, mixed>|ObservationSeries
The part of {@see HasReceivables::$overdue} due between 61 and 90 days ago.
$overdueOver90  : null|array<string|int, mixed>|ObservationSeries
The part of {@see HasReceivables::$overdue} due more than 90 days ago.

Properties

$daysLate

How late the oldest piece past due is, in days, at the date the figures were read.

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

One figure for the whole record โ€” the longest wait, not an average โ€”, with the UN/CEFACT day code DAY as its unit. Absent when nothing is past due. A maximum, never a sum : see HasReceivables.

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

$doubtful

The part of {@see HasReceivables::$overdue} booked on doubtful accounts โ€” the pieces the books have moved out of the customer's ordinary account because their recovery is in doubt.

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

A part of overdue, never an addition to it : doubtful โ‰ค overdue. Absent when nothing is booked that way.

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

$numberOfDocuments

How many pieces past due make up {@see HasReceivables::$overdue}, credit notes included.

public null|int $numberOfDocuments

A plain count, not a measure : it has no unit and no series, and it adds up across records the way StatisticsSummary::$numberOfItems counts records. It tells one large invoice from fifteen small ones, which are not chased the same way.

Tags
since
1.5.0

$overdue

What is owed and past its due date, at the date the figures were read : the sum of the balances of the pieces not settled whose due date has passed, credit notes deducted.

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

Not what is due later, not what a bill of exchange awaiting acceptance covers, not what is settled. The sum of the four buckets, to the cent.

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

$overdue1To30

The part of {@see HasReceivables::$overdue} due between 1 and 30 days ago.

public null|array<string|int, mixed>|ObservationSeries $overdue1To30
Tags
since
1.5.0
Attributes
#[HydrateAs]
\xyz\oihana\schema\statistics\ObservationSeries::class

$overdue31To60

The part of {@see HasReceivables::$overdue} due between 31 and 60 days ago.

public null|array<string|int, mixed>|ObservationSeries $overdue31To60
Tags
since
1.5.0
Attributes
#[HydrateAs]
\xyz\oihana\schema\statistics\ObservationSeries::class

$overdue61To90

The part of {@see HasReceivables::$overdue} due between 61 and 90 days ago.

public null|array<string|int, mixed>|ObservationSeries $overdue61To90
Tags
since
1.5.0
Attributes
#[HydrateAs]
\xyz\oihana\schema\statistics\ObservationSeries::class

$overdueOver90

The part of {@see HasReceivables::$overdue} due more than 90 days ago.

public null|array<string|int, mixed>|ObservationSeries $overdueOver90
Tags
since
1.5.0
Attributes
#[HydrateAs]
\xyz\oihana\schema\statistics\ObservationSeries::class
On this page

Search results