@spaceinvoices/react-ui 0.4.12 → 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 +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 +189 -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 +253 -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 +132 -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 +114 -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 +195 -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 +230 -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 +61 -30
- 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,27 @@ 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),
|
|
137
151
|
}
|
|
138
152
|
: {}),
|
|
139
153
|
}))
|
|
@@ -148,9 +162,12 @@ export default function CreateDeliveryNoteForm({
|
|
|
148
162
|
],
|
|
149
163
|
currency_code: initialValues?.currency_code || activeEntity?.currency_code || "EUR",
|
|
150
164
|
reference: (initialValues as any)?.reference ?? "",
|
|
151
|
-
note: initialValues?.note ?? defaultNote,
|
|
165
|
+
note: initialValues?.note ?? (isEditMode ? "" : defaultNote),
|
|
152
166
|
tax_clause: (initialValues as any)?.tax_clause ?? "",
|
|
153
|
-
footer: (initialValues as any)?.footer ?? defaultFooter,
|
|
167
|
+
footer: (initialValues as any)?.footer ?? (isEditMode ? "" : defaultFooter),
|
|
168
|
+
signature:
|
|
169
|
+
(initialValues as any)?.signature ??
|
|
170
|
+
(isEditMode ? "" : (activeEntity?.settings as any)?.default_document_signature || ""),
|
|
154
171
|
},
|
|
155
172
|
});
|
|
156
173
|
|
|
@@ -166,29 +183,62 @@ export default function CreateDeliveryNoteForm({
|
|
|
166
183
|
}, {} as PriceModesMap);
|
|
167
184
|
}, [initialValues?.items]);
|
|
168
185
|
const priceModesRef = useRef<PriceModesMap>(initialPriceModes);
|
|
186
|
+
const customCreateTemplate = (initialValues as any)?._custom_create_template;
|
|
187
|
+
const financialInputsMatchSource = useCallback(
|
|
188
|
+
(values: { items?: any[]; currency_code?: string; calculation_mode?: string | null }) =>
|
|
189
|
+
financialInputsMatchInitial({
|
|
190
|
+
initialItems: initialValues?.items,
|
|
191
|
+
currentItems: values.items,
|
|
192
|
+
initialCurrencyCode: initialValues?.currency_code,
|
|
193
|
+
currentCurrencyCode: values.currency_code,
|
|
194
|
+
initialCalculationMode: (initialValues as any)?.calculation_mode ?? null,
|
|
195
|
+
currentCalculationMode: values.calculation_mode ?? null,
|
|
196
|
+
initialPriceModes,
|
|
197
|
+
currentPriceModes: priceModesRef.current,
|
|
198
|
+
}),
|
|
199
|
+
[initialPriceModes, initialValues],
|
|
200
|
+
);
|
|
201
|
+
const getPreservedExpectedTotalWithTax = useCallback(
|
|
202
|
+
(values: { items?: any[]; currency_code?: string; calculation_mode?: string | null }) =>
|
|
203
|
+
resolvePreservedExpectedTotal({
|
|
204
|
+
initialExpectedTotalWithTax: (initialValues as any)?._preserved_expected_total_with_tax,
|
|
205
|
+
initialItems: initialValues?.items,
|
|
206
|
+
currentItems: values.items,
|
|
207
|
+
initialCurrencyCode: initialValues?.currency_code,
|
|
208
|
+
currentCurrencyCode: values.currency_code,
|
|
209
|
+
initialCalculationMode: (initialValues as any)?.calculation_mode ?? null,
|
|
210
|
+
currentCalculationMode: values.calculation_mode ?? null,
|
|
211
|
+
initialPriceModes,
|
|
212
|
+
currentPriceModes: priceModesRef.current,
|
|
213
|
+
}),
|
|
214
|
+
[initialPriceModes, initialValues],
|
|
215
|
+
);
|
|
169
216
|
|
|
170
217
|
// Update number when fetched
|
|
171
218
|
useEffect(() => {
|
|
219
|
+
if (isEditMode) return;
|
|
172
220
|
if (nextNumberData?.number) {
|
|
173
221
|
form.setValue("number", nextNumberData.number);
|
|
174
222
|
}
|
|
175
|
-
}, [nextNumberData?.number, form]);
|
|
223
|
+
}, [nextNumberData?.number, form, isEditMode]);
|
|
176
224
|
|
|
177
225
|
// Set default footer from entity settings when entity data is available
|
|
178
226
|
useEffect(() => {
|
|
227
|
+
if (isEditMode) return;
|
|
179
228
|
const entityDefaultFooter = (activeEntity?.settings as any)?.document_footer;
|
|
180
229
|
if (entityDefaultFooter && !form.getValues("footer")) {
|
|
181
230
|
form.setValue("footer", entityDefaultFooter);
|
|
182
231
|
}
|
|
183
|
-
}, [activeEntity, form]);
|
|
232
|
+
}, [activeEntity, form, isEditMode]);
|
|
184
233
|
|
|
185
234
|
// Set default note from entity settings when entity data is available
|
|
186
235
|
useEffect(() => {
|
|
236
|
+
if (isEditMode) return;
|
|
187
237
|
const entityDefaultNote = (activeEntity?.settings as any)?.default_delivery_note_note;
|
|
188
238
|
if (entityDefaultNote && !form.getValues("note")) {
|
|
189
239
|
form.setValue("note", entityDefaultNote);
|
|
190
240
|
}
|
|
191
|
-
}, [activeEntity, form]);
|
|
241
|
+
}, [activeEntity, form, isEditMode]);
|
|
192
242
|
|
|
193
243
|
// Auto-add tax field for tax subject entities
|
|
194
244
|
useEffect(() => {
|
|
@@ -202,11 +252,12 @@ export default function CreateDeliveryNoteForm({
|
|
|
202
252
|
|
|
203
253
|
// Set default signature from entity settings
|
|
204
254
|
useEffect(() => {
|
|
255
|
+
if (isEditMode) return;
|
|
205
256
|
const entityDefaultSignature = (activeEntity?.settings as any)?.default_document_signature;
|
|
206
257
|
if (entityDefaultSignature && !form.getValues("signature")) {
|
|
207
258
|
form.setValue("signature", entityDefaultSignature);
|
|
208
259
|
}
|
|
209
|
-
}, [activeEntity, form]);
|
|
260
|
+
}, [activeEntity, form, isEditMode]);
|
|
210
261
|
|
|
211
262
|
const formValues = useWatch({
|
|
212
263
|
control: form.control,
|
|
@@ -237,13 +288,14 @@ export default function CreateDeliveryNoteForm({
|
|
|
237
288
|
useEffect(() => {
|
|
238
289
|
if (effectiveTransactionType === prevTransactionTypeRef.current) return;
|
|
239
290
|
prevTransactionTypeRef.current = effectiveTransactionType;
|
|
291
|
+
if (isEditMode) return;
|
|
240
292
|
|
|
241
293
|
const taxClauseDefaults = (activeEntity?.settings as any)?.tax_clause_defaults;
|
|
242
294
|
if (!taxClauseDefaults) return;
|
|
243
295
|
|
|
244
296
|
const clause = taxClauseDefaults[effectiveTransactionType] ?? "";
|
|
245
297
|
form.setValue("tax_clause", clause);
|
|
246
|
-
}, [effectiveTransactionType, activeEntity, form]);
|
|
298
|
+
}, [effectiveTransactionType, activeEntity, form, isEditMode]);
|
|
247
299
|
|
|
248
300
|
// Extract customer management logic into a custom hook
|
|
249
301
|
const {
|
|
@@ -267,18 +319,58 @@ export default function CreateDeliveryNoteForm({
|
|
|
267
319
|
},
|
|
268
320
|
onError,
|
|
269
321
|
});
|
|
322
|
+
const { mutate: createCustomDeliveryNote, isPending: isCreateCustomPending } = useCreateCustomDeliveryNote({
|
|
323
|
+
entityId,
|
|
324
|
+
onSuccess: (data) => {
|
|
325
|
+
if (data.customer_id) {
|
|
326
|
+
queryClient.invalidateQueries({ queryKey: [CUSTOMERS_CACHE_KEY] });
|
|
327
|
+
}
|
|
328
|
+
onSuccess?.(data);
|
|
329
|
+
},
|
|
330
|
+
onError,
|
|
331
|
+
});
|
|
332
|
+
const { mutate: updateDeliveryNote, isPending: isUpdatePending } = useUpdateDeliveryNote({
|
|
333
|
+
entityId,
|
|
334
|
+
onSuccess,
|
|
335
|
+
onError,
|
|
336
|
+
});
|
|
270
337
|
|
|
271
338
|
// Shared submit logic for both regular save and save as draft
|
|
272
339
|
const submitDeliveryNote = useCallback(
|
|
273
340
|
(values: CreateDeliveryNoteFormValues, isDraft: boolean) => {
|
|
274
341
|
try {
|
|
342
|
+
if (isEditMode) {
|
|
343
|
+
if (!documentId) {
|
|
344
|
+
throw new Error("Delivery note edit mode requires a documentId");
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
const updatePayload = prepareDeliveryNoteUpdateSubmission(values, {
|
|
348
|
+
originalCustomer,
|
|
349
|
+
priceModes: priceModesRef.current,
|
|
350
|
+
hidePrices,
|
|
351
|
+
}) as UpdateDeliveryNote;
|
|
352
|
+
updateDeliveryNote({ id: documentId, data: updatePayload });
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
|
|
275
356
|
const submission = prepareDeliveryNoteSubmission(values, {
|
|
276
357
|
originalCustomer,
|
|
277
358
|
priceModes: priceModesRef.current,
|
|
278
359
|
isDraft,
|
|
279
360
|
hidePrices,
|
|
280
361
|
});
|
|
281
|
-
|
|
362
|
+
const preservedExpectedTotalWithTax = getPreservedExpectedTotalWithTax(values);
|
|
363
|
+
if (preservedExpectedTotalWithTax !== undefined) {
|
|
364
|
+
(submission as any).expected_total_with_tax = preservedExpectedTotalWithTax;
|
|
365
|
+
} else {
|
|
366
|
+
delete (submission as any).expected_total_with_tax;
|
|
367
|
+
}
|
|
368
|
+
if (customCreateTemplate && financialInputsMatchSource(values)) {
|
|
369
|
+
delete (submission as any).expected_total_with_tax;
|
|
370
|
+
createCustomDeliveryNote(applyCustomCreateTemplate(submission as any, customCreateTemplate));
|
|
371
|
+
} else {
|
|
372
|
+
createDeliveryNote(submission);
|
|
373
|
+
}
|
|
282
374
|
} catch (error) {
|
|
283
375
|
console.error("Delivery note submission error:", error);
|
|
284
376
|
if (onError) {
|
|
@@ -286,7 +378,19 @@ export default function CreateDeliveryNoteForm({
|
|
|
286
378
|
}
|
|
287
379
|
}
|
|
288
380
|
},
|
|
289
|
-
[
|
|
381
|
+
[
|
|
382
|
+
createDeliveryNote,
|
|
383
|
+
createCustomDeliveryNote,
|
|
384
|
+
customCreateTemplate,
|
|
385
|
+
documentId,
|
|
386
|
+
financialInputsMatchSource,
|
|
387
|
+
getPreservedExpectedTotalWithTax,
|
|
388
|
+
hidePrices,
|
|
389
|
+
isEditMode,
|
|
390
|
+
onError,
|
|
391
|
+
originalCustomer,
|
|
392
|
+
updateDeliveryNote,
|
|
393
|
+
],
|
|
290
394
|
);
|
|
291
395
|
|
|
292
396
|
// Handle save as draft
|
|
@@ -305,48 +409,46 @@ export default function CreateDeliveryNoteForm({
|
|
|
305
409
|
|
|
306
410
|
const secondaryAction = useMemo(
|
|
307
411
|
() =>
|
|
308
|
-
allowDrafts
|
|
412
|
+
allowDrafts && !isEditMode
|
|
309
413
|
? {
|
|
310
414
|
label: t("Save as Draft"),
|
|
311
415
|
onClick: handleSaveAsDraft,
|
|
312
416
|
isPending: isDraftPending,
|
|
313
417
|
}
|
|
314
418
|
: undefined,
|
|
315
|
-
[allowDrafts, t, handleSaveAsDraft, isDraftPending],
|
|
419
|
+
[allowDrafts, isEditMode, t, handleSaveAsDraft, isDraftPending],
|
|
316
420
|
);
|
|
317
421
|
|
|
318
422
|
useFormFooterRegistration({
|
|
319
423
|
formId: "create-delivery-note-form",
|
|
320
|
-
isPending,
|
|
424
|
+
isPending: isPending || isCreateCustomPending || isUpdatePending,
|
|
321
425
|
isDirty: form.formState.isDirty || !!initialValues,
|
|
322
|
-
label: t("Create Delivery Note"),
|
|
426
|
+
label: isEditMode ? t("Update") : t("Create Delivery Note"),
|
|
323
427
|
secondaryAction,
|
|
324
428
|
});
|
|
325
429
|
|
|
326
430
|
const buildPreviewPayload = useCallback(
|
|
327
431
|
(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
|
-
|
|
432
|
+
const preservedExpectedTotalWithTax = getPreservedExpectedTotalWithTax(values);
|
|
336
433
|
return {
|
|
337
434
|
number: values.number,
|
|
338
435
|
date: values.date,
|
|
339
436
|
customer_id: values.customer_id,
|
|
340
437
|
customer: values.customer,
|
|
341
|
-
items:
|
|
438
|
+
items: prepareDocumentItems(values.items, priceModesRef.current),
|
|
342
439
|
currency_code: values.currency_code,
|
|
343
440
|
reference: values.reference,
|
|
344
441
|
note: values.note,
|
|
442
|
+
tax_clause: values.tax_clause,
|
|
345
443
|
signature: values.signature,
|
|
444
|
+
footer: values.footer,
|
|
346
445
|
hide_prices: hidePrices,
|
|
446
|
+
...(preservedExpectedTotalWithTax !== undefined
|
|
447
|
+
? { expected_total_with_tax: preservedExpectedTotalWithTax }
|
|
448
|
+
: {}),
|
|
347
449
|
};
|
|
348
450
|
},
|
|
349
|
-
[hidePrices],
|
|
451
|
+
[getPreservedExpectedTotalWithTax, hidePrices],
|
|
350
452
|
);
|
|
351
453
|
|
|
352
454
|
const emitPreviewPayload = useCallback((payload: DeliveryNotePreviewPayload) => {
|