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
@@ -46,8 +46,14 @@ final class TemplateVariables
'suspended_at' => ['Thời gian tạm ngưng', 'string', '08/10/2026 09:00'],
'server_name_suffix' => ['[Tự động] Tên máy chủ kèm theo', 'html', ''],
'expires_at' => ['Ngày hết hạn', 'string', '31/12/2026'],
'months_label' => ['Thời gian gia hạn', 'string', '12 tháng'],
'old_expires_at' => ['Ngày hết hạn trước khi gia hạn', 'string', '31/12/2026'],
'payment_method_label' => ['Hình thức thanh toán', 'string', 'Đã thu ngoài hệ thống'],
'admin_name' => ['Nhân viên thực hiện', 'string', 'Nguyễn Văn B'],
'price_row' => ['[Tự động] Dòng số tiền gia hạn', 'html', ''],
'invoice_url' => ['Link đơn hàng', 'url', 'https://tgs.com.vn/don-hang'],
'balance_formatted' => ['Số dư hiện có', 'string', '200.000'],
'topup_url' => ['Link nạp tiền', 'url', 'https://tgs.com.vn/nap-tien'],
'ip' => ['Địa chỉ IP', 'string', '103.0.0.10'],
'ip_count' => ['Số địa chỉ IP', 'string', '2'],
'ip_rows' => ['[Tự động] Danh sách địa chỉ IP', 'html', ''],
@@ -70,6 +76,8 @@ final class TemplateVariables
'name_server_1' => ['Name server 1', 'string', 'ns9.tgs.com.vn'],
'name_server_2' => ['Name server 2', 'string', 'ns10.tgs.com.vn'],
'kyc_block' => ['[Tự động] Khối xác thực eKYC', 'html', ''],
'server_name' => ['Máy chủ hosting', 'string', 'Hosting-01'],
'recipient_label' => ['[Tự động] Họ tên khách (trống thì tên công ty, rồi "Công ty")', 'string', 'Nguyễn Văn A'],
'hosting_plan' => ['Gói hosting', 'string', 'Premium Hosting 1'],
'server_host_row' => ['[Tự động] Dòng máy chủ / FTP host', 'html', ''],
'ftp_username_row' => ['[Tự động] Dòng tài khoản FTP', 'html', ''],
@@ -95,6 +103,8 @@ final class TemplateVariables
'status_label' => ['[Tự động] Trạng thái hoá đơn', 'html', ''],
'outstanding_row' => ['[Tự động] Dòng đã trả / còn thiếu', 'html', ''],
'intro_note' => ['Ghi chú đính kèm', 'string', 'File PDF hóa đơn đã được đính kèm trong email này.'],
'lookup_row' => ['[Tự động] Dòng mã tra cứu hoá đơn', 'html', ''],
'lookup_note' => ['[Tự động] Hướng dẫn tra cứu hoá đơn', 'html', ''],
'pay_button' => ['[Tự động] Nút thanh toán', 'html', ''],
'attachments_block' => ['[Tự động] Danh sách file đính kèm', 'html', ''],
'note_block' => ['[Tự động] Ghi chú hoá đơn', 'html', ''],