VatRateLookup
in package
FinalYes
Pure VAT rate timeline rules (no I/O).
The repository loads every rate row of one supply kind × country; this helper decides:
- findRate(): the newest row with
valid_from <= dateand (valid_to IS NULLorvalid_to >= date); both bounds inclusive; nothing matches =null(never a default), - buildPredecessorValidTo(): the day before a successor rate starts.
Dates are compared as Y-m-d strings, which order lexicographically like dates and avoid
any timezone shift of a DATE column.
Tags
Table of Contents
Methods
- buildPredecessorValidTo() : string
- `valid_to` of the open predecessor when a new rate starts on `$successorValidFrom`.
- findRate() : array{vatRateId: int, percents: string, validFrom: string, validTo: string|null}|null
Methods
buildPredecessorValidTo()
`valid_to` of the open predecessor when a new rate starts on `$successorValidFrom`.
public
buildPredecessorValidTo(DateTimeInterface $successorValidFrom) : string
Parameters
- $successorValidFrom : DateTimeInterface
Return values
stringfindRate()
public
findRate(iterable<string|int, array{vatRateId: int, percents: string, validFrom: string, validTo: string|null}> $rows, DateTimeInterface $date) : array{vatRateId: int, percents: string, validFrom: string, validTo: string|null}|null
Parameters
- $rows : iterable<string|int, array{vatRateId: int, percents: string, validFrom: string, validTo: string|null}>
- $date : DateTimeInterface