@spaceinvoices/react-ui 0.4.12 → 0.4.32
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 +1 -1
- package/src/common/autocomplete.tsx +7 -1
- package/src/components/advance-invoices/advance-invoices.hooks.ts +35 -44
- package/src/components/advance-invoices/create/create-advance-invoice-form.tsx +190 -73
- package/src/components/advance-invoices/create/locales/bg.ts +17 -9
- package/src/components/advance-invoices/create/locales/cs.ts +17 -9
- package/src/components/advance-invoices/create/locales/de.ts +15 -7
- package/src/components/advance-invoices/create/locales/en.ts +15 -7
- package/src/components/advance-invoices/create/locales/es.ts +15 -7
- package/src/components/advance-invoices/create/locales/et.ts +17 -9
- package/src/components/advance-invoices/create/locales/fi.ts +18 -10
- package/src/components/advance-invoices/create/locales/fr.ts +16 -8
- package/src/components/advance-invoices/create/locales/hr.ts +15 -7
- package/src/components/advance-invoices/create/locales/is.ts +17 -9
- package/src/components/advance-invoices/create/locales/it.ts +15 -7
- package/src/components/advance-invoices/create/locales/nb.ts +17 -9
- 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 +17 -9
- package/src/components/advance-invoices/create/locales/sl.ts +14 -5
- package/src/components/advance-invoices/create/locales/sv.ts +17 -9
- package/src/components/advance-invoices/create/prepare-advance-invoice-submission.ts +47 -1
- package/src/components/advance-invoices/list/list-table.tsx +2 -1
- package/src/components/credit-notes/create/create-credit-note-form.tsx +254 -85
- package/src/components/credit-notes/create/locales/bg.ts +22 -8
- package/src/components/credit-notes/create/locales/cs.ts +22 -8
- package/src/components/credit-notes/create/locales/de.ts +20 -7
- package/src/components/credit-notes/create/locales/en.ts +19 -5
- package/src/components/credit-notes/create/locales/es.ts +20 -7
- package/src/components/credit-notes/create/locales/et.ts +22 -8
- package/src/components/credit-notes/create/locales/fi.ts +23 -9
- package/src/components/credit-notes/create/locales/fr.ts +21 -8
- package/src/components/credit-notes/create/locales/hr.ts +20 -7
- package/src/components/credit-notes/create/locales/is.ts +22 -8
- package/src/components/credit-notes/create/locales/it.ts +20 -7
- package/src/components/credit-notes/create/locales/nb.ts +22 -8
- 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 +22 -8
- package/src/components/credit-notes/create/locales/sl.ts +19 -5
- package/src/components/credit-notes/create/locales/sv.ts +22 -8
- package/src/components/credit-notes/create/prepare-credit-note-submission.ts +35 -1
- package/src/components/credit-notes/credit-notes.hooks.ts +21 -2
- package/src/components/credit-notes/list/list-table.tsx +2 -1
- package/src/components/delivery-notes/create/create-delivery-note-form.tsx +133 -30
- package/src/components/delivery-notes/create/locales/bg.ts +1 -0
- package/src/components/delivery-notes/create/locales/cs.ts +1 -0
- package/src/components/delivery-notes/create/locales/de.ts +1 -0
- package/src/components/delivery-notes/create/locales/en.ts +1 -0
- package/src/components/delivery-notes/create/locales/es.ts +1 -0
- package/src/components/delivery-notes/create/locales/et.ts +1 -0
- package/src/components/delivery-notes/create/locales/fi.ts +1 -0
- package/src/components/delivery-notes/create/locales/fr.ts +1 -0
- package/src/components/delivery-notes/create/locales/hr.ts +1 -0
- package/src/components/delivery-notes/create/locales/is.ts +1 -0
- package/src/components/delivery-notes/create/locales/it.ts +1 -0
- package/src/components/delivery-notes/create/locales/nb.ts +1 -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 +1 -0
- package/src/components/delivery-notes/create/locales/sl.ts +1 -0
- package/src/components/delivery-notes/create/locales/sv.ts +1 -0
- package/src/components/delivery-notes/create/prepare-delivery-note-submission.ts +34 -1
- package/src/components/delivery-notes/delivery-notes.hooks.ts +15 -1
- package/src/components/delivery-notes/list/list-table.tsx +2 -1
- package/src/components/documents/create/custom-create-template.ts +151 -0
- package/src/components/documents/create/document-add-item-form.tsx +12 -8
- package/src/components/documents/create/document-add-item-tax-rate-field.tsx +1 -2
- package/src/components/documents/create/document-date-validation.ts +111 -0
- package/src/components/documents/create/document-details-section.tsx +93 -48
- package/src/components/documents/create/document-form-item.ts +67 -0
- package/src/components/documents/create/document-item-validation.ts +6 -2
- package/src/components/documents/create/form-types.ts +2 -2
- package/src/components/documents/create/linked-documents-info.tsx +2 -11
- package/src/components/documents/create/live-preview.tsx +3 -3
- package/src/components/documents/create/mark-as-paid-section.tsx +14 -11
- package/src/components/documents/create/payment-rows.ts +30 -0
- package/src/components/documents/create/prepare-document-submission.ts +143 -103
- 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/public/public-document-summary.tsx +6 -13
- package/src/components/documents/view/document-actions-bar.tsx +10 -1
- package/src/components/documents/view/document-details-card.tsx +4 -12
- package/src/components/documents/view/document-relations-list.tsx +4 -4
- package/src/components/documents/view/locales/bg.ts +8 -8
- package/src/components/documents/view/locales/cs.ts +8 -8
- package/src/components/documents/view/locales/de.ts +1 -1
- package/src/components/documents/view/locales/en.ts +14 -14
- package/src/components/documents/view/locales/es.ts +1 -1
- package/src/components/documents/view/locales/et.ts +8 -8
- package/src/components/documents/view/locales/fi.ts +10 -10
- package/src/components/documents/view/locales/fr.ts +1 -1
- package/src/components/documents/view/locales/hr.ts +6 -6
- package/src/components/documents/view/locales/is.ts +8 -8
- package/src/components/documents/view/locales/it.ts +1 -1
- package/src/components/documents/view/locales/nb.ts +8 -8
- package/src/components/documents/view/locales/nl.ts +1 -1
- package/src/components/documents/view/locales/pl.ts +1 -1
- package/src/components/documents/view/locales/pt.ts +1 -1
- package/src/components/documents/view/locales/sk.ts +8 -8
- package/src/components/documents/view/locales/sl.ts +9 -9
- package/src/components/documents/view/locales/sv.ts +1 -1
- package/src/components/documents/view/use-document-download.ts +2 -2
- package/src/components/entities/entity-settings-form/locales/bg.ts +7 -0
- package/src/components/entities/entity-settings-form/locales/cs.ts +7 -0
- package/src/components/entities/entity-settings-form/locales/de.ts +9 -0
- package/src/components/entities/entity-settings-form/locales/en.ts +7 -0
- package/src/components/entities/entity-settings-form/locales/es.ts +7 -0
- package/src/components/entities/entity-settings-form/locales/et.ts +7 -0
- package/src/components/entities/entity-settings-form/locales/fi.ts +7 -0
- package/src/components/entities/entity-settings-form/locales/fr.ts +7 -0
- package/src/components/entities/entity-settings-form/locales/hr.ts +7 -0
- package/src/components/entities/entity-settings-form/locales/is.ts +7 -0
- package/src/components/entities/entity-settings-form/locales/it.ts +7 -0
- package/src/components/entities/entity-settings-form/locales/nb.ts +7 -0
- package/src/components/entities/entity-settings-form/locales/nl.ts +7 -0
- package/src/components/entities/entity-settings-form/locales/pl.ts +7 -0
- package/src/components/entities/entity-settings-form/locales/pt.ts +7 -0
- package/src/components/entities/entity-settings-form/locales/sk.ts +7 -0
- package/src/components/entities/entity-settings-form/locales/sl.ts +12 -4
- package/src/components/entities/entity-settings-form/locales/sv.ts +7 -0
- package/src/components/entities/settings/tax-rules-settings-form.tsx +36 -0
- package/src/components/estimates/create/create-estimate-form.tsx +196 -47
- package/src/components/estimates/create/locales/bg.ts +6 -5
- package/src/components/estimates/create/locales/cs.ts +6 -5
- package/src/components/estimates/create/locales/de.ts +4 -3
- package/src/components/estimates/create/locales/en.ts +4 -3
- package/src/components/estimates/create/locales/es.ts +4 -3
- package/src/components/estimates/create/locales/et.ts +6 -5
- package/src/components/estimates/create/locales/fi.ts +9 -8
- package/src/components/estimates/create/locales/fr.ts +4 -3
- package/src/components/estimates/create/locales/hr.ts +7 -6
- package/src/components/estimates/create/locales/is.ts +6 -5
- package/src/components/estimates/create/locales/it.ts +4 -3
- package/src/components/estimates/create/locales/nb.ts +6 -5
- 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 +6 -5
- package/src/components/estimates/create/locales/sl.ts +7 -6
- package/src/components/estimates/create/locales/sv.ts +6 -5
- package/src/components/estimates/create/prepare-estimate-submission.ts +37 -3
- package/src/components/estimates/estimates.hooks.ts +11 -2
- package/src/components/estimates/list/list-table.tsx +11 -1
- package/src/components/estimates/list/locales/bg.ts +2 -0
- package/src/components/estimates/list/locales/cs.ts +2 -0
- package/src/components/estimates/list/locales/de.ts +2 -0
- package/src/components/estimates/list/locales/en.ts +2 -0
- package/src/components/estimates/list/locales/es.ts +2 -0
- package/src/components/estimates/list/locales/et.ts +2 -0
- package/src/components/estimates/list/locales/fi.ts +2 -0
- package/src/components/estimates/list/locales/fr.ts +2 -0
- package/src/components/estimates/list/locales/hr.ts +7 -5
- package/src/components/estimates/list/locales/is.ts +2 -0
- package/src/components/estimates/list/locales/it.ts +2 -0
- package/src/components/estimates/list/locales/nb.ts +2 -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 +2 -0
- package/src/components/estimates/list/locales/sl.ts +9 -7
- package/src/components/estimates/list/locales/sv.ts +2 -0
- package/src/components/invoices/create/create-invoice-form.tsx +231 -60
- package/src/components/invoices/create/locales/bg.ts +23 -14
- package/src/components/invoices/create/locales/cs.ts +23 -14
- package/src/components/invoices/create/locales/de.ts +17 -9
- package/src/components/invoices/create/locales/en.ts +16 -7
- package/src/components/invoices/create/locales/es.ts +18 -9
- package/src/components/invoices/create/locales/et.ts +23 -14
- package/src/components/invoices/create/locales/fi.ts +24 -15
- package/src/components/invoices/create/locales/fr.ts +19 -11
- package/src/components/invoices/create/locales/hr.ts +18 -9
- package/src/components/invoices/create/locales/is.ts +23 -14
- package/src/components/invoices/create/locales/it.ts +19 -11
- package/src/components/invoices/create/locales/nb.ts +23 -14
- package/src/components/invoices/create/locales/nl.ts +19 -10
- package/src/components/invoices/create/locales/pl.ts +19 -11
- package/src/components/invoices/create/locales/pt.ts +19 -10
- package/src/components/invoices/create/locales/sk.ts +23 -14
- package/src/components/invoices/create/locales/sl.ts +17 -9
- package/src/components/invoices/create/locales/sv.ts +17 -8
- package/src/components/invoices/create/prepare-invoice-submission.ts +55 -1
- package/src/components/invoices/invoices.hooks.ts +11 -2
- package/src/components/invoices/list/list-table.tsx +2 -1
- package/src/components/invoices/send-email-dialog/locales/bg.ts +5 -0
- package/src/components/invoices/send-email-dialog/locales/cs.ts +5 -0
- package/src/components/invoices/send-email-dialog/locales/de.ts +5 -0
- package/src/components/invoices/send-email-dialog/locales/en.ts +5 -0
- package/src/components/invoices/send-email-dialog/locales/es.ts +5 -0
- package/src/components/invoices/send-email-dialog/locales/et.ts +5 -0
- package/src/components/invoices/send-email-dialog/locales/fi.ts +5 -0
- package/src/components/invoices/send-email-dialog/locales/fr.ts +5 -0
- package/src/components/invoices/send-email-dialog/locales/hr.ts +8 -3
- package/src/components/invoices/send-email-dialog/locales/is.ts +5 -0
- package/src/components/invoices/send-email-dialog/locales/it.ts +5 -0
- package/src/components/invoices/send-email-dialog/locales/nb.ts +5 -0
- package/src/components/invoices/send-email-dialog/locales/nl.ts +5 -0
- package/src/components/invoices/send-email-dialog/locales/pl.ts +5 -0
- package/src/components/invoices/send-email-dialog/locales/pt.ts +5 -0
- package/src/components/invoices/send-email-dialog/locales/sk.ts +5 -0
- package/src/components/invoices/send-email-dialog/locales/sl.ts +8 -3
- package/src/components/invoices/send-email-dialog/locales/sv.ts +5 -0
- package/src/components/invoices/send-email-dialog/send-email-dialog.tsx +2 -1
- package/src/components/items/item-combobox.tsx +4 -4
- package/src/components/payments/create-payment-form/create-payment-form.tsx +5 -2
- package/src/components/payments/edit-payment-form/edit-payment-form.tsx +5 -1
- package/src/components/recurring-invoices/create-recurring-invoice-form/create-recurring-invoice-form.tsx +98 -22
- package/src/components/recurring-invoices/create-recurring-invoice-form/locales/bg.ts +26 -26
- package/src/components/recurring-invoices/create-recurring-invoice-form/locales/cs.ts +25 -25
- package/src/components/recurring-invoices/create-recurring-invoice-form/locales/et.ts +26 -26
- package/src/components/recurring-invoices/create-recurring-invoice-form/locales/fi.ts +36 -36
- package/src/components/recurring-invoices/create-recurring-invoice-form/locales/is.ts +26 -26
- package/src/components/recurring-invoices/create-recurring-invoice-form/locales/nb.ts +26 -26
- package/src/components/recurring-invoices/create-recurring-invoice-form/locales/sk.ts +25 -25
- package/src/components/recurring-invoices/create-recurring-invoice-form/locales/sv.ts +26 -26
- package/src/components/recurring-invoices/list/list-row-actions.tsx +9 -1
- package/src/components/recurring-invoices/list/list-table.tsx +53 -5
- package/src/components/recurring-invoices/list/locales/bg.ts +4 -0
- package/src/components/recurring-invoices/list/locales/cs.ts +4 -0
- package/src/components/recurring-invoices/list/locales/de.ts +4 -0
- package/src/components/recurring-invoices/list/locales/en.ts +4 -0
- package/src/components/recurring-invoices/list/locales/es.ts +4 -0
- package/src/components/recurring-invoices/list/locales/et.ts +4 -0
- package/src/components/recurring-invoices/list/locales/fi.ts +4 -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 +4 -0
- package/src/components/recurring-invoices/list/locales/it.ts +4 -0
- package/src/components/recurring-invoices/list/locales/nb.ts +4 -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 +4 -0
- package/src/components/recurring-invoices/list/locales/sl.ts +4 -0
- package/src/components/recurring-invoices/list/locales/sv.ts +4 -0
- package/src/components/tax-reports/slovenia-tax-profile-step.tsx +4 -1
- package/src/components/tax-reports/slovenia-yearly-export-form.tsx +3 -0
- package/src/components/tax-reports/slovenia-yearly-review-step.tsx +2 -1
- package/src/components/ui/form.tsx +5 -13
- package/src/components/ui/select.tsx +0 -1
- package/src/components/ui/sidebar.tsx +2 -2
- package/src/generate-schemas.ts +132 -99
- package/src/generated/schemas/acceptentityinvitation_body.ts +4 -3
- package/src/generated/schemas/accountwebhook.ts +4 -8
- 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 +44 -40
- 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 +4 -3
- 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 +1 -3
- package/src/generated/schemas/image.ts +15 -0
- package/src/generated/schemas/incomingpurchasedocument.ts +7 -27
- package/src/generated/schemas/incomingpurchasedocumentattachment.ts +15 -0
- package/src/generated/schemas/incomingpurchasedocumentpayment.ts +1 -3
- package/src/generated/schemas/index.ts +20 -5
- package/src/generated/schemas/invoice.ts +182 -183
- package/src/generated/schemas/item.ts +6 -10
- package/src/generated/schemas/legacymigrationauth.ts +18 -0
- package/src/generated/schemas/me.ts +2 -24
- package/src/generated/schemas/migrationjob.ts +20 -0
- package/src/generated/schemas/order.ts +4 -8
- package/src/generated/schemas/orderintegration.ts +4 -8
- package/src/generated/schemas/payment.ts +4 -8
- package/src/generated/schemas/ptatcudseries.ts +1 -3
- 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 +10 -16
- package/src/generated/schemas/rendercreditnotepreview_body.ts +10 -16
- package/src/generated/schemas/renderdeliverynotepreview_body.ts +9 -5
- package/src/generated/schemas/renderestimatepreview_body.ts +11 -7
- package/src/generated/schemas/renderinvoicepreview_body.ts +10 -16
- package/src/generated/schemas/reviewsloveniayearlynormiranireport.ts +15 -0
- package/src/generated/schemas/searcheinvoicingcustomer.ts +18 -0
- package/src/generated/schemas/senddocument_body.ts +1 -3
- package/src/generated/schemas/sendemail_body.ts +2 -24
- package/src/generated/schemas/sloveniataxprofile.ts +8 -10
- package/src/generated/schemas/starteslogexport_body.ts +4 -3
- package/src/generated/schemas/startpdfexport_body.ts +8 -87
- 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 +4 -8
- package/src/generated/schemas/syncshopifyorders_body.ts +4 -3
- package/src/generated/schemas/tax.ts +6 -8
- package/src/generated/schemas/uploadfile_body.ts +1 -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 +1 -3
- package/src/generated/schemas/voidinvoice_body.ts +8 -3
- package/src/generated/schemas/webhook.ts +4 -8
- package/src/generated/schemas/wlsubscriptionbillingemail.ts +17 -0
- package/src/hooks/use-duplicate-document.ts +74 -32
- package/src/lib/date-only.ts +58 -0
- package/src/lib/document-display.ts +18 -0
- package/src/lib/payment-display.ts +5 -3
- package/src/lib/schemas/shared.ts +11 -0
- package/src/providers/wl-subscription-provider.tsx +5 -0
- package/src/generated/schemas/account_webhook.ts +0 -43
- 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
|
@@ -10,6 +10,7 @@ export default {
|
|
|
10
10
|
Items: "Itens",
|
|
11
11
|
"Add item": "Adicionar item",
|
|
12
12
|
Save: "Guardar",
|
|
13
|
+
Update: "Atualizar",
|
|
13
14
|
"Save as Draft": "Guardar como rascunho",
|
|
14
15
|
Quantity: "Quantidade",
|
|
15
16
|
Price: "Preco",
|
|
@@ -24,16 +25,15 @@ export default {
|
|
|
24
25
|
"Add new tax...": "Adicionar novo imposto...",
|
|
25
26
|
Description: "Descricao",
|
|
26
27
|
"Mark as Paid": "Marcar como pago",
|
|
27
|
-
Paid: "Pago",
|
|
28
|
-
"Credit note will be marked as fully paid upon creation":
|
|
29
|
-
"A nota de credito sera marcada como totalmente paga ao ser criada",
|
|
28
|
+
"Paid": "Pago",
|
|
29
|
+
"Credit note will be marked as fully paid upon creation": "A nota de crédito será marcada como totalmente paga na criação",
|
|
30
30
|
"Payment Type": "Tipo de pagamento",
|
|
31
31
|
"Select payment type": "Selecione o tipo de pagamento",
|
|
32
|
-
Cash: "Dinheiro",
|
|
33
|
-
"Bank Transfer": "
|
|
34
|
-
Card: "
|
|
35
|
-
Check: "Cheque",
|
|
36
|
-
Other: "Outro",
|
|
32
|
+
"Cash": "Dinheiro",
|
|
33
|
+
"Bank Transfer": "Transferência bancária",
|
|
34
|
+
"Card": "Cartão",
|
|
35
|
+
"Check": "Cheque",
|
|
36
|
+
"Other": "Outro",
|
|
37
37
|
// Note field
|
|
38
38
|
Note: "Nota",
|
|
39
39
|
"Insert variable": "Inserir variavel",
|
|
@@ -95,4 +95,17 @@ export default {
|
|
|
95
95
|
Footer: "Rodapé",
|
|
96
96
|
"Add document footer...": "Adicionar rodapé do documento...",
|
|
97
97
|
"Reverse charge - tax exempt EU B2B sale": "Autoliquidação - venda B2B UE isenta de imposto",
|
|
98
|
+
"Please select": "Selecione",
|
|
99
|
+
"Amount": "Montante",
|
|
100
|
+
"Add payment": "Adicionar pagamento",
|
|
101
|
+
"Recorded now": "Registado agora",
|
|
102
|
+
"Remaining due": "Valor em dívida",
|
|
103
|
+
"Remaining to allocate": "Valor por alocar",
|
|
104
|
+
"This document must be fully paid on creation": "Este documento tem de estar totalmente pago na criação",
|
|
105
|
+
"Record one or more payments on creation": "Registar um ou mais pagamentos na criação",
|
|
106
|
+
// Service date
|
|
107
|
+
"Service Date": "Data do serviço",
|
|
108
|
+
"Service Period": "Período de serviço",
|
|
109
|
+
From: "De",
|
|
110
|
+
To: "Até",
|
|
98
111
|
} as const;
|
|
@@ -10,6 +10,7 @@ export default {
|
|
|
10
10
|
Items: "Položky",
|
|
11
11
|
"Add item": "Add item",
|
|
12
12
|
Save: "Uložiť",
|
|
13
|
+
Update: "Aktualizovať",
|
|
13
14
|
"Save as Draft": "Save as Draft",
|
|
14
15
|
Quantity: "Quantity",
|
|
15
16
|
Price: "Cena",
|
|
@@ -23,16 +24,16 @@ export default {
|
|
|
23
24
|
"No taxes found": "No taxes found",
|
|
24
25
|
"Add new tax...": "Add new tax...",
|
|
25
26
|
Description: "Popis",
|
|
26
|
-
"Mark as Paid": "
|
|
27
|
-
Paid: "
|
|
28
|
-
"Credit note will be marked as fully paid upon creation": "
|
|
29
|
-
"Payment Type": "
|
|
27
|
+
"Mark as Paid": "Označiť ako uhradené",
|
|
28
|
+
"Paid": "Uhradené",
|
|
29
|
+
"Credit note will be marked as fully paid upon creation": "Dobropis bude pri vytvorení označený ako plne uhradený",
|
|
30
|
+
"Payment Type": "Typ platby",
|
|
30
31
|
"Select payment type": "Vyberte typ platby",
|
|
31
|
-
Cash: "Hotovosť",
|
|
32
|
+
"Cash": "Hotovosť",
|
|
32
33
|
"Bank Transfer": "Bankový prevod",
|
|
33
|
-
Card: "Karta",
|
|
34
|
-
Check: "Šek",
|
|
35
|
-
Other: "Iné",
|
|
34
|
+
"Card": "Karta",
|
|
35
|
+
"Check": "Šek",
|
|
36
|
+
"Other": "Iné",
|
|
36
37
|
Note: "Note",
|
|
37
38
|
"Insert variable": "Insert variable",
|
|
38
39
|
"Add payment instructions, terms, or other notes...": "Add payment instructions, terms, or other notes...",
|
|
@@ -84,4 +85,17 @@ export default {
|
|
|
84
85
|
Footer: "Footer",
|
|
85
86
|
"Add document footer...": "Add document footer...",
|
|
86
87
|
"Reverse charge - tax exempt EU B2B sale": "Reverse charge - tax exempt EU B2B sale",
|
|
88
|
+
"Please select": "Vyberte",
|
|
89
|
+
"Amount": "Suma",
|
|
90
|
+
"Add payment": "Pridať platbu",
|
|
91
|
+
"Recorded now": "Aktuálne zaevidované",
|
|
92
|
+
"Remaining due": "Zostáva uhradiť",
|
|
93
|
+
"Remaining to allocate": "Zostáva priradiť",
|
|
94
|
+
"This document must be fully paid on creation": "Tento dokument musí byť pri vytvorení plne uhradený",
|
|
95
|
+
"Record one or more payments on creation": "Pri vytvorení zaevidujte jednu alebo viac platieb",
|
|
96
|
+
// Service date
|
|
97
|
+
"Service Date": "Dátum služby",
|
|
98
|
+
"Service Period": "Obdobie služby",
|
|
99
|
+
From: "Od",
|
|
100
|
+
To: "Do",
|
|
87
101
|
} as const;
|
|
@@ -10,6 +10,7 @@ export default {
|
|
|
10
10
|
Items: "Postavke",
|
|
11
11
|
"Add item": "Dodaj postavko",
|
|
12
12
|
Save: "Shrani",
|
|
13
|
+
Update: "Posodobi",
|
|
13
14
|
"Save as Draft": "Shrani kot osnutek",
|
|
14
15
|
Quantity: "Količina",
|
|
15
16
|
Price: "Cena",
|
|
@@ -24,15 +25,15 @@ export default {
|
|
|
24
25
|
"Add new tax...": "Dodaj nov davek...",
|
|
25
26
|
Description: "Opis",
|
|
26
27
|
"Mark as Paid": "Označi kot plačano",
|
|
27
|
-
Paid: "Plačano",
|
|
28
|
+
"Paid": "Plačano",
|
|
28
29
|
"Credit note will be marked as fully paid upon creation": "Dobropis bo označen kot plačan ob ustvarjanju",
|
|
29
30
|
"Payment Type": "Vrsta plačila",
|
|
30
31
|
"Select payment type": "Izberi vrsto plačila",
|
|
31
|
-
Cash: "Gotovina",
|
|
32
|
+
"Cash": "Gotovina",
|
|
32
33
|
"Bank Transfer": "Bančno nakazilo",
|
|
33
|
-
Card: "Kartica",
|
|
34
|
-
Check: "Ček",
|
|
35
|
-
Other: "Drugo",
|
|
34
|
+
"Card": "Kartica",
|
|
35
|
+
"Check": "Ček",
|
|
36
|
+
"Other": "Drugo",
|
|
36
37
|
// Note field
|
|
37
38
|
Note: "Pripis",
|
|
38
39
|
"Insert variable": "Vstavi spremenljivko",
|
|
@@ -94,4 +95,17 @@ export default {
|
|
|
94
95
|
Footer: "Noga dokumenta",
|
|
95
96
|
"Add document footer...": "Dodaj nogo dokumenta...",
|
|
96
97
|
"Reverse charge - tax exempt EU B2B sale": "Obrnjena davčna obveznost - davka oproščena EU B2B prodaja",
|
|
98
|
+
"Please select": "Izberi",
|
|
99
|
+
"Amount": "Znesek",
|
|
100
|
+
"Add payment": "Dodaj plačilo",
|
|
101
|
+
"Recorded now": "Trenutno zabeleženo",
|
|
102
|
+
"Remaining due": "Preostanek za plačilo",
|
|
103
|
+
"Remaining to allocate": "Preostanek za razporeditev",
|
|
104
|
+
"This document must be fully paid on creation": "Ta dokument mora biti ob ustvarjanju v celoti plačan",
|
|
105
|
+
"Record one or more payments on creation": "Ob ustvarjanju zabeleži eno ali več plačil",
|
|
106
|
+
// Service date
|
|
107
|
+
"Service Date": "Datum storitve",
|
|
108
|
+
"Service Period": "Obdobje storitve",
|
|
109
|
+
From: "Od",
|
|
110
|
+
To: "Do",
|
|
97
111
|
} as const;
|
|
@@ -10,6 +10,7 @@ export default {
|
|
|
10
10
|
Items: "Artiklar",
|
|
11
11
|
"Add item": "Add item",
|
|
12
12
|
Save: "Spara",
|
|
13
|
+
Update: "Uppdatera",
|
|
13
14
|
"Save as Draft": "Save as Draft",
|
|
14
15
|
Quantity: "Quantity",
|
|
15
16
|
Price: "Pris",
|
|
@@ -23,16 +24,16 @@ export default {
|
|
|
23
24
|
"No taxes found": "No taxes found",
|
|
24
25
|
"Add new tax...": "Add new tax...",
|
|
25
26
|
Description: "Beskrivning",
|
|
26
|
-
"Mark as Paid": "
|
|
27
|
-
Paid: "Betald",
|
|
28
|
-
"Credit note will be marked as fully paid upon creation": "
|
|
29
|
-
"Payment Type": "
|
|
27
|
+
"Mark as Paid": "Markera som betald",
|
|
28
|
+
"Paid": "Betald",
|
|
29
|
+
"Credit note will be marked as fully paid upon creation": "Kreditnotan markeras som fullt betald vid skapande",
|
|
30
|
+
"Payment Type": "Betalningstyp",
|
|
30
31
|
"Select payment type": "Välj betalningstyp",
|
|
31
|
-
Cash: "Kontant",
|
|
32
|
+
"Cash": "Kontant",
|
|
32
33
|
"Bank Transfer": "Banköverföring",
|
|
33
|
-
Card: "Kort",
|
|
34
|
-
Check: "Check",
|
|
35
|
-
Other: "Övrigt",
|
|
34
|
+
"Card": "Kort",
|
|
35
|
+
"Check": "Check",
|
|
36
|
+
"Other": "Övrigt",
|
|
36
37
|
Note: "Note",
|
|
37
38
|
"Insert variable": "Insert variable",
|
|
38
39
|
"Add payment instructions, terms, or other notes...": "Add payment instructions, terms, or other notes...",
|
|
@@ -84,4 +85,17 @@ export default {
|
|
|
84
85
|
Footer: "Footer",
|
|
85
86
|
"Add document footer...": "Add document footer...",
|
|
86
87
|
"Reverse charge - tax exempt EU B2B sale": "Reverse charge - tax exempt EU B2B sale",
|
|
88
|
+
"Please select": "Välj",
|
|
89
|
+
"Amount": "Belopp",
|
|
90
|
+
"Add payment": "Lägg till betalning",
|
|
91
|
+
"Recorded now": "Registrerat nu",
|
|
92
|
+
"Remaining due": "Återstående att betala",
|
|
93
|
+
"Remaining to allocate": "Återstår att fördela",
|
|
94
|
+
"This document must be fully paid on creation": "Det här dokumentet måste vara fullt betalt vid skapande",
|
|
95
|
+
"Record one or more payments on creation": "Registrera en eller flera betalningar vid skapande",
|
|
96
|
+
// Service date
|
|
97
|
+
"Service Date": "Tjänstedatum",
|
|
98
|
+
"Service Period": "Tjänsteperiod",
|
|
99
|
+
From: "Från",
|
|
100
|
+
To: "Till",
|
|
87
101
|
} as const;
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { CreateCreditNoteRequest } from "@spaceinvoices/js-sdk";
|
|
2
2
|
import { normalizePtDocumentInput } from "@/ui/lib/pt-document-input";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
buildDocumentBasePayload,
|
|
5
|
+
cleanupEmptyCustomerId,
|
|
6
|
+
prepareDocumentCustomerData,
|
|
7
|
+
prepareDocumentItems,
|
|
8
|
+
prepareDocumentSubmission,
|
|
9
|
+
} from "../../documents/create/prepare-document-submission";
|
|
4
10
|
|
|
5
11
|
type PrepareOptions = {
|
|
6
12
|
originalCustomer: any;
|
|
@@ -30,3 +36,31 @@ export function prepareCreditNoteSubmission(values: any, options: PrepareOptions
|
|
|
30
36
|
}
|
|
31
37
|
return payload;
|
|
32
38
|
}
|
|
39
|
+
|
|
40
|
+
export function prepareCreditNoteUpdateSubmission(
|
|
41
|
+
values: any,
|
|
42
|
+
options: Pick<PrepareOptions, "originalCustomer" | "wasCustomerFormShown" | "priceModes">,
|
|
43
|
+
): Record<string, unknown> {
|
|
44
|
+
const nextValues: any = {
|
|
45
|
+
...values,
|
|
46
|
+
customer: values.customer ? { ...values.customer } : values.customer,
|
|
47
|
+
items: values.items
|
|
48
|
+
? values.items.map((item: any) => ({ ...item, taxes: item?.taxes ? [...item.taxes] : item?.taxes }))
|
|
49
|
+
: values.items,
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
prepareDocumentCustomerData(nextValues, options);
|
|
53
|
+
cleanupEmptyCustomerId(nextValues);
|
|
54
|
+
nextValues.items = prepareDocumentItems(nextValues.items, options.priceModes ?? {});
|
|
55
|
+
|
|
56
|
+
const payload = buildDocumentBasePayload(nextValues, {
|
|
57
|
+
documentType: "credit_note",
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
const pt = normalizePtDocumentInput(values.pt);
|
|
61
|
+
if (pt) {
|
|
62
|
+
payload.pt = pt;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return payload;
|
|
66
|
+
}
|
|
@@ -8,7 +8,13 @@
|
|
|
8
8
|
* - Less code duplication
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import type {
|
|
11
|
+
import type {
|
|
12
|
+
CreateCreditNoteRequest,
|
|
13
|
+
CreditNote,
|
|
14
|
+
CustomCreateCreditNote,
|
|
15
|
+
SDKMethodOptions,
|
|
16
|
+
UpdateCreditNote,
|
|
17
|
+
} from "@spaceinvoices/js-sdk";
|
|
12
18
|
import { creditNotes } from "@spaceinvoices/js-sdk";
|
|
13
19
|
import { createResourceHooks } from "@/ui/hooks/create-resource-hooks";
|
|
14
20
|
|
|
@@ -31,7 +37,20 @@ const {
|
|
|
31
37
|
CREDIT_NOTES_CACHE_KEY,
|
|
32
38
|
);
|
|
33
39
|
|
|
34
|
-
|
|
40
|
+
const { useCreateResource: useCreateCustomCreditNote } = createResourceHooks<
|
|
41
|
+
CreditNote,
|
|
42
|
+
CustomCreateCreditNote,
|
|
43
|
+
UpdateCreditNote
|
|
44
|
+
>(
|
|
45
|
+
{
|
|
46
|
+
create: creditNotes.createCustom,
|
|
47
|
+
update: creditNotes.update,
|
|
48
|
+
delete: voidCreditNote,
|
|
49
|
+
},
|
|
50
|
+
CREDIT_NOTES_CACHE_KEY,
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
export { useCreateCreditNote, useCreateCustomCreditNote, useDeleteCreditNote, useUpdateCreditNote };
|
|
35
54
|
|
|
36
55
|
// ============================================================================
|
|
37
56
|
// FURS Last-Used Combo (localStorage) for credit notes
|
|
@@ -17,6 +17,7 @@ import type {
|
|
|
17
17
|
import { Badge } from "@/ui/components/ui/badge";
|
|
18
18
|
import { Button } from "@/ui/components/ui/button";
|
|
19
19
|
import { Tooltip, TooltipContent, TooltipTrigger } from "@/ui/components/ui/tooltip";
|
|
20
|
+
import { getDisplayDocumentNumber } from "@/ui/lib/document-display";
|
|
20
21
|
import { getEslogSelectionState } from "@/ui/lib/eslog-export";
|
|
21
22
|
import { getFiscalizationFailureType } from "@/ui/lib/fiscalization";
|
|
22
23
|
import { createTranslation } from "@/ui/lib/translation";
|
|
@@ -222,7 +223,7 @@ export default function CreditNoteListTable({
|
|
|
222
223
|
return (
|
|
223
224
|
<div className="flex items-center gap-2">
|
|
224
225
|
<Button variant="link" className="cursor-pointer py-0 underline" onClick={() => onRowClick?.(creditNote)}>
|
|
225
|
-
{creditNote
|
|
226
|
+
{getDisplayDocumentNumber(creditNote as CreditNote & { is_draft?: boolean }, t)}
|
|
226
227
|
</Button>
|
|
227
228
|
{(creditNote as any).is_draft && (
|
|
228
229
|
<Badge
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { zodResolver } from "@hookform/resolvers/zod";
|
|
2
|
-
import type { CreateDeliveryNoteRequest, DeliveryNote } from "@spaceinvoices/js-sdk";
|
|
2
|
+
import type { CreateDeliveryNoteRequest, DeliveryNote, UpdateDeliveryNote } from "@spaceinvoices/js-sdk";
|
|
3
3
|
import { useQueryClient } from "@tanstack/react-query";
|
|
4
4
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
5
5
|
import type { Resolver } from "react-hook-form";
|
|
@@ -11,6 +11,7 @@ import { Label } from "@/ui/components/ui/label";
|
|
|
11
11
|
import { createDeliveryNoteSchema } from "@/ui/generated/schemas";
|
|
12
12
|
import { useNextDocumentNumber } from "@/ui/hooks/use-next-document-number";
|
|
13
13
|
import { useTransactionTypeCheck } from "@/ui/hooks/use-transaction-type-check";
|
|
14
|
+
import { normalizeLineItemDiscountsForForm } from "@/ui/lib/schemas/shared";
|
|
14
15
|
import type { ComponentTranslationProps } from "@/ui/lib/translation";
|
|
15
16
|
import { createTranslation } from "@/ui/lib/translation";
|
|
16
17
|
import { useEntities } from "@/ui/providers/entities-context";
|
|
@@ -26,8 +27,11 @@ import {
|
|
|
26
27
|
import { withRequiredDocumentItemFields } from "../../documents/create/document-item-validation";
|
|
27
28
|
import { DocumentItemsSection, type PriceModesMap } from "../../documents/create/document-items-section";
|
|
28
29
|
import { DocumentRecipientSection } from "../../documents/create/document-recipient-section";
|
|
30
|
+
import { prepareDocumentItems } from "../../documents/create/prepare-document-submission";
|
|
31
|
+
import { applyCustomCreateTemplate } from "../../documents/create/custom-create-template";
|
|
32
|
+
import { financialInputsMatchInitial, resolvePreservedExpectedTotal } from "../../documents/create/preserved-expected-total";
|
|
29
33
|
import type { DocumentTypes } from "../../documents/types";
|
|
30
|
-
import { useCreateDeliveryNote } from "../delivery-notes.hooks";
|
|
34
|
+
import { useCreateCustomDeliveryNote, useCreateDeliveryNote, useUpdateDeliveryNote } from "../delivery-notes.hooks";
|
|
31
35
|
import de from "./locales/de";
|
|
32
36
|
import es from "./locales/es";
|
|
33
37
|
import fr from "./locales/fr";
|
|
@@ -37,7 +41,7 @@ import nl from "./locales/nl";
|
|
|
37
41
|
import pl from "./locales/pl";
|
|
38
42
|
import pt from "./locales/pt";
|
|
39
43
|
import sl from "./locales/sl";
|
|
40
|
-
import { prepareDeliveryNoteSubmission } from "./prepare-delivery-note-submission";
|
|
44
|
+
import { prepareDeliveryNoteSubmission, prepareDeliveryNoteUpdateSubmission } from "./prepare-delivery-note-submission";
|
|
41
45
|
import { useDeliveryNoteCustomerForm } from "./use-delivery-note-customer-form";
|
|
42
46
|
|
|
43
47
|
const translations = {
|
|
@@ -71,6 +75,8 @@ type CreateDeliveryNoteFormProps = {
|
|
|
71
75
|
initialValues?: Partial<CreateDeliveryNoteRequest>;
|
|
72
76
|
/** Whether draft actions should be available in the UI */
|
|
73
77
|
allowDrafts?: boolean;
|
|
78
|
+
mode?: "create" | "edit";
|
|
79
|
+
documentId?: string;
|
|
74
80
|
translationLocale?: string;
|
|
75
81
|
} & ComponentTranslationProps;
|
|
76
82
|
|
|
@@ -83,6 +89,8 @@ export default function CreateDeliveryNoteForm({
|
|
|
83
89
|
onAddNewTax,
|
|
84
90
|
initialValues,
|
|
85
91
|
allowDrafts = true,
|
|
92
|
+
mode = "create",
|
|
93
|
+
documentId,
|
|
86
94
|
translationLocale,
|
|
87
95
|
t: translateProp,
|
|
88
96
|
namespace,
|
|
@@ -98,6 +106,7 @@ export default function CreateDeliveryNoteForm({
|
|
|
98
106
|
|
|
99
107
|
const { activeEntity } = useEntities();
|
|
100
108
|
const queryClient = useQueryClient();
|
|
109
|
+
const isEditMode = mode === "edit";
|
|
101
110
|
|
|
102
111
|
// Draft submission state
|
|
103
112
|
const [isDraftPending, setIsDraftPending] = useState(false);
|
|
@@ -110,7 +119,7 @@ export default function CreateDeliveryNoteForm({
|
|
|
110
119
|
|
|
111
120
|
// Fetch next delivery note number
|
|
112
121
|
const { data: nextNumberData } = useNextDocumentNumber(entityId, "delivery_note", {
|
|
113
|
-
enabled: !!entityId,
|
|
122
|
+
enabled: !!entityId && !isEditMode,
|
|
114
123
|
});
|
|
115
124
|
|
|
116
125
|
const form = useForm<CreateDeliveryNoteFormValues>({
|
|
@@ -118,22 +127,28 @@ export default function CreateDeliveryNoteForm({
|
|
|
118
127
|
withRequiredDocumentItemFields(createDeliveryNoteSchema),
|
|
119
128
|
) as Resolver<CreateDeliveryNoteFormValues>,
|
|
120
129
|
defaultValues: {
|
|
121
|
-
number: "",
|
|
130
|
+
number: (initialValues as any)?.number ?? "",
|
|
131
|
+
calculation_mode: (initialValues as any)?.calculation_mode ?? undefined,
|
|
122
132
|
date: initialValues?.date || new Date().toISOString(),
|
|
123
133
|
customer_id: initialValues?.customer_id ?? undefined,
|
|
124
134
|
// Cast customer to form schema type (API type may have additional fields)
|
|
125
135
|
customer: (initialValues?.customer as CreateDeliveryNoteFormValues["customer"]) ?? undefined,
|
|
126
136
|
items: initialValues?.items?.length
|
|
127
137
|
? initialValues.items.map((item: any) => ({
|
|
128
|
-
type: item.type,
|
|
138
|
+
type: item.type ?? undefined,
|
|
129
139
|
name: item.name || "",
|
|
130
140
|
description: item.description || "",
|
|
131
141
|
...(item.type !== "separator"
|
|
132
142
|
? {
|
|
143
|
+
item_id: item.item_id ?? undefined,
|
|
133
144
|
quantity: item.quantity ?? 1,
|
|
134
|
-
// Use gross_price if set, otherwise use price
|
|
135
145
|
price: item.gross_price ?? item.price,
|
|
146
|
+
gross_price: item.gross_price ?? undefined,
|
|
147
|
+
unit: item.unit ?? undefined,
|
|
148
|
+
classification: item.classification ?? undefined,
|
|
136
149
|
taxes: item.taxes || [],
|
|
150
|
+
discounts: normalizeLineItemDiscountsForForm(item.discounts),
|
|
151
|
+
metadata: item.metadata ?? undefined,
|
|
137
152
|
}
|
|
138
153
|
: {}),
|
|
139
154
|
}))
|
|
@@ -148,9 +163,12 @@ export default function CreateDeliveryNoteForm({
|
|
|
148
163
|
],
|
|
149
164
|
currency_code: initialValues?.currency_code || activeEntity?.currency_code || "EUR",
|
|
150
165
|
reference: (initialValues as any)?.reference ?? "",
|
|
151
|
-
note: initialValues?.note ?? defaultNote,
|
|
166
|
+
note: initialValues?.note ?? (isEditMode ? "" : defaultNote),
|
|
152
167
|
tax_clause: (initialValues as any)?.tax_clause ?? "",
|
|
153
|
-
footer: (initialValues as any)?.footer ?? defaultFooter,
|
|
168
|
+
footer: (initialValues as any)?.footer ?? (isEditMode ? "" : defaultFooter),
|
|
169
|
+
signature:
|
|
170
|
+
(initialValues as any)?.signature ??
|
|
171
|
+
(isEditMode ? "" : (activeEntity?.settings as any)?.default_document_signature || ""),
|
|
154
172
|
},
|
|
155
173
|
});
|
|
156
174
|
|
|
@@ -166,29 +184,62 @@ export default function CreateDeliveryNoteForm({
|
|
|
166
184
|
}, {} as PriceModesMap);
|
|
167
185
|
}, [initialValues?.items]);
|
|
168
186
|
const priceModesRef = useRef<PriceModesMap>(initialPriceModes);
|
|
187
|
+
const customCreateTemplate = (initialValues as any)?._custom_create_template;
|
|
188
|
+
const financialInputsMatchSource = useCallback(
|
|
189
|
+
(values: { items?: any[]; currency_code?: string; calculation_mode?: string | null }) =>
|
|
190
|
+
financialInputsMatchInitial({
|
|
191
|
+
initialItems: initialValues?.items,
|
|
192
|
+
currentItems: values.items,
|
|
193
|
+
initialCurrencyCode: initialValues?.currency_code,
|
|
194
|
+
currentCurrencyCode: values.currency_code,
|
|
195
|
+
initialCalculationMode: (initialValues as any)?.calculation_mode ?? null,
|
|
196
|
+
currentCalculationMode: values.calculation_mode ?? null,
|
|
197
|
+
initialPriceModes,
|
|
198
|
+
currentPriceModes: priceModesRef.current,
|
|
199
|
+
}),
|
|
200
|
+
[initialPriceModes, initialValues],
|
|
201
|
+
);
|
|
202
|
+
const getPreservedExpectedTotalWithTax = useCallback(
|
|
203
|
+
(values: { items?: any[]; currency_code?: string; calculation_mode?: string | null }) =>
|
|
204
|
+
resolvePreservedExpectedTotal({
|
|
205
|
+
initialExpectedTotalWithTax: (initialValues as any)?._preserved_expected_total_with_tax,
|
|
206
|
+
initialItems: initialValues?.items,
|
|
207
|
+
currentItems: values.items,
|
|
208
|
+
initialCurrencyCode: initialValues?.currency_code,
|
|
209
|
+
currentCurrencyCode: values.currency_code,
|
|
210
|
+
initialCalculationMode: (initialValues as any)?.calculation_mode ?? null,
|
|
211
|
+
currentCalculationMode: values.calculation_mode ?? null,
|
|
212
|
+
initialPriceModes,
|
|
213
|
+
currentPriceModes: priceModesRef.current,
|
|
214
|
+
}),
|
|
215
|
+
[initialPriceModes, initialValues],
|
|
216
|
+
);
|
|
169
217
|
|
|
170
218
|
// Update number when fetched
|
|
171
219
|
useEffect(() => {
|
|
220
|
+
if (isEditMode) return;
|
|
172
221
|
if (nextNumberData?.number) {
|
|
173
222
|
form.setValue("number", nextNumberData.number);
|
|
174
223
|
}
|
|
175
|
-
}, [nextNumberData?.number, form]);
|
|
224
|
+
}, [nextNumberData?.number, form, isEditMode]);
|
|
176
225
|
|
|
177
226
|
// Set default footer from entity settings when entity data is available
|
|
178
227
|
useEffect(() => {
|
|
228
|
+
if (isEditMode) return;
|
|
179
229
|
const entityDefaultFooter = (activeEntity?.settings as any)?.document_footer;
|
|
180
230
|
if (entityDefaultFooter && !form.getValues("footer")) {
|
|
181
231
|
form.setValue("footer", entityDefaultFooter);
|
|
182
232
|
}
|
|
183
|
-
}, [activeEntity, form]);
|
|
233
|
+
}, [activeEntity, form, isEditMode]);
|
|
184
234
|
|
|
185
235
|
// Set default note from entity settings when entity data is available
|
|
186
236
|
useEffect(() => {
|
|
237
|
+
if (isEditMode) return;
|
|
187
238
|
const entityDefaultNote = (activeEntity?.settings as any)?.default_delivery_note_note;
|
|
188
239
|
if (entityDefaultNote && !form.getValues("note")) {
|
|
189
240
|
form.setValue("note", entityDefaultNote);
|
|
190
241
|
}
|
|
191
|
-
}, [activeEntity, form]);
|
|
242
|
+
}, [activeEntity, form, isEditMode]);
|
|
192
243
|
|
|
193
244
|
// Auto-add tax field for tax subject entities
|
|
194
245
|
useEffect(() => {
|
|
@@ -202,11 +253,12 @@ export default function CreateDeliveryNoteForm({
|
|
|
202
253
|
|
|
203
254
|
// Set default signature from entity settings
|
|
204
255
|
useEffect(() => {
|
|
256
|
+
if (isEditMode) return;
|
|
205
257
|
const entityDefaultSignature = (activeEntity?.settings as any)?.default_document_signature;
|
|
206
258
|
if (entityDefaultSignature && !form.getValues("signature")) {
|
|
207
259
|
form.setValue("signature", entityDefaultSignature);
|
|
208
260
|
}
|
|
209
|
-
}, [activeEntity, form]);
|
|
261
|
+
}, [activeEntity, form, isEditMode]);
|
|
210
262
|
|
|
211
263
|
const formValues = useWatch({
|
|
212
264
|
control: form.control,
|
|
@@ -237,13 +289,14 @@ export default function CreateDeliveryNoteForm({
|
|
|
237
289
|
useEffect(() => {
|
|
238
290
|
if (effectiveTransactionType === prevTransactionTypeRef.current) return;
|
|
239
291
|
prevTransactionTypeRef.current = effectiveTransactionType;
|
|
292
|
+
if (isEditMode) return;
|
|
240
293
|
|
|
241
294
|
const taxClauseDefaults = (activeEntity?.settings as any)?.tax_clause_defaults;
|
|
242
295
|
if (!taxClauseDefaults) return;
|
|
243
296
|
|
|
244
297
|
const clause = taxClauseDefaults[effectiveTransactionType] ?? "";
|
|
245
298
|
form.setValue("tax_clause", clause);
|
|
246
|
-
}, [effectiveTransactionType, activeEntity, form]);
|
|
299
|
+
}, [effectiveTransactionType, activeEntity, form, isEditMode]);
|
|
247
300
|
|
|
248
301
|
// Extract customer management logic into a custom hook
|
|
249
302
|
const {
|
|
@@ -267,18 +320,58 @@ export default function CreateDeliveryNoteForm({
|
|
|
267
320
|
},
|
|
268
321
|
onError,
|
|
269
322
|
});
|
|
323
|
+
const { mutate: createCustomDeliveryNote, isPending: isCreateCustomPending } = useCreateCustomDeliveryNote({
|
|
324
|
+
entityId,
|
|
325
|
+
onSuccess: (data) => {
|
|
326
|
+
if (data.customer_id) {
|
|
327
|
+
queryClient.invalidateQueries({ queryKey: [CUSTOMERS_CACHE_KEY] });
|
|
328
|
+
}
|
|
329
|
+
onSuccess?.(data);
|
|
330
|
+
},
|
|
331
|
+
onError,
|
|
332
|
+
});
|
|
333
|
+
const { mutate: updateDeliveryNote, isPending: isUpdatePending } = useUpdateDeliveryNote({
|
|
334
|
+
entityId,
|
|
335
|
+
onSuccess,
|
|
336
|
+
onError,
|
|
337
|
+
});
|
|
270
338
|
|
|
271
339
|
// Shared submit logic for both regular save and save as draft
|
|
272
340
|
const submitDeliveryNote = useCallback(
|
|
273
341
|
(values: CreateDeliveryNoteFormValues, isDraft: boolean) => {
|
|
274
342
|
try {
|
|
343
|
+
if (isEditMode) {
|
|
344
|
+
if (!documentId) {
|
|
345
|
+
throw new Error("Delivery note edit mode requires a documentId");
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
const updatePayload = prepareDeliveryNoteUpdateSubmission(values, {
|
|
349
|
+
originalCustomer,
|
|
350
|
+
priceModes: priceModesRef.current,
|
|
351
|
+
hidePrices,
|
|
352
|
+
}) as UpdateDeliveryNote;
|
|
353
|
+
updateDeliveryNote({ id: documentId, data: updatePayload });
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
356
|
+
|
|
275
357
|
const submission = prepareDeliveryNoteSubmission(values, {
|
|
276
358
|
originalCustomer,
|
|
277
359
|
priceModes: priceModesRef.current,
|
|
278
360
|
isDraft,
|
|
279
361
|
hidePrices,
|
|
280
362
|
});
|
|
281
|
-
|
|
363
|
+
const preservedExpectedTotalWithTax = getPreservedExpectedTotalWithTax(values);
|
|
364
|
+
if (preservedExpectedTotalWithTax !== undefined) {
|
|
365
|
+
(submission as any).expected_total_with_tax = preservedExpectedTotalWithTax;
|
|
366
|
+
} else {
|
|
367
|
+
delete (submission as any).expected_total_with_tax;
|
|
368
|
+
}
|
|
369
|
+
if (customCreateTemplate && financialInputsMatchSource(values)) {
|
|
370
|
+
delete (submission as any).expected_total_with_tax;
|
|
371
|
+
createCustomDeliveryNote(applyCustomCreateTemplate(submission as any, customCreateTemplate));
|
|
372
|
+
} else {
|
|
373
|
+
createDeliveryNote(submission);
|
|
374
|
+
}
|
|
282
375
|
} catch (error) {
|
|
283
376
|
console.error("Delivery note submission error:", error);
|
|
284
377
|
if (onError) {
|
|
@@ -286,7 +379,19 @@ export default function CreateDeliveryNoteForm({
|
|
|
286
379
|
}
|
|
287
380
|
}
|
|
288
381
|
},
|
|
289
|
-
[
|
|
382
|
+
[
|
|
383
|
+
createDeliveryNote,
|
|
384
|
+
createCustomDeliveryNote,
|
|
385
|
+
customCreateTemplate,
|
|
386
|
+
documentId,
|
|
387
|
+
financialInputsMatchSource,
|
|
388
|
+
getPreservedExpectedTotalWithTax,
|
|
389
|
+
hidePrices,
|
|
390
|
+
isEditMode,
|
|
391
|
+
onError,
|
|
392
|
+
originalCustomer,
|
|
393
|
+
updateDeliveryNote,
|
|
394
|
+
],
|
|
290
395
|
);
|
|
291
396
|
|
|
292
397
|
// Handle save as draft
|
|
@@ -305,48 +410,46 @@ export default function CreateDeliveryNoteForm({
|
|
|
305
410
|
|
|
306
411
|
const secondaryAction = useMemo(
|
|
307
412
|
() =>
|
|
308
|
-
allowDrafts
|
|
413
|
+
allowDrafts && !isEditMode
|
|
309
414
|
? {
|
|
310
415
|
label: t("Save as Draft"),
|
|
311
416
|
onClick: handleSaveAsDraft,
|
|
312
417
|
isPending: isDraftPending,
|
|
313
418
|
}
|
|
314
419
|
: undefined,
|
|
315
|
-
[allowDrafts, t, handleSaveAsDraft, isDraftPending],
|
|
420
|
+
[allowDrafts, isEditMode, t, handleSaveAsDraft, isDraftPending],
|
|
316
421
|
);
|
|
317
422
|
|
|
318
423
|
useFormFooterRegistration({
|
|
319
424
|
formId: "create-delivery-note-form",
|
|
320
|
-
isPending,
|
|
425
|
+
isPending: isPending || isCreateCustomPending || isUpdatePending,
|
|
321
426
|
isDirty: form.formState.isDirty || !!initialValues,
|
|
322
|
-
label: t("Create Delivery Note"),
|
|
427
|
+
label: isEditMode ? t("Update") : t("Create Delivery Note"),
|
|
323
428
|
secondaryAction,
|
|
324
429
|
});
|
|
325
430
|
|
|
326
431
|
const buildPreviewPayload = useCallback(
|
|
327
432
|
(values: CreateDeliveryNoteFormValues): DeliveryNotePreviewPayload => {
|
|
328
|
-
const
|
|
329
|
-
|
|
330
|
-
const transformedItems = currentItems.map((item: any, index: number) => {
|
|
331
|
-
const { price, ...rest } = item;
|
|
332
|
-
const isGross = priceModesRef.current[index] ?? false;
|
|
333
|
-
return isGross ? { ...rest, gross_price: price } : { ...rest, price };
|
|
334
|
-
});
|
|
335
|
-
|
|
433
|
+
const preservedExpectedTotalWithTax = getPreservedExpectedTotalWithTax(values);
|
|
336
434
|
return {
|
|
337
435
|
number: values.number,
|
|
338
436
|
date: values.date,
|
|
339
437
|
customer_id: values.customer_id,
|
|
340
438
|
customer: values.customer,
|
|
341
|
-
items:
|
|
439
|
+
items: prepareDocumentItems(values.items, priceModesRef.current),
|
|
342
440
|
currency_code: values.currency_code,
|
|
343
441
|
reference: values.reference,
|
|
344
442
|
note: values.note,
|
|
443
|
+
tax_clause: values.tax_clause,
|
|
345
444
|
signature: values.signature,
|
|
445
|
+
footer: values.footer,
|
|
346
446
|
hide_prices: hidePrices,
|
|
447
|
+
...(preservedExpectedTotalWithTax !== undefined
|
|
448
|
+
? { expected_total_with_tax: preservedExpectedTotalWithTax }
|
|
449
|
+
: {}),
|
|
347
450
|
};
|
|
348
451
|
},
|
|
349
|
-
[hidePrices],
|
|
452
|
+
[getPreservedExpectedTotalWithTax, hidePrices],
|
|
350
453
|
);
|
|
351
454
|
|
|
352
455
|
const emitPreviewPayload = useCallback((payload: DeliveryNotePreviewPayload) => {
|