@hed-hog/billing 0.0.2 → 0.0.285

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/README.md +420 -0
  2. package/dist/billing-contracts.controller.d.ts +85 -4
  3. package/dist/billing-contracts.controller.d.ts.map +1 -1
  4. package/dist/billing-coupons.controller.d.ts +60 -4
  5. package/dist/billing-coupons.controller.d.ts.map +1 -1
  6. package/dist/billing-dashboard.controller.d.ts +20 -5
  7. package/dist/billing-dashboard.controller.d.ts.map +1 -1
  8. package/dist/billing-entitlements.controller.d.ts +28 -2
  9. package/dist/billing-entitlements.controller.d.ts.map +1 -1
  10. package/dist/billing-gateways.controller.d.ts +18 -2
  11. package/dist/billing-gateways.controller.d.ts.map +1 -1
  12. package/dist/billing-invoices.controller.d.ts +56 -2
  13. package/dist/billing-invoices.controller.d.ts.map +1 -1
  14. package/dist/billing-offers.controller.d.ts +61 -4
  15. package/dist/billing-offers.controller.d.ts.map +1 -1
  16. package/dist/billing-orders.controller.d.ts +39 -2
  17. package/dist/billing-orders.controller.d.ts.map +1 -1
  18. package/dist/billing-payments.controller.d.ts +16 -1
  19. package/dist/billing-payments.controller.d.ts.map +1 -1
  20. package/dist/billing-prices.controller.d.ts +80 -4
  21. package/dist/billing-prices.controller.d.ts.map +1 -1
  22. package/dist/billing-products.controller.d.ts +62 -4
  23. package/dist/billing-products.controller.d.ts.map +1 -1
  24. package/dist/billing-subscriptions.controller.d.ts +138 -5
  25. package/dist/billing-subscriptions.controller.d.ts.map +1 -1
  26. package/dist/billing.service.d.ts +663 -39
  27. package/dist/billing.service.d.ts.map +1 -1
  28. package/dist/billing.service.js +135 -16
  29. package/dist/billing.service.js.map +1 -1
  30. package/hedhog/data/menu.yaml +1 -1
  31. package/hedhog/frontend/app/contracts/page.tsx.ejs +68 -64
  32. package/hedhog/frontend/app/coupons/page.tsx.ejs +81 -77
  33. package/hedhog/frontend/app/entitlements/page.tsx.ejs +59 -58
  34. package/hedhog/frontend/app/gateways/page.tsx.ejs +125 -57
  35. package/hedhog/frontend/app/invoices/page.tsx.ejs +49 -43
  36. package/hedhog/frontend/app/offers/page.tsx.ejs +68 -64
  37. package/hedhog/frontend/app/orders/page.tsx.ejs +47 -46
  38. package/hedhog/frontend/app/page.tsx.ejs +186 -186
  39. package/hedhog/frontend/app/payments/page.tsx.ejs +51 -45
  40. package/hedhog/frontend/app/prices/page.tsx.ejs +81 -75
  41. package/hedhog/frontend/app/products/page.tsx.ejs +79 -73
  42. package/hedhog/frontend/app/refunds/page.tsx.ejs +50 -44
  43. package/hedhog/frontend/app/reports/page.tsx.ejs +1 -1
  44. package/hedhog/frontend/app/seats/page.tsx.ejs +826 -0
  45. package/hedhog/frontend/app/subscriptions/page.tsx.ejs +95 -90
  46. package/hedhog/frontend/app/webhooks/page.tsx.ejs +47 -39
  47. package/hedhog/frontend/messages/en.json +640 -551
  48. package/hedhog/frontend/messages/pt.json +652 -563
  49. package/hedhog/table/billing_payment_method.yaml +1 -1
  50. package/package.json +4 -3
  51. package/src/billing.service.ts +299 -17
@@ -1,551 +1,640 @@
1
- {
2
- "BillingDashboardPage": {
3
- "title": "Billing Dashboard",
4
- "description": "Track revenue, subscriptions, and payment health.",
5
- "breadcrumbs": {
6
- "home": "Home",
7
- "billing": "Billing",
8
- "dashboard": "Dashboard"
9
- },
10
- "stats": {
11
- "mrr": "MRR",
12
- "activeSubscriptions": "Active Subscriptions",
13
- "failedPayments": "Failed Payments",
14
- "overdueInvoices": "Overdue Invoices"
15
- },
16
- "revenueTrend": {
17
- "title": "Revenue Trend",
18
- "description": "Last 6 months recurring revenue.",
19
- "legend": "Revenue"
20
- },
21
- "recentPayments": {
22
- "title": "Recent Payments",
23
- "description": "Latest 10 processed payments.",
24
- "columns": {
25
- "provider": "Provider",
26
- "method": "Method",
27
- "status": "Status",
28
- "amount": "Amount",
29
- "paidAt": "Paid At"
30
- }
31
- }
32
- },
33
- "BillingProductsPage": {
34
- "title": "Products",
35
- "description": "Manage products available for billing.",
36
- "breadcrumbs": {
37
- "home": "Home",
38
- "billing": "Billing",
39
- "products": "Products"
40
- },
41
- "actions": { "create": "New Product", "save": "Save" },
42
- "filters": {
43
- "searchPlaceholder": "Search products...",
44
- "statusLabel": "Status",
45
- "statusAll": "All",
46
- "statusActive": "Active",
47
- "statusInactive": "Inactive"
48
- },
49
- "table": {
50
- "columns": {
51
- "name": "Name",
52
- "code": "Code",
53
- "productType": "Type",
54
- "isActive": "Active",
55
- "createdAt": "Created At",
56
- "actions": "Actions"
57
- },
58
- "empty": "No products found."
59
- },
60
- "sheet": {
61
- "createTitle": "Create Product",
62
- "editTitle": "Edit Product",
63
- "description": "Fill in product details."
64
- },
65
- "form": {
66
- "name": "Name",
67
- "namePlaceholder": "SaaS Pro",
68
- "code": "Code",
69
- "codePlaceholder": "SAAS-PRO",
70
- "description": "Description",
71
- "descriptionPlaceholder": "Describe this product",
72
- "productType": "Product Type",
73
- "productTypePlaceholder": "Select a type",
74
- "isActive": "Active"
75
- },
76
- "status": { "active": "Active", "inactive": "Inactive" },
77
- "messages": {
78
- "saveSuccess": "Product saved successfully.",
79
- "saveError": "Could not save product.",
80
- "deleteSuccess": "Product removed successfully.",
81
- "deleteError": "Could not remove product."
82
- },
83
- "deleteDialog": {
84
- "title": "Delete product",
85
- "description": "Are you sure you want to delete this product?",
86
- "cancel": "Cancel",
87
- "confirm": "Delete"
88
- }
89
- },
90
- "BillingPricesPage": {
91
- "title": "Prices",
92
- "description": "Manage billing prices and recurring intervals.",
93
- "breadcrumbs": { "home": "Home", "billing": "Billing", "prices": "Prices" },
94
- "actions": { "create": "New Price", "save": "Save" },
95
- "filters": {
96
- "searchPlaceholder": "Search prices...",
97
- "all": "All",
98
- "billingType": "Billing Type"
99
- },
100
- "table": {
101
- "columns": {
102
- "name": "Name",
103
- "product": "Product",
104
- "billingType": "Billing Type",
105
- "amount": "Amount",
106
- "intervalUnit": "Interval",
107
- "isActive": "Active",
108
- "actions": "Actions"
109
- },
110
- "empty": "No prices found."
111
- },
112
- "sheet": {
113
- "createTitle": "Create Price",
114
- "editTitle": "Edit Price",
115
- "description": "Configure the price details."
116
- },
117
- "form": {
118
- "name": "Name",
119
- "namePlaceholder": "SaaS Pro Monthly",
120
- "product": "Product",
121
- "productPlaceholder": "Select a product",
122
- "billingType": "Billing Type",
123
- "currency": "Currency",
124
- "amount": "Amount",
125
- "intervalUnit": "Interval Unit",
126
- "intervalCount": "Interval Count",
127
- "trialDays": "Trial Days",
128
- "isActive": "Active"
129
- },
130
- "status": { "active": "Active", "inactive": "Inactive" },
131
- "messages": {
132
- "saveSuccess": "Price saved successfully.",
133
- "saveError": "Could not save price.",
134
- "deleteSuccess": "Price removed successfully.",
135
- "deleteError": "Could not remove price."
136
- },
137
- "deleteDialog": {
138
- "title": "Delete price",
139
- "description": "Are you sure you want to delete this price?",
140
- "cancel": "Cancel",
141
- "confirm": "Delete"
142
- }
143
- },
144
- "BillingOffersPage": {
145
- "title": "Offers",
146
- "description": "Manage promotional offers.",
147
- "breadcrumbs": { "home": "Home", "billing": "Billing", "offers": "Offers" },
148
- "actions": { "create": "New Offer", "save": "Save" },
149
- "filters": {
150
- "searchPlaceholder": "Search offers...",
151
- "all": "All",
152
- "status": "Status"
153
- },
154
- "table": {
155
- "columns": {
156
- "code": "Code",
157
- "name": "Name",
158
- "status": "Status",
159
- "createdAt": "Created At",
160
- "actions": "Actions"
161
- },
162
- "empty": "No offers found."
163
- },
164
- "sheet": {
165
- "createTitle": "Create Offer",
166
- "editTitle": "Edit Offer",
167
- "description": "Configure your offer."
168
- },
169
- "form": {
170
- "code": "Code",
171
- "codePlaceholder": "WELCOME25",
172
- "name": "Name",
173
- "namePlaceholder": "Welcome Offer",
174
- "description": "Description",
175
- "descriptionPlaceholder": "Offer details",
176
- "status": "Status"
177
- },
178
- "messages": {
179
- "saveSuccess": "Offer saved successfully.",
180
- "saveError": "Could not save offer.",
181
- "deleteSuccess": "Offer removed successfully.",
182
- "deleteError": "Could not remove offer."
183
- },
184
- "deleteDialog": {
185
- "title": "Delete offer",
186
- "description": "Are you sure you want to delete this offer?",
187
- "cancel": "Cancel",
188
- "confirm": "Delete"
189
- }
190
- },
191
- "BillingCouponsPage": {
192
- "title": "Coupons",
193
- "description": "Manage discount coupons.",
194
- "breadcrumbs": {
195
- "home": "Home",
196
- "billing": "Billing",
197
- "coupons": "Coupons"
198
- },
199
- "actions": { "create": "New Coupon", "save": "Save" },
200
- "filters": {
201
- "searchPlaceholder": "Search coupons...",
202
- "all": "All",
203
- "status": "Status"
204
- },
205
- "table": {
206
- "columns": {
207
- "code": "Code",
208
- "name": "Name",
209
- "discountType": "Discount Type",
210
- "discountValue": "Discount",
211
- "uses": "Uses",
212
- "status": "Status",
213
- "actions": "Actions"
214
- },
215
- "empty": "No coupons found."
216
- },
217
- "sheet": {
218
- "createTitle": "Create Coupon",
219
- "editTitle": "Edit Coupon",
220
- "description": "Configure coupon settings."
221
- },
222
- "form": {
223
- "code": "Code",
224
- "codePlaceholder": "SUMMER20",
225
- "name": "Name",
226
- "namePlaceholder": "Summer discount",
227
- "discountType": "Discount Type",
228
- "discountValue": "Discount Value",
229
- "currency": "Currency",
230
- "maxUses": "Max Uses",
231
- "startsAt": "Starts At",
232
- "endsAt": "Ends At",
233
- "status": "Status"
234
- },
235
- "messages": {
236
- "saveSuccess": "Coupon saved successfully.",
237
- "saveError": "Could not save coupon.",
238
- "deleteSuccess": "Coupon removed successfully.",
239
- "deleteError": "Could not remove coupon."
240
- },
241
- "deleteDialog": {
242
- "title": "Delete coupon",
243
- "description": "Are you sure you want to delete this coupon?",
244
- "cancel": "Cancel",
245
- "confirm": "Delete"
246
- }
247
- },
248
- "BillingOrdersPage": {
249
- "title": "Orders",
250
- "description": "Track and create billing orders.",
251
- "breadcrumbs": { "home": "Home", "billing": "Billing", "orders": "Orders" },
252
- "actions": { "create": "New Order", "save": "Save" },
253
- "filters": { "searchPlaceholder": "Search orders..." },
254
- "table": {
255
- "columns": {
256
- "id": "ID",
257
- "status": "Status",
258
- "currency": "Currency",
259
- "total": "Total",
260
- "source": "Source",
261
- "createdAt": "Created At"
262
- },
263
- "empty": "No orders found."
264
- },
265
- "sheet": {
266
- "createTitle": "Create Order",
267
- "description": "Fill order information."
268
- },
269
- "form": {
270
- "contactId": "Contact ID",
271
- "status": "Status",
272
- "currency": "Currency",
273
- "subtotal": "Subtotal",
274
- "total": "Total",
275
- "source": "Source",
276
- "notes": "Notes"
277
- },
278
- "messages": {
279
- "createSuccess": "Order created successfully.",
280
- "createError": "Could not create order."
281
- }
282
- },
283
- "BillingSubscriptionsPage": {
284
- "title": "Subscriptions",
285
- "description": "Manage lifecycle of subscriptions.",
286
- "breadcrumbs": {
287
- "home": "Home",
288
- "billing": "Billing",
289
- "subscriptions": "Subscriptions"
290
- },
291
- "filters": { "searchPlaceholder": "Search subscriptions..." },
292
- "table": {
293
- "columns": {
294
- "id": "ID",
295
- "product": "Product",
296
- "price": "Price",
297
- "status": "Status",
298
- "gateway": "Gateway",
299
- "currentPeriodEnd": "Current Period End",
300
- "createdAt": "Created At",
301
- "actions": "Actions"
302
- },
303
- "empty": "No subscriptions found."
304
- },
305
- "actions": { "cancel": "Cancel", "pause": "Pause", "resume": "Resume" },
306
- "messages": {
307
- "actionSuccess": "Subscription updated.",
308
- "actionError": "Could not update subscription."
309
- },
310
- "cancelDialog": {
311
- "title": "Cancel subscription",
312
- "description": "Are you sure you want to cancel this subscription?",
313
- "cancel": "Back",
314
- "confirm": "Confirm cancel"
315
- }
316
- },
317
- "BillingInvoicesPage": {
318
- "title": "Invoices",
319
- "description": "View invoice lifecycle and payments.",
320
- "breadcrumbs": {
321
- "home": "Home",
322
- "billing": "Billing",
323
- "invoices": "Invoices"
324
- },
325
- "filters": { "searchPlaceholder": "Search invoices..." },
326
- "table": {
327
- "columns": {
328
- "invoiceNumber": "Invoice Number",
329
- "status": "Status",
330
- "currency": "Currency",
331
- "total": "Total",
332
- "dueDate": "Due Date",
333
- "paidAt": "Paid At"
334
- },
335
- "empty": "No invoices found."
336
- }
337
- },
338
- "BillingPaymentsPage": {
339
- "title": "Payments",
340
- "description": "Monitor payment transactions.",
341
- "breadcrumbs": {
342
- "home": "Home",
343
- "billing": "Billing",
344
- "payments": "Payments"
345
- },
346
- "filters": { "searchPlaceholder": "Search payments..." },
347
- "table": {
348
- "columns": {
349
- "provider": "Provider",
350
- "methodType": "Method",
351
- "status": "Status",
352
- "amount": "Amount",
353
- "currency": "Currency",
354
- "paidAt": "Paid At"
355
- },
356
- "empty": "No payments found."
357
- }
358
- },
359
- "BillingRefundsPage": {
360
- "title": "Refunds",
361
- "description": "Track refund processing status.",
362
- "breadcrumbs": {
363
- "home": "Home",
364
- "billing": "Billing",
365
- "refunds": "Refunds"
366
- },
367
- "filters": { "searchPlaceholder": "Search refunds..." },
368
- "table": {
369
- "columns": {
370
- "amount": "Amount",
371
- "reason": "Reason",
372
- "status": "Status",
373
- "completedAt": "Completed At"
374
- },
375
- "empty": "No refunds found."
376
- }
377
- },
378
- "BillingEntitlementsPage": {
379
- "title": "Entitlements",
380
- "description": "Manage contact access rights.",
381
- "breadcrumbs": {
382
- "home": "Home",
383
- "billing": "Billing",
384
- "entitlements": "Entitlements"
385
- },
386
- "actions": { "create": "New Entitlement", "save": "Save" },
387
- "filters": { "searchPlaceholder": "Search entitlements..." },
388
- "table": {
389
- "columns": {
390
- "contactId": "Contact ID",
391
- "sourceType": "Source Type",
392
- "targetType": "Target Type",
393
- "accessType": "Access Type",
394
- "status": "Status",
395
- "startsAt": "Starts At",
396
- "endsAt": "Ends At",
397
- "actions": "Actions"
398
- },
399
- "empty": "No entitlements found."
400
- },
401
- "sheet": {
402
- "createTitle": "Create Entitlement",
403
- "description": "Fill in entitlement details."
404
- },
405
- "form": {
406
- "contactId": "Contact ID",
407
- "sourceType": "Source Type",
408
- "sourceId": "Source ID",
409
- "targetType": "Target Type",
410
- "targetId": "Target ID",
411
- "accessType": "Access Type",
412
- "startsAt": "Starts At",
413
- "endsAt": "Ends At",
414
- "status": "Status"
415
- },
416
- "messages": {
417
- "createSuccess": "Entitlement created.",
418
- "createError": "Could not create entitlement.",
419
- "deleteSuccess": "Entitlement revoked.",
420
- "deleteError": "Could not revoke entitlement."
421
- },
422
- "deleteDialog": {
423
- "title": "Revoke entitlement",
424
- "description": "Are you sure you want to revoke this entitlement?",
425
- "cancel": "Cancel",
426
- "confirm": "Revoke"
427
- }
428
- },
429
- "BillingContractsPage": {
430
- "title": "Contracts",
431
- "description": "Manage customer contracts and seats.",
432
- "breadcrumbs": {
433
- "home": "Home",
434
- "billing": "Billing",
435
- "contracts": "Contracts"
436
- },
437
- "actions": { "create": "New Contract", "save": "Save" },
438
- "filters": { "searchPlaceholder": "Search contracts..." },
439
- "table": {
440
- "columns": {
441
- "name": "Name",
442
- "contactId": "Contact ID",
443
- "status": "Status",
444
- "totalSeats": "Total Seats",
445
- "startsAt": "Starts At",
446
- "endsAt": "Ends At",
447
- "actions": "Actions"
448
- },
449
- "empty": "No contracts found."
450
- },
451
- "sheet": {
452
- "createTitle": "Create Contract",
453
- "editTitle": "Edit Contract",
454
- "description": "Fill in contract details."
455
- },
456
- "form": {
457
- "contactId": "Contact ID",
458
- "name": "Name",
459
- "description": "Description",
460
- "startsAt": "Starts At",
461
- "endsAt": "Ends At",
462
- "totalSeats": "Total Seats",
463
- "status": "Status",
464
- "signedAt": "Signed At"
465
- },
466
- "messages": {
467
- "saveSuccess": "Contract saved.",
468
- "saveError": "Could not save contract.",
469
- "deleteSuccess": "Contract removed.",
470
- "deleteError": "Could not remove contract."
471
- },
472
- "deleteDialog": {
473
- "title": "Delete contract",
474
- "description": "Are you sure you want to delete this contract?",
475
- "cancel": "Cancel",
476
- "confirm": "Delete"
477
- }
478
- },
479
- "BillingGatewaysPage": {
480
- "title": "Payment Gateways",
481
- "description": "Configure available payment gateway providers.",
482
- "breadcrumbs": {
483
- "home": "Home",
484
- "billing": "Billing",
485
- "gateways": "Gateways"
486
- },
487
- "fields": { "active": "Active" },
488
- "status": { "active": "Active", "inactive": "Inactive" },
489
- "actions": { "configure": "Configure", "save": "Save" },
490
- "sheet": {
491
- "title": "Gateway Configuration",
492
- "description": "Edit gateway settings and raw config JSON."
493
- },
494
- "form": {
495
- "name": "Name",
496
- "isActive": "Active",
497
- "configJson": "Configuration (JSON)"
498
- },
499
- "messages": {
500
- "saveSuccess": "Gateway updated.",
501
- "saveError": "Could not update gateway.",
502
- "toggleError": "Could not update gateway status."
503
- }
504
- },
505
- "BillingWebhooksPage": {
506
- "title": "Webhook Events",
507
- "description": "View incoming billing webhook events.",
508
- "breadcrumbs": {
509
- "home": "Home",
510
- "billing": "Billing",
511
- "webhooks": "Webhooks"
512
- },
513
- "filters": { "searchPlaceholder": "Search webhook events..." },
514
- "table": {
515
- "columns": {
516
- "eventType": "Event Type",
517
- "externalEventId": "External Event ID",
518
- "processed": "Processed",
519
- "processedAt": "Processed At",
520
- "createdAt": "Created At"
521
- },
522
- "empty": "No webhook events found."
523
- },
524
- "status": { "processed": "Processed", "pending": "Pending" }
525
- },
526
- "BillingReportsPage": {
527
- "title": "Billing Reports",
528
- "description": "Analyze revenue and subscription performance.",
529
- "breadcrumbs": {
530
- "home": "Home",
531
- "billing": "Billing",
532
- "reports": "Reports"
533
- },
534
- "revenueSummary": {
535
- "title": "Revenue Summary",
536
- "description": "Revenue by month.",
537
- "revenue": "Revenue"
538
- },
539
- "subscriptionCohort": {
540
- "title": "Subscription Cohort",
541
- "description": "New subscriptions by month.",
542
- "subscriptions": "Subscriptions"
543
- },
544
- "paymentSuccessRate": {
545
- "title": "Payment Success Rate",
546
- "description": "Paid vs failed payments.",
547
- "success": "Paid",
548
- "failed": "Failed"
549
- }
550
- }
551
- }
1
+ {
2
+ "BillingDashboardPage": {
3
+ "title": "Billing Dashboard",
4
+ "description": "Track revenue, subscriptions, and payment health.",
5
+ "breadcrumbs": {
6
+ "home": "Home",
7
+ "billing": "Billing",
8
+ "dashboard": "Dashboard"
9
+ },
10
+ "stats": {
11
+ "mrr": "MRR",
12
+ "activeSubscriptions": "Active Subscriptions",
13
+ "failedPayments": "Failed Payments",
14
+ "overdueInvoices": "Overdue Invoices"
15
+ },
16
+ "revenueTrend": {
17
+ "title": "Revenue Trend",
18
+ "description": "Last 6 months recurring revenue.",
19
+ "legend": "Revenue"
20
+ },
21
+ "recentPayments": {
22
+ "title": "Recent Payments",
23
+ "description": "Latest 10 processed payments.",
24
+ "columns": {
25
+ "provider": "Provider",
26
+ "method": "Method",
27
+ "status": "Status",
28
+ "amount": "Amount",
29
+ "paidAt": "Paid At"
30
+ }
31
+ }
32
+ },
33
+ "BillingProductsPage": {
34
+ "title": "Products",
35
+ "description": "Manage products available for billing.",
36
+ "breadcrumbs": {
37
+ "home": "Home",
38
+ "billing": "Billing",
39
+ "products": "Products"
40
+ },
41
+ "actions": { "create": "New Product", "save": "Save" },
42
+ "filters": {
43
+ "searchPlaceholder": "Search products...",
44
+ "statusLabel": "Status",
45
+ "statusAll": "All",
46
+ "statusActive": "Active",
47
+ "statusInactive": "Inactive"
48
+ },
49
+ "table": {
50
+ "columns": {
51
+ "name": "Name",
52
+ "code": "Code",
53
+ "productType": "Type",
54
+ "isActive": "Active",
55
+ "createdAt": "Created At",
56
+ "actions": "Actions"
57
+ },
58
+ "empty": "No products found."
59
+ },
60
+ "sheet": {
61
+ "createTitle": "Create Product",
62
+ "editTitle": "Edit Product",
63
+ "description": "Fill in product details."
64
+ },
65
+ "form": {
66
+ "name": "Name",
67
+ "namePlaceholder": "SaaS Pro",
68
+ "code": "Code",
69
+ "codePlaceholder": "SAAS-PRO",
70
+ "description": "Description",
71
+ "descriptionPlaceholder": "Describe this product",
72
+ "productType": "Product Type",
73
+ "productTypePlaceholder": "Select a type",
74
+ "isActive": "Active"
75
+ },
76
+ "status": { "active": "Active", "inactive": "Inactive" },
77
+ "messages": {
78
+ "saveSuccess": "Product saved successfully.",
79
+ "saveError": "Could not save product.",
80
+ "deleteSuccess": "Product removed successfully.",
81
+ "deleteError": "Could not remove product."
82
+ },
83
+ "deleteDialog": {
84
+ "title": "Delete product",
85
+ "description": "Are you sure you want to delete this product?",
86
+ "cancel": "Cancel",
87
+ "confirm": "Delete"
88
+ }
89
+ },
90
+ "BillingPricesPage": {
91
+ "title": "Prices",
92
+ "description": "Manage billing prices and recurring intervals.",
93
+ "breadcrumbs": { "home": "Home", "billing": "Billing", "prices": "Prices" },
94
+ "actions": { "create": "New Price", "save": "Save" },
95
+ "filters": {
96
+ "searchPlaceholder": "Search prices...",
97
+ "all": "All",
98
+ "billingType": "Billing Type"
99
+ },
100
+ "table": {
101
+ "columns": {
102
+ "name": "Name",
103
+ "product": "Product",
104
+ "billingType": "Billing Type",
105
+ "amount": "Amount",
106
+ "intervalUnit": "Interval",
107
+ "isActive": "Active",
108
+ "actions": "Actions"
109
+ },
110
+ "empty": "No prices found."
111
+ },
112
+ "sheet": {
113
+ "createTitle": "Create Price",
114
+ "editTitle": "Edit Price",
115
+ "description": "Configure the price details."
116
+ },
117
+ "form": {
118
+ "name": "Name",
119
+ "namePlaceholder": "SaaS Pro Monthly",
120
+ "product": "Product",
121
+ "productPlaceholder": "Select a product",
122
+ "billingType": "Billing Type",
123
+ "currency": "Currency",
124
+ "amount": "Amount",
125
+ "intervalUnit": "Interval Unit",
126
+ "intervalCount": "Interval Count",
127
+ "trialDays": "Trial Days",
128
+ "isActive": "Active"
129
+ },
130
+ "status": { "active": "Active", "inactive": "Inactive" },
131
+ "messages": {
132
+ "saveSuccess": "Price saved successfully.",
133
+ "saveError": "Could not save price.",
134
+ "deleteSuccess": "Price removed successfully.",
135
+ "deleteError": "Could not remove price."
136
+ },
137
+ "deleteDialog": {
138
+ "title": "Delete price",
139
+ "description": "Are you sure you want to delete this price?",
140
+ "cancel": "Cancel",
141
+ "confirm": "Delete"
142
+ }
143
+ },
144
+ "BillingOffersPage": {
145
+ "title": "Offers",
146
+ "description": "Manage promotional offers.",
147
+ "breadcrumbs": { "home": "Home", "billing": "Billing", "offers": "Offers" },
148
+ "actions": { "create": "New Offer", "save": "Save" },
149
+ "filters": {
150
+ "searchPlaceholder": "Search offers...",
151
+ "all": "All",
152
+ "status": "Status"
153
+ },
154
+ "table": {
155
+ "columns": {
156
+ "code": "Code",
157
+ "name": "Name",
158
+ "status": "Status",
159
+ "createdAt": "Created At",
160
+ "actions": "Actions"
161
+ },
162
+ "empty": "No offers found."
163
+ },
164
+ "sheet": {
165
+ "createTitle": "Create Offer",
166
+ "editTitle": "Edit Offer",
167
+ "description": "Configure your offer."
168
+ },
169
+ "form": {
170
+ "code": "Code",
171
+ "codePlaceholder": "WELCOME25",
172
+ "name": "Name",
173
+ "namePlaceholder": "Welcome Offer",
174
+ "description": "Description",
175
+ "descriptionPlaceholder": "Offer details",
176
+ "status": "Status"
177
+ },
178
+ "messages": {
179
+ "saveSuccess": "Offer saved successfully.",
180
+ "saveError": "Could not save offer.",
181
+ "deleteSuccess": "Offer removed successfully.",
182
+ "deleteError": "Could not remove offer."
183
+ },
184
+ "deleteDialog": {
185
+ "title": "Delete offer",
186
+ "description": "Are you sure you want to delete this offer?",
187
+ "cancel": "Cancel",
188
+ "confirm": "Delete"
189
+ }
190
+ },
191
+ "BillingCouponsPage": {
192
+ "title": "Coupons",
193
+ "description": "Manage discount coupons.",
194
+ "breadcrumbs": {
195
+ "home": "Home",
196
+ "billing": "Billing",
197
+ "coupons": "Coupons"
198
+ },
199
+ "actions": { "create": "New Coupon", "save": "Save" },
200
+ "filters": {
201
+ "searchPlaceholder": "Search coupons...",
202
+ "all": "All",
203
+ "status": "Status"
204
+ },
205
+ "table": {
206
+ "columns": {
207
+ "code": "Code",
208
+ "name": "Name",
209
+ "discountType": "Discount Type",
210
+ "discountValue": "Discount",
211
+ "uses": "Uses",
212
+ "status": "Status",
213
+ "actions": "Actions"
214
+ },
215
+ "empty": "No coupons found."
216
+ },
217
+ "sheet": {
218
+ "createTitle": "Create Coupon",
219
+ "editTitle": "Edit Coupon",
220
+ "description": "Configure coupon settings."
221
+ },
222
+ "form": {
223
+ "code": "Code",
224
+ "codePlaceholder": "SUMMER20",
225
+ "name": "Name",
226
+ "namePlaceholder": "Summer discount",
227
+ "discountType": "Discount Type",
228
+ "discountValue": "Discount Value",
229
+ "currency": "Currency",
230
+ "maxUses": "Max Uses",
231
+ "startsAt": "Starts At",
232
+ "endsAt": "Ends At",
233
+ "status": "Status"
234
+ },
235
+ "messages": {
236
+ "saveSuccess": "Coupon saved successfully.",
237
+ "saveError": "Could not save coupon.",
238
+ "deleteSuccess": "Coupon removed successfully.",
239
+ "deleteError": "Could not remove coupon."
240
+ },
241
+ "deleteDialog": {
242
+ "title": "Delete coupon",
243
+ "description": "Are you sure you want to delete this coupon?",
244
+ "cancel": "Cancel",
245
+ "confirm": "Delete"
246
+ }
247
+ },
248
+ "BillingOrdersPage": {
249
+ "title": "Orders",
250
+ "description": "Track and create billing orders.",
251
+ "breadcrumbs": { "home": "Home", "billing": "Billing", "orders": "Orders" },
252
+ "actions": { "create": "New Order", "save": "Save" },
253
+ "filters": { "searchPlaceholder": "Search orders..." },
254
+ "table": {
255
+ "columns": {
256
+ "id": "ID",
257
+ "status": "Status",
258
+ "currency": "Currency",
259
+ "total": "Total",
260
+ "source": "Source",
261
+ "createdAt": "Created At"
262
+ },
263
+ "empty": "No orders found."
264
+ },
265
+ "sheet": {
266
+ "createTitle": "Create Order",
267
+ "description": "Fill order information."
268
+ },
269
+ "form": {
270
+ "contactId": "Contact ID",
271
+ "status": "Status",
272
+ "currency": "Currency",
273
+ "subtotal": "Subtotal",
274
+ "total": "Total",
275
+ "source": "Source",
276
+ "notes": "Notes"
277
+ },
278
+ "messages": {
279
+ "createSuccess": "Order created successfully.",
280
+ "createError": "Could not create order."
281
+ }
282
+ },
283
+ "BillingSubscriptionsPage": {
284
+ "title": "Subscriptions",
285
+ "description": "Manage lifecycle of subscriptions.",
286
+ "breadcrumbs": {
287
+ "home": "Home",
288
+ "billing": "Billing",
289
+ "subscriptions": "Subscriptions"
290
+ },
291
+ "filters": { "searchPlaceholder": "Search subscriptions..." },
292
+ "table": {
293
+ "columns": {
294
+ "id": "ID",
295
+ "product": "Product",
296
+ "price": "Price",
297
+ "status": "Status",
298
+ "gateway": "Gateway",
299
+ "currentPeriodEnd": "Current Period End",
300
+ "createdAt": "Created At",
301
+ "actions": "Actions"
302
+ },
303
+ "empty": "No subscriptions found."
304
+ },
305
+ "emptyAction": "Clear filters",
306
+ "actions": { "cancel": "Cancel", "pause": "Pause", "resume": "Resume" },
307
+ "messages": {
308
+ "actionSuccess": "Subscription updated.",
309
+ "actionError": "Could not update subscription."
310
+ },
311
+ "cancelDialog": {
312
+ "title": "Cancel subscription",
313
+ "description": "Are you sure you want to cancel this subscription?",
314
+ "cancel": "Back",
315
+ "confirm": "Confirm cancel"
316
+ }
317
+ },
318
+ "BillingInvoicesPage": {
319
+ "title": "Invoices",
320
+ "description": "View invoice lifecycle and payments.",
321
+ "breadcrumbs": {
322
+ "home": "Home",
323
+ "billing": "Billing",
324
+ "invoices": "Invoices"
325
+ },
326
+ "filters": { "searchPlaceholder": "Search invoices..." },
327
+ "table": {
328
+ "columns": {
329
+ "invoiceNumber": "Invoice Number",
330
+ "status": "Status",
331
+ "currency": "Currency",
332
+ "total": "Total",
333
+ "dueDate": "Due Date",
334
+ "paidAt": "Paid At"
335
+ },
336
+ "empty": "No invoices found."
337
+ },
338
+ "emptyAction": "Clear filters"
339
+ },
340
+ "BillingPaymentsPage": {
341
+ "title": "Payments",
342
+ "description": "Monitor payment transactions.",
343
+ "breadcrumbs": {
344
+ "home": "Home",
345
+ "billing": "Billing",
346
+ "payments": "Payments"
347
+ },
348
+ "filters": { "searchPlaceholder": "Search payments..." },
349
+ "table": {
350
+ "columns": {
351
+ "provider": "Provider",
352
+ "methodType": "Method",
353
+ "status": "Status",
354
+ "amount": "Amount",
355
+ "currency": "Currency",
356
+ "paidAt": "Paid At"
357
+ },
358
+ "empty": "No payments found."
359
+ },
360
+ "emptyAction": "Clear filters"
361
+ },
362
+ "BillingRefundsPage": {
363
+ "title": "Refunds",
364
+ "description": "Track refund processing status.",
365
+ "breadcrumbs": {
366
+ "home": "Home",
367
+ "billing": "Billing",
368
+ "refunds": "Refunds"
369
+ },
370
+ "filters": { "searchPlaceholder": "Search refunds..." },
371
+ "table": {
372
+ "columns": {
373
+ "amount": "Amount",
374
+ "reason": "Reason",
375
+ "status": "Status",
376
+ "completedAt": "Completed At"
377
+ },
378
+ "empty": "No refunds found."
379
+ },
380
+ "emptyAction": "Clear filters"
381
+ },
382
+ "BillingEntitlementsPage": {
383
+ "title": "Entitlements",
384
+ "description": "Manage contact access rights.",
385
+ "breadcrumbs": {
386
+ "home": "Home",
387
+ "billing": "Billing",
388
+ "entitlements": "Entitlements"
389
+ },
390
+ "actions": { "create": "New Entitlement", "save": "Save" },
391
+ "filters": { "searchPlaceholder": "Search entitlements..." },
392
+ "table": {
393
+ "columns": {
394
+ "contactId": "Contact ID",
395
+ "sourceType": "Source Type",
396
+ "targetType": "Target Type",
397
+ "accessType": "Access Type",
398
+ "status": "Status",
399
+ "startsAt": "Starts At",
400
+ "endsAt": "Ends At",
401
+ "actions": "Actions"
402
+ },
403
+ "empty": "No entitlements found."
404
+ },
405
+ "sheet": {
406
+ "createTitle": "Create Entitlement",
407
+ "description": "Fill in entitlement details."
408
+ },
409
+ "form": {
410
+ "contactId": "Contact ID",
411
+ "sourceType": "Source Type",
412
+ "sourceId": "Source ID",
413
+ "targetType": "Target Type",
414
+ "targetId": "Target ID",
415
+ "accessType": "Access Type",
416
+ "startsAt": "Starts At",
417
+ "endsAt": "Ends At",
418
+ "status": "Status"
419
+ },
420
+ "messages": {
421
+ "createSuccess": "Entitlement created.",
422
+ "createError": "Could not create entitlement.",
423
+ "deleteSuccess": "Entitlement revoked.",
424
+ "deleteError": "Could not revoke entitlement."
425
+ },
426
+ "deleteDialog": {
427
+ "title": "Revoke entitlement",
428
+ "description": "Are you sure you want to revoke this entitlement?",
429
+ "cancel": "Cancel",
430
+ "confirm": "Revoke"
431
+ }
432
+ },
433
+ "BillingContractsPage": {
434
+ "title": "Contracts",
435
+ "description": "Manage customer contracts and seats.",
436
+ "breadcrumbs": {
437
+ "home": "Home",
438
+ "billing": "Billing",
439
+ "contracts": "Contracts"
440
+ },
441
+ "actions": { "create": "New Contract", "save": "Save" },
442
+ "filters": { "searchPlaceholder": "Search contracts..." },
443
+ "table": {
444
+ "columns": {
445
+ "name": "Name",
446
+ "contactId": "Contact ID",
447
+ "status": "Status",
448
+ "totalSeats": "Total Seats",
449
+ "startsAt": "Starts At",
450
+ "endsAt": "Ends At",
451
+ "actions": "Actions"
452
+ },
453
+ "empty": "No contracts found."
454
+ },
455
+ "sheet": {
456
+ "createTitle": "Create Contract",
457
+ "editTitle": "Edit Contract",
458
+ "description": "Fill in contract details."
459
+ },
460
+ "form": {
461
+ "contactId": "Contact ID",
462
+ "name": "Name",
463
+ "description": "Description",
464
+ "startsAt": "Starts At",
465
+ "endsAt": "Ends At",
466
+ "totalSeats": "Total Seats",
467
+ "status": "Status",
468
+ "signedAt": "Signed At"
469
+ },
470
+ "messages": {
471
+ "saveSuccess": "Contract saved.",
472
+ "saveError": "Could not save contract.",
473
+ "deleteSuccess": "Contract removed.",
474
+ "deleteError": "Could not remove contract."
475
+ },
476
+ "deleteDialog": {
477
+ "title": "Delete contract",
478
+ "description": "Are you sure you want to delete this contract?",
479
+ "cancel": "Cancel",
480
+ "confirm": "Delete"
481
+ }
482
+ },
483
+ "BillingSeatsPage": {
484
+ "title": "Seats",
485
+ "description": "Manage contracted licenses and their assignment to customer users.",
486
+ "breadcrumbs": {
487
+ "home": "Home",
488
+ "billing": "Billing",
489
+ "seats": "Seats"
490
+ },
491
+ "actions": { "create": "New Seat", "save": "Save" },
492
+ "stats": {
493
+ "contractedSeats": "Contracted Seats",
494
+ "allocatedSeats": "Allocated Seats",
495
+ "availableSeats": "Available Seats",
496
+ "releasedSeats": "Released Seats"
497
+ },
498
+ "filters": {
499
+ "searchPlaceholder": "Search by contract, company, product, or user..."
500
+ },
501
+ "table": {
502
+ "columns": {
503
+ "contract": "Contract",
504
+ "company": "Company",
505
+ "seat": "Seat",
506
+ "assignedTo": "Assigned User",
507
+ "status": "Status",
508
+ "allocatedAt": "Allocated At",
509
+ "actions": "Actions"
510
+ },
511
+ "empty": "No seats found."
512
+ },
513
+ "empty": {
514
+ "description": "Adjust filters or clear the search to view seats again.",
515
+ "action": "Clear search"
516
+ },
517
+ "sheet": {
518
+ "createTitle": "Allocate Seat",
519
+ "editTitle": "Edit Allocation",
520
+ "description": "Fill in the license and assignee details for this contracted seat."
521
+ },
522
+ "form": {
523
+ "contract": "Contract",
524
+ "contractPlaceholder": "Select a contract",
525
+ "seat": "License",
526
+ "seatPlaceholder": "Select a license",
527
+ "assignedTo": "Assigned user",
528
+ "assignedToPlaceholder": "E.g. Marina Souza",
529
+ "assignedEmail": "User email",
530
+ "assignedEmailPlaceholder": "name@company.com",
531
+ "status": "Status",
532
+ "allocatedAt": "Allocation date",
533
+ "notes": "Notes",
534
+ "notesPlaceholder": "Allocation context, team, cost center, or operational notes."
535
+ },
536
+ "status": {
537
+ "active": "Active",
538
+ "pending": "Pending",
539
+ "released": "Released"
540
+ },
541
+ "messages": {
542
+ "saveSuccess": "Seat saved successfully.",
543
+ "saveError": "Could not save seat.",
544
+ "deleteSuccess": "Seat released successfully.",
545
+ "deleteError": "Could not release seat.",
546
+ "localMode": "This screen is temporarily running in local mode until the seats API is ready. Changes persist only for the current session."
547
+ },
548
+ "deleteDialog": {
549
+ "title": "Release seat",
550
+ "description": "Are you sure you want to release this license for reuse?",
551
+ "cancel": "Cancel",
552
+ "confirm": "Release"
553
+ }
554
+ },
555
+ "BillingGatewaysPage": {
556
+ "title": "Payment Gateways",
557
+ "description": "Configure available payment gateway providers.",
558
+ "breadcrumbs": {
559
+ "home": "Home",
560
+ "billing": "Billing",
561
+ "gateways": "Gateways"
562
+ },
563
+ "filters": { "searchPlaceholder": "Search gateways..." },
564
+ "table": {
565
+ "columns": {
566
+ "name": "Name",
567
+ "slug": "Slug",
568
+ "status": "Status",
569
+ "active": "Active",
570
+ "actions": "Actions"
571
+ },
572
+ "empty": "No gateways found."
573
+ },
574
+ "emptyAction": "Clear filters",
575
+ "fields": { "active": "Active" },
576
+ "status": { "active": "Active", "inactive": "Inactive" },
577
+ "actions": { "configure": "Configure", "save": "Save" },
578
+ "sheet": {
579
+ "title": "Gateway Configuration",
580
+ "description": "Edit gateway settings and raw config JSON."
581
+ },
582
+ "form": {
583
+ "name": "Name",
584
+ "isActive": "Active",
585
+ "configJson": "Configuration (JSON)"
586
+ },
587
+ "messages": {
588
+ "saveSuccess": "Gateway updated.",
589
+ "saveError": "Could not update gateway.",
590
+ "toggleError": "Could not update gateway status."
591
+ }
592
+ },
593
+ "BillingWebhooksPage": {
594
+ "title": "Webhook Events",
595
+ "description": "View incoming billing webhook events.",
596
+ "breadcrumbs": {
597
+ "home": "Home",
598
+ "billing": "Billing",
599
+ "webhooks": "Webhooks"
600
+ },
601
+ "filters": { "searchPlaceholder": "Search webhook events..." },
602
+ "table": {
603
+ "columns": {
604
+ "eventType": "Event Type",
605
+ "externalEventId": "External Event ID",
606
+ "processed": "Processed",
607
+ "processedAt": "Processed At",
608
+ "createdAt": "Created At"
609
+ },
610
+ "empty": "No webhook events found."
611
+ },
612
+ "emptyAction": "Clear filters",
613
+ "status": { "processed": "Processed", "pending": "Pending" }
614
+ },
615
+ "BillingReportsPage": {
616
+ "title": "Billing Reports",
617
+ "description": "Analyze revenue and subscription performance.",
618
+ "breadcrumbs": {
619
+ "home": "Home",
620
+ "billing": "Billing",
621
+ "reports": "Reports"
622
+ },
623
+ "revenueSummary": {
624
+ "title": "Revenue Summary",
625
+ "description": "Revenue by month.",
626
+ "revenue": "Revenue"
627
+ },
628
+ "subscriptionCohort": {
629
+ "title": "Subscription Cohort",
630
+ "description": "New subscriptions by month.",
631
+ "subscriptions": "Subscriptions"
632
+ },
633
+ "paymentSuccessRate": {
634
+ "title": "Payment Success Rate",
635
+ "description": "Paid vs failed payments.",
636
+ "success": "Paid",
637
+ "failed": "Failed"
638
+ }
639
+ }
640
+ }