feat(billing): renewals, coupons, VAT numbering, billing cycles and invoice payment tracking

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
baodev0
2026-10-19 16:37:56 +07:00
co-authored by Claude Sonnet 5.5
parent ea9a53f742
commit 25f23d541e
134 changed files with 4926 additions and 185 deletions
+12
View File
@@ -93,6 +93,14 @@ final class EmailScenarioRegistry
'label' => 'Nhắc gia hạn dịch vụ', 'category' => self::BUSINESS, 'group' => 'SERVICE',
'required_variables' => ['product_name', 'expires_at'],
],
'service_renewed' => [
'label' => 'Dịch vụ đã được gia hạn', 'category' => self::BUSINESS, 'group' => 'SERVICE',
'required_variables' => ['product_name', 'expires_at'],
],
'auto_renew_failed' => [
'label' => 'Tự động gia hạn thất bại (thiếu số dư)', 'category' => self::BUSINESS, 'group' => 'SERVICE',
'required_variables' => ['product_name', 'invoice_number'],
],
'vm_creation_failed' => [
'label' => 'Khởi tạo VPS thất bại', 'category' => self::BUSINESS, 'group' => 'SERVICE',
'required_variables' => ['order_num'],
@@ -157,6 +165,10 @@ final class EmailScenarioRegistry
'label' => '[Admin] Khách hàng thanh toán', 'category' => self::INTERNAL, 'group' => 'BILLING',
'required_variables' => ['reference', 'amount_formatted'],
],
'admin_service_renewed' => [
'label' => '[Admin] Dịch vụ được gia hạn', 'category' => self::INTERNAL, 'group' => 'SERVICE',
'required_variables' => ['product_name', 'expires_at'],
],
'admin_domain_order_new' => [
'label' => '[Admin] Đơn đăng ký tên miền mới', 'category' => self::INTERNAL, 'group' => 'ORDER',
'required_variables' => ['domain_name', 'order_num'],