@spaceinvoices/react-ui 0.4.11 → 0.4.31
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/cli/dist/index.js +1 -1
- package/package.json +3 -2
- package/registry.json +30 -31
- package/src/common/autocomplete.tsx +48 -26
- package/src/components/activities/locales/bg.ts +21 -0
- package/src/components/activities/locales/cs.ts +21 -0
- package/src/components/activities/locales/en.ts +21 -0
- package/src/components/activities/locales/et.ts +21 -0
- package/src/components/activities/locales/fi.ts +21 -0
- package/src/components/activities/locales/is.ts +21 -0
- package/src/components/activities/locales/nb.ts +21 -0
- package/src/components/activities/locales/sk.ts +21 -0
- package/src/components/activities/locales/sv.ts +21 -0
- package/src/components/advance-invoices/advance-invoices.hooks.ts +36 -46
- package/src/components/advance-invoices/create/create-advance-invoice-form.tsx +452 -115
- package/src/components/advance-invoices/create/locales/bg.ts +56 -0
- package/src/components/advance-invoices/create/locales/cs.ts +56 -0
- package/src/components/advance-invoices/create/locales/de.ts +15 -7
- package/src/components/advance-invoices/create/locales/en.ts +56 -0
- package/src/components/advance-invoices/create/locales/es.ts +15 -7
- package/src/components/advance-invoices/create/locales/et.ts +56 -0
- package/src/components/advance-invoices/create/locales/fi.ts +56 -0
- package/src/components/advance-invoices/create/locales/fr.ts +16 -8
- package/src/components/advance-invoices/create/locales/hr.ts +29 -21
- package/src/components/advance-invoices/create/locales/is.ts +56 -0
- package/src/components/advance-invoices/create/locales/it.ts +15 -7
- package/src/components/advance-invoices/create/locales/nb.ts +56 -0
- package/src/components/advance-invoices/create/locales/nl.ts +15 -7
- package/src/components/advance-invoices/create/locales/pl.ts +17 -9
- package/src/components/advance-invoices/create/locales/pt.ts +16 -8
- package/src/components/advance-invoices/create/locales/sk.ts +56 -0
- package/src/components/advance-invoices/create/locales/sl.ts +23 -12
- package/src/components/advance-invoices/create/locales/sv.ts +56 -0
- package/src/components/advance-invoices/create/prepare-advance-invoice-submission.ts +62 -2
- package/src/components/advance-invoices/list/list-row-actions.tsx +48 -16
- package/src/components/advance-invoices/list/list-table.tsx +35 -9
- package/src/components/advance-invoices/list/locales/bg.ts +51 -0
- package/src/components/advance-invoices/list/locales/cs.ts +51 -0
- package/src/components/advance-invoices/list/locales/en.ts +33 -2
- package/src/components/advance-invoices/list/locales/et.ts +51 -0
- package/src/components/advance-invoices/list/locales/fi.ts +51 -0
- package/src/components/advance-invoices/list/locales/hr.ts +15 -15
- package/src/components/advance-invoices/list/locales/is.ts +51 -0
- package/src/components/advance-invoices/list/locales/nb.ts +51 -0
- package/src/components/advance-invoices/list/locales/sk.ts +51 -0
- package/src/components/advance-invoices/list/locales/sv.ts +51 -0
- package/src/components/advance-invoices/list/use-advance-invoice-download.ts +3 -5
- package/src/components/common/autocomplete-locales.ts +101 -0
- package/src/components/company-registry/company-registry.hooks.ts +3 -7
- package/src/components/credit-notes/create/create-credit-note-form.tsx +437 -80
- package/src/components/credit-notes/create/locales/bg.ts +101 -0
- package/src/components/credit-notes/create/locales/cs.ts +101 -0
- package/src/components/credit-notes/create/locales/de.ts +20 -7
- package/src/components/credit-notes/create/locales/en.ts +101 -0
- package/src/components/credit-notes/create/locales/es.ts +20 -7
- package/src/components/credit-notes/create/locales/et.ts +101 -0
- package/src/components/credit-notes/create/locales/fi.ts +101 -0
- package/src/components/credit-notes/create/locales/fr.ts +21 -8
- package/src/components/credit-notes/create/locales/hr.ts +41 -28
- package/src/components/credit-notes/create/locales/is.ts +101 -0
- package/src/components/credit-notes/create/locales/it.ts +20 -7
- package/src/components/credit-notes/create/locales/nb.ts +101 -0
- package/src/components/credit-notes/create/locales/nl.ts +20 -7
- package/src/components/credit-notes/create/locales/pl.ts +22 -9
- package/src/components/credit-notes/create/locales/pt.ts +21 -8
- package/src/components/credit-notes/create/locales/sk.ts +101 -0
- package/src/components/credit-notes/create/locales/sl.ts +28 -14
- package/src/components/credit-notes/create/locales/sv.ts +101 -0
- package/src/components/credit-notes/create/prepare-credit-note-submission.ts +66 -0
- package/src/components/credit-notes/credit-notes.hooks.ts +34 -3
- package/src/components/credit-notes/list/list-row-actions.tsx +19 -7
- package/src/components/credit-notes/list/list-table.tsx +60 -8
- package/src/components/credit-notes/list/locales/bg.ts +48 -0
- package/src/components/credit-notes/list/locales/cs.ts +48 -0
- package/src/components/credit-notes/list/locales/en.ts +31 -2
- package/src/components/credit-notes/list/locales/et.ts +48 -0
- package/src/components/credit-notes/list/locales/fi.ts +48 -0
- package/src/components/credit-notes/list/locales/hr.ts +12 -12
- package/src/components/credit-notes/list/locales/is.ts +48 -0
- package/src/components/credit-notes/list/locales/nb.ts +48 -0
- package/src/components/credit-notes/list/locales/sk.ts +48 -0
- package/src/components/credit-notes/list/locales/sv.ts +48 -0
- package/src/components/credit-notes/list/use-credit-note-download.ts +3 -5
- package/src/components/customers/create-customer-form/locales/bg.ts +21 -0
- package/src/components/customers/create-customer-form/locales/cs.ts +21 -0
- package/src/components/customers/create-customer-form/locales/en.ts +21 -0
- package/src/components/customers/create-customer-form/locales/et.ts +21 -0
- package/src/components/customers/create-customer-form/locales/fi.ts +21 -0
- package/src/components/customers/create-customer-form/locales/hr.ts +11 -11
- package/src/components/customers/create-customer-form/locales/is.ts +21 -0
- package/src/components/customers/create-customer-form/locales/nb.ts +21 -0
- package/src/components/customers/create-customer-form/locales/sk.ts +21 -0
- package/src/components/customers/create-customer-form/locales/sv.ts +21 -0
- package/src/components/customers/customer-autocomplete.tsx +32 -4
- package/src/components/customers/customer-list-table/customer-list-table.tsx +8 -6
- package/src/components/customers/customer-list-table/locales/bg.ts +25 -0
- package/src/components/customers/customer-list-table/locales/cs.ts +25 -0
- package/src/components/customers/customer-list-table/locales/en.ts +17 -2
- package/src/components/customers/customer-list-table/locales/et.ts +25 -0
- package/src/components/customers/customer-list-table/locales/fi.ts +25 -0
- package/src/components/customers/customer-list-table/locales/hr.ts +11 -11
- package/src/components/customers/customer-list-table/locales/is.ts +25 -0
- package/src/components/customers/customer-list-table/locales/nb.ts +25 -0
- package/src/components/customers/customer-list-table/locales/sk.ts +25 -0
- package/src/components/customers/customer-list-table/locales/sv.ts +25 -0
- package/src/components/customers/customers.hooks.ts +14 -17
- package/src/components/customers/edit-customer-form/locales/bg.ts +13 -0
- package/src/components/customers/edit-customer-form/locales/cs.ts +13 -0
- package/src/components/customers/edit-customer-form/locales/en.ts +13 -0
- package/src/components/customers/edit-customer-form/locales/et.ts +13 -0
- package/src/components/customers/edit-customer-form/locales/fi.ts +13 -0
- package/src/components/customers/edit-customer-form/locales/hr.ts +5 -5
- package/src/components/customers/edit-customer-form/locales/is.ts +13 -0
- package/src/components/customers/edit-customer-form/locales/nb.ts +13 -0
- package/src/components/customers/edit-customer-form/locales/sk.ts +13 -0
- package/src/components/customers/edit-customer-form/locales/sv.ts +13 -0
- package/src/components/dashboard/collection-rate-card/collection-rate-card.tsx +7 -6
- package/src/components/dashboard/collection-rate-card/locales/en.ts +3 -0
- package/src/components/dashboard/collection-rate-card/use-collection-rate.ts +8 -7
- package/src/components/dashboard/invoice-status-chart/invoice-status-chart.tsx +7 -4
- package/src/components/dashboard/invoice-status-chart/locales/bg.ts +5 -5
- package/src/components/dashboard/invoice-status-chart/locales/cs.ts +5 -5
- package/src/components/dashboard/invoice-status-chart/locales/de.ts +1 -1
- package/src/components/dashboard/invoice-status-chart/locales/en.ts +10 -0
- package/src/components/dashboard/invoice-status-chart/locales/es.ts +1 -1
- package/src/components/dashboard/invoice-status-chart/locales/et.ts +5 -5
- package/src/components/dashboard/invoice-status-chart/locales/fi.ts +5 -5
- package/src/components/dashboard/invoice-status-chart/locales/fr.ts +1 -1
- package/src/components/dashboard/invoice-status-chart/locales/hr.ts +5 -5
- package/src/components/dashboard/invoice-status-chart/locales/is.ts +5 -5
- package/src/components/dashboard/invoice-status-chart/locales/it.ts +1 -1
- package/src/components/dashboard/invoice-status-chart/locales/nb.ts +5 -5
- package/src/components/dashboard/invoice-status-chart/locales/nl.ts +1 -1
- package/src/components/dashboard/invoice-status-chart/locales/pl.ts +1 -1
- package/src/components/dashboard/invoice-status-chart/locales/pt.ts +1 -1
- package/src/components/dashboard/invoice-status-chart/locales/sk.ts +5 -5
- package/src/components/dashboard/invoice-status-chart/locales/sl.ts +1 -1
- package/src/components/dashboard/invoice-status-chart/locales/sv.ts +5 -5
- package/src/components/dashboard/payment-methods-chart/locales/bg.ts +5 -5
- package/src/components/dashboard/payment-methods-chart/locales/cs.ts +5 -5
- package/src/components/dashboard/payment-methods-chart/locales/en.ts +12 -0
- package/src/components/dashboard/payment-methods-chart/locales/et.ts +5 -5
- package/src/components/dashboard/payment-methods-chart/locales/fi.ts +6 -6
- package/src/components/dashboard/payment-methods-chart/locales/hr.ts +3 -3
- package/src/components/dashboard/payment-methods-chart/locales/is.ts +5 -5
- package/src/components/dashboard/payment-methods-chart/locales/nb.ts +5 -5
- package/src/components/dashboard/payment-methods-chart/locales/sk.ts +5 -5
- package/src/components/dashboard/payment-methods-chart/locales/sv.ts +5 -5
- package/src/components/dashboard/payment-methods-chart/payment-methods-chart.tsx +4 -3
- package/src/components/dashboard/payment-trend-chart/locales/bg.ts +1 -1
- package/src/components/dashboard/payment-trend-chart/locales/cs.ts +1 -1
- package/src/components/dashboard/payment-trend-chart/locales/en.ts +6 -0
- package/src/components/dashboard/payment-trend-chart/locales/et.ts +1 -1
- package/src/components/dashboard/payment-trend-chart/locales/fi.ts +1 -1
- package/src/components/dashboard/payment-trend-chart/locales/is.ts +1 -1
- package/src/components/dashboard/payment-trend-chart/locales/nb.ts +1 -1
- package/src/components/dashboard/payment-trend-chart/locales/sk.ts +1 -1
- package/src/components/dashboard/payment-trend-chart/locales/sv.ts +1 -1
- package/src/components/dashboard/payment-trend-chart/payment-trend-chart.tsx +4 -3
- package/src/components/dashboard/payment-trend-chart/use-payment-trend.ts +12 -9
- package/src/components/dashboard/revenue-card.tsx +3 -3
- package/src/components/dashboard/revenue-trend-chart/locales/bg.ts +1 -1
- package/src/components/dashboard/revenue-trend-chart/locales/cs.ts +1 -1
- package/src/components/dashboard/revenue-trend-chart/locales/en.ts +6 -0
- package/src/components/dashboard/revenue-trend-chart/locales/et.ts +1 -1
- package/src/components/dashboard/revenue-trend-chart/locales/fi.ts +1 -1
- package/src/components/dashboard/revenue-trend-chart/locales/is.ts +1 -1
- package/src/components/dashboard/revenue-trend-chart/locales/nb.ts +1 -1
- package/src/components/dashboard/revenue-trend-chart/locales/sk.ts +1 -1
- package/src/components/dashboard/revenue-trend-chart/locales/sv.ts +1 -1
- package/src/components/dashboard/revenue-trend-chart/revenue-trend-chart.tsx +4 -3
- package/src/components/dashboard/revenue-trend-chart/use-revenue-trend.ts +4 -3
- package/src/components/dashboard/shared/local-date.ts +11 -0
- package/src/components/dashboard/shared/use-revenue-data.ts +6 -5
- package/src/components/dashboard/shared/use-stats-query.ts +7 -11
- package/src/components/dashboard/stat-card.tsx +3 -3
- package/src/components/dashboard/tax-collected-card/tax-collected-card.tsx +11 -9
- package/src/components/dashboard/tax-collected-card/use-tax-collected.ts +3 -2
- package/src/components/dashboard/top-customers-chart/locales/bg.ts +2 -2
- package/src/components/dashboard/top-customers-chart/locales/cs.ts +2 -2
- package/src/components/dashboard/top-customers-chart/locales/en.ts +7 -0
- package/src/components/dashboard/top-customers-chart/locales/et.ts +2 -2
- package/src/components/dashboard/top-customers-chart/locales/fi.ts +2 -2
- package/src/components/dashboard/top-customers-chart/locales/is.ts +2 -2
- package/src/components/dashboard/top-customers-chart/locales/nb.ts +2 -2
- package/src/components/dashboard/top-customers-chart/locales/sk.ts +2 -2
- package/src/components/dashboard/top-customers-chart/locales/sv.ts +2 -2
- package/src/components/dashboard/top-customers-chart/top-customers-chart.tsx +4 -3
- package/src/components/dashboard/top-customers-chart/use-top-customers.ts +7 -20
- package/src/components/delivery-notes/create/create-delivery-note-form.tsx +179 -47
- package/src/components/delivery-notes/create/locales/bg.ts +69 -0
- package/src/components/delivery-notes/create/locales/cs.ts +69 -0
- package/src/components/delivery-notes/create/locales/de.ts +1 -0
- package/src/components/delivery-notes/create/locales/en.ts +69 -0
- package/src/components/delivery-notes/create/locales/es.ts +1 -0
- package/src/components/delivery-notes/create/locales/et.ts +69 -0
- package/src/components/delivery-notes/create/locales/fi.ts +69 -0
- package/src/components/delivery-notes/create/locales/fr.ts +1 -0
- package/src/components/delivery-notes/create/locales/hr.ts +7 -6
- package/src/components/delivery-notes/create/locales/is.ts +69 -0
- package/src/components/delivery-notes/create/locales/it.ts +1 -0
- package/src/components/delivery-notes/create/locales/nb.ts +69 -0
- package/src/components/delivery-notes/create/locales/nl.ts +1 -0
- package/src/components/delivery-notes/create/locales/pl.ts +1 -0
- package/src/components/delivery-notes/create/locales/pt.ts +1 -0
- package/src/components/delivery-notes/create/locales/sk.ts +69 -0
- package/src/components/delivery-notes/create/locales/sl.ts +6 -5
- package/src/components/delivery-notes/create/locales/sv.ts +69 -0
- package/src/components/delivery-notes/create/prepare-delivery-note-submission.ts +34 -1
- package/src/components/delivery-notes/delivery-notes.hooks.ts +34 -3
- package/src/components/delivery-notes/list/list-row-actions.tsx +62 -16
- package/src/components/delivery-notes/list/list-table.tsx +44 -10
- package/src/components/delivery-notes/list/locales/bg.ts +40 -0
- package/src/components/delivery-notes/list/locales/cs.ts +40 -0
- package/src/components/delivery-notes/list/locales/et.ts +40 -0
- package/src/components/delivery-notes/list/locales/fi.ts +40 -0
- package/src/components/delivery-notes/list/locales/is.ts +40 -0
- package/src/components/delivery-notes/list/locales/nb.ts +40 -0
- package/src/components/delivery-notes/list/locales/sk.ts +40 -0
- package/src/components/delivery-notes/list/locales/sv.ts +40 -0
- package/src/components/delivery-notes/list/use-delivery-note-download.ts +3 -5
- package/src/components/documents/create/custom-create-template.ts +114 -0
- package/src/components/documents/create/document-add-item-form.tsx +266 -153
- package/src/components/documents/create/document-add-item-tax-rate-field.tsx +3 -3
- package/src/components/documents/create/document-date-validation.ts +111 -0
- package/src/components/documents/create/document-details-section.tsx +117 -54
- package/src/components/documents/create/document-form-item.ts +67 -0
- package/src/components/documents/create/document-item-validation.ts +54 -0
- package/src/components/documents/create/document-items-section.tsx +44 -6
- package/src/components/documents/create/document-recipient-section.tsx +10 -2
- package/src/components/documents/create/form-types.ts +2 -2
- package/src/components/documents/create/linked-documents-info.tsx +6 -14
- package/src/components/documents/create/live-preview.tsx +22 -18
- package/src/components/documents/create/mark-as-paid-section.tsx +80 -20
- package/src/components/documents/create/payment-rows.ts +321 -0
- package/src/components/documents/create/prepare-document-submission.ts +160 -109
- package/src/components/documents/create/prepare-preview-data.ts +12 -0
- package/src/components/documents/create/preserved-expected-total.ts +90 -0
- package/src/components/documents/create/scroll-to-first-invalid-field.ts +27 -0
- package/src/components/documents/create/smart-code-insert-button.tsx +5 -53
- package/src/components/documents/create/use-document-customer-form.ts +74 -25
- package/src/components/documents/documents.hooks.ts +3 -5
- package/src/components/documents/index.ts +1 -0
- package/src/components/documents/public/index.ts +1 -0
- package/src/components/documents/public/public-document-summary.tsx +336 -0
- package/src/components/documents/shared/document-preview-display.tsx +65 -39
- package/src/components/documents/shared/index.ts +6 -1
- package/src/components/documents/shared/scaled-document-preview.tsx +33 -19
- package/src/components/documents/types.ts +24 -0
- package/src/components/documents/view/document-actions-bar.tsx +251 -63
- package/src/components/documents/view/document-activities-list.tsx +23 -11
- package/src/components/documents/view/document-details-card.tsx +11 -39
- package/src/components/documents/view/document-payments-list.tsx +114 -57
- package/src/components/documents/view/document-relations-list.tsx +26 -6
- package/src/components/documents/view/document-sidebar.tsx +25 -3
- package/src/components/documents/view/document-version-history.tsx +137 -0
- package/src/components/documents/view/index.ts +1 -0
- package/src/components/documents/view/locales/bg.ts +143 -0
- package/src/components/documents/view/locales/cs.ts +143 -0
- package/src/components/documents/view/locales/de.ts +13 -0
- package/src/components/documents/view/locales/en.ts +143 -0
- package/src/components/documents/view/locales/es.ts +13 -0
- package/src/components/documents/view/locales/et.ts +143 -0
- package/src/components/documents/view/locales/fi.ts +143 -0
- package/src/components/documents/view/locales/fr.ts +13 -0
- package/src/components/documents/view/locales/hr.ts +18 -5
- package/src/components/documents/view/locales/is.ts +143 -0
- package/src/components/documents/view/locales/it.ts +13 -0
- package/src/components/documents/view/locales/nb.ts +143 -0
- package/src/components/documents/view/locales/nl.ts +13 -0
- package/src/components/documents/view/locales/pl.ts +13 -0
- package/src/components/documents/view/locales/pt.ts +13 -0
- package/src/components/documents/view/locales/sk.ts +143 -0
- package/src/components/documents/view/locales/sl.ts +21 -8
- package/src/components/documents/view/locales/sv.ts +143 -0
- package/src/components/documents/view/use-document-download.ts +18 -17
- package/src/components/entities/create-entity-form.tsx +200 -12
- package/src/components/entities/entities.hooks.ts +15 -7
- package/src/components/entities/entity-settings-form/entity-settings-form.tsx +121 -65
- package/src/components/entities/entity-settings-form/input-with-preview.tsx +28 -4
- package/src/components/entities/entity-settings-form/locales/bg.ts +206 -0
- package/src/components/entities/entity-settings-form/locales/cs.ts +206 -0
- package/src/components/entities/entity-settings-form/locales/de.ts +17 -3
- package/src/components/entities/entity-settings-form/locales/en.ts +206 -0
- package/src/components/entities/entity-settings-form/locales/es.ts +15 -3
- package/src/components/entities/entity-settings-form/locales/et.ts +205 -0
- package/src/components/entities/entity-settings-form/locales/fi.ts +206 -0
- package/src/components/entities/entity-settings-form/locales/fr.ts +15 -3
- package/src/components/entities/entity-settings-form/locales/hr.ts +23 -11
- package/src/components/entities/entity-settings-form/locales/is.ts +206 -0
- package/src/components/entities/entity-settings-form/locales/it.ts +15 -3
- package/src/components/entities/entity-settings-form/locales/nb.ts +206 -0
- package/src/components/entities/entity-settings-form/locales/nl.ts +15 -3
- package/src/components/entities/entity-settings-form/locales/pl.ts +15 -3
- package/src/components/entities/entity-settings-form/locales/pt.ts +15 -3
- package/src/components/entities/entity-settings-form/locales/sk.ts +206 -0
- package/src/components/entities/entity-settings-form/locales/sl.ts +31 -18
- package/src/components/entities/entity-settings-form/locales/sv.ts +212 -0
- package/src/components/entities/fina-settings-form/fina-operator-required-dialog.tsx +34 -9
- package/src/components/entities/fina-settings-form/fina-settings-form.tsx +2 -0
- package/src/components/entities/fina-settings-form/fina-settings.hooks.ts +14 -45
- package/src/components/entities/fina-settings-form/locales/bg.ts +163 -0
- package/src/components/entities/fina-settings-form/locales/cs.ts +163 -0
- package/src/components/entities/fina-settings-form/locales/et.ts +163 -0
- package/src/components/entities/fina-settings-form/locales/fi.ts +163 -0
- package/src/components/entities/fina-settings-form/locales/hr.ts +11 -10
- package/src/components/entities/fina-settings-form/locales/is.ts +164 -0
- package/src/components/entities/fina-settings-form/locales/nb.ts +163 -0
- package/src/components/entities/fina-settings-form/locales/sk.ts +163 -0
- package/src/components/entities/fina-settings-form/locales/sl.ts +8 -7
- package/src/components/entities/fina-settings-form/locales/sv.ts +165 -0
- package/src/components/entities/furs-settings-form/furs-operator-required-dialog.tsx +34 -9
- package/src/components/entities/furs-settings-form/furs-settings-form.tsx +13 -1
- package/src/components/entities/furs-settings-form/furs-settings.hooks.ts +141 -42
- package/src/components/entities/furs-settings-form/locales/bg.ts +242 -0
- package/src/components/entities/furs-settings-form/locales/cs.ts +241 -0
- package/src/components/entities/furs-settings-form/locales/de.ts +42 -15
- package/src/components/entities/furs-settings-form/locales/en.ts +24 -0
- package/src/components/entities/furs-settings-form/locales/es.ts +42 -15
- package/src/components/entities/furs-settings-form/locales/et.ts +242 -0
- package/src/components/entities/furs-settings-form/locales/fi.ts +243 -0
- package/src/components/entities/furs-settings-form/locales/fr.ts +43 -15
- package/src/components/entities/furs-settings-form/locales/hr.ts +44 -19
- package/src/components/entities/furs-settings-form/locales/is.ts +242 -0
- package/src/components/entities/furs-settings-form/locales/it.ts +42 -15
- package/src/components/entities/furs-settings-form/locales/nb.ts +242 -0
- package/src/components/entities/furs-settings-form/locales/nl.ts +42 -15
- package/src/components/entities/furs-settings-form/locales/pl.ts +40 -15
- package/src/components/entities/furs-settings-form/locales/pt.ts +42 -15
- package/src/components/entities/furs-settings-form/locales/sk.ts +243 -0
- package/src/components/entities/furs-settings-form/locales/sl.ts +34 -10
- package/src/components/entities/furs-settings-form/locales/sv.ts +242 -0
- package/src/components/entities/furs-settings-form/sections/enable-fiscalization-section.tsx +11 -0
- package/src/components/entities/furs-settings-form/sections/furs-internal-act-download-card.tsx +111 -0
- package/src/components/entities/furs-settings-form/sections/general-settings-section.tsx +27 -0
- package/src/components/entities/furs-settings-form/sections/premises-management-section.tsx +23 -16
- package/src/components/entities/furs-settings-form/sections/register-premise-dialog.tsx +89 -31
- package/src/components/entities/settings/branding-settings-form.tsx +11 -30
- package/src/components/entities/settings/company-settings-form.tsx +2 -1
- package/src/components/entities/settings/defaults-settings-form.tsx +106 -3
- package/src/components/entities/settings/email-settings-form.tsx +245 -3
- package/src/components/entities/settings/eslog-settings-form.tsx +2 -1
- package/src/components/entities/settings/number-format-settings-form.tsx +2 -1
- package/src/components/entities/settings/pdf-template-selector/locales/bg.ts +20 -0
- package/src/components/entities/settings/pdf-template-selector/locales/cs.ts +20 -0
- package/src/components/entities/settings/pdf-template-selector/locales/en.ts +20 -0
- package/src/components/entities/settings/pdf-template-selector/locales/et.ts +19 -0
- package/src/components/entities/settings/pdf-template-selector/locales/fi.ts +20 -0
- package/src/components/entities/settings/pdf-template-selector/locales/is.ts +19 -0
- package/src/components/entities/settings/pdf-template-selector/locales/nb.ts +19 -0
- package/src/components/entities/settings/pdf-template-selector/locales/sk.ts +20 -0
- package/src/components/entities/settings/pdf-template-selector/locales/sv.ts +19 -0
- package/src/components/entities/settings/tax-rules-settings-form.tsx +57 -6
- package/src/components/estimates/create/create-estimate-form.tsx +250 -66
- package/src/components/estimates/create/locales/bg.ts +77 -0
- package/src/components/estimates/create/locales/cs.ts +77 -0
- package/src/components/estimates/create/locales/de.ts +4 -3
- package/src/components/estimates/create/locales/en.ts +77 -0
- package/src/components/estimates/create/locales/es.ts +4 -3
- package/src/components/estimates/create/locales/et.ts +77 -0
- package/src/components/estimates/create/locales/fi.ts +77 -0
- package/src/components/estimates/create/locales/fr.ts +4 -3
- package/src/components/estimates/create/locales/hr.ts +13 -12
- package/src/components/estimates/create/locales/is.ts +77 -0
- package/src/components/estimates/create/locales/it.ts +4 -3
- package/src/components/estimates/create/locales/nb.ts +77 -0
- package/src/components/estimates/create/locales/nl.ts +4 -3
- package/src/components/estimates/create/locales/pl.ts +4 -3
- package/src/components/estimates/create/locales/pt.ts +4 -3
- package/src/components/estimates/create/locales/sk.ts +77 -0
- package/src/components/estimates/create/locales/sl.ts +13 -12
- package/src/components/estimates/create/locales/sv.ts +77 -0
- package/src/components/estimates/create/prepare-estimate-submission.ts +41 -4
- package/src/components/estimates/estimates.hooks.ts +24 -3
- package/src/components/estimates/list/list-row-actions.tsx +34 -7
- package/src/components/estimates/list/list-table.tsx +89 -11
- package/src/components/estimates/list/locales/bg.ts +40 -0
- package/src/components/estimates/list/locales/cs.ts +40 -0
- package/src/components/estimates/list/locales/de.ts +2 -0
- package/src/components/estimates/list/locales/en.ts +29 -2
- package/src/components/estimates/list/locales/es.ts +2 -0
- package/src/components/estimates/list/locales/et.ts +40 -0
- package/src/components/estimates/list/locales/fi.ts +40 -0
- package/src/components/estimates/list/locales/fr.ts +2 -0
- package/src/components/estimates/list/locales/hr.ts +9 -7
- package/src/components/estimates/list/locales/is.ts +40 -0
- package/src/components/estimates/list/locales/it.ts +2 -0
- package/src/components/estimates/list/locales/nb.ts +40 -0
- package/src/components/estimates/list/locales/nl.ts +2 -0
- package/src/components/estimates/list/locales/pl.ts +2 -0
- package/src/components/estimates/list/locales/pt.ts +2 -0
- package/src/components/estimates/list/locales/sk.ts +40 -0
- package/src/components/estimates/list/locales/sl.ts +9 -7
- package/src/components/estimates/list/locales/sv.ts +40 -0
- package/src/components/estimates/list/use-estimate-download.ts +3 -5
- package/src/components/export/document-export-form.tsx +72 -15
- package/src/components/export/sales-per-item-export-form.tsx +3 -2
- package/src/components/invoices/create/create-invoice-form.tsx +500 -112
- package/src/components/invoices/create/eslog-validation.ts +97 -8
- package/src/components/invoices/create/locales/bg.ts +173 -0
- package/src/components/invoices/create/locales/cs.ts +173 -0
- package/src/components/invoices/create/locales/de.ts +41 -9
- package/src/components/invoices/create/locales/en.ts +173 -0
- package/src/components/invoices/create/locales/es.ts +42 -9
- package/src/components/invoices/create/locales/et.ts +173 -0
- package/src/components/invoices/create/locales/fi.ts +173 -0
- package/src/components/invoices/create/locales/fr.ts +42 -11
- package/src/components/invoices/create/locales/hr.ts +50 -18
- package/src/components/invoices/create/locales/is.ts +173 -0
- package/src/components/invoices/create/locales/it.ts +43 -11
- package/src/components/invoices/create/locales/nb.ts +173 -0
- package/src/components/invoices/create/locales/nl.ts +42 -10
- package/src/components/invoices/create/locales/pl.ts +42 -11
- package/src/components/invoices/create/locales/pt.ts +43 -10
- package/src/components/invoices/create/locales/sk.ts +173 -0
- package/src/components/invoices/create/locales/sl.ts +49 -18
- package/src/components/invoices/create/locales/sv.ts +175 -0
- package/src/components/invoices/create/prepare-invoice-submission.ts +73 -2
- package/src/components/invoices/invoices-furs.hooks.ts +11 -8
- package/src/components/invoices/invoices.hooks.ts +36 -10
- package/src/components/invoices/list/list-row-actions.tsx +54 -21
- package/src/components/invoices/list/list-table.tsx +94 -12
- package/src/components/invoices/list/locales/bg.ts +49 -0
- package/src/components/invoices/list/locales/cs.ts +49 -0
- package/src/components/invoices/list/locales/en.ts +34 -2
- package/src/components/invoices/list/locales/et.ts +49 -0
- package/src/components/invoices/list/locales/fi.ts +49 -0
- package/src/components/invoices/list/locales/is.ts +49 -0
- package/src/components/invoices/list/locales/nb.ts +49 -0
- package/src/components/invoices/list/locales/sk.ts +49 -0
- package/src/components/invoices/list/locales/sv.ts +49 -0
- package/src/components/invoices/list/use-invoice-download.ts +3 -5
- package/src/components/invoices/send-email-dialog/locales/bg.ts +63 -0
- package/src/components/invoices/send-email-dialog/locales/cs.ts +63 -0
- package/src/components/invoices/send-email-dialog/locales/de.ts +26 -0
- package/src/components/invoices/send-email-dialog/locales/en.ts +63 -0
- package/src/components/invoices/send-email-dialog/locales/es.ts +26 -0
- package/src/components/invoices/send-email-dialog/locales/et.ts +63 -0
- package/src/components/invoices/send-email-dialog/locales/fi.ts +63 -0
- package/src/components/invoices/send-email-dialog/locales/fr.ts +26 -0
- package/src/components/invoices/send-email-dialog/locales/hr.ts +26 -0
- package/src/components/invoices/send-email-dialog/locales/is.ts +63 -0
- package/src/components/invoices/send-email-dialog/locales/it.ts +26 -0
- package/src/components/invoices/send-email-dialog/locales/nb.ts +63 -0
- package/src/components/invoices/send-email-dialog/locales/nl.ts +26 -0
- package/src/components/invoices/send-email-dialog/locales/pl.ts +26 -0
- package/src/components/invoices/send-email-dialog/locales/pt.ts +26 -0
- package/src/components/invoices/send-email-dialog/locales/sk.ts +63 -0
- package/src/components/invoices/send-email-dialog/locales/sl.ts +26 -0
- package/src/components/invoices/send-email-dialog/locales/sv.ts +63 -0
- package/src/components/invoices/send-email-dialog/send-email-dialog.tsx +189 -93
- package/src/components/invoices/view/eslog-info-display.tsx +2 -0
- package/src/components/invoices/view/fiscalization-status-card.tsx +2 -0
- package/src/components/items/create-item-form/create-item-form.tsx +29 -0
- package/src/components/items/create-item-form/locales/bg.ts +13 -0
- package/src/components/items/create-item-form/locales/cs.ts +13 -0
- package/src/components/items/create-item-form/locales/et.ts +13 -0
- package/src/components/items/create-item-form/locales/fi.ts +13 -0
- package/src/components/items/create-item-form/locales/is.ts +13 -0
- package/src/components/items/create-item-form/locales/nb.ts +13 -0
- package/src/components/items/create-item-form/locales/sk.ts +13 -0
- package/src/components/items/create-item-form/locales/sv.ts +13 -0
- package/src/components/items/edit-item-form/edit-item-form.tsx +39 -1
- package/src/components/items/edit-item-form/locales/bg.ts +12 -0
- package/src/components/items/edit-item-form/locales/cs.ts +12 -0
- package/src/components/items/edit-item-form/locales/en.ts +12 -0
- package/src/components/items/edit-item-form/locales/et.ts +12 -0
- package/src/components/items/edit-item-form/locales/fi.ts +12 -0
- package/src/components/items/edit-item-form/locales/is.ts +12 -0
- package/src/components/items/edit-item-form/locales/nb.ts +12 -0
- package/src/components/items/edit-item-form/locales/sk.ts +12 -0
- package/src/components/items/edit-item-form/locales/sv.ts +12 -0
- package/src/components/items/item-combobox.tsx +55 -22
- package/src/components/items/item-list-table/item-list-table.tsx +47 -23
- package/src/components/items/item-list-table/locales/bg.ts +16 -0
- package/src/components/items/item-list-table/locales/cs.ts +16 -0
- package/src/components/items/item-list-table/locales/en.ts +4 -3
- package/src/components/items/item-list-table/locales/et.ts +16 -0
- package/src/components/items/item-list-table/locales/fi.ts +16 -0
- package/src/components/items/item-list-table/locales/is.ts +16 -0
- package/src/components/items/item-list-table/locales/nb.ts +16 -0
- package/src/components/items/item-list-table/locales/sk.ts +16 -0
- package/src/components/items/item-list-table/locales/sv.ts +16 -0
- package/src/components/items/items.hooks.ts +15 -15
- package/src/components/payments/create-payment-form/create-payment-form.tsx +16 -9
- package/src/components/payments/create-payment-form/locales/bg.ts +20 -0
- package/src/components/payments/create-payment-form/locales/cs.ts +20 -0
- package/src/components/payments/create-payment-form/locales/en.ts +20 -0
- package/src/components/payments/create-payment-form/locales/et.ts +20 -0
- package/src/components/payments/create-payment-form/locales/fi.ts +20 -0
- package/src/components/payments/create-payment-form/locales/hr.ts +2 -2
- package/src/components/payments/create-payment-form/locales/is.ts +20 -0
- package/src/components/payments/create-payment-form/locales/nb.ts +20 -0
- package/src/components/payments/create-payment-form/locales/sk.ts +20 -0
- package/src/components/payments/create-payment-form/locales/sl.ts +4 -4
- package/src/components/payments/create-payment-form/locales/sv.ts +20 -0
- package/src/components/payments/edit-payment-form/edit-payment-form.tsx +10 -2
- package/src/components/payments/edit-payment-form/locales/bg.ts +20 -0
- package/src/components/payments/edit-payment-form/locales/cs.ts +20 -0
- package/src/components/payments/edit-payment-form/locales/en.ts +20 -0
- package/src/components/payments/edit-payment-form/locales/et.ts +20 -0
- package/src/components/payments/edit-payment-form/locales/fi.ts +20 -0
- package/src/components/payments/edit-payment-form/locales/hr.ts +2 -2
- package/src/components/payments/edit-payment-form/locales/is.ts +20 -0
- package/src/components/payments/edit-payment-form/locales/nb.ts +20 -0
- package/src/components/payments/edit-payment-form/locales/sk.ts +20 -0
- package/src/components/payments/edit-payment-form/locales/sl.ts +4 -4
- package/src/components/payments/edit-payment-form/locales/sv.ts +20 -0
- package/src/components/payments/list/list-row-actions.tsx +10 -2
- package/src/components/payments/list/list-table.tsx +51 -45
- package/src/components/payments/list/locales/bg.ts +42 -0
- package/src/components/payments/list/locales/cs.ts +42 -0
- package/src/components/payments/list/locales/de.ts +18 -0
- package/src/components/payments/list/locales/en.ts +37 -2
- package/src/components/payments/list/locales/es.ts +18 -0
- package/src/components/payments/list/locales/et.ts +42 -0
- package/src/components/payments/list/locales/fi.ts +42 -0
- package/src/components/payments/list/locales/fr.ts +18 -0
- package/src/components/payments/list/locales/hr.ts +18 -0
- package/src/components/payments/list/locales/is.ts +42 -0
- package/src/components/payments/list/locales/it.ts +18 -0
- package/src/components/payments/list/locales/nb.ts +42 -0
- package/src/components/payments/list/locales/nl.ts +18 -0
- package/src/components/payments/list/locales/pl.ts +18 -0
- package/src/components/payments/list/locales/pt.ts +18 -0
- package/src/components/payments/list/locales/sk.ts +42 -0
- package/src/components/payments/list/locales/sl.ts +18 -1
- package/src/components/payments/list/locales/sv.ts +42 -0
- package/src/components/payments/payments.hooks.ts +13 -6
- package/src/components/recurring-invoices/create-recurring-invoice-form/create-recurring-invoice-form.tsx +121 -39
- package/src/components/recurring-invoices/create-recurring-invoice-form/locales/bg.ts +44 -0
- package/src/components/recurring-invoices/create-recurring-invoice-form/locales/cs.ts +44 -0
- package/src/components/recurring-invoices/create-recurring-invoice-form/locales/en.ts +44 -0
- package/src/components/recurring-invoices/create-recurring-invoice-form/locales/et.ts +44 -0
- package/src/components/recurring-invoices/create-recurring-invoice-form/locales/fi.ts +44 -0
- package/src/components/recurring-invoices/create-recurring-invoice-form/locales/hr.ts +6 -6
- package/src/components/recurring-invoices/create-recurring-invoice-form/locales/is.ts +44 -0
- package/src/components/recurring-invoices/create-recurring-invoice-form/locales/nb.ts +44 -0
- package/src/components/recurring-invoices/create-recurring-invoice-form/locales/sk.ts +44 -0
- package/src/components/recurring-invoices/create-recurring-invoice-form/locales/sl.ts +4 -4
- package/src/components/recurring-invoices/create-recurring-invoice-form/locales/sv.ts +44 -0
- package/src/components/recurring-invoices/list/list-row-actions.tsx +12 -6
- package/src/components/recurring-invoices/list/list-table.tsx +63 -12
- package/src/components/recurring-invoices/list/locales/bg.ts +32 -0
- package/src/components/recurring-invoices/list/locales/cs.ts +32 -0
- package/src/components/recurring-invoices/list/locales/de.ts +4 -0
- package/src/components/recurring-invoices/list/locales/en.ts +27 -0
- package/src/components/recurring-invoices/list/locales/es.ts +4 -0
- package/src/components/recurring-invoices/list/locales/et.ts +32 -0
- package/src/components/recurring-invoices/list/locales/fi.ts +32 -0
- package/src/components/recurring-invoices/list/locales/fr.ts +4 -0
- package/src/components/recurring-invoices/list/locales/hr.ts +4 -0
- package/src/components/recurring-invoices/list/locales/is.ts +32 -0
- package/src/components/recurring-invoices/list/locales/it.ts +4 -0
- package/src/components/recurring-invoices/list/locales/nb.ts +32 -0
- package/src/components/recurring-invoices/list/locales/nl.ts +4 -0
- package/src/components/recurring-invoices/list/locales/pl.ts +4 -0
- package/src/components/recurring-invoices/list/locales/pt.ts +4 -0
- package/src/components/recurring-invoices/list/locales/sk.ts +32 -0
- package/src/components/recurring-invoices/list/locales/sl.ts +4 -0
- package/src/components/recurring-invoices/list/locales/sv.ts +32 -0
- package/src/components/recurring-invoices/recurring-invoices.hooks.ts +11 -8
- package/src/components/request-logs/request-log-detail.tsx +30 -23
- package/src/components/request-logs/request-log-list-table.tsx +88 -45
- package/src/components/table/README.md +47 -9
- package/src/components/table/data-table.tsx +232 -92
- package/src/components/table/filter-bar.tsx +1 -1
- package/src/components/table/filter-panel.tsx +51 -22
- package/src/components/table/hooks/use-table-state.ts +64 -11
- package/src/components/table/index.ts +3 -0
- package/src/components/table/locales.ts +119 -4
- package/src/components/table/selection-toolbar.tsx +65 -9
- package/src/components/table/sorting.ts +80 -0
- package/src/components/table/table-skeleton.tsx +15 -9
- package/src/components/table/types.ts +17 -0
- package/src/components/tax-reports/index.ts +8 -0
- package/src/components/tax-reports/kir-export-form.tsx +4 -5
- package/src/components/tax-reports/slovenia-accounting-mappings-fields.tsx +271 -0
- package/src/components/tax-reports/slovenia-tax-profile-step.tsx +25 -11
- package/src/components/tax-reports/slovenia-vod-export-form.tsx +452 -0
- package/src/components/tax-reports/slovenia-yearly-export-form.tsx +20 -16
- package/src/components/tax-reports/slovenia-yearly-review-step.tsx +42 -19
- package/src/components/taxes/create-tax-form/create-tax-form.tsx +48 -2
- package/src/components/taxes/create-tax-form/locales/bg.ts +8 -0
- package/src/components/taxes/create-tax-form/locales/cs.ts +8 -0
- package/src/components/taxes/create-tax-form/locales/et.ts +8 -0
- package/src/components/taxes/create-tax-form/locales/fi.ts +8 -0
- package/src/components/taxes/create-tax-form/locales/is.ts +8 -0
- package/src/components/taxes/create-tax-form/locales/nb.ts +8 -0
- package/src/components/taxes/create-tax-form/locales/sk.ts +8 -0
- package/src/components/taxes/create-tax-form/locales/sv.ts +8 -0
- package/src/components/taxes/edit-tax-form/edit-tax-form.tsx +80 -11
- package/src/components/taxes/edit-tax-form/locales/bg.ts +6 -0
- package/src/components/taxes/edit-tax-form/locales/cs.ts +6 -0
- package/src/components/taxes/edit-tax-form/locales/en.ts +6 -0
- package/src/components/taxes/edit-tax-form/locales/et.ts +6 -0
- package/src/components/taxes/edit-tax-form/locales/fi.ts +6 -0
- package/src/components/taxes/edit-tax-form/locales/is.ts +6 -0
- package/src/components/taxes/edit-tax-form/locales/nb.ts +6 -0
- package/src/components/taxes/edit-tax-form/locales/sk.ts +6 -0
- package/src/components/taxes/edit-tax-form/locales/sv.ts +6 -0
- package/src/components/taxes/tax-list-table/locales/bg.ts +17 -0
- package/src/components/taxes/tax-list-table/locales/cs.ts +17 -0
- package/src/components/taxes/tax-list-table/locales/en.ts +4 -3
- package/src/components/taxes/tax-list-table/locales/et.ts +17 -0
- package/src/components/taxes/tax-list-table/locales/fi.ts +17 -0
- package/src/components/taxes/tax-list-table/locales/is.ts +17 -0
- package/src/components/taxes/tax-list-table/locales/nb.ts +17 -0
- package/src/components/taxes/tax-list-table/locales/sk.ts +17 -0
- package/src/components/taxes/tax-list-table/locales/sv.ts +17 -0
- package/src/components/taxes/tax-list-table/tax-list-table.tsx +53 -19
- package/src/components/taxes/taxes.hooks.ts +53 -12
- package/src/components/ui/badge.tsx +1 -1
- package/src/components/ui/button.tsx +1 -1
- package/src/components/ui/drawer.tsx +2 -2
- package/src/components/ui/form.tsx +118 -10
- package/src/components/ui/progress.tsx +6 -4
- package/src/components/ui/select.tsx +118 -2
- package/src/components/ui/sidebar.tsx +2 -2
- package/src/components/ui/sonner.tsx +17 -36
- package/src/components/ui/sticky-form-footer.tsx +6 -1
- package/src/components/ui/tooltip.tsx +15 -2
- package/src/components/webhook-logs/webhook-delivery-detail.tsx +22 -22
- package/src/components/webhook-logs/webhook-delivery-list-table.tsx +92 -17
- package/src/components/wl-subscription/locked-feature.tsx +11 -10
- package/src/components/wl-subscription/paywall.tsx +184 -72
- package/src/components/wl-subscription/upgrade-modal.tsx +28 -31
- package/src/generate-schemas.ts +146 -103
- package/src/generated/schemas/acceptentityinvitation_body.ts +4 -3
- package/src/generated/schemas/accountwebhook.ts +63 -0
- package/src/generated/schemas/addentityuser_body.ts +4 -3
- package/src/generated/schemas/advanceinvoice.ts +167 -168
- package/src/generated/schemas/authorizeshopify_body.ts +4 -3
- package/src/generated/schemas/calculatedocumentpreview.ts +120 -0
- package/src/generated/schemas/checktransactiontype.ts +35 -0
- package/src/generated/schemas/creditnote.ts +203 -76
- package/src/generated/schemas/customadvanceinvoice.ts +172 -165
- package/src/generated/schemas/customcreditnote.ts +183 -155
- package/src/generated/schemas/customdeliverynote.ts +166 -0
- package/src/generated/schemas/customer.ts +4 -8
- package/src/generated/schemas/customestimate.ts +123 -97
- package/src/generated/schemas/customincomingpurchasedocument.ts +142 -0
- package/src/generated/schemas/custominvoice.ts +183 -154
- package/src/generated/schemas/deliverynote.ts +124 -79
- package/src/generated/schemas/einvoice.ts +19 -0
- package/src/generated/schemas/einvoicingsettings.ts +21 -0
- package/src/generated/schemas/einvoicingsupplier.ts +45 -0
- package/src/generated/schemas/entity.ts +267 -24
- package/src/generated/schemas/entityapikey.ts +1 -3
- package/src/generated/schemas/entityuserrole.ts +1 -3
- package/src/generated/schemas/estimate.ts +120 -127
- package/src/generated/schemas/exportsloveniavodxml_body.ts +17 -0
- package/src/generated/schemas/exportsloveniayearlynormiranireport_body.ts +4 -3
- package/src/generated/schemas/finadevice.ts +15 -0
- package/src/generated/schemas/finalizedocument.ts +52 -0
- package/src/generated/schemas/finapremise.ts +15 -0
- package/src/generated/schemas/finasettings.ts +1 -3
- package/src/generated/schemas/furselectronicdevice.ts +15 -0
- package/src/generated/schemas/furssettings.ts +2 -3
- package/src/generated/schemas/image.ts +15 -0
- package/src/generated/schemas/incomingpurchasedocument.ts +178 -0
- package/src/generated/schemas/incomingpurchasedocumentattachment.ts +15 -0
- package/src/generated/schemas/incomingpurchasedocumentpayment.ts +36 -0
- package/src/generated/schemas/index.ts +30 -5
- package/src/generated/schemas/invoice.ts +182 -183
- package/src/generated/schemas/item.ts +35 -3
- package/src/generated/schemas/legacymigrationauth.ts +18 -0
- package/src/generated/schemas/me.ts +4 -22
- package/src/generated/schemas/migrationjob.ts +20 -0
- package/src/generated/schemas/order.ts +6 -8
- package/src/generated/schemas/orderintegration.ts +12 -12
- package/src/generated/schemas/payment.ts +9 -8
- package/src/generated/schemas/ptatcudseries.ts +28 -0
- package/src/generated/schemas/queryentitystats.ts +15 -0
- package/src/generated/schemas/recurringinvoice.ts +4 -8
- package/src/generated/schemas/registerfursmovablepremise_body.ts +1 -3
- package/src/generated/schemas/registerfursrealestatepremise_body.ts +1 -3
- package/src/generated/schemas/renderadvanceinvoicepreview_body.ts +42 -16
- package/src/generated/schemas/rendercreditnotepreview_body.ts +42 -16
- package/src/generated/schemas/renderdeliverynotepreview_body.ts +19 -8
- package/src/generated/schemas/renderestimatepreview_body.ts +45 -8
- package/src/generated/schemas/renderinvoicepreview_body.ts +46 -18
- package/src/generated/schemas/reviewsloveniayearlynormiranireport.ts +15 -0
- package/src/generated/schemas/searcheinvoicingcustomer.ts +18 -0
- package/src/generated/schemas/senddocument_body.ts +2 -3
- package/src/generated/schemas/sendemail_body.ts +48 -42
- package/src/generated/schemas/sloveniataxprofile.ts +98 -24
- package/src/generated/schemas/starteslogexport_body.ts +34 -0
- package/src/generated/schemas/startpdfexport_body.ts +18 -81
- package/src/generated/schemas/stripeappconnect_body.ts +4 -3
- package/src/generated/schemas/stripeappcreateinvoice_body.ts +4 -6
- package/src/generated/schemas/stripeappmarketplaceauthorize.ts +15 -0
- package/src/generated/schemas/stripeappupdatesettings_body.ts +6 -6
- package/src/generated/schemas/supplier.ts +55 -0
- package/src/generated/schemas/syncshopifyorders_body.ts +21 -0
- package/src/generated/schemas/tax.ts +8 -8
- package/src/generated/schemas/uploadfile_body.ts +2 -3
- package/src/generated/schemas/uploadfurscertificate_body.ts +6 -6
- package/src/generated/schemas/userfinasettings.ts +1 -3
- package/src/generated/schemas/userfurssettings.ts +1 -3
- package/src/generated/schemas/userptsettings.ts +24 -0
- package/src/generated/schemas/voidinvoice_body.ts +25 -0
- package/src/generated/schemas/webhook.ts +6 -8
- package/src/generated/schemas/wlsubscriptionbillingemail.ts +17 -0
- package/src/hooks/create-resource-hooks.ts +22 -19
- package/src/hooks/use-duplicate-document.ts +71 -38
- package/src/hooks/use-eslog-validation.ts +5 -1
- package/src/hooks/use-next-document-number.ts +13 -6
- package/src/hooks/use-resolved-entity-id.ts +14 -0
- package/src/hooks/use-resource-mutation.ts +11 -30
- package/src/hooks/use-transaction-type-check.ts +3 -8
- package/src/lib/browser-cookies.ts +1 -1
- package/src/lib/country-capabilities.ts +114 -0
- package/src/lib/date-fns-locale.ts +1 -20
- package/src/lib/date-only.ts +58 -0
- package/src/lib/document-display.ts +18 -0
- package/src/lib/eslog-export.ts +32 -0
- package/src/lib/fiscalization-options.ts +21 -1
- package/src/lib/formatting.ts +27 -0
- package/src/lib/furs-error-utils.ts +29 -0
- package/src/lib/locale.ts +4 -0
- package/src/lib/payment-display.ts +97 -0
- package/src/lib/pt-document-input.ts +67 -0
- package/src/lib/schemas/shared.ts +12 -0
- package/src/lib/template-variables.tsx +102 -4
- package/src/lib/translation.ts +51 -33
- package/src/lib/white-label-capabilities.ts +626 -0
- package/src/lib/zod-validation-message.ts +291 -0
- package/src/providers/entities-provider.tsx +32 -14
- package/src/providers/sdk-provider.tsx +112 -12
- package/src/providers/space-invoices-provider.tsx +129 -0
- package/src/providers/white-label-provider.tsx +96 -4
- package/src/providers/wl-subscription-provider.tsx +149 -10
- package/src/generated/schemas/previewadvanceinvoice_body.ts +0 -354
- package/src/generated/schemas/previewestimate_body.ts +0 -309
- package/src/generated/schemas/registerfinamovablepremise_body.ts +0 -26
- package/src/generated/schemas/registerfinarealestatepremise_body.ts +0 -37
- package/src/generated/schemas/renderdocument_body.ts +0 -594
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { normalizeDateOnlyInput } from "../../../lib/date-only";
|
|
3
|
+
|
|
4
|
+
type DocumentDateValues = {
|
|
5
|
+
date?: string | null;
|
|
6
|
+
date_due?: string | null;
|
|
7
|
+
date_valid_till?: string | null;
|
|
8
|
+
date_service?: string | null;
|
|
9
|
+
date_service_to?: string | null;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const messages = {
|
|
13
|
+
dateInFuture: "Document date cannot be in the future.",
|
|
14
|
+
serviceDateAfterIssueDate: "Service date cannot be later than the issue date.",
|
|
15
|
+
serviceDateToAfterIssueDate: "Service period end date cannot be later than the issue date.",
|
|
16
|
+
serviceDateToBeforeServiceDate: "Service period end date must be on or after the service start date.",
|
|
17
|
+
dueDateBeforeIssueDate: "Due date must be on or after the issue date.",
|
|
18
|
+
validTillBeforeIssueDate: "Valid until date must be on or after the issue date.",
|
|
19
|
+
} as const;
|
|
20
|
+
|
|
21
|
+
function compareDateOnly(left: string, right: string): number {
|
|
22
|
+
if (left === right) return 0;
|
|
23
|
+
return left < right ? -1 : 1;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function getTodayDateOnly(): string {
|
|
27
|
+
return normalizeDateOnlyInput(new Date().toISOString()) ?? "";
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function addCustomIssue(
|
|
31
|
+
ctx: z.RefinementCtx,
|
|
32
|
+
path: string[],
|
|
33
|
+
message: string,
|
|
34
|
+
condition: boolean,
|
|
35
|
+
) {
|
|
36
|
+
if (!condition) return;
|
|
37
|
+
|
|
38
|
+
ctx.addIssue({
|
|
39
|
+
code: z.ZodIssueCode.custom,
|
|
40
|
+
path,
|
|
41
|
+
message,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function applyBaseDocumentDateRules(value: DocumentDateValues, ctx: z.RefinementCtx) {
|
|
46
|
+
const date = normalizeDateOnlyInput(value.date ?? undefined);
|
|
47
|
+
addCustomIssue(ctx, ["date"], messages.dateInFuture, !!date && compareDateOnly(date, getTodayDateOnly()) > 0);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function applyInvoiceLikeServiceDateRules(value: DocumentDateValues, ctx: z.RefinementCtx) {
|
|
51
|
+
const date = normalizeDateOnlyInput(value.date ?? undefined);
|
|
52
|
+
const dateService = normalizeDateOnlyInput(value.date_service ?? undefined);
|
|
53
|
+
const dateServiceTo = normalizeDateOnlyInput(value.date_service_to ?? undefined);
|
|
54
|
+
|
|
55
|
+
addCustomIssue(
|
|
56
|
+
ctx,
|
|
57
|
+
["date_service"],
|
|
58
|
+
messages.serviceDateAfterIssueDate,
|
|
59
|
+
!!date && !!dateService && compareDateOnly(dateService, date) > 0,
|
|
60
|
+
);
|
|
61
|
+
addCustomIssue(
|
|
62
|
+
ctx,
|
|
63
|
+
["date_service_to"],
|
|
64
|
+
messages.serviceDateToAfterIssueDate,
|
|
65
|
+
!!date && !!dateServiceTo && compareDateOnly(dateServiceTo, date) > 0,
|
|
66
|
+
);
|
|
67
|
+
addCustomIssue(
|
|
68
|
+
ctx,
|
|
69
|
+
["date_service_to"],
|
|
70
|
+
messages.serviceDateToBeforeServiceDate,
|
|
71
|
+
!!dateService && !!dateServiceTo && compareDateOnly(dateServiceTo, dateService) < 0,
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export function withInvoiceIssueDateValidation<T extends z.ZodTypeAny>(schema: T) {
|
|
76
|
+
return schema.superRefine((value, ctx) => {
|
|
77
|
+
const document = value as DocumentDateValues;
|
|
78
|
+
applyBaseDocumentDateRules(document, ctx);
|
|
79
|
+
applyInvoiceLikeServiceDateRules(document, ctx);
|
|
80
|
+
|
|
81
|
+
const date = normalizeDateOnlyInput(document.date ?? undefined);
|
|
82
|
+
const dateDue = normalizeDateOnlyInput(document.date_due ?? undefined);
|
|
83
|
+
|
|
84
|
+
addCustomIssue(ctx, ["date_due"], messages.dueDateBeforeIssueDate, !!date && !!dateDue && compareDateOnly(dateDue, date) < 0);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export function withCreditNoteIssueDateValidation<T extends z.ZodTypeAny>(schema: T) {
|
|
89
|
+
return schema.superRefine((value, ctx) => {
|
|
90
|
+
const document = value as DocumentDateValues;
|
|
91
|
+
applyBaseDocumentDateRules(document, ctx);
|
|
92
|
+
applyInvoiceLikeServiceDateRules(document, ctx);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export function withEstimateIssueDateValidation<T extends z.ZodTypeAny>(schema: T) {
|
|
97
|
+
return schema.superRefine((value, ctx) => {
|
|
98
|
+
const document = value as DocumentDateValues;
|
|
99
|
+
applyBaseDocumentDateRules(document, ctx);
|
|
100
|
+
|
|
101
|
+
const date = normalizeDateOnlyInput(document.date ?? undefined);
|
|
102
|
+
const validTill = normalizeDateOnlyInput(document.date_valid_till ?? undefined);
|
|
103
|
+
|
|
104
|
+
addCustomIssue(
|
|
105
|
+
ctx,
|
|
106
|
+
["date_valid_till"],
|
|
107
|
+
messages.validTillBeforeIssueDate,
|
|
108
|
+
!!date && !!validTill && compareDateOnly(validTill, date) < 0,
|
|
109
|
+
);
|
|
110
|
+
});
|
|
111
|
+
}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import type { Entity, Estimate, Invoice, TransactionTypeCheckResponse } from "@spaceinvoices/js-sdk";
|
|
6
6
|
import { CalendarIcon, ChevronDown, Globe, Info, Loader2 } from "lucide-react";
|
|
7
7
|
import { useRef, useState } from "react";
|
|
8
|
+
import { useWatch } from "react-hook-form";
|
|
8
9
|
import { Badge } from "@/ui/components/ui/badge";
|
|
9
10
|
import { Button } from "@/ui/components/ui/button";
|
|
10
11
|
import { Calendar } from "@/ui/components/ui/calendar";
|
|
@@ -15,10 +16,11 @@ import { Popover, PopoverContent, PopoverTrigger } from "@/ui/components/ui/popo
|
|
|
15
16
|
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/ui/components/ui/select";
|
|
16
17
|
import { Textarea } from "@/ui/components/ui/textarea";
|
|
17
18
|
import { Tooltip, TooltipContent, TooltipTrigger } from "@/ui/components/ui/tooltip";
|
|
19
|
+
import { normalizeDateOnlyInput, toLocalDateOnlyString } from "@/ui/lib/date-only";
|
|
18
20
|
import { CURRENCY_CODES } from "@/ui/lib/constants";
|
|
19
21
|
import { replaceTemplateVariablesForPreview } from "@/ui/lib/template-variables";
|
|
20
22
|
import { cn } from "@/ui/lib/utils";
|
|
21
|
-
import type
|
|
23
|
+
import { getDocumentConfig, type DocumentTypes } from "../types";
|
|
22
24
|
import type { AnyControl } from "./form-types";
|
|
23
25
|
import { SmartCodeInsertButton } from "./smart-code-insert-button";
|
|
24
26
|
|
|
@@ -73,7 +75,21 @@ type DueDaysProps = {
|
|
|
73
75
|
onDueDaysTypeChange: (type: number | "custom") => void;
|
|
74
76
|
};
|
|
75
77
|
|
|
78
|
+
type DateLockProps = {
|
|
79
|
+
isLocked: boolean;
|
|
80
|
+
reason: string;
|
|
81
|
+
};
|
|
82
|
+
|
|
76
83
|
const LABEL_WIDTH = "w-[6.5rem] shrink-0";
|
|
84
|
+
const MIN_DOCUMENT_DATE = new Date("1900-01-01");
|
|
85
|
+
|
|
86
|
+
function isAfterDateOnly(date: Date, maxDateOnly: string | undefined): boolean {
|
|
87
|
+
return !!maxDateOnly && toLocalDateOnlyString(date) > maxDateOnly;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function isBeforeDateOnly(date: Date, minDateOnly: string | undefined): boolean {
|
|
91
|
+
return !!minDateOnly && toLocalDateOnlyString(date) < minDateOnly;
|
|
92
|
+
}
|
|
77
93
|
|
|
78
94
|
function extractSequenceNumber(fullNumber: string, premise?: string, device?: string): string {
|
|
79
95
|
if (!fullNumber || (!premise && !device)) return fullNumber;
|
|
@@ -86,35 +102,44 @@ type DocumentDetailsSectionProps = {
|
|
|
86
102
|
control: AnyControl;
|
|
87
103
|
documentType: DocumentTypes;
|
|
88
104
|
t: (key: string) => string;
|
|
105
|
+
locale?: string;
|
|
89
106
|
children?: React.ReactNode; // For document-specific additions (e.g., mark as paid for invoices)
|
|
90
107
|
fursInline?: FursInlineProps; // FURS premise/device inline with number
|
|
91
108
|
finaInline?: FinaInlineProps; // FINA premise/device inline with number
|
|
92
109
|
serviceDate?: ServiceDateProps; // Service date section (invoice only)
|
|
93
110
|
dueDays?: DueDaysProps; // Due days selector (invoice only)
|
|
111
|
+
dateLock?: DateLockProps;
|
|
94
112
|
};
|
|
95
113
|
|
|
96
114
|
export function DocumentDetailsSection({
|
|
97
115
|
control,
|
|
98
116
|
documentType,
|
|
99
117
|
t,
|
|
118
|
+
locale = "en-US",
|
|
100
119
|
children,
|
|
101
120
|
fursInline,
|
|
102
121
|
finaInline,
|
|
103
122
|
serviceDate,
|
|
104
123
|
dueDays,
|
|
124
|
+
dateLock,
|
|
105
125
|
}: DocumentDetailsSectionProps) {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
const
|
|
109
|
-
const
|
|
110
|
-
const
|
|
126
|
+
const documentConfig = getDocumentConfig(documentType);
|
|
127
|
+
const hasSecondaryDate = documentConfig.dateFieldName !== null;
|
|
128
|
+
const dateFieldName = documentConfig.dateFieldName;
|
|
129
|
+
const dateFieldLabel = documentConfig.dateFieldLabel ? t(documentConfig.dateFieldLabel) : "";
|
|
130
|
+
const watchedIssueDate = useWatch({ control, name: "date" });
|
|
131
|
+
const watchedServiceStartDate = useWatch({ control, name: "date_service" });
|
|
132
|
+
const issueDateOnly = normalizeDateOnlyInput(typeof watchedIssueDate === "string" ? watchedIssueDate : undefined);
|
|
133
|
+
const serviceStartDateOnly = normalizeDateOnlyInput(
|
|
134
|
+
typeof watchedServiceStartDate === "string" ? watchedServiceStartDate : undefined,
|
|
135
|
+
);
|
|
111
136
|
|
|
112
137
|
// Check if FURS/FINA inline should show premise/device selects
|
|
113
138
|
const showFursSelects = fursInline && !fursInline.isSkipped;
|
|
114
139
|
const showFinaSelects = !!finaInline;
|
|
115
140
|
|
|
116
141
|
return (
|
|
117
|
-
<div className="flex-1 space-y-3">
|
|
142
|
+
<div className="mt-6 flex-1 space-y-3 md:mt-0">
|
|
118
143
|
<h2 className="font-bold text-xl">{t("Details")}</h2>
|
|
119
144
|
|
|
120
145
|
{/* Number field - inline with optional FURS/FINA premise/device + sequence number */}
|
|
@@ -257,18 +282,18 @@ export function DocumentDetailsSection({
|
|
|
257
282
|
<FormItem>
|
|
258
283
|
<div className="flex items-center gap-3">
|
|
259
284
|
<FormLabel className={LABEL_WIDTH}>{t("Date")} *</FormLabel>
|
|
260
|
-
{
|
|
285
|
+
{dateLock?.isLocked ? (
|
|
261
286
|
<Tooltip>
|
|
262
287
|
<TooltipTrigger asChild>
|
|
263
288
|
<FormControl>
|
|
264
289
|
<Button variant="outline" disabled className="flex-1 pl-3 text-left font-normal">
|
|
265
|
-
{new Date().toLocaleDateString()}
|
|
290
|
+
{new Date(field.value || new Date()).toLocaleDateString(locale)}
|
|
266
291
|
<CalendarIcon className="ml-auto h-4 w-4 opacity-50" />
|
|
267
292
|
</Button>
|
|
268
293
|
</FormControl>
|
|
269
294
|
</TooltipTrigger>
|
|
270
295
|
<TooltipContent>
|
|
271
|
-
<p>{
|
|
296
|
+
<p>{dateLock.reason}</p>
|
|
272
297
|
</TooltipContent>
|
|
273
298
|
</Tooltip>
|
|
274
299
|
) : (
|
|
@@ -276,23 +301,28 @@ export function DocumentDetailsSection({
|
|
|
276
301
|
<PopoverTrigger asChild>
|
|
277
302
|
<FormControl>
|
|
278
303
|
<Button
|
|
304
|
+
type="button"
|
|
279
305
|
variant="outline"
|
|
280
306
|
className={cn("flex-1 pl-3 text-left font-normal", !field.value && "text-muted-foreground")}
|
|
281
307
|
>
|
|
282
|
-
{field.value ?
|
|
308
|
+
{field.value ? (
|
|
309
|
+
new Date(field.value).toLocaleDateString(locale)
|
|
310
|
+
) : (
|
|
311
|
+
<span>{t("Pick a date")}</span>
|
|
312
|
+
)}
|
|
283
313
|
<CalendarIcon className="ml-auto h-4 w-4 opacity-50" />
|
|
284
314
|
</Button>
|
|
285
315
|
</FormControl>
|
|
286
316
|
</PopoverTrigger>
|
|
287
317
|
<PopoverContent className="w-auto p-0" align="start">
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
318
|
+
<Calendar
|
|
319
|
+
mode="single"
|
|
320
|
+
selected={field.value ? new Date(field.value) : undefined}
|
|
321
|
+
onSelect={(date) => field.onChange(date?.toISOString())}
|
|
322
|
+
disabled={(date) => date > new Date() || date < MIN_DOCUMENT_DATE}
|
|
323
|
+
initialFocus
|
|
324
|
+
/>
|
|
325
|
+
</PopoverContent>
|
|
296
326
|
</Popover>
|
|
297
327
|
)}
|
|
298
328
|
</div>
|
|
@@ -319,11 +349,11 @@ export function DocumentDetailsSection({
|
|
|
319
349
|
"h-auto border-none p-0 font-medium text-sm shadow-none [&>svg]:ml-1 [&>svg]:size-3.5",
|
|
320
350
|
)}
|
|
321
351
|
>
|
|
322
|
-
<SelectValue>{serviceDate.dateType === "single" ? t("
|
|
352
|
+
<SelectValue>{serviceDate.dateType === "single" ? t("Service Date") : t("Service Period")}</SelectValue>
|
|
323
353
|
</SelectTrigger>
|
|
324
354
|
<SelectContent>
|
|
325
|
-
<SelectItem value="single">{t("
|
|
326
|
-
<SelectItem value="range">{t("
|
|
355
|
+
<SelectItem value="single">{t("Service Date")}</SelectItem>
|
|
356
|
+
<SelectItem value="range">{t("Service Period")}</SelectItem>
|
|
327
357
|
</SelectContent>
|
|
328
358
|
</Select>
|
|
329
359
|
{serviceDate.dateType === "single" ? (
|
|
@@ -331,10 +361,15 @@ export function DocumentDetailsSection({
|
|
|
331
361
|
<PopoverTrigger asChild>
|
|
332
362
|
<FormControl>
|
|
333
363
|
<Button
|
|
364
|
+
type="button"
|
|
334
365
|
variant="outline"
|
|
335
366
|
className={cn("flex-1 pl-3 text-left font-normal", !field.value && "text-muted-foreground")}
|
|
336
367
|
>
|
|
337
|
-
{field.value ?
|
|
368
|
+
{field.value ? (
|
|
369
|
+
new Date(field.value).toLocaleDateString(locale)
|
|
370
|
+
) : (
|
|
371
|
+
<span>{t("Pick a date")}</span>
|
|
372
|
+
)}
|
|
338
373
|
<CalendarIcon className="ml-auto h-4 w-4 opacity-50" />
|
|
339
374
|
</Button>
|
|
340
375
|
</FormControl>
|
|
@@ -344,6 +379,9 @@ export function DocumentDetailsSection({
|
|
|
344
379
|
mode="single"
|
|
345
380
|
selected={field.value ? new Date(field.value) : undefined}
|
|
346
381
|
onSelect={(date) => field.onChange(date?.toISOString())}
|
|
382
|
+
disabled={(date) =>
|
|
383
|
+
date > new Date() || date < MIN_DOCUMENT_DATE || isAfterDateOnly(date, issueDateOnly)
|
|
384
|
+
}
|
|
347
385
|
initialFocus
|
|
348
386
|
/>
|
|
349
387
|
</PopoverContent>
|
|
@@ -354,10 +392,11 @@ export function DocumentDetailsSection({
|
|
|
354
392
|
<PopoverTrigger asChild>
|
|
355
393
|
<FormControl>
|
|
356
394
|
<Button
|
|
395
|
+
type="button"
|
|
357
396
|
variant="outline"
|
|
358
397
|
className={cn("w-full pl-3 text-left font-normal", !field.value && "text-muted-foreground")}
|
|
359
398
|
>
|
|
360
|
-
{field.value ? new Date(field.value).toLocaleDateString() : <span>{t("From")}</span>}
|
|
399
|
+
{field.value ? new Date(field.value).toLocaleDateString(locale) : <span>{t("From")}</span>}
|
|
361
400
|
<CalendarIcon className="ml-auto h-4 w-4 opacity-50" />
|
|
362
401
|
</Button>
|
|
363
402
|
</FormControl>
|
|
@@ -367,6 +406,9 @@ export function DocumentDetailsSection({
|
|
|
367
406
|
mode="single"
|
|
368
407
|
selected={field.value ? new Date(field.value) : undefined}
|
|
369
408
|
onSelect={(date) => field.onChange(date?.toISOString())}
|
|
409
|
+
disabled={(date) =>
|
|
410
|
+
date > new Date() || date < MIN_DOCUMENT_DATE || isAfterDateOnly(date, issueDateOnly)
|
|
411
|
+
}
|
|
370
412
|
initialFocus
|
|
371
413
|
/>
|
|
372
414
|
</PopoverContent>
|
|
@@ -376,28 +418,44 @@ export function DocumentDetailsSection({
|
|
|
376
418
|
control={control}
|
|
377
419
|
name="date_service_to"
|
|
378
420
|
render={({ field: toField }) => (
|
|
379
|
-
<
|
|
380
|
-
<
|
|
381
|
-
<
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
421
|
+
<FormItem>
|
|
422
|
+
<Popover>
|
|
423
|
+
<PopoverTrigger asChild>
|
|
424
|
+
<FormControl>
|
|
425
|
+
<Button
|
|
426
|
+
type="button"
|
|
427
|
+
variant="outline"
|
|
428
|
+
className={cn(
|
|
429
|
+
"w-full pl-3 text-left font-normal",
|
|
430
|
+
!toField.value && "text-muted-foreground",
|
|
431
|
+
)}
|
|
432
|
+
>
|
|
433
|
+
{toField.value ? (
|
|
434
|
+
new Date(toField.value).toLocaleDateString(locale)
|
|
435
|
+
) : (
|
|
436
|
+
<span>{t("To")}</span>
|
|
437
|
+
)}
|
|
438
|
+
<CalendarIcon className="ml-auto h-4 w-4 opacity-50" />
|
|
439
|
+
</Button>
|
|
440
|
+
</FormControl>
|
|
441
|
+
</PopoverTrigger>
|
|
442
|
+
<PopoverContent className="w-auto p-0" align="start">
|
|
443
|
+
<Calendar
|
|
444
|
+
mode="single"
|
|
445
|
+
selected={toField.value ? new Date(toField.value) : undefined}
|
|
446
|
+
onSelect={(date) => toField.onChange(date?.toISOString())}
|
|
447
|
+
disabled={(date) =>
|
|
448
|
+
date > new Date() ||
|
|
449
|
+
date < MIN_DOCUMENT_DATE ||
|
|
450
|
+
isAfterDateOnly(date, issueDateOnly) ||
|
|
451
|
+
isBeforeDateOnly(date, serviceStartDateOnly)
|
|
452
|
+
}
|
|
453
|
+
initialFocus
|
|
454
|
+
/>
|
|
455
|
+
</PopoverContent>
|
|
456
|
+
</Popover>
|
|
457
|
+
<FormMessage />
|
|
458
|
+
</FormItem>
|
|
401
459
|
)}
|
|
402
460
|
/>
|
|
403
461
|
</div>
|
|
@@ -412,7 +470,7 @@ export function DocumentDetailsSection({
|
|
|
412
470
|
{hasSecondaryDate && (
|
|
413
471
|
<FormField
|
|
414
472
|
control={control}
|
|
415
|
-
name={dateFieldName}
|
|
473
|
+
name={dateFieldName!}
|
|
416
474
|
render={({ field }) => (
|
|
417
475
|
<FormItem>
|
|
418
476
|
<div className="flex items-center gap-3">
|
|
@@ -445,10 +503,15 @@ export function DocumentDetailsSection({
|
|
|
445
503
|
<PopoverTrigger asChild>
|
|
446
504
|
<FormControl>
|
|
447
505
|
<Button
|
|
506
|
+
type="button"
|
|
448
507
|
variant="outline"
|
|
449
508
|
className={cn("flex-1 pl-3 text-left font-normal", !field.value && "text-muted-foreground")}
|
|
450
509
|
>
|
|
451
|
-
{field.value ?
|
|
510
|
+
{field.value ? (
|
|
511
|
+
new Date(field.value).toLocaleDateString(locale)
|
|
512
|
+
) : (
|
|
513
|
+
<span>{t("Pick a date")}</span>
|
|
514
|
+
)}
|
|
452
515
|
<CalendarIcon className="ml-auto h-4 w-4 opacity-50" />
|
|
453
516
|
</Button>
|
|
454
517
|
</FormControl>
|
|
@@ -463,7 +526,7 @@ export function DocumentDetailsSection({
|
|
|
463
526
|
dueDays.onDueDaysTypeChange("custom");
|
|
464
527
|
}
|
|
465
528
|
}}
|
|
466
|
-
disabled={(date) => date <
|
|
529
|
+
disabled={(date) => date < MIN_DOCUMENT_DATE || isBeforeDateOnly(date, issueDateOnly)}
|
|
467
530
|
initialFocus
|
|
468
531
|
/>
|
|
469
532
|
</PopoverContent>
|
|
@@ -549,7 +612,7 @@ export function DocumentNoteField({
|
|
|
549
612
|
render={({ field }) => {
|
|
550
613
|
const hasContent = field.value;
|
|
551
614
|
const showPreview = !isFocused && hasContent && entity;
|
|
552
|
-
const preview = showPreview ? replaceTemplateVariablesForPreview(field.value || "", entity, document) : null;
|
|
615
|
+
const preview = showPreview ? replaceTemplateVariablesForPreview(field.value || "", entity, document, t) : null;
|
|
553
616
|
|
|
554
617
|
return (
|
|
555
618
|
<FormItem>
|
|
@@ -644,7 +707,7 @@ export function DocumentTaxClauseField({
|
|
|
644
707
|
render={({ field }) => {
|
|
645
708
|
const hasContent = field.value;
|
|
646
709
|
const showPreview = !isFocused && hasContent && entity;
|
|
647
|
-
const preview = showPreview ? replaceTemplateVariablesForPreview(field.value || "", entity, document) : null;
|
|
710
|
+
const preview = showPreview ? replaceTemplateVariablesForPreview(field.value || "", entity, document, t) : null;
|
|
648
711
|
|
|
649
712
|
return (
|
|
650
713
|
<FormItem>
|
|
@@ -738,7 +801,7 @@ export function DocumentSignatureField({
|
|
|
738
801
|
render={({ field }) => {
|
|
739
802
|
const hasContent = field.value;
|
|
740
803
|
const showPreview = !isFocused && hasContent && entity;
|
|
741
|
-
const preview = showPreview ? replaceTemplateVariablesForPreview(field.value || "", entity, document) : null;
|
|
804
|
+
const preview = showPreview ? replaceTemplateVariablesForPreview(field.value || "", entity, document, t) : null;
|
|
742
805
|
|
|
743
806
|
return (
|
|
744
807
|
<FormItem>
|
|
@@ -806,7 +869,7 @@ export function DocumentPaymentTermsField({
|
|
|
806
869
|
render={({ field }) => {
|
|
807
870
|
const hasContent = field.value;
|
|
808
871
|
const showPreview = !isFocused && hasContent && entity;
|
|
809
|
-
const preview = showPreview ? replaceTemplateVariablesForPreview(field.value || "", entity, document) : null;
|
|
872
|
+
const preview = showPreview ? replaceTemplateVariablesForPreview(field.value || "", entity, document, t) : null;
|
|
810
873
|
|
|
811
874
|
return (
|
|
812
875
|
<FormItem>
|
|
@@ -874,7 +937,7 @@ export function DocumentFooterField({
|
|
|
874
937
|
render={({ field }) => {
|
|
875
938
|
const hasContent = field.value;
|
|
876
939
|
const showPreview = !isFocused && hasContent && entity;
|
|
877
|
-
const preview = showPreview ? replaceTemplateVariablesForPreview(field.value || "", entity, document) : null;
|
|
940
|
+
const preview = showPreview ? replaceTemplateVariablesForPreview(field.value || "", entity, document, t) : null;
|
|
878
941
|
|
|
879
942
|
return (
|
|
880
943
|
<FormItem>
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
type SourceDocumentTax = {
|
|
2
|
+
tax_id?: string | null;
|
|
3
|
+
rate?: number | null;
|
|
4
|
+
classification?: string | null;
|
|
5
|
+
reverse_charge?: boolean | null;
|
|
6
|
+
pt_exemption_code?: string | null;
|
|
7
|
+
pt_exemption_reason?: string | null;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
type SourceDocumentDiscount = {
|
|
11
|
+
value: number;
|
|
12
|
+
type?: string | null;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
type SourceDocumentItem = {
|
|
16
|
+
type?: string | null;
|
|
17
|
+
item_id?: string | null;
|
|
18
|
+
name?: string | null;
|
|
19
|
+
description?: string | null;
|
|
20
|
+
quantity?: number | null;
|
|
21
|
+
price?: number | null;
|
|
22
|
+
gross_price?: number | null;
|
|
23
|
+
unit?: string | null;
|
|
24
|
+
classification?: string | null;
|
|
25
|
+
taxes?: SourceDocumentTax[] | null;
|
|
26
|
+
discounts?: SourceDocumentDiscount[] | null;
|
|
27
|
+
metadata?: Record<string, unknown> | null;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export function toDocumentFormTaxes(taxes: SourceDocumentTax[] | null | undefined) {
|
|
31
|
+
return (taxes ?? []).map((tax) => ({
|
|
32
|
+
tax_id: tax?.tax_id ?? undefined,
|
|
33
|
+
rate: tax?.rate ?? undefined,
|
|
34
|
+
classification: tax?.classification ?? undefined,
|
|
35
|
+
reverse_charge: tax?.reverse_charge ?? undefined,
|
|
36
|
+
pt_exemption_code: tax?.pt_exemption_code ?? undefined,
|
|
37
|
+
pt_exemption_reason: tax?.pt_exemption_reason ?? undefined,
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function toDocumentFormDiscounts(discounts: SourceDocumentDiscount[] | null | undefined) {
|
|
42
|
+
return (discounts ?? []).map((discount) => ({
|
|
43
|
+
value: discount.value,
|
|
44
|
+
type: discount.type ?? undefined,
|
|
45
|
+
}));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export function toDocumentFormItem(item: SourceDocumentItem) {
|
|
49
|
+
return {
|
|
50
|
+
type: item.type ?? undefined,
|
|
51
|
+
name: item.name ?? "",
|
|
52
|
+
description: item.description ?? undefined,
|
|
53
|
+
...(item.type !== "separator"
|
|
54
|
+
? {
|
|
55
|
+
item_id: item.item_id ?? undefined,
|
|
56
|
+
quantity: item.quantity ?? 1,
|
|
57
|
+
price: item.gross_price ?? item.price ?? undefined,
|
|
58
|
+
gross_price: item.gross_price ?? undefined,
|
|
59
|
+
unit: item.unit ?? undefined,
|
|
60
|
+
classification: item.classification ?? undefined,
|
|
61
|
+
taxes: toDocumentFormTaxes(item.taxes),
|
|
62
|
+
discounts: toDocumentFormDiscounts(item.discounts),
|
|
63
|
+
metadata: item.metadata ?? undefined,
|
|
64
|
+
}
|
|
65
|
+
: {}),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
const ITEM_NAME_REQUIRED_MESSAGE = "Item name is required";
|
|
4
|
+
const ITEM_QUANTITY_REQUIRED_MESSAGE = "Quantity is required";
|
|
5
|
+
const ITEM_PRICE_REQUIRED_MESSAGE = "Price is required";
|
|
6
|
+
|
|
7
|
+
export function withRequiredDocumentItemFields<T extends z.ZodTypeAny>(schema: T) {
|
|
8
|
+
return schema.superRefine((value, ctx) => {
|
|
9
|
+
const items = (value as { items?: Array<Record<string, unknown>> } | undefined)?.items;
|
|
10
|
+
if (!Array.isArray(items)) return;
|
|
11
|
+
|
|
12
|
+
items.forEach((item, index) => {
|
|
13
|
+
if (item?.type === "separator") return;
|
|
14
|
+
|
|
15
|
+
const name = typeof item?.name === "string" ? item.name.trim() : "";
|
|
16
|
+
const itemId = typeof item?.item_id === "string" ? item.item_id.trim() : "";
|
|
17
|
+
const quantity = item?.quantity;
|
|
18
|
+
const price = item?.price;
|
|
19
|
+
const grossPrice = item?.gross_price;
|
|
20
|
+
const hasPrice = !(price == null || Number.isNaN(price as number));
|
|
21
|
+
const hasGrossPrice = !(grossPrice == null || Number.isNaN(grossPrice as number));
|
|
22
|
+
|
|
23
|
+
if (!name && !itemId) {
|
|
24
|
+
ctx.addIssue({
|
|
25
|
+
code: z.ZodIssueCode.custom,
|
|
26
|
+
path: ["items", index, "name"],
|
|
27
|
+
message: ITEM_NAME_REQUIRED_MESSAGE,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (quantity == null || Number.isNaN(quantity)) {
|
|
32
|
+
ctx.addIssue({
|
|
33
|
+
code: z.ZodIssueCode.custom,
|
|
34
|
+
path: ["items", index, "quantity"],
|
|
35
|
+
message: ITEM_QUANTITY_REQUIRED_MESSAGE,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (!hasPrice && !hasGrossPrice) {
|
|
40
|
+
ctx.addIssue({
|
|
41
|
+
code: z.ZodIssueCode.custom,
|
|
42
|
+
path: ["items", index, "price"],
|
|
43
|
+
message: ITEM_PRICE_REQUIRED_MESSAGE,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export const documentItemValidationMessages = {
|
|
51
|
+
name: ITEM_NAME_REQUIRED_MESSAGE,
|
|
52
|
+
quantity: ITEM_QUANTITY_REQUIRED_MESSAGE,
|
|
53
|
+
price: ITEM_PRICE_REQUIRED_MESSAGE,
|
|
54
|
+
} as const;
|