@voyant-travel/finance-react 0.119.5
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.
- package/LICENSE +201 -0
- package/README.md +75 -0
- package/dist/admin/booking-invoices-widget.d.ts +19 -0
- package/dist/admin/booking-invoices-widget.d.ts.map +1 -0
- package/dist/admin/booking-invoices-widget.js +204 -0
- package/dist/admin/booking-payment-policy-widget.d.ts +21 -0
- package/dist/admin/booking-payment-policy-widget.d.ts.map +1 -0
- package/dist/admin/booking-payment-policy-widget.js +128 -0
- package/dist/admin/booking-pending-payment-sessions-widget.d.ts +24 -0
- package/dist/admin/booking-pending-payment-sessions-widget.d.ts.map +1 -0
- package/dist/admin/booking-pending-payment-sessions-widget.js +139 -0
- package/dist/admin/credit-note-dialog.d.ts +9 -0
- package/dist/admin/credit-note-dialog.d.ts.map +1 -0
- package/dist/admin/credit-note-dialog.js +70 -0
- package/dist/admin/finance-shared.d.ts +7 -0
- package/dist/admin/finance-shared.d.ts.map +1 -0
- package/dist/admin/finance-shared.js +30 -0
- package/dist/admin/index.d.ts +99 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +286 -0
- package/dist/admin/invoice-detail-host.d.ts +19 -0
- package/dist/admin/invoice-detail-host.d.ts.map +1 -0
- package/dist/admin/invoice-detail-host.js +147 -0
- package/dist/admin/invoice-detail-sections.d.ts +31 -0
- package/dist/admin/invoice-detail-sections.d.ts.map +1 -0
- package/dist/admin/invoice-detail-sections.js +109 -0
- package/dist/admin/invoice-detail-skeleton.d.ts +11 -0
- package/dist/admin/invoice-detail-skeleton.d.ts.map +1 -0
- package/dist/admin/invoice-detail-skeleton.js +33 -0
- package/dist/admin/line-item-dialog.d.ts +10 -0
- package/dist/admin/line-item-dialog.d.ts.map +1 -0
- package/dist/admin/line-item-dialog.js +91 -0
- package/dist/admin/pages/invoice-detail.d.ts +8 -0
- package/dist/admin/pages/invoice-detail.d.ts.map +1 -0
- package/dist/admin/pages/invoice-detail.js +11 -0
- package/dist/admin/pages/invoices-index.d.ts +8 -0
- package/dist/admin/pages/invoices-index.d.ts.map +1 -0
- package/dist/admin/pages/invoices-index.js +14 -0
- package/dist/admin/pages/payment-detail.d.ts +8 -0
- package/dist/admin/pages/payment-detail.d.ts.map +1 -0
- package/dist/admin/pages/payment-detail.js +11 -0
- package/dist/admin/pages/payments-index.d.ts +9 -0
- package/dist/admin/pages/payments-index.d.ts.map +1 -0
- package/dist/admin/pages/payments-index.js +21 -0
- package/dist/admin/pages/profitability.d.ts +10 -0
- package/dist/admin/pages/profitability.d.ts.map +1 -0
- package/dist/admin/pages/profitability.js +32 -0
- package/dist/admin/pages/supplier-invoice-detail.d.ts +20 -0
- package/dist/admin/pages/supplier-invoice-detail.d.ts.map +1 -0
- package/dist/admin/pages/supplier-invoice-detail.js +102 -0
- package/dist/admin/pages/supplier-invoices-index.d.ts +9 -0
- package/dist/admin/pages/supplier-invoices-index.d.ts.map +1 -0
- package/dist/admin/pages/supplier-invoices-index.js +16 -0
- package/dist/admin/payment-detail-host.d.ts +12 -0
- package/dist/admin/payment-detail-host.d.ts.map +1 -0
- package/dist/admin/payment-detail-host.js +108 -0
- package/dist/admin/payment-detail-skeleton.d.ts +8 -0
- package/dist/admin/payment-detail-skeleton.d.ts.map +1 -0
- package/dist/admin/payment-detail-skeleton.js +15 -0
- package/dist/admin/payment-dialog.d.ts +9 -0
- package/dist/admin/payment-dialog.d.ts.map +1 -0
- package/dist/admin/payment-dialog.js +99 -0
- package/dist/admin/record-payment-dialog.d.ts +16 -0
- package/dist/admin/record-payment-dialog.d.ts.map +1 -0
- package/dist/admin/record-payment-dialog.js +219 -0
- package/dist/admin/supplier-payment-policy-widget.d.ts +18 -0
- package/dist/admin/supplier-payment-policy-widget.d.ts.map +1 -0
- package/dist/admin/supplier-payment-policy-widget.js +31 -0
- package/dist/admin/use-supplier-picker.d.ts +19 -0
- package/dist/admin/use-supplier-picker.d.ts.map +1 -0
- package/dist/admin/use-supplier-picker.js +30 -0
- package/dist/checkout-components/collect-payment-dialog.d.ts +45 -0
- package/dist/checkout-components/collect-payment-dialog.d.ts.map +1 -0
- package/dist/checkout-components/collect-payment-dialog.js +121 -0
- package/dist/checkout-components/payment-link-landing-page.d.ts +76 -0
- package/dist/checkout-components/payment-link-landing-page.d.ts.map +1 -0
- package/dist/checkout-components/payment-link-landing-page.js +173 -0
- package/dist/checkout-components/payment-step.d.ts +42 -0
- package/dist/checkout-components/payment-step.d.ts.map +1 -0
- package/dist/checkout-components/payment-step.js +113 -0
- package/dist/checkout-hooks/index.d.ts +5 -0
- package/dist/checkout-hooks/index.d.ts.map +1 -0
- package/dist/checkout-hooks/index.js +4 -0
- package/dist/checkout-hooks/use-checkout-payment-link-config.d.ts +20 -0
- package/dist/checkout-hooks/use-checkout-payment-link-config.d.ts.map +1 -0
- package/dist/checkout-hooks/use-checkout-payment-link-config.js +26 -0
- package/dist/checkout-hooks/use-collect-payment.d.ts +227 -0
- package/dist/checkout-hooks/use-collect-payment.d.ts.map +1 -0
- package/dist/checkout-hooks/use-collect-payment.js +80 -0
- package/dist/checkout-hooks/use-initiate-checkout-collection.d.ts +308 -0
- package/dist/checkout-hooks/use-initiate-checkout-collection.d.ts.map +1 -0
- package/dist/checkout-hooks/use-initiate-checkout-collection.js +35 -0
- package/dist/checkout-hooks/use-preview-checkout-collection.d.ts +65 -0
- package/dist/checkout-hooks/use-preview-checkout-collection.d.ts.map +1 -0
- package/dist/checkout-hooks/use-preview-checkout-collection.js +27 -0
- package/dist/checkout-i18n/en.d.ts +3 -0
- package/dist/checkout-i18n/en.d.ts.map +1 -0
- package/dist/checkout-i18n/en.js +127 -0
- package/dist/checkout-i18n/index.d.ts +5 -0
- package/dist/checkout-i18n/index.d.ts.map +1 -0
- package/dist/checkout-i18n/index.js +3 -0
- package/dist/checkout-i18n/messages.d.ts +121 -0
- package/dist/checkout-i18n/messages.d.ts.map +1 -0
- package/dist/checkout-i18n/messages.js +1 -0
- package/dist/checkout-i18n/provider.d.ts +26 -0
- package/dist/checkout-i18n/provider.d.ts.map +1 -0
- package/dist/checkout-i18n/provider.js +41 -0
- package/dist/checkout-i18n/ro.d.ts +3 -0
- package/dist/checkout-i18n/ro.d.ts.map +1 -0
- package/dist/checkout-i18n/ro.js +127 -0
- package/dist/checkout-types.d.ts +53 -0
- package/dist/checkout-types.d.ts.map +1 -0
- package/dist/checkout-types.js +1 -0
- package/dist/checkout-ui.d.ts +7 -0
- package/dist/checkout-ui.d.ts.map +1 -0
- package/dist/checkout-ui.js +4 -0
- package/dist/checkout.d.ts +5 -0
- package/dist/checkout.d.ts.map +1 -0
- package/dist/checkout.js +3 -0
- package/dist/client.d.ts +16 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +79 -0
- package/dist/components/accountant-portal/body.d.ts +8 -0
- package/dist/components/accountant-portal/body.d.ts.map +1 -0
- package/dist/components/accountant-portal/body.js +114 -0
- package/dist/components/accountant-portal/widgets.d.ts +13 -0
- package/dist/components/accountant-portal/widgets.d.ts.map +1 -0
- package/dist/components/accountant-portal/widgets.js +27 -0
- package/dist/components/accountant-portal.d.ts +10 -0
- package/dist/components/accountant-portal.d.ts.map +1 -0
- package/dist/components/accountant-portal.js +22 -0
- package/dist/components/accountant-share-dialog.d.ts +6 -0
- package/dist/components/accountant-share-dialog.d.ts.map +1 -0
- package/dist/components/accountant-share-dialog.js +53 -0
- package/dist/components/async-combobox.d.ts +33 -0
- package/dist/components/async-combobox.d.ts.map +1 -0
- package/dist/components/async-combobox.js +100 -0
- package/dist/components/booking-invoice-dialog.d.ts +63 -0
- package/dist/components/booking-invoice-dialog.d.ts.map +1 -0
- package/dist/components/booking-invoice-dialog.js +383 -0
- package/dist/components/cost-categories-page.d.ts +5 -0
- package/dist/components/cost-categories-page.d.ts.map +1 -0
- package/dist/components/cost-categories-page.js +30 -0
- package/dist/components/invoice-action-ledger-card.d.ts +15 -0
- package/dist/components/invoice-action-ledger-card.d.ts.map +1 -0
- package/dist/components/invoice-action-ledger-card.js +76 -0
- package/dist/components/invoice-bulk-actions.d.ts +10 -0
- package/dist/components/invoice-bulk-actions.d.ts.map +1 -0
- package/dist/components/invoice-bulk-actions.js +19 -0
- package/dist/components/invoice-detail-page/cards.d.ts +44 -0
- package/dist/components/invoice-detail-page/cards.d.ts.map +1 -0
- package/dist/components/invoice-detail-page/cards.js +43 -0
- package/dist/components/invoice-detail-page/header.d.ts +15 -0
- package/dist/components/invoice-detail-page/header.d.ts.map +1 -0
- package/dist/components/invoice-detail-page/header.js +30 -0
- package/dist/components/invoice-detail-page/notes-dialogs.d.ts +28 -0
- package/dist/components/invoice-detail-page/notes-dialogs.d.ts.map +1 -0
- package/dist/components/invoice-detail-page/notes-dialogs.js +104 -0
- package/dist/components/invoice-detail-page/primitives.d.ts +47 -0
- package/dist/components/invoice-detail-page/primitives.d.ts.map +1 -0
- package/dist/components/invoice-detail-page/primitives.js +76 -0
- package/dist/components/invoice-detail-page-with-action-ledger.d.ts +7 -0
- package/dist/components/invoice-detail-page-with-action-ledger.d.ts.map +1 -0
- package/dist/components/invoice-detail-page-with-action-ledger.js +11 -0
- package/dist/components/invoice-detail-page.d.ts +46 -0
- package/dist/components/invoice-detail-page.d.ts.map +1 -0
- package/dist/components/invoice-detail-page.js +134 -0
- package/dist/components/invoice-dialog.d.ts +9 -0
- package/dist/components/invoice-dialog.d.ts.map +1 -0
- package/dist/components/invoice-dialog.js +145 -0
- package/dist/components/invoice-number-series-dialog.d.ts +9 -0
- package/dist/components/invoice-number-series-dialog.d.ts.map +1 -0
- package/dist/components/invoice-number-series-dialog.js +134 -0
- package/dist/components/invoice-number-series-format.d.ts +3 -0
- package/dist/components/invoice-number-series-format.d.ts.map +1 -0
- package/dist/components/invoice-number-series-format.js +4 -0
- package/dist/components/invoice-number-series-page.d.ts +5 -0
- package/dist/components/invoice-number-series-page.d.ts.map +1 -0
- package/dist/components/invoice-number-series-page.js +55 -0
- package/dist/components/invoice-table-parts.d.ts +25 -0
- package/dist/components/invoice-table-parts.d.ts.map +1 -0
- package/dist/components/invoice-table-parts.js +32 -0
- package/dist/components/invoices-page-skeleton.d.ts +5 -0
- package/dist/components/invoices-page-skeleton.d.ts.map +1 -0
- package/dist/components/invoices-page-skeleton.js +13 -0
- package/dist/components/invoices-page.d.ts +6 -0
- package/dist/components/invoices-page.d.ts.map +1 -0
- package/dist/components/invoices-page.js +145 -0
- package/dist/components/payment-detail-page.d.ts +47 -0
- package/dist/components/payment-detail-page.d.ts.map +1 -0
- package/dist/components/payment-detail-page.js +90 -0
- package/dist/components/payment-policy-form.d.ts +49 -0
- package/dist/components/payment-policy-form.d.ts.map +1 -0
- package/dist/components/payment-policy-form.js +82 -0
- package/dist/components/payments-page/controls.d.ts +23 -0
- package/dist/components/payments-page/controls.d.ts.map +1 -0
- package/dist/components/payments-page/controls.js +20 -0
- package/dist/components/payments-page-skeleton.d.ts +5 -0
- package/dist/components/payments-page-skeleton.d.ts.map +1 -0
- package/dist/components/payments-page-skeleton.js +13 -0
- package/dist/components/payments-page.d.ts +20 -0
- package/dist/components/payments-page.d.ts.map +1 -0
- package/dist/components/payments-page.js +143 -0
- package/dist/components/profitability-page/sections.d.ts +24 -0
- package/dist/components/profitability-page/sections.d.ts.map +1 -0
- package/dist/components/profitability-page/sections.js +43 -0
- package/dist/components/profitability-page.d.ts +13 -0
- package/dist/components/profitability-page.d.ts.map +1 -0
- package/dist/components/profitability-page.js +175 -0
- package/dist/components/record-booking-payment-dialog/shared.d.ts +54 -0
- package/dist/components/record-booking-payment-dialog/shared.d.ts.map +1 -0
- package/dist/components/record-booking-payment-dialog/shared.js +47 -0
- package/dist/components/record-booking-payment-dialog.d.ts +4 -0
- package/dist/components/record-booking-payment-dialog.d.ts.map +1 -0
- package/dist/components/record-booking-payment-dialog.js +256 -0
- package/dist/components/supplier-invoice-detail-page/dialogs.d.ts +34 -0
- package/dist/components/supplier-invoice-detail-page/dialogs.d.ts.map +1 -0
- package/dist/components/supplier-invoice-detail-page/dialogs.js +119 -0
- package/dist/components/supplier-invoice-detail-page/shared.d.ts +64 -0
- package/dist/components/supplier-invoice-detail-page/shared.d.ts.map +1 -0
- package/dist/components/supplier-invoice-detail-page/shared.js +70 -0
- package/dist/components/supplier-invoice-detail-page.d.ts +4 -0
- package/dist/components/supplier-invoice-detail-page.d.ts.map +1 -0
- package/dist/components/supplier-invoice-detail-page.js +101 -0
- package/dist/components/supplier-invoice-form-dialog.d.ts +45 -0
- package/dist/components/supplier-invoice-form-dialog.d.ts.map +1 -0
- package/dist/components/supplier-invoice-form-dialog.js +102 -0
- package/dist/components/supplier-invoices-page.d.ts +14 -0
- package/dist/components/supplier-invoices-page.d.ts.map +1 -0
- package/dist/components/supplier-invoices-page.js +69 -0
- package/dist/components/supplier-payment-dialog.d.ts +7 -0
- package/dist/components/supplier-payment-dialog.d.ts.map +1 -0
- package/dist/components/supplier-payment-dialog.js +103 -0
- package/dist/components/taxes-page/policy-profile-sheet.d.ts +8 -0
- package/dist/components/taxes-page/policy-profile-sheet.d.ts.map +1 -0
- package/dist/components/taxes-page/policy-profile-sheet.js +52 -0
- package/dist/components/taxes-page/policy-rule-sheet.d.ts +10 -0
- package/dist/components/taxes-page/policy-rule-sheet.d.ts.map +1 -0
- package/dist/components/taxes-page/policy-rule-sheet.js +137 -0
- package/dist/components/taxes-page/shared.d.ts +128 -0
- package/dist/components/taxes-page/shared.d.ts.map +1 -0
- package/dist/components/taxes-page/shared.js +288 -0
- package/dist/components/taxes-page/sheets.d.ts +4 -0
- package/dist/components/taxes-page/sheets.d.ts.map +1 -0
- package/dist/components/taxes-page/sheets.js +3 -0
- package/dist/components/taxes-page/tax-sheet.d.ts +9 -0
- package/dist/components/taxes-page/tax-sheet.d.ts.map +1 -0
- package/dist/components/taxes-page/tax-sheet.js +108 -0
- package/dist/components/taxes-page.d.ts +4 -0
- package/dist/components/taxes-page.d.ts.map +1 -0
- package/dist/components/taxes-page.js +165 -0
- package/dist/hooks/index.d.ts +53 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +52 -0
- package/dist/hooks/use-accountant-share-mutation.d.ts +20 -0
- package/dist/hooks/use-accountant-share-mutation.d.ts.map +1 -0
- package/dist/hooks/use-accountant-share-mutation.js +27 -0
- package/dist/hooks/use-accountant-shares.d.ts +13 -0
- package/dist/hooks/use-accountant-shares.d.ts.map +1 -0
- package/dist/hooks/use-accountant-shares.js +8 -0
- package/dist/hooks/use-admin-booking-payments.d.ts +30 -0
- package/dist/hooks/use-admin-booking-payments.d.ts.map +1 -0
- package/dist/hooks/use-admin-booking-payments.js +18 -0
- package/dist/hooks/use-all-payments.d.ts +35 -0
- package/dist/hooks/use-all-payments.d.ts.map +1 -0
- package/dist/hooks/use-all-payments.js +12 -0
- package/dist/hooks/use-booking-guarantees.d.ts +82 -0
- package/dist/hooks/use-booking-guarantees.d.ts.map +1 -0
- package/dist/hooks/use-booking-guarantees.js +46 -0
- package/dist/hooks/use-booking-payment-schedule-regenerate-mutation.d.ts +44 -0
- package/dist/hooks/use-booking-payment-schedule-regenerate-mutation.d.ts.map +1 -0
- package/dist/hooks/use-booking-payment-schedule-regenerate-mutation.js +27 -0
- package/dist/hooks/use-booking-payment-schedules.d.ts +63 -0
- package/dist/hooks/use-booking-payment-schedules.d.ts.map +1 -0
- package/dist/hooks/use-booking-payment-schedules.js +47 -0
- package/dist/hooks/use-cost-categories.d.ts +14 -0
- package/dist/hooks/use-cost-categories.d.ts.map +1 -0
- package/dist/hooks/use-cost-categories.js +9 -0
- package/dist/hooks/use-cost-category-mutation.d.ts +31 -0
- package/dist/hooks/use-cost-category-mutation.d.ts.map +1 -0
- package/dist/hooks/use-cost-category-mutation.js +27 -0
- package/dist/hooks/use-departure-profitability.d.ts +56 -0
- package/dist/hooks/use-departure-profitability.d.ts.map +1 -0
- package/dist/hooks/use-departure-profitability.js +12 -0
- package/dist/hooks/use-finance-action-ledger.d.ts +94 -0
- package/dist/hooks/use-finance-action-ledger.d.ts.map +1 -0
- package/dist/hooks/use-finance-action-ledger.js +20 -0
- package/dist/hooks/use-invoice-attachment-mutation.d.ts +43 -0
- package/dist/hooks/use-invoice-attachment-mutation.d.ts.map +1 -0
- package/dist/hooks/use-invoice-attachment-mutation.js +39 -0
- package/dist/hooks/use-invoice-attachments.d.ts +18 -0
- package/dist/hooks/use-invoice-attachments.d.ts.map +1 -0
- package/dist/hooks/use-invoice-attachments.js +12 -0
- package/dist/hooks/use-invoice-bulk-status-mutation.d.ts +51 -0
- package/dist/hooks/use-invoice-bulk-status-mutation.d.ts.map +1 -0
- package/dist/hooks/use-invoice-bulk-status-mutation.js +66 -0
- package/dist/hooks/use-invoice-credit-note-mutation.d.ts +38 -0
- package/dist/hooks/use-invoice-credit-note-mutation.d.ts.map +1 -0
- package/dist/hooks/use-invoice-credit-note-mutation.js +35 -0
- package/dist/hooks/use-invoice-credit-notes.d.ts +17 -0
- package/dist/hooks/use-invoice-credit-notes.d.ts.map +1 -0
- package/dist/hooks/use-invoice-credit-notes.js +12 -0
- package/dist/hooks/use-invoice-fx-rate.d.ts +19 -0
- package/dist/hooks/use-invoice-fx-rate.d.ts.map +1 -0
- package/dist/hooks/use-invoice-fx-rate.js +13 -0
- package/dist/hooks/use-invoice-line-item-mutation.d.ts +40 -0
- package/dist/hooks/use-invoice-line-item-mutation.d.ts.map +1 -0
- package/dist/hooks/use-invoice-line-item-mutation.js +42 -0
- package/dist/hooks/use-invoice-line-items.d.ts +17 -0
- package/dist/hooks/use-invoice-line-items.d.ts.map +1 -0
- package/dist/hooks/use-invoice-line-items.js +12 -0
- package/dist/hooks/use-invoice-mutation.d.ts +225 -0
- package/dist/hooks/use-invoice-mutation.d.ts.map +1 -0
- package/dist/hooks/use-invoice-mutation.js +121 -0
- package/dist/hooks/use-invoice-note-mutation.d.ts +11 -0
- package/dist/hooks/use-invoice-note-mutation.d.ts.map +1 -0
- package/dist/hooks/use-invoice-note-mutation.js +23 -0
- package/dist/hooks/use-invoice-notes.d.ts +13 -0
- package/dist/hooks/use-invoice-notes.d.ts.map +1 -0
- package/dist/hooks/use-invoice-notes.js +12 -0
- package/dist/hooks/use-invoice-number-series-mutation.d.ts +62 -0
- package/dist/hooks/use-invoice-number-series-mutation.d.ts.map +1 -0
- package/dist/hooks/use-invoice-number-series-mutation.js +39 -0
- package/dist/hooks/use-invoice-number-series.d.ts +28 -0
- package/dist/hooks/use-invoice-number-series.d.ts.map +1 -0
- package/dist/hooks/use-invoice-number-series.js +12 -0
- package/dist/hooks/use-invoice-payment-mutation.d.ts +29 -0
- package/dist/hooks/use-invoice-payment-mutation.d.ts.map +1 -0
- package/dist/hooks/use-invoice-payment-mutation.js +35 -0
- package/dist/hooks/use-invoice-payments.d.ts +21 -0
- package/dist/hooks/use-invoice-payments.d.ts.map +1 -0
- package/dist/hooks/use-invoice-payments.js +12 -0
- package/dist/hooks/use-invoice.d.ts +32 -0
- package/dist/hooks/use-invoice.d.ts.map +1 -0
- package/dist/hooks/use-invoice.js +12 -0
- package/dist/hooks/use-invoices.d.ts +36 -0
- package/dist/hooks/use-invoices.d.ts.map +1 -0
- package/dist/hooks/use-invoices.js +12 -0
- package/dist/hooks/use-payment-mutation.d.ts +57 -0
- package/dist/hooks/use-payment-mutation.d.ts.map +1 -0
- package/dist/hooks/use-payment-mutation.js +59 -0
- package/dist/hooks/use-payment-session-mutation.d.ts +205 -0
- package/dist/hooks/use-payment-session-mutation.d.ts.map +1 -0
- package/dist/hooks/use-payment-session-mutation.js +38 -0
- package/dist/hooks/use-payment-sessions.d.ts +97 -0
- package/dist/hooks/use-payment-sessions.d.ts.map +1 -0
- package/dist/hooks/use-payment-sessions.js +17 -0
- package/dist/hooks/use-payment.d.ts +31 -0
- package/dist/hooks/use-payment.d.ts.map +1 -0
- package/dist/hooks/use-payment.js +12 -0
- package/dist/hooks/use-product-profitability.d.ts +52 -0
- package/dist/hooks/use-product-profitability.d.ts.map +1 -0
- package/dist/hooks/use-product-profitability.js +12 -0
- package/dist/hooks/use-public-booking-documents.d.ts +29 -0
- package/dist/hooks/use-public-booking-documents.d.ts.map +1 -0
- package/dist/hooks/use-public-booking-documents.js +12 -0
- package/dist/hooks/use-public-booking-payment-options.d.ts +47 -0
- package/dist/hooks/use-public-booking-payment-options.d.ts.map +1 -0
- package/dist/hooks/use-public-booking-payment-options.js +12 -0
- package/dist/hooks/use-public-booking-payments.d.ts +24 -0
- package/dist/hooks/use-public-booking-payments.d.ts.map +1 -0
- package/dist/hooks/use-public-booking-payments.js +12 -0
- package/dist/hooks/use-public-finance-document-by-reference.d.ts +27 -0
- package/dist/hooks/use-public-finance-document-by-reference.d.ts.map +1 -0
- package/dist/hooks/use-public-finance-document-by-reference.js +12 -0
- package/dist/hooks/use-public-payment-session-mutation.d.ts +82 -0
- package/dist/hooks/use-public-payment-session-mutation.d.ts.map +1 -0
- package/dist/hooks/use-public-payment-session-mutation.js +33 -0
- package/dist/hooks/use-public-payment-session.d.ts +73 -0
- package/dist/hooks/use-public-payment-session.d.ts.map +1 -0
- package/dist/hooks/use-public-payment-session.js +12 -0
- package/dist/hooks/use-public-voucher-validation-mutation.d.ts +23 -0
- package/dist/hooks/use-public-voucher-validation-mutation.d.ts.map +1 -0
- package/dist/hooks/use-public-voucher-validation-mutation.js +17 -0
- package/dist/hooks/use-supplier-invoice-attachments.d.ts +17 -0
- package/dist/hooks/use-supplier-invoice-attachments.d.ts.map +1 -0
- package/dist/hooks/use-supplier-invoice-attachments.js +12 -0
- package/dist/hooks/use-supplier-invoice-mutation.d.ts +353 -0
- package/dist/hooks/use-supplier-invoice-mutation.d.ts.map +1 -0
- package/dist/hooks/use-supplier-invoice-mutation.js +81 -0
- package/dist/hooks/use-supplier-invoice-payments.d.ts +26 -0
- package/dist/hooks/use-supplier-invoice-payments.d.ts.map +1 -0
- package/dist/hooks/use-supplier-invoice-payments.js +12 -0
- package/dist/hooks/use-supplier-invoice.d.ts +65 -0
- package/dist/hooks/use-supplier-invoice.d.ts.map +1 -0
- package/dist/hooks/use-supplier-invoice.js +12 -0
- package/dist/hooks/use-supplier-invoices.d.ts +36 -0
- package/dist/hooks/use-supplier-invoices.d.ts.map +1 -0
- package/dist/hooks/use-supplier-invoices.js +12 -0
- package/dist/hooks/use-supplier-payment-mutation.d.ts +55 -0
- package/dist/hooks/use-supplier-payment-mutation.d.ts.map +1 -0
- package/dist/hooks/use-supplier-payment-mutation.js +35 -0
- package/dist/hooks/use-supplier-payments.d.ts +27 -0
- package/dist/hooks/use-supplier-payments.d.ts.map +1 -0
- package/dist/hooks/use-supplier-payments.js +12 -0
- package/dist/hooks/use-traveler-profitability.d.ts +24 -0
- package/dist/hooks/use-traveler-profitability.d.ts.map +1 -0
- package/dist/hooks/use-traveler-profitability.js +11 -0
- package/dist/hooks/use-voucher-mutation.d.ts +105 -0
- package/dist/hooks/use-voucher-mutation.d.ts.map +1 -0
- package/dist/hooks/use-voucher-mutation.js +50 -0
- package/dist/hooks/use-voucher.d.ts +38 -0
- package/dist/hooks/use-voucher.d.ts.map +1 -0
- package/dist/hooks/use-voucher.js +17 -0
- package/dist/hooks/use-vouchers.d.ts +34 -0
- package/dist/hooks/use-vouchers.d.ts.map +1 -0
- package/dist/hooks/use-vouchers.js +18 -0
- package/dist/i18n/en/invoices.d.ts +278 -0
- package/dist/i18n/en/invoices.d.ts.map +1 -0
- package/dist/i18n/en/invoices.js +277 -0
- package/dist/i18n/en/numberingAndPayments.d.ts +387 -0
- package/dist/i18n/en/numberingAndPayments.d.ts.map +1 -0
- package/dist/i18n/en/numberingAndPayments.js +386 -0
- package/dist/i18n/en/profitability.d.ts +147 -0
- package/dist/i18n/en/profitability.d.ts.map +1 -0
- package/dist/i18n/en/profitability.js +146 -0
- package/dist/i18n/en/suppliers.d.ts +187 -0
- package/dist/i18n/en/suppliers.d.ts.map +1 -0
- package/dist/i18n/en/suppliers.js +186 -0
- package/dist/i18n/en.d.ts +998 -0
- package/dist/i18n/en.d.ts.map +1 -0
- package/dist/i18n/en.js +22 -0
- package/dist/i18n/index.d.ts +5 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +3 -0
- package/dist/i18n/messages/core.d.ts +18 -0
- package/dist/i18n/messages/core.d.ts.map +1 -0
- package/dist/i18n/messages/core.js +30 -0
- package/dist/i18n/messages/invoices.d.ts +252 -0
- package/dist/i18n/messages/invoices.d.ts.map +1 -0
- package/dist/i18n/messages/invoices.js +1 -0
- package/dist/i18n/messages/numberingAndPayments.d.ts +277 -0
- package/dist/i18n/messages/numberingAndPayments.d.ts.map +1 -0
- package/dist/i18n/messages/numberingAndPayments.js +1 -0
- package/dist/i18n/messages/profitability.d.ts +151 -0
- package/dist/i18n/messages/profitability.d.ts.map +1 -0
- package/dist/i18n/messages/profitability.js +1 -0
- package/dist/i18n/messages/suppliers.d.ts +167 -0
- package/dist/i18n/messages/suppliers.d.ts.map +1 -0
- package/dist/i18n/messages/suppliers.js +1 -0
- package/dist/i18n/messages.d.ts +29 -0
- package/dist/i18n/messages.d.ts.map +1 -0
- package/dist/i18n/messages.js +1 -0
- package/dist/i18n/provider.d.ts +2018 -0
- package/dist/i18n/provider.d.ts.map +1 -0
- package/dist/i18n/provider.js +44 -0
- package/dist/i18n/ro/invoices.d.ts +278 -0
- package/dist/i18n/ro/invoices.d.ts.map +1 -0
- package/dist/i18n/ro/invoices.js +277 -0
- package/dist/i18n/ro/numberingAndPayments.d.ts +387 -0
- package/dist/i18n/ro/numberingAndPayments.d.ts.map +1 -0
- package/dist/i18n/ro/numberingAndPayments.js +386 -0
- package/dist/i18n/ro/profitability.d.ts +147 -0
- package/dist/i18n/ro/profitability.d.ts.map +1 -0
- package/dist/i18n/ro/profitability.js +146 -0
- package/dist/i18n/ro/suppliers.d.ts +187 -0
- package/dist/i18n/ro/suppliers.d.ts.map +1 -0
- package/dist/i18n/ro/suppliers.js +186 -0
- package/dist/i18n/ro.d.ts +998 -0
- package/dist/i18n/ro.d.ts.map +1 -0
- package/dist/i18n/ro.js +22 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/operations.d.ts +484 -0
- package/dist/operations.d.ts.map +1 -0
- package/dist/operations.js +52 -0
- package/dist/provider.d.ts +2 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +1 -0
- package/dist/query-keys.d.ts +195 -0
- package/dist/query-keys.d.ts.map +1 -0
- package/dist/query-keys.js +49 -0
- package/dist/query-options/public-reporting.d.ts +2129 -0
- package/dist/query-options/public-reporting.d.ts.map +1 -0
- package/dist/query-options/public-reporting.js +193 -0
- package/dist/query-options-action-ledger.d.ts +382 -0
- package/dist/query-options-action-ledger.d.ts.map +1 -0
- package/dist/query-options-action-ledger.js +36 -0
- package/dist/query-options.d.ts +2057 -0
- package/dist/query-options.d.ts.map +1 -0
- package/dist/query-options.js +328 -0
- package/dist/schemas/accountant.d.ts +168 -0
- package/dist/schemas/accountant.d.ts.map +1 -0
- package/dist/schemas/accountant.js +53 -0
- package/dist/schemas/action-ledger.d.ts +206 -0
- package/dist/schemas/action-ledger.d.ts.map +1 -0
- package/dist/schemas/action-ledger.js +83 -0
- package/dist/schemas/common.d.ts +17 -0
- package/dist/schemas/common.d.ts.map +1 -0
- package/dist/schemas/common.js +10 -0
- package/dist/schemas/invoice.d.ts +1451 -0
- package/dist/schemas/invoice.d.ts.map +1 -0
- package/dist/schemas/invoice.js +438 -0
- package/dist/schemas/profitability.d.ts +333 -0
- package/dist/schemas/profitability.d.ts.map +1 -0
- package/dist/schemas/profitability.js +84 -0
- package/dist/schemas/public.d.ts +481 -0
- package/dist/schemas/public.d.ts.map +1 -0
- package/dist/schemas/public.js +9 -0
- package/dist/schemas/responses.d.ts +632 -0
- package/dist/schemas/responses.d.ts.map +1 -0
- package/dist/schemas/responses.js +27 -0
- package/dist/schemas/supplier.d.ts +226 -0
- package/dist/schemas/supplier.d.ts.map +1 -0
- package/dist/schemas/supplier.js +103 -0
- package/dist/schemas/vouchers.d.ts +283 -0
- package/dist/schemas/vouchers.d.ts.map +1 -0
- package/dist/schemas/vouchers.js +49 -0
- package/dist/schemas.d.ts +10 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +9 -0
- package/dist/ui.d.ts +27 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +26 -0
- package/package.json +181 -0
- package/src/styles.css +12 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useMutation } from "@tanstack/react-query";
|
|
4
|
+
import { Button, Input, Label, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Sheet, SheetBody, SheetContent, SheetFooter, SheetHeader, SheetTitle, Switch, Textarea, } from "@voyant-travel/ui/components";
|
|
5
|
+
import { Loader2, Plus, Trash2 } from "lucide-react";
|
|
6
|
+
import { useEffect, useState } from "react";
|
|
7
|
+
import { useFinanceUiMessagesOrDefault } from "../../i18n/index.js";
|
|
8
|
+
import { appliesToLabel, formatRate, initialForm, nextTaxClassLineKey, TAX_CLASS_APPLIES_TO_OPTIONS, TAX_CODE_OPTIONS, toSlug, useTaxesPageApi, } from "./shared.js";
|
|
9
|
+
export function TaxSheet({ open, onOpenChange, row, onSuccess, taxRegimes, }) {
|
|
10
|
+
const messages = useFinanceUiMessagesOrDefault();
|
|
11
|
+
const taxMessages = messages.taxesPage;
|
|
12
|
+
const api = useTaxesPageApi();
|
|
13
|
+
const [form, setForm] = useState(() => initialForm(row));
|
|
14
|
+
const [error, setError] = useState(null);
|
|
15
|
+
const isEditing = !!row;
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
setForm(initialForm(row));
|
|
18
|
+
setError(null);
|
|
19
|
+
}, [row]);
|
|
20
|
+
const mutation = useMutation({
|
|
21
|
+
mutationFn: async () => {
|
|
22
|
+
if (!form.taxClassLabel.trim())
|
|
23
|
+
throw new Error(taxMessages.validationNameRequired);
|
|
24
|
+
const ratePercent = Number(form.ratePercent);
|
|
25
|
+
if (!Number.isFinite(ratePercent) || ratePercent < 0) {
|
|
26
|
+
throw new Error(taxMessages.validationRateInvalid);
|
|
27
|
+
}
|
|
28
|
+
const regimeInput = {
|
|
29
|
+
code: form.regimeCode,
|
|
30
|
+
name: form.regimeName.trim() || form.taxClassLabel.trim(),
|
|
31
|
+
jurisdiction: form.jurisdiction.trim() || null,
|
|
32
|
+
ratePercent: Math.round(ratePercent),
|
|
33
|
+
description: form.regimeDescription.trim() || null,
|
|
34
|
+
legalReference: form.legalReference.trim() || null,
|
|
35
|
+
active: form.active,
|
|
36
|
+
};
|
|
37
|
+
const taxClassInput = {
|
|
38
|
+
code: form.taxClassCode.trim() || toSlug(form.taxClassLabel),
|
|
39
|
+
label: form.taxClassLabel.trim(),
|
|
40
|
+
description: form.taxClassDescription.trim() || null,
|
|
41
|
+
lines: form.lines.length
|
|
42
|
+
? form.lines
|
|
43
|
+
.filter((line) => line.regimeId.trim())
|
|
44
|
+
.map((line) => ({
|
|
45
|
+
regime_id: line.regimeId,
|
|
46
|
+
applies_to: line.appliesTo,
|
|
47
|
+
}))
|
|
48
|
+
: null,
|
|
49
|
+
active: form.active,
|
|
50
|
+
};
|
|
51
|
+
const regimeEnvelope = row?.regime
|
|
52
|
+
? await api.patch(`/v1/admin/finance/tax-regimes/${row.regime.id}`, regimeInput)
|
|
53
|
+
: await api.post("/v1/admin/finance/tax-regimes", regimeInput);
|
|
54
|
+
const regime = regimeEnvelope.data;
|
|
55
|
+
if (row) {
|
|
56
|
+
await api.patch(`/v1/admin/finance/tax-classes/${row.taxClass.id}`, {
|
|
57
|
+
...taxClassInput,
|
|
58
|
+
defaultRegimeId: regime.id,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
await api.post("/v1/admin/finance/tax-classes", {
|
|
63
|
+
...taxClassInput,
|
|
64
|
+
defaultRegimeId: regime.id,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
onSuccess,
|
|
69
|
+
onError: (err) => setError(err instanceof Error ? err.message : taxMessages.saveFailed),
|
|
70
|
+
});
|
|
71
|
+
const setField = (key) => (value) => setForm((current) => ({ ...current, [key]: value }));
|
|
72
|
+
const updateLine = (index, patch) => {
|
|
73
|
+
setForm((current) => ({
|
|
74
|
+
...current,
|
|
75
|
+
lines: current.lines.map((line, lineIndex) => lineIndex === index ? { ...line, ...patch } : line),
|
|
76
|
+
}));
|
|
77
|
+
};
|
|
78
|
+
const addLine = () => {
|
|
79
|
+
const regimeId = taxRegimes[0]?.id;
|
|
80
|
+
if (!regimeId)
|
|
81
|
+
return;
|
|
82
|
+
setForm((current) => ({
|
|
83
|
+
...current,
|
|
84
|
+
lines: [...current.lines, { key: nextTaxClassLineKey(), appliesTo: "all", regimeId }],
|
|
85
|
+
}));
|
|
86
|
+
};
|
|
87
|
+
const removeLine = (index) => {
|
|
88
|
+
setForm((current) => ({
|
|
89
|
+
...current,
|
|
90
|
+
lines: current.lines.filter((_, lineIndex) => lineIndex !== index),
|
|
91
|
+
}));
|
|
92
|
+
};
|
|
93
|
+
return (_jsx(Sheet, { open: open, onOpenChange: onOpenChange, children: _jsxs(SheetContent, { side: "right", size: "lg", children: [_jsx(SheetHeader, { children: _jsx(SheetTitle, { children: isEditing ? taxMessages.editSheetTitle : taxMessages.newSheetTitle }) }), _jsx(SheetBody, { children: _jsxs("form", { className: "flex flex-col gap-4", children: [_jsxs("div", { className: "flex flex-col gap-3 rounded-lg border p-4", children: [_jsxs("div", { children: [_jsx("h3", { className: "text-sm font-medium", children: taxMessages.taxClassSectionTitle }), _jsx("p", { className: "text-xs text-muted-foreground", children: taxMessages.taxClassSectionDescription })] }), _jsxs("div", { className: "grid grid-cols-2 gap-4", children: [_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { children: taxMessages.taxClassLabelLabel }), _jsx(Input, { value: form.taxClassLabel, onChange: (event) => {
|
|
94
|
+
const next = event.target.value;
|
|
95
|
+
setForm((current) => ({
|
|
96
|
+
...current,
|
|
97
|
+
taxClassLabel: next,
|
|
98
|
+
taxClassCode: current.taxClassCode || toSlug(next),
|
|
99
|
+
regimeName: current.regimeName || next,
|
|
100
|
+
}));
|
|
101
|
+
}, placeholder: taxMessages.taxClassLabelPlaceholder })] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { children: taxMessages.taxClassCodeLabel }), _jsx(Input, { value: form.taxClassCode, onChange: (event) => setField("taxClassCode")(event.target.value), placeholder: taxMessages.taxClassCodePlaceholder })] })] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { children: taxMessages.taxClassDescriptionLabel }), _jsx(Textarea, { value: form.taxClassDescription, onChange: (event) => setField("taxClassDescription")(event.target.value), placeholder: taxMessages.taxClassDescriptionPlaceholder })] })] }), _jsxs("div", { className: "flex flex-col gap-3 rounded-lg border p-4", children: [_jsxs("div", { children: [_jsx("h3", { className: "text-sm font-medium", children: taxMessages.defaultRegimeSectionTitle }), _jsx("p", { className: "text-xs text-muted-foreground", children: taxMessages.defaultRegimeSectionDescription })] }), _jsxs("div", { className: "grid grid-cols-2 gap-4", children: [_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { children: taxMessages.regimeNameLabel }), _jsx(Input, { value: form.regimeName, onChange: (event) => setField("regimeName")(event.target.value), placeholder: taxMessages.regimeNamePlaceholder })] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { children: taxMessages.regimeCodeLabel }), _jsxs(Select, { value: form.regimeCode, onValueChange: (value) => setField("regimeCode")(value), items: TAX_CODE_OPTIONS.map((code) => ({ value: code, label: code })), children: [_jsx(SelectTrigger, { className: "w-full", children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: TAX_CODE_OPTIONS.map((code) => (_jsx(SelectItem, { value: code, children: code }, code))) })] })] })] }), _jsxs("div", { className: "grid grid-cols-3 gap-4", children: [_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { children: taxMessages.rateLabel }), _jsx(Input, { type: "number", min: "0", step: "1", value: form.ratePercent, onChange: (event) => setField("ratePercent")(event.target.value) })] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { children: taxMessages.jurisdictionLabel }), _jsx(Input, { value: form.jurisdiction, onChange: (event) => setField("jurisdiction")(event.target.value), placeholder: "RO" })] })] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { children: taxMessages.legalReferenceLabel }), _jsx(Input, { value: form.legalReference, onChange: (event) => setField("legalReference")(event.target.value), placeholder: taxMessages.legalReferencePlaceholder })] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { children: taxMessages.regimeDescriptionLabel }), _jsx(Textarea, { value: form.regimeDescription, onChange: (event) => setField("regimeDescription")(event.target.value), placeholder: taxMessages.regimeDescriptionPlaceholder })] })] }), _jsxs("div", { className: "flex flex-col gap-3 rounded-lg border p-4", children: [_jsxs("div", { className: "flex items-start justify-between gap-4", children: [_jsxs("div", { children: [_jsx("h3", { className: "text-sm font-medium", children: taxMessages.regimeOverridesSectionTitle }), _jsx("p", { className: "text-xs text-muted-foreground", children: taxMessages.regimeOverridesSectionDescription })] }), _jsxs(Button, { type: "button", variant: "outline", size: "sm", onClick: addLine, disabled: !taxRegimes.length, children: [_jsx(Plus, { className: "mr-1.5 h-3.5 w-3.5" }), taxMessages.addRegimeOverride] })] }), form.lines.length ? (_jsx("div", { className: "flex flex-col gap-2", children: form.lines.map((line, index) => (_jsxs("div", { className: "grid grid-cols-[minmax(0,1fr)_minmax(0,2fr)_auto] items-end gap-2", children: [_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { children: taxMessages.appliesToLabel }), _jsxs(Select, { value: line.appliesTo, onValueChange: (value) => updateLine(index, { appliesTo: value }), items: TAX_CLASS_APPLIES_TO_OPTIONS.map((appliesTo) => ({
|
|
102
|
+
value: appliesTo,
|
|
103
|
+
label: appliesToLabel(messages, appliesTo),
|
|
104
|
+
})), children: [_jsx(SelectTrigger, { className: "w-full", children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: TAX_CLASS_APPLIES_TO_OPTIONS.map((appliesTo) => (_jsx(SelectItem, { value: appliesTo, children: appliesToLabel(messages, appliesTo) }, appliesTo))) })] })] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { children: taxMessages.taxRegimeLabel }), _jsxs(Select, { value: line.regimeId, onValueChange: (value) => updateLine(index, { regimeId: value ?? "" }), items: taxRegimes.map((regime) => ({
|
|
105
|
+
value: regime.id,
|
|
106
|
+
label: `${regime.name} (${formatRate(regime.ratePercent)})`,
|
|
107
|
+
})), children: [_jsx(SelectTrigger, { className: "w-full", children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: taxRegimes.map((regime) => (_jsxs(SelectItem, { value: regime.id, children: [regime.name, " (", formatRate(regime.ratePercent), ")"] }, regime.id))) })] })] }), _jsx(Button, { type: "button", variant: "ghost", size: "icon", onClick: () => removeLine(index), "aria-label": taxMessages.removeRegimeOverride, children: _jsx(Trash2, { className: "h-4 w-4" }) })] }, line.key))) })) : (_jsx("p", { className: "text-xs text-muted-foreground", children: taxMessages.noRegimeOverrides }))] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Switch, { checked: form.active, onCheckedChange: setField("active") }), _jsx(Label, { children: taxMessages.activeLabel })] }), error ? _jsx("p", { className: "text-sm text-destructive", children: error }) : null] }) }), _jsxs(SheetFooter, { children: [_jsx(Button, { type: "button", variant: "ghost", onClick: () => onOpenChange(false), children: taxMessages.cancel }), _jsxs(Button, { onClick: () => mutation.mutate(), disabled: mutation.isPending, children: [mutation.isPending ? _jsx(Loader2, { className: "mr-2 h-4 w-4 animate-spin" }) : null, isEditing ? taxMessages.saveChanges : taxMessages.createTax] })] })] }) }));
|
|
108
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { TaxesPageProps } from "./taxes-page/shared.js";
|
|
2
|
+
export declare function TaxesPage({ api: apiProp }?: TaxesPageProps): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
export type { TaxesPageApi, TaxesPageProps } from "./taxes-page/shared.js";
|
|
4
|
+
//# sourceMappingURL=taxes-page.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taxes-page.d.ts","sourceRoot":"","sources":["../../src/components/taxes-page.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAGV,cAAc,EAKf,MAAM,wBAAwB,CAAA;AAU/B,wBAAgB,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,GAAE,cAAmB,2CAG9D;AAwfD,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
4
|
+
import { Badge, Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from "@voyant-travel/ui/components";
|
|
5
|
+
import { Skeleton } from "@voyant-travel/ui/components/skeleton";
|
|
6
|
+
import { MoreHorizontal, Pencil, Plus, Trash2 } from "lucide-react";
|
|
7
|
+
import { useMemo, useState } from "react";
|
|
8
|
+
import { useFinanceUiMessagesOrDefault } from "../i18n/index.js";
|
|
9
|
+
import { useVoyantFinanceContext } from "../index.js";
|
|
10
|
+
import { appliesToLabel, createTaxesPageApi, formatRate, summarizeCondition, TaxesPageApiContext, } from "./taxes-page/shared.js";
|
|
11
|
+
import { PolicyProfileSheet, PolicyRuleSheet, TaxSheet } from "./taxes-page/sheets.js";
|
|
12
|
+
export function TaxesPage({ api: apiProp } = {}) {
|
|
13
|
+
if (apiProp)
|
|
14
|
+
return _jsx(TaxesPageContent, { api: apiProp });
|
|
15
|
+
return _jsx(TaxesPageWithDefaultApi, {});
|
|
16
|
+
}
|
|
17
|
+
function TaxesPageWithDefaultApi() {
|
|
18
|
+
const { baseUrl, fetcher } = useVoyantFinanceContext();
|
|
19
|
+
const api = useMemo(() => createTaxesPageApi(baseUrl, fetcher), [baseUrl, fetcher]);
|
|
20
|
+
return _jsx(TaxesPageContent, { api: api });
|
|
21
|
+
}
|
|
22
|
+
function TaxesPageContent({ api }) {
|
|
23
|
+
const messages = useFinanceUiMessagesOrDefault();
|
|
24
|
+
const taxMessages = messages.taxesPage;
|
|
25
|
+
const queryClient = useQueryClient();
|
|
26
|
+
const [sheetOpen, setSheetOpen] = useState(false);
|
|
27
|
+
const [editing, setEditing] = useState();
|
|
28
|
+
const [profileSheetOpen, setProfileSheetOpen] = useState(false);
|
|
29
|
+
const [editingProfile, setEditingProfile] = useState();
|
|
30
|
+
const [ruleSheetOpen, setRuleSheetOpen] = useState(false);
|
|
31
|
+
const [editingRule, setEditingRule] = useState();
|
|
32
|
+
const [ruleProfileId, setRuleProfileId] = useState("");
|
|
33
|
+
const taxClassesQuery = useQuery({
|
|
34
|
+
queryKey: ["tax-classes"],
|
|
35
|
+
queryFn: () => api.get("/v1/admin/finance/tax-classes?limit=100"),
|
|
36
|
+
});
|
|
37
|
+
const taxRegimesQuery = useQuery({
|
|
38
|
+
queryKey: ["tax-regimes"],
|
|
39
|
+
queryFn: () => api.get("/v1/admin/finance/tax-regimes?limit=100"),
|
|
40
|
+
});
|
|
41
|
+
const policyProfilesQuery = useQuery({
|
|
42
|
+
queryKey: ["tax-policy-profiles"],
|
|
43
|
+
queryFn: () => api.get("/v1/admin/finance/tax-policy-profiles?limit=100"),
|
|
44
|
+
});
|
|
45
|
+
const policyRulesQuery = useQuery({
|
|
46
|
+
queryKey: ["tax-policy-rules"],
|
|
47
|
+
queryFn: () => api.get("/v1/admin/finance/tax-policy-rules?limit=100"),
|
|
48
|
+
});
|
|
49
|
+
const regimesById = useMemo(() => new Map((taxRegimesQuery.data?.data ?? []).map((regime) => [regime.id, regime])), [taxRegimesQuery.data]);
|
|
50
|
+
const rows = useMemo(() => (taxClassesQuery.data?.data ?? []).map((taxClass) => ({
|
|
51
|
+
taxClass,
|
|
52
|
+
regime: taxClass.defaultRegimeId
|
|
53
|
+
? (regimesById.get(taxClass.defaultRegimeId) ?? null)
|
|
54
|
+
: null,
|
|
55
|
+
})), [regimesById, taxClassesQuery.data]);
|
|
56
|
+
const policyRulesByProfileId = useMemo(() => {
|
|
57
|
+
const grouped = new Map();
|
|
58
|
+
for (const rule of policyRulesQuery.data?.data ?? []) {
|
|
59
|
+
const existing = grouped.get(rule.profileId) ?? [];
|
|
60
|
+
existing.push(rule);
|
|
61
|
+
grouped.set(rule.profileId, existing);
|
|
62
|
+
}
|
|
63
|
+
for (const rules of grouped.values()) {
|
|
64
|
+
rules.sort((a, b) => a.priority - b.priority || a.name.localeCompare(b.name));
|
|
65
|
+
}
|
|
66
|
+
return grouped;
|
|
67
|
+
}, [policyRulesQuery.data]);
|
|
68
|
+
const isPending = taxClassesQuery.isPending ||
|
|
69
|
+
taxRegimesQuery.isPending ||
|
|
70
|
+
policyProfilesQuery.isPending ||
|
|
71
|
+
policyRulesQuery.isPending;
|
|
72
|
+
const deleteMutation = useMutation({
|
|
73
|
+
mutationFn: async (row) => {
|
|
74
|
+
await api.delete(`/v1/admin/finance/tax-classes/${row.taxClass.id}`);
|
|
75
|
+
},
|
|
76
|
+
onSuccess: () => {
|
|
77
|
+
void queryClient.invalidateQueries({ queryKey: ["tax-classes"] });
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
const deleteProfileMutation = useMutation({
|
|
81
|
+
mutationFn: async (profile) => {
|
|
82
|
+
const rules = policyRulesByProfileId.get(profile.id) ?? [];
|
|
83
|
+
await Promise.all(rules.map((rule) => api.delete(`/v1/admin/finance/tax-policy-rules/${rule.id}`)));
|
|
84
|
+
await api.delete(`/v1/admin/finance/tax-policy-profiles/${profile.id}`);
|
|
85
|
+
},
|
|
86
|
+
onSuccess: () => {
|
|
87
|
+
void queryClient.invalidateQueries({ queryKey: ["tax-policy-profiles"] });
|
|
88
|
+
void queryClient.invalidateQueries({ queryKey: ["tax-policy-rules"] });
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
const deleteRuleMutation = useMutation({
|
|
92
|
+
mutationFn: async (rule) => {
|
|
93
|
+
await api.delete(`/v1/admin/finance/tax-policy-rules/${rule.id}`);
|
|
94
|
+
},
|
|
95
|
+
onSuccess: () => {
|
|
96
|
+
void queryClient.invalidateQueries({ queryKey: ["tax-policy-rules"] });
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
return (_jsx(TaxesPageApiContext.Provider, { value: api, children: _jsxs("div", { className: "flex flex-col gap-6 p-6", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { children: [_jsx("h2", { className: "text-lg font-semibold tracking-tight", children: taxMessages.title }), _jsx("p", { className: "text-sm text-muted-foreground", children: taxMessages.description })] }), _jsxs(Button, { size: "sm", onClick: () => {
|
|
100
|
+
setEditing(undefined);
|
|
101
|
+
setSheetOpen(true);
|
|
102
|
+
}, children: [_jsx(Plus, { className: "mr-1.5 h-3.5 w-3.5" }), taxMessages.addTax] })] }), isPending ? (_jsx(TaxesPageSkeleton, { rows: 5 })) : (_jsx("div", { className: "rounded-lg border bg-card text-card-foreground shadow-sm", children: rows.length === 0 ? (_jsx("p", { className: "py-12 text-center text-sm text-muted-foreground", children: taxMessages.empty })) : (_jsx("div", { className: "flex flex-col divide-y", children: rows.map((row) => {
|
|
103
|
+
const overrideLines = row.taxClass.lines ?? [];
|
|
104
|
+
return (_jsxs("div", { className: "flex items-center justify-between px-6 py-3", children: [_jsxs("div", { className: "min-w-0", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx("span", { className: "text-sm font-medium", children: row.taxClass.label }), _jsx("span", { className: "font-mono text-xs text-muted-foreground", children: row.taxClass.code }), _jsx(Badge, { variant: "secondary", className: "text-xs", children: taxMessages.taxClassBadge }), overrideLines.length ? (_jsx(Badge, { variant: "outline", className: "text-xs", children: taxMessages.regimeOverrideCount.replace("{count}", String(overrideLines.length)) })) : null] }), _jsxs("div", { className: "mt-1 flex flex-wrap items-center gap-2 text-xs text-muted-foreground", children: [_jsx("span", { children: taxMessages.defaultRegimeLabel }), _jsx("span", { children: row.regime?.name ?? "-" }), _jsx("span", { className: "font-mono", children: row.regime?.code ?? "-" }), _jsx(Badge, { variant: "outline", className: "text-xs", children: formatRate(row.regime?.ratePercent ?? null) }), !row.taxClass.active ? (_jsx(Badge, { variant: "secondary", className: "text-xs", children: taxMessages.inactive })) : null] }), overrideLines.length ? (_jsxs("div", { className: "mt-1 flex flex-wrap items-center gap-1.5 text-xs text-muted-foreground", children: [_jsx("span", { children: taxMessages.regimeOverridesLabel }), overrideLines.map((line) => {
|
|
105
|
+
const regime = regimesById.get(line.regime_id);
|
|
106
|
+
return (_jsxs(Badge, { variant: "outline", className: "text-xs", children: [appliesToLabel(messages, line.applies_to), ":", " ", regime?.name ?? line.regime_id] }, `${line.applies_to}-${line.regime_id}`));
|
|
107
|
+
})] })) : null, row.taxClass.description || row.regime?.description ? (_jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: row.taxClass.description ?? row.regime?.description })) : null] }), _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "ghost", size: "icon", className: "h-8 w-8 text-muted-foreground", children: _jsx(MoreHorizontal, { className: "h-4 w-4" }) }) }), _jsxs(DropdownMenuContent, { align: "end", children: [_jsxs(DropdownMenuItem, { onClick: () => {
|
|
108
|
+
setEditing(row);
|
|
109
|
+
setSheetOpen(true);
|
|
110
|
+
}, children: [_jsx(Pencil, { className: "h-4 w-4" }), taxMessages.edit] }), _jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuItem, { variant: "destructive", onClick: () => {
|
|
111
|
+
if (confirm(taxMessages.deleteConfirm)) {
|
|
112
|
+
deleteMutation.mutate(row);
|
|
113
|
+
}
|
|
114
|
+
}, children: [_jsx(Trash2, { className: "h-4 w-4" }), taxMessages.delete] })] })] })] }, row.taxClass.id));
|
|
115
|
+
}) })) })), _jsx(TaxSheet, { open: sheetOpen, onOpenChange: setSheetOpen, row: editing, onSuccess: () => {
|
|
116
|
+
setSheetOpen(false);
|
|
117
|
+
setEditing(undefined);
|
|
118
|
+
void queryClient.invalidateQueries({ queryKey: ["tax-classes"] });
|
|
119
|
+
void queryClient.invalidateQueries({ queryKey: ["tax-regimes"] });
|
|
120
|
+
}, taxRegimes: taxRegimesQuery.data?.data ?? [] }), _jsxs("div", { className: "mt-2 flex items-center justify-between", children: [_jsxs("div", { children: [_jsx("h2", { className: "text-lg font-semibold tracking-tight", children: taxMessages.policyTitle }), _jsx("p", { className: "text-sm text-muted-foreground", children: taxMessages.policyDescription })] }), _jsxs(Button, { size: "sm", onClick: () => {
|
|
121
|
+
setEditingProfile(undefined);
|
|
122
|
+
setProfileSheetOpen(true);
|
|
123
|
+
}, children: [_jsx(Plus, { className: "mr-1.5 h-3.5 w-3.5" }), taxMessages.addPolicyProfile] })] }), isPending ? null : (_jsx("div", { className: "rounded-lg border bg-card text-card-foreground shadow-sm", children: (policyProfilesQuery.data?.data ?? []).length === 0 ? (_jsx("p", { className: "py-12 text-center text-sm text-muted-foreground", children: taxMessages.policyEmpty })) : (_jsx("div", { className: "flex flex-col divide-y", children: (policyProfilesQuery.data?.data ?? []).map((profile) => {
|
|
124
|
+
const profileRules = policyRulesByProfileId.get(profile.id) ?? [];
|
|
125
|
+
return (_jsxs("div", { className: "flex flex-col gap-3 px-6 py-4", children: [_jsxs("div", { className: "flex items-start justify-between gap-4", children: [_jsxs("div", { className: "min-w-0", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx("span", { className: "text-sm font-medium", children: profile.name }), _jsx("span", { className: "font-mono text-xs text-muted-foreground", children: profile.code }), profile.jurisdiction ? (_jsx(Badge, { variant: "outline", className: "text-xs", children: profile.jurisdiction })) : null, !profile.active ? (_jsx(Badge, { variant: "secondary", className: "text-xs", children: taxMessages.inactive })) : null] }), profile.description ? (_jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: profile.description })) : null] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs(Button, { type: "button", variant: "outline", size: "sm", onClick: () => {
|
|
126
|
+
setEditingRule(undefined);
|
|
127
|
+
setRuleProfileId(profile.id);
|
|
128
|
+
setRuleSheetOpen(true);
|
|
129
|
+
}, children: [_jsx(Plus, { className: "mr-1.5 h-3.5 w-3.5" }), taxMessages.addPolicyRule] }), _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "ghost", size: "icon", className: "h-8 w-8 text-muted-foreground", children: _jsx(MoreHorizontal, { className: "h-4 w-4" }) }) }), _jsxs(DropdownMenuContent, { align: "end", children: [_jsxs(DropdownMenuItem, { onClick: () => {
|
|
130
|
+
setEditingProfile(profile);
|
|
131
|
+
setProfileSheetOpen(true);
|
|
132
|
+
}, children: [_jsx(Pencil, { className: "h-4 w-4" }), taxMessages.edit] }), _jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuItem, { variant: "destructive", onClick: () => {
|
|
133
|
+
if (confirm(taxMessages.deletePolicyProfileConfirm)) {
|
|
134
|
+
deleteProfileMutation.mutate(profile);
|
|
135
|
+
}
|
|
136
|
+
}, children: [_jsx(Trash2, { className: "h-4 w-4" }), taxMessages.delete] })] })] })] })] }), profileRules.length ? (_jsxs("div", { className: "overflow-hidden rounded-md border", children: [_jsxs("div", { className: "grid grid-cols-[5rem_5rem_minmax(0,1.3fr)_8rem_minmax(0,1.2fr)_minmax(0,1fr)_auto] gap-3 border-b bg-muted/40 px-3 py-2 text-xs font-medium text-muted-foreground", children: [_jsx("span", { children: taxMessages.policyPriorityLabel }), _jsx("span", { children: taxMessages.policySideLabel }), _jsx("span", { children: taxMessages.policyRuleNameLabel }), _jsx("span", { children: taxMessages.appliesToLabel }), _jsx("span", { children: taxMessages.policyConditionLabel }), _jsx("span", { children: taxMessages.taxRegimeLabel }), _jsx("span", { children: taxMessages.policyActionsLabel })] }), profileRules.map((rule) => {
|
|
137
|
+
const regime = regimesById.get(rule.taxRegimeId);
|
|
138
|
+
return (_jsxs("div", { className: "grid grid-cols-[5rem_5rem_minmax(0,1.3fr)_8rem_minmax(0,1.2fr)_minmax(0,1fr)_auto] items-center gap-3 border-b px-3 py-2 text-sm last:border-b-0", children: [_jsx("span", { className: "font-mono text-xs", children: rule.priority }), _jsx("span", { className: "text-xs", children: rule.side === "sell"
|
|
139
|
+
? taxMessages.policySideSell
|
|
140
|
+
: taxMessages.policySideBuy }), _jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "truncate font-medium", children: rule.name }), !rule.active ? (_jsx(Badge, { variant: "secondary", className: "mt-1 text-xs", children: taxMessages.inactive })) : null] }), _jsx("span", { className: "text-xs", children: appliesToLabel(messages, rule.appliesTo) }), _jsx("code", { className: "truncate text-xs text-muted-foreground", children: summarizeCondition(messages, rule.condition) }), _jsx("span", { className: "truncate text-xs", children: regime
|
|
141
|
+
? `${regime.name} (${formatRate(regime.ratePercent)})`
|
|
142
|
+
: rule.taxRegimeId }), _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "ghost", size: "icon", className: "h-8 w-8 text-muted-foreground", children: _jsx(MoreHorizontal, { className: "h-4 w-4" }) }) }), _jsxs(DropdownMenuContent, { align: "end", children: [_jsxs(DropdownMenuItem, { onClick: () => {
|
|
143
|
+
setEditingRule(rule);
|
|
144
|
+
setRuleProfileId(rule.profileId);
|
|
145
|
+
setRuleSheetOpen(true);
|
|
146
|
+
}, children: [_jsx(Pencil, { className: "h-4 w-4" }), taxMessages.edit] }), _jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuItem, { variant: "destructive", onClick: () => {
|
|
147
|
+
if (confirm(taxMessages.deletePolicyRuleConfirm)) {
|
|
148
|
+
deleteRuleMutation.mutate(rule);
|
|
149
|
+
}
|
|
150
|
+
}, children: [_jsx(Trash2, { className: "h-4 w-4" }), taxMessages.delete] })] })] })] }, rule.id));
|
|
151
|
+
})] })) : (_jsx("p", { className: "rounded-md border border-dashed px-3 py-4 text-sm text-muted-foreground", children: taxMessages.policyRulesEmpty }))] }, profile.id));
|
|
152
|
+
}) })) })), _jsx(PolicyProfileSheet, { open: profileSheetOpen, onOpenChange: setProfileSheetOpen, profile: editingProfile, onSuccess: () => {
|
|
153
|
+
setProfileSheetOpen(false);
|
|
154
|
+
setEditingProfile(undefined);
|
|
155
|
+
void queryClient.invalidateQueries({ queryKey: ["tax-policy-profiles"] });
|
|
156
|
+
} }), _jsx(PolicyRuleSheet, { open: ruleSheetOpen, onOpenChange: setRuleSheetOpen, rule: editingRule, profileId: ruleProfileId, taxRegimes: taxRegimesQuery.data?.data ?? [], onSuccess: () => {
|
|
157
|
+
setRuleSheetOpen(false);
|
|
158
|
+
setEditingRule(undefined);
|
|
159
|
+
setRuleProfileId("");
|
|
160
|
+
void queryClient.invalidateQueries({ queryKey: ["tax-policy-rules"] });
|
|
161
|
+
} })] }) }));
|
|
162
|
+
}
|
|
163
|
+
function TaxesPageSkeleton({ rows }) {
|
|
164
|
+
return (_jsx("div", { className: "rounded-lg border bg-card text-card-foreground shadow-sm", children: _jsx("div", { className: "flex flex-col divide-y", children: Array.from({ length: rows }).map((_, index) => (_jsxs("div", { className: "flex items-center justify-between px-6 py-3", children: [_jsxs("div", { className: "min-w-0 flex-1 space-y-2", children: [_jsx(Skeleton, { className: "h-4 w-48" }), _jsx(Skeleton, { className: "h-3 w-72 max-w-full" })] }), _jsx(Skeleton, { className: "h-8 w-8 rounded-md" })] }, index))) }) }));
|
|
165
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export * from "../checkout-hooks/index.js";
|
|
2
|
+
export * from "./use-accountant-share-mutation.js";
|
|
3
|
+
export * from "./use-accountant-shares.js";
|
|
4
|
+
export * from "./use-admin-booking-payments.js";
|
|
5
|
+
export * from "./use-all-payments.js";
|
|
6
|
+
export * from "./use-booking-guarantees.js";
|
|
7
|
+
export * from "./use-booking-payment-schedule-regenerate-mutation.js";
|
|
8
|
+
export * from "./use-booking-payment-schedules.js";
|
|
9
|
+
export * from "./use-cost-categories.js";
|
|
10
|
+
export * from "./use-cost-category-mutation.js";
|
|
11
|
+
export * from "./use-departure-profitability.js";
|
|
12
|
+
export * from "./use-finance-action-ledger.js";
|
|
13
|
+
export * from "./use-invoice.js";
|
|
14
|
+
export * from "./use-invoice-attachment-mutation.js";
|
|
15
|
+
export * from "./use-invoice-attachments.js";
|
|
16
|
+
export * from "./use-invoice-bulk-status-mutation.js";
|
|
17
|
+
export * from "./use-invoice-credit-note-mutation.js";
|
|
18
|
+
export * from "./use-invoice-credit-notes.js";
|
|
19
|
+
export * from "./use-invoice-fx-rate.js";
|
|
20
|
+
export * from "./use-invoice-line-item-mutation.js";
|
|
21
|
+
export * from "./use-invoice-line-items.js";
|
|
22
|
+
export * from "./use-invoice-mutation.js";
|
|
23
|
+
export * from "./use-invoice-note-mutation.js";
|
|
24
|
+
export * from "./use-invoice-notes.js";
|
|
25
|
+
export * from "./use-invoice-number-series.js";
|
|
26
|
+
export * from "./use-invoice-number-series-mutation.js";
|
|
27
|
+
export * from "./use-invoice-payment-mutation.js";
|
|
28
|
+
export * from "./use-invoice-payments.js";
|
|
29
|
+
export * from "./use-invoices.js";
|
|
30
|
+
export * from "./use-payment.js";
|
|
31
|
+
export * from "./use-payment-mutation.js";
|
|
32
|
+
export * from "./use-payment-session-mutation.js";
|
|
33
|
+
export * from "./use-payment-sessions.js";
|
|
34
|
+
export * from "./use-product-profitability.js";
|
|
35
|
+
export * from "./use-public-booking-documents.js";
|
|
36
|
+
export * from "./use-public-booking-payment-options.js";
|
|
37
|
+
export * from "./use-public-booking-payments.js";
|
|
38
|
+
export * from "./use-public-finance-document-by-reference.js";
|
|
39
|
+
export * from "./use-public-payment-session.js";
|
|
40
|
+
export * from "./use-public-payment-session-mutation.js";
|
|
41
|
+
export * from "./use-public-voucher-validation-mutation.js";
|
|
42
|
+
export * from "./use-supplier-invoice.js";
|
|
43
|
+
export * from "./use-supplier-invoice-attachments.js";
|
|
44
|
+
export * from "./use-supplier-invoice-mutation.js";
|
|
45
|
+
export * from "./use-supplier-invoice-payments.js";
|
|
46
|
+
export * from "./use-supplier-invoices.js";
|
|
47
|
+
export * from "./use-supplier-payment-mutation.js";
|
|
48
|
+
export * from "./use-supplier-payments.js";
|
|
49
|
+
export * from "./use-traveler-profitability.js";
|
|
50
|
+
export * from "./use-voucher.js";
|
|
51
|
+
export * from "./use-voucher-mutation.js";
|
|
52
|
+
export * from "./use-vouchers.js";
|
|
53
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,cAAc,oCAAoC,CAAA;AAClD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,uDAAuD,CAAA;AACrE,cAAc,oCAAoC,CAAA;AAClD,cAAc,0BAA0B,CAAA;AACxC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,kCAAkC,CAAA;AAChD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,kBAAkB,CAAA;AAChC,cAAc,sCAAsC,CAAA;AACpD,cAAc,8BAA8B,CAAA;AAC5C,cAAc,uCAAuC,CAAA;AACrD,cAAc,uCAAuC,CAAA;AACrD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,0BAA0B,CAAA;AACxC,cAAc,qCAAqC,CAAA;AACnD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,wBAAwB,CAAA;AACtC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,yCAAyC,CAAA;AACvD,cAAc,mCAAmC,CAAA;AACjD,cAAc,2BAA2B,CAAA;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,2BAA2B,CAAA;AACzC,cAAc,mCAAmC,CAAA;AACjD,cAAc,2BAA2B,CAAA;AACzC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,mCAAmC,CAAA;AACjD,cAAc,yCAAyC,CAAA;AACvD,cAAc,kCAAkC,CAAA;AAChD,cAAc,+CAA+C,CAAA;AAC7D,cAAc,iCAAiC,CAAA;AAC/C,cAAc,0CAA0C,CAAA;AACxD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,2BAA2B,CAAA;AACzC,cAAc,uCAAuC,CAAA;AACrD,cAAc,oCAAoC,CAAA;AAClD,cAAc,oCAAoC,CAAA;AAClD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,oCAAoC,CAAA;AAClD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,kBAAkB,CAAA;AAChC,cAAc,2BAA2B,CAAA;AACzC,cAAc,mBAAmB,CAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export * from "../checkout-hooks/index.js";
|
|
2
|
+
export * from "./use-accountant-share-mutation.js";
|
|
3
|
+
export * from "./use-accountant-shares.js";
|
|
4
|
+
export * from "./use-admin-booking-payments.js";
|
|
5
|
+
export * from "./use-all-payments.js";
|
|
6
|
+
export * from "./use-booking-guarantees.js";
|
|
7
|
+
export * from "./use-booking-payment-schedule-regenerate-mutation.js";
|
|
8
|
+
export * from "./use-booking-payment-schedules.js";
|
|
9
|
+
export * from "./use-cost-categories.js";
|
|
10
|
+
export * from "./use-cost-category-mutation.js";
|
|
11
|
+
export * from "./use-departure-profitability.js";
|
|
12
|
+
export * from "./use-finance-action-ledger.js";
|
|
13
|
+
export * from "./use-invoice.js";
|
|
14
|
+
export * from "./use-invoice-attachment-mutation.js";
|
|
15
|
+
export * from "./use-invoice-attachments.js";
|
|
16
|
+
export * from "./use-invoice-bulk-status-mutation.js";
|
|
17
|
+
export * from "./use-invoice-credit-note-mutation.js";
|
|
18
|
+
export * from "./use-invoice-credit-notes.js";
|
|
19
|
+
export * from "./use-invoice-fx-rate.js";
|
|
20
|
+
export * from "./use-invoice-line-item-mutation.js";
|
|
21
|
+
export * from "./use-invoice-line-items.js";
|
|
22
|
+
export * from "./use-invoice-mutation.js";
|
|
23
|
+
export * from "./use-invoice-note-mutation.js";
|
|
24
|
+
export * from "./use-invoice-notes.js";
|
|
25
|
+
export * from "./use-invoice-number-series.js";
|
|
26
|
+
export * from "./use-invoice-number-series-mutation.js";
|
|
27
|
+
export * from "./use-invoice-payment-mutation.js";
|
|
28
|
+
export * from "./use-invoice-payments.js";
|
|
29
|
+
export * from "./use-invoices.js";
|
|
30
|
+
export * from "./use-payment.js";
|
|
31
|
+
export * from "./use-payment-mutation.js";
|
|
32
|
+
export * from "./use-payment-session-mutation.js";
|
|
33
|
+
export * from "./use-payment-sessions.js";
|
|
34
|
+
export * from "./use-product-profitability.js";
|
|
35
|
+
export * from "./use-public-booking-documents.js";
|
|
36
|
+
export * from "./use-public-booking-payment-options.js";
|
|
37
|
+
export * from "./use-public-booking-payments.js";
|
|
38
|
+
export * from "./use-public-finance-document-by-reference.js";
|
|
39
|
+
export * from "./use-public-payment-session.js";
|
|
40
|
+
export * from "./use-public-payment-session-mutation.js";
|
|
41
|
+
export * from "./use-public-voucher-validation-mutation.js";
|
|
42
|
+
export * from "./use-supplier-invoice.js";
|
|
43
|
+
export * from "./use-supplier-invoice-attachments.js";
|
|
44
|
+
export * from "./use-supplier-invoice-mutation.js";
|
|
45
|
+
export * from "./use-supplier-invoice-payments.js";
|
|
46
|
+
export * from "./use-supplier-invoices.js";
|
|
47
|
+
export * from "./use-supplier-payment-mutation.js";
|
|
48
|
+
export * from "./use-supplier-payments.js";
|
|
49
|
+
export * from "./use-traveler-profitability.js";
|
|
50
|
+
export * from "./use-voucher.js";
|
|
51
|
+
export * from "./use-voucher-mutation.js";
|
|
52
|
+
export * from "./use-vouchers.js";
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface CreateAccountantShareInput {
|
|
2
|
+
from?: string;
|
|
3
|
+
to?: string;
|
|
4
|
+
baseCurrency?: string;
|
|
5
|
+
ttlDays?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function useAccountantShareMutation(): {
|
|
8
|
+
create: import("@tanstack/react-query").UseMutationResult<{
|
|
9
|
+
from: string | null;
|
|
10
|
+
to: string | null;
|
|
11
|
+
baseCurrency: string | null;
|
|
12
|
+
id: string;
|
|
13
|
+
url: string;
|
|
14
|
+
expiresAt: string;
|
|
15
|
+
}, Error, CreateAccountantShareInput, unknown>;
|
|
16
|
+
revoke: import("@tanstack/react-query").UseMutationResult<{
|
|
17
|
+
id: string;
|
|
18
|
+
}, Error, string, unknown>;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=use-accountant-share-mutation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-accountant-share-mutation.d.ts","sourceRoot":"","sources":["../../src/hooks/use-accountant-share-mutation.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,0BAA0B;;;;;;;;;;;;EAmCzC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
|
3
|
+
import { fetchWithValidation } from "../client.js";
|
|
4
|
+
import { useVoyantFinanceContext } from "../provider.js";
|
|
5
|
+
import { financeQueryKeys } from "../query-keys.js";
|
|
6
|
+
import { accountantShareCreatedResponse, accountantShareRevokedResponse } from "../schemas.js";
|
|
7
|
+
export function useAccountantShareMutation() {
|
|
8
|
+
const { baseUrl, fetcher } = useVoyantFinanceContext();
|
|
9
|
+
const client = { baseUrl, fetcher };
|
|
10
|
+
const queryClient = useQueryClient();
|
|
11
|
+
const invalidate = () => queryClient.invalidateQueries({ queryKey: financeQueryKeys.accountantShares() });
|
|
12
|
+
const create = useMutation({
|
|
13
|
+
mutationFn: async (input) => {
|
|
14
|
+
const { data } = await fetchWithValidation("/v1/admin/finance/accountant-shares", accountantShareCreatedResponse, client, { method: "POST", body: JSON.stringify(input) });
|
|
15
|
+
return data;
|
|
16
|
+
},
|
|
17
|
+
onSuccess: invalidate,
|
|
18
|
+
});
|
|
19
|
+
const revoke = useMutation({
|
|
20
|
+
mutationFn: async (id) => {
|
|
21
|
+
const { data } = await fetchWithValidation(`/v1/admin/finance/accountant-shares/${id}/revoke`, accountantShareRevokedResponse, client, { method: "POST" });
|
|
22
|
+
return data;
|
|
23
|
+
},
|
|
24
|
+
onSuccess: invalidate,
|
|
25
|
+
});
|
|
26
|
+
return { create, revoke };
|
|
27
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare function useAccountantShares(): import("@tanstack/react-query").UseQueryResult<{
|
|
2
|
+
data: {
|
|
3
|
+
from: string | null;
|
|
4
|
+
to: string | null;
|
|
5
|
+
baseCurrency: string | null;
|
|
6
|
+
id: string;
|
|
7
|
+
createdAt: string;
|
|
8
|
+
expiresAt: string;
|
|
9
|
+
lastAccessedAt: string | null;
|
|
10
|
+
accessCount: number;
|
|
11
|
+
}[];
|
|
12
|
+
}, Error>;
|
|
13
|
+
//# sourceMappingURL=use-accountant-shares.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-accountant-shares.d.ts","sourceRoot":"","sources":["../../src/hooks/use-accountant-shares.ts"],"names":[],"mappings":"AAOA,wBAAgB,mBAAmB;;;;;;;;;;;UAGlC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useQuery } from "@tanstack/react-query";
|
|
3
|
+
import { useVoyantFinanceContext } from "../provider.js";
|
|
4
|
+
import { getAccountantSharesQueryOptions } from "../query-options.js";
|
|
5
|
+
export function useAccountantShares() {
|
|
6
|
+
const { baseUrl, fetcher } = useVoyantFinanceContext();
|
|
7
|
+
return useQuery(getAccountantSharesQueryOptions({ baseUrl, fetcher }));
|
|
8
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface UseAdminBookingPaymentsOptions {
|
|
2
|
+
enabled?: boolean;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Admin variant of `usePublicBookingPayments`. Same response shape;
|
|
6
|
+
* targets the admin endpoint so a staff session is authorized to
|
|
7
|
+
* read. Use this from the operator dashboard's booking detail page;
|
|
8
|
+
* the customer-portal stays on the public hook.
|
|
9
|
+
*/
|
|
10
|
+
export declare function useAdminBookingPayments(bookingId: string | null | undefined, options?: UseAdminBookingPaymentsOptions): import("@tanstack/react-query").UseQueryResult<{
|
|
11
|
+
data: {
|
|
12
|
+
bookingId: string;
|
|
13
|
+
payments: {
|
|
14
|
+
id: string;
|
|
15
|
+
invoiceId: string;
|
|
16
|
+
invoiceNumber: string;
|
|
17
|
+
invoiceType: "invoice" | "proforma" | "credit_note";
|
|
18
|
+
status: "pending" | "completed" | "failed" | "refunded";
|
|
19
|
+
paymentMethod: "bank_transfer" | "credit_card" | "debit_card" | "cash" | "cheque" | "wallet" | "direct_bill" | "voucher" | "other";
|
|
20
|
+
amountCents: number;
|
|
21
|
+
currency: string;
|
|
22
|
+
baseCurrency: string | null;
|
|
23
|
+
baseAmountCents: number | null;
|
|
24
|
+
paymentDate: string;
|
|
25
|
+
referenceNumber: string | null;
|
|
26
|
+
notes: string | null;
|
|
27
|
+
}[];
|
|
28
|
+
};
|
|
29
|
+
}, Error>;
|
|
30
|
+
//# sourceMappingURL=use-admin-booking-payments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-admin-booking-payments.d.ts","sourceRoot":"","sources":["../../src/hooks/use-admin-booking-payments.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,8BAA8B;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACpC,OAAO,GAAE,8BAAmC;;;;;;;;;;;;;;;;;;;UAS7C"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useQuery } from "@tanstack/react-query";
|
|
3
|
+
import { useVoyantFinanceContext } from "../provider.js";
|
|
4
|
+
import { getAdminBookingPaymentsQueryOptions } from "../query-options.js";
|
|
5
|
+
/**
|
|
6
|
+
* Admin variant of `usePublicBookingPayments`. Same response shape;
|
|
7
|
+
* targets the admin endpoint so a staff session is authorized to
|
|
8
|
+
* read. Use this from the operator dashboard's booking detail page;
|
|
9
|
+
* the customer-portal stays on the public hook.
|
|
10
|
+
*/
|
|
11
|
+
export function useAdminBookingPayments(bookingId, options = {}) {
|
|
12
|
+
const { baseUrl, fetcher } = useVoyantFinanceContext();
|
|
13
|
+
const { enabled = true } = options;
|
|
14
|
+
return useQuery({
|
|
15
|
+
...getAdminBookingPaymentsQueryOptions({ baseUrl, fetcher }, bookingId),
|
|
16
|
+
enabled: enabled && Boolean(bookingId),
|
|
17
|
+
});
|
|
18
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { FinanceAllPaymentsListFilters } from "../query-keys.js";
|
|
2
|
+
export interface UseAllPaymentsOptions extends FinanceAllPaymentsListFilters {
|
|
3
|
+
enabled?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare function useAllPayments(options?: UseAllPaymentsOptions): import("@tanstack/react-query").UseQueryResult<{
|
|
6
|
+
data: {
|
|
7
|
+
kind: "supplier" | "customer";
|
|
8
|
+
id: string;
|
|
9
|
+
invoiceId: string | null;
|
|
10
|
+
invoiceNumber: string | null;
|
|
11
|
+
bookingId: string | null;
|
|
12
|
+
bookingNumber: string | null;
|
|
13
|
+
supplierId: string | null;
|
|
14
|
+
supplierName: string | null;
|
|
15
|
+
personId: string | null;
|
|
16
|
+
personName: string | null;
|
|
17
|
+
organizationId: string | null;
|
|
18
|
+
organizationName: string | null;
|
|
19
|
+
amountCents: number;
|
|
20
|
+
currency: string;
|
|
21
|
+
baseCurrency: string | null;
|
|
22
|
+
baseAmountCents: number | null;
|
|
23
|
+
paymentMethod: string;
|
|
24
|
+
status: "pending" | "completed" | "failed" | "refunded";
|
|
25
|
+
referenceNumber: string | null;
|
|
26
|
+
paymentDate: string;
|
|
27
|
+
notes: string | null;
|
|
28
|
+
createdAt: string;
|
|
29
|
+
updatedAt: string;
|
|
30
|
+
}[];
|
|
31
|
+
total: number;
|
|
32
|
+
limit: number;
|
|
33
|
+
offset: number;
|
|
34
|
+
}, Error>;
|
|
35
|
+
//# sourceMappingURL=use-all-payments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-all-payments.d.ts","sourceRoot":"","sources":["../../src/hooks/use-all-payments.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAA;AAGrE,MAAM,WAAW,qBAAsB,SAAQ,6BAA6B;IAC1E,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAQjE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useQuery } from "@tanstack/react-query";
|
|
3
|
+
import { useVoyantFinanceContext } from "../provider.js";
|
|
4
|
+
import { getAllPaymentsQueryOptions } from "../query-options.js";
|
|
5
|
+
export function useAllPayments(options = {}) {
|
|
6
|
+
const { baseUrl, fetcher } = useVoyantFinanceContext();
|
|
7
|
+
const { enabled = true, ...filters } = options;
|
|
8
|
+
return useQuery({
|
|
9
|
+
...getAllPaymentsQueryOptions({ baseUrl, fetcher }, filters),
|
|
10
|
+
enabled,
|
|
11
|
+
});
|
|
12
|
+
}
|