Releases: Thiritin/meteric
Releases · Thiritin/meteric
v0.4.0
Immutable
release. Only release title and notes can be modified.
Adds invoice voiding (cancellation) with a charge policy.
New:
- Meteric::voidInvoice($invoice, VoidCharges) cancels an unpaid invoice issued in error. It refuses an invoice with a payment (use a credit note to reverse a paid one). Voiding routes through the driver, so the lexoffice driver voids an unsent draft and refuses a finalized document.
- VoidCharges decides the charges' fate: Keep (default, leave them for a manual re-issue such as a wrong address), Release (return to pending to bill again on the next run), or Discard (void the charges too).
Requires PHP 8.3+, Laravel 12, PostgreSQL.
v0.3.0
Immutable
release. Only release title and notes can be modified.
Adds invoice line grouping and an opt-in consolidated render mode.
New:
- line_group on every charge and invoice line (the owning subscription item id), so a custom invoice driver can group a product with its configurable options and addons. Account-level charges stay null.
- LineKind::isBaseLine() to tell a product's parent line from its option/addon/setup/credit sub-items.
- Opt-in consolidated mode: config('meteric.invoice.line_mode') = itemized (default) or consolidated. Consolidated writes one line per product (amount summed, options/addons as sub-items in the description and in line metadata['items']); totals match the itemized invoice. The lexoffice driver inherits it.
- Custom drivers can render itemized, nested (numbered sub-positions like 1a/1b with their own amount and tax), or consolidated from the same data. Documented under Invoicing.
Requires PHP 8.3+, Laravel 12, PostgreSQL.
v0.2.0
Immutable
release. Only release title and notes can be modified.
Adds orders/checkout, scheduled cancellations, qualified VIES, and a configurable table prefix.
New:
- Qualified VIES check: Meteric::viesCheck() validates an EU VAT id and returns the registered name/address with per-field match flags and a consultation number, for a company-details-mismatch warning and an audit record. Requester defaults from config (METERIC_VIES_REQUESTER_*).
- Orders/checkout: persisted immutable carts (openCheckout) that materialize a subscription and a paid invoice on payment, with expiry and events.
- Scheduled cancellations: cancel now, at period end, or a specific boundary, with a contract notice window (cancel_notice_days), cancellationOptions() for a dropdown, cancellation metadata, and a SubscriptionCancellationScheduled event. Enacted by meteric:run.
- Configurable table prefix: config('meteric.schema.prefix') drives every table name; default meteric_, empty for none.
- Product config validation: invalid downgrade or cancel_notice_days throws on write.
- Configurable options carry a raw value (provisioning) and a display label.
Requires PHP 8.3+, Laravel 12, PostgreSQL.
v0.1.0
Immutable
release. Only release title and notes can be modified.
First release of Meteric, a dynamic billing engine for Laravel hosting systems on PostgreSQL.
Features:
- Subscriptions with anchoring, proration (second precision), trials, pause/resume.
- Plan changes: prorate or defer upgrades; defer, discard, credit, or refund downgrades.
- Scheduled cancellations: immediate, period end, or a specific boundary with a contract notice window.
- Configurable options and addons: tiered/volume pricing, allowance, blocks, caps, and percentage of the base price.
- Usage metering: sum, max, last aggregation, blocks, allowances, in arrears rollup.
- Orders/checkout: persisted immutable carts that materialize a subscription on payment.
- Invoicing with a charge vs invoice guarantee, never negative, plus a Lexware Office (lexoffice) driver.
- Multi jurisdiction tax (database, ibericode VIES, EU, flat).
- Credit notes, consolidated billing, configurable table prefix, the meteric:run billing tick.
Requires PHP 8.3+ and Laravel 12.