CoolCMS API

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 <= date and (valid_to IS NULL or valid_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
phpstan-type

VatRateRow array{vatRateId: int, percents: string, validFrom: string, validTo: string|null}

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
string

findRate()

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
Return values
array{vatRateId: int, percents: string, validFrom: string, validTo: string|null}|null
On this page

Search results