feat: complete client billing UI and staff benefits display (#524, #527)

- Client App: Built dedicated ShiftCompletionReviewPage  and InvoiceReadyPage
- Client App: Wired up invoice summary mapping and parsing logic from Data Connect
- Staff App: Added dynamic BenefitsOverviewPage tracking worker limits matching client mockup
- Staff App: Display progress ring values wired to real VendorBenefitPlan & BenefitsData balances
This commit is contained in:
2026-02-24 16:17:19 +05:30
parent 98c0b8a644
commit 7e26b54c50
35 changed files with 2038 additions and 199 deletions

View File

@@ -422,14 +422,53 @@
"month": "Month",
"total": "Total",
"hours": "$count hours",
"export_button": "Export All Invoices",
"rate_optimization_title": "Rate Optimization",
"rate_optimization_body": "Save $amount/month by switching 3 shifts",
"rate_optimization_save": "Save ",
"rate_optimization_amount": "$amount/month",
"rate_optimization_shifts": " by switching 3 shifts",
"view_details": "View Details",
"no_invoices_period": "No Invoices for the selected period",
"invoices_ready_title": "Invoices Ready",
"invoices_ready_subtitle": "You have approved items ready for payment.",
"retry": "Retry",
"error_occurred": "An error occurred",
"invoice_history": "Invoice History",
"view_all": "View all",
"export_button": "Export All Invoices",
"approved_success": "Invoice approved and payment initiated",
"flagged_success": "Invoice flagged for review",
"pending_badge": "PENDING APPROVAL",
"paid_badge": "PAID",
"all_caught_up": "All caught up!",
"no_pending_invoices": "No invoices awaiting approval",
"review_and_approve": "Review & Approve",
"review_and_approve_subtitle": "Review and approve for payment",
"invoice_ready": "Invoice Ready",
"total_amount_label": "Total Amount",
"hours_suffix": "hours",
"avg_rate_suffix": "/hr avg",
"stats": {
"total": "Total",
"workers": "workers",
"hrs": "HRS"
},
"workers_tab": {
"title": "Workers ($count)",
"search_hint": "Search workers...",
"needs_review": "Needs Review ($count)",
"all": "All ($count)",
"min_break": "min break"
},
"actions": {
"approve_pay": "Approve & Process Payment",
"flag_review": "Flag for Review",
"download_pdf": "Download Invoice PDF"
},
"flag_dialog": {
"title": "Flag for Review",
"hint": "Describe the issue...",
"button": "Flag"
},
"timesheets": {
"title": "Timesheets",
"approve_button": "Approve",

View File

@@ -422,14 +422,53 @@
"month": "Mes",
"total": "Total",
"hours": "$count horas",
"export_button": "Exportar Todas las Facturas",
"rate_optimization_title": "Optimizaci\u00f3n de Tarifas",
"rate_optimization_body": "Ahorra $amount/mes cambiando 3 turnos",
"rate_optimization_save": "Ahorra ",
"rate_optimization_amount": "$amount/mes",
"rate_optimization_shifts": " cambiando 3 turnos",
"view_details": "Ver Detalles",
"no_invoices_period": "No hay facturas para el per\u00edodo seleccionado",
"invoices_ready_title": "Facturas Listas",
"invoices_ready_subtitle": "Tienes elementos aprobados listos para el pago.",
"retry": "Reintentar",
"error_occurred": "Ocurri\u00f3 un error",
"invoice_history": "Historial de Facturas",
"view_all": "Ver todo",
"export_button": "Exportar Todas las Facturas",
"pending_badge": "PENDIENTE APROBACI\u00d3N",
"approved_success": "Factura aprobada y pago iniciado",
"flagged_success": "Factura marcada para revisi\u00f3n",
"pending_badge": "PENDIENTE",
"paid_badge": "PAGADO",
"all_caught_up": "\u00a1Todo al d\u00eda!",
"no_pending_invoices": "No hay facturas esperando aprobaci\u00f3n",
"review_and_approve": "Revisar y Aprobar",
"review_and_approve_subtitle": "Revisar y aprobar para el pago",
"invoice_ready": "Factura Lista",
"total_amount_label": "Monto Total",
"hours_suffix": "horas",
"avg_rate_suffix": "/hr prom",
"stats": {
"total": "Total",
"workers": "trabajadores",
"hrs": "HRS"
},
"workers_tab": {
"title": "Trabajadores ($count)",
"search_hint": "Buscar trabajadores...",
"needs_review": "Necesita Revisi\u00f3n ($count)",
"all": "Todos ($count)",
"min_break": "min de descanso"
},
"actions": {
"approve_pay": "Aprobar y Procesar Pago",
"flag_review": "Marcar para Revisi\u00f3n",
"download_pdf": "Descargar PDF de Factura"
},
"flag_dialog": {
"title": "Marcar para Revisi\u00f3n",
"hint": "Describe el problema...",
"button": "Marcar"
},
"timesheets": {
"title": "Hojas de Tiempo",
"approve_button": "Aprobar",