@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.
Files changed (334) hide show
  1. package/cli/dist/index.js +1 -1
  2. package/package.json +1 -1
  3. package/src/common/autocomplete.tsx +7 -1
  4. package/src/components/advance-invoices/advance-invoices.hooks.ts +35 -44
  5. package/src/components/advance-invoices/create/create-advance-invoice-form.tsx +189 -73
  6. package/src/components/advance-invoices/create/locales/bg.ts +17 -9
  7. package/src/components/advance-invoices/create/locales/cs.ts +17 -9
  8. package/src/components/advance-invoices/create/locales/de.ts +15 -7
  9. package/src/components/advance-invoices/create/locales/en.ts +15 -7
  10. package/src/components/advance-invoices/create/locales/es.ts +15 -7
  11. package/src/components/advance-invoices/create/locales/et.ts +17 -9
  12. package/src/components/advance-invoices/create/locales/fi.ts +18 -10
  13. package/src/components/advance-invoices/create/locales/fr.ts +16 -8
  14. package/src/components/advance-invoices/create/locales/hr.ts +15 -7
  15. package/src/components/advance-invoices/create/locales/is.ts +17 -9
  16. package/src/components/advance-invoices/create/locales/it.ts +15 -7
  17. package/src/components/advance-invoices/create/locales/nb.ts +17 -9
  18. package/src/components/advance-invoices/create/locales/nl.ts +15 -7
  19. package/src/components/advance-invoices/create/locales/pl.ts +17 -9
  20. package/src/components/advance-invoices/create/locales/pt.ts +16 -8
  21. package/src/components/advance-invoices/create/locales/sk.ts +17 -9
  22. package/src/components/advance-invoices/create/locales/sl.ts +14 -5
  23. package/src/components/advance-invoices/create/locales/sv.ts +17 -9
  24. package/src/components/advance-invoices/create/prepare-advance-invoice-submission.ts +47 -1
  25. package/src/components/advance-invoices/list/list-table.tsx +2 -1
  26. package/src/components/credit-notes/create/create-credit-note-form.tsx +253 -85
  27. package/src/components/credit-notes/create/locales/bg.ts +22 -8
  28. package/src/components/credit-notes/create/locales/cs.ts +22 -8
  29. package/src/components/credit-notes/create/locales/de.ts +20 -7
  30. package/src/components/credit-notes/create/locales/en.ts +19 -5
  31. package/src/components/credit-notes/create/locales/es.ts +20 -7
  32. package/src/components/credit-notes/create/locales/et.ts +22 -8
  33. package/src/components/credit-notes/create/locales/fi.ts +23 -9
  34. package/src/components/credit-notes/create/locales/fr.ts +21 -8
  35. package/src/components/credit-notes/create/locales/hr.ts +20 -7
  36. package/src/components/credit-notes/create/locales/is.ts +22 -8
  37. package/src/components/credit-notes/create/locales/it.ts +20 -7
  38. package/src/components/credit-notes/create/locales/nb.ts +22 -8
  39. package/src/components/credit-notes/create/locales/nl.ts +20 -7
  40. package/src/components/credit-notes/create/locales/pl.ts +22 -9
  41. package/src/components/credit-notes/create/locales/pt.ts +21 -8
  42. package/src/components/credit-notes/create/locales/sk.ts +22 -8
  43. package/src/components/credit-notes/create/locales/sl.ts +19 -5
  44. package/src/components/credit-notes/create/locales/sv.ts +22 -8
  45. package/src/components/credit-notes/create/prepare-credit-note-submission.ts +35 -1
  46. package/src/components/credit-notes/credit-notes.hooks.ts +21 -2
  47. package/src/components/credit-notes/list/list-table.tsx +2 -1
  48. package/src/components/delivery-notes/create/create-delivery-note-form.tsx +132 -30
  49. package/src/components/delivery-notes/create/locales/bg.ts +1 -0
  50. package/src/components/delivery-notes/create/locales/cs.ts +1 -0
  51. package/src/components/delivery-notes/create/locales/de.ts +1 -0
  52. package/src/components/delivery-notes/create/locales/en.ts +1 -0
  53. package/src/components/delivery-notes/create/locales/es.ts +1 -0
  54. package/src/components/delivery-notes/create/locales/et.ts +1 -0
  55. package/src/components/delivery-notes/create/locales/fi.ts +1 -0
  56. package/src/components/delivery-notes/create/locales/fr.ts +1 -0
  57. package/src/components/delivery-notes/create/locales/hr.ts +1 -0
  58. package/src/components/delivery-notes/create/locales/is.ts +1 -0
  59. package/src/components/delivery-notes/create/locales/it.ts +1 -0
  60. package/src/components/delivery-notes/create/locales/nb.ts +1 -0
  61. package/src/components/delivery-notes/create/locales/nl.ts +1 -0
  62. package/src/components/delivery-notes/create/locales/pl.ts +1 -0
  63. package/src/components/delivery-notes/create/locales/pt.ts +1 -0
  64. package/src/components/delivery-notes/create/locales/sk.ts +1 -0
  65. package/src/components/delivery-notes/create/locales/sl.ts +1 -0
  66. package/src/components/delivery-notes/create/locales/sv.ts +1 -0
  67. package/src/components/delivery-notes/create/prepare-delivery-note-submission.ts +34 -1
  68. package/src/components/delivery-notes/delivery-notes.hooks.ts +15 -1
  69. package/src/components/delivery-notes/list/list-table.tsx +2 -1
  70. package/src/components/documents/create/custom-create-template.ts +114 -0
  71. package/src/components/documents/create/document-add-item-form.tsx +12 -8
  72. package/src/components/documents/create/document-add-item-tax-rate-field.tsx +1 -2
  73. package/src/components/documents/create/document-date-validation.ts +111 -0
  74. package/src/components/documents/create/document-details-section.tsx +93 -48
  75. package/src/components/documents/create/document-form-item.ts +67 -0
  76. package/src/components/documents/create/document-item-validation.ts +6 -2
  77. package/src/components/documents/create/form-types.ts +2 -2
  78. package/src/components/documents/create/linked-documents-info.tsx +2 -11
  79. package/src/components/documents/create/live-preview.tsx +3 -3
  80. package/src/components/documents/create/mark-as-paid-section.tsx +14 -11
  81. package/src/components/documents/create/payment-rows.ts +30 -0
  82. package/src/components/documents/create/prepare-document-submission.ts +143 -103
  83. package/src/components/documents/create/prepare-preview-data.ts +12 -0
  84. package/src/components/documents/create/preserved-expected-total.ts +90 -0
  85. package/src/components/documents/public/public-document-summary.tsx +6 -13
  86. package/src/components/documents/view/document-actions-bar.tsx +10 -1
  87. package/src/components/documents/view/document-details-card.tsx +4 -12
  88. package/src/components/documents/view/document-relations-list.tsx +4 -4
  89. package/src/components/documents/view/locales/bg.ts +8 -8
  90. package/src/components/documents/view/locales/cs.ts +8 -8
  91. package/src/components/documents/view/locales/de.ts +1 -1
  92. package/src/components/documents/view/locales/en.ts +14 -14
  93. package/src/components/documents/view/locales/es.ts +1 -1
  94. package/src/components/documents/view/locales/et.ts +8 -8
  95. package/src/components/documents/view/locales/fi.ts +10 -10
  96. package/src/components/documents/view/locales/fr.ts +1 -1
  97. package/src/components/documents/view/locales/hr.ts +6 -6
  98. package/src/components/documents/view/locales/is.ts +8 -8
  99. package/src/components/documents/view/locales/it.ts +1 -1
  100. package/src/components/documents/view/locales/nb.ts +8 -8
  101. package/src/components/documents/view/locales/nl.ts +1 -1
  102. package/src/components/documents/view/locales/pl.ts +1 -1
  103. package/src/components/documents/view/locales/pt.ts +1 -1
  104. package/src/components/documents/view/locales/sk.ts +8 -8
  105. package/src/components/documents/view/locales/sl.ts +9 -9
  106. package/src/components/documents/view/locales/sv.ts +1 -1
  107. package/src/components/documents/view/use-document-download.ts +2 -2
  108. package/src/components/entities/entity-settings-form/locales/bg.ts +7 -0
  109. package/src/components/entities/entity-settings-form/locales/cs.ts +7 -0
  110. package/src/components/entities/entity-settings-form/locales/de.ts +9 -0
  111. package/src/components/entities/entity-settings-form/locales/en.ts +7 -0
  112. package/src/components/entities/entity-settings-form/locales/es.ts +7 -0
  113. package/src/components/entities/entity-settings-form/locales/et.ts +7 -0
  114. package/src/components/entities/entity-settings-form/locales/fi.ts +7 -0
  115. package/src/components/entities/entity-settings-form/locales/fr.ts +7 -0
  116. package/src/components/entities/entity-settings-form/locales/hr.ts +7 -0
  117. package/src/components/entities/entity-settings-form/locales/is.ts +7 -0
  118. package/src/components/entities/entity-settings-form/locales/it.ts +7 -0
  119. package/src/components/entities/entity-settings-form/locales/nb.ts +7 -0
  120. package/src/components/entities/entity-settings-form/locales/nl.ts +7 -0
  121. package/src/components/entities/entity-settings-form/locales/pl.ts +7 -0
  122. package/src/components/entities/entity-settings-form/locales/pt.ts +7 -0
  123. package/src/components/entities/entity-settings-form/locales/sk.ts +7 -0
  124. package/src/components/entities/entity-settings-form/locales/sl.ts +12 -4
  125. package/src/components/entities/entity-settings-form/locales/sv.ts +7 -0
  126. package/src/components/entities/settings/tax-rules-settings-form.tsx +36 -0
  127. package/src/components/estimates/create/create-estimate-form.tsx +195 -47
  128. package/src/components/estimates/create/locales/bg.ts +6 -5
  129. package/src/components/estimates/create/locales/cs.ts +6 -5
  130. package/src/components/estimates/create/locales/de.ts +4 -3
  131. package/src/components/estimates/create/locales/en.ts +4 -3
  132. package/src/components/estimates/create/locales/es.ts +4 -3
  133. package/src/components/estimates/create/locales/et.ts +6 -5
  134. package/src/components/estimates/create/locales/fi.ts +9 -8
  135. package/src/components/estimates/create/locales/fr.ts +4 -3
  136. package/src/components/estimates/create/locales/hr.ts +7 -6
  137. package/src/components/estimates/create/locales/is.ts +6 -5
  138. package/src/components/estimates/create/locales/it.ts +4 -3
  139. package/src/components/estimates/create/locales/nb.ts +6 -5
  140. package/src/components/estimates/create/locales/nl.ts +4 -3
  141. package/src/components/estimates/create/locales/pl.ts +4 -3
  142. package/src/components/estimates/create/locales/pt.ts +4 -3
  143. package/src/components/estimates/create/locales/sk.ts +6 -5
  144. package/src/components/estimates/create/locales/sl.ts +7 -6
  145. package/src/components/estimates/create/locales/sv.ts +6 -5
  146. package/src/components/estimates/create/prepare-estimate-submission.ts +37 -3
  147. package/src/components/estimates/estimates.hooks.ts +11 -2
  148. package/src/components/estimates/list/list-table.tsx +11 -1
  149. package/src/components/estimates/list/locales/bg.ts +2 -0
  150. package/src/components/estimates/list/locales/cs.ts +2 -0
  151. package/src/components/estimates/list/locales/de.ts +2 -0
  152. package/src/components/estimates/list/locales/en.ts +2 -0
  153. package/src/components/estimates/list/locales/es.ts +2 -0
  154. package/src/components/estimates/list/locales/et.ts +2 -0
  155. package/src/components/estimates/list/locales/fi.ts +2 -0
  156. package/src/components/estimates/list/locales/fr.ts +2 -0
  157. package/src/components/estimates/list/locales/hr.ts +7 -5
  158. package/src/components/estimates/list/locales/is.ts +2 -0
  159. package/src/components/estimates/list/locales/it.ts +2 -0
  160. package/src/components/estimates/list/locales/nb.ts +2 -0
  161. package/src/components/estimates/list/locales/nl.ts +2 -0
  162. package/src/components/estimates/list/locales/pl.ts +2 -0
  163. package/src/components/estimates/list/locales/pt.ts +2 -0
  164. package/src/components/estimates/list/locales/sk.ts +2 -0
  165. package/src/components/estimates/list/locales/sl.ts +9 -7
  166. package/src/components/estimates/list/locales/sv.ts +2 -0
  167. package/src/components/invoices/create/create-invoice-form.tsx +230 -60
  168. package/src/components/invoices/create/locales/bg.ts +23 -14
  169. package/src/components/invoices/create/locales/cs.ts +23 -14
  170. package/src/components/invoices/create/locales/de.ts +17 -9
  171. package/src/components/invoices/create/locales/en.ts +16 -7
  172. package/src/components/invoices/create/locales/es.ts +18 -9
  173. package/src/components/invoices/create/locales/et.ts +23 -14
  174. package/src/components/invoices/create/locales/fi.ts +24 -15
  175. package/src/components/invoices/create/locales/fr.ts +19 -11
  176. package/src/components/invoices/create/locales/hr.ts +18 -9
  177. package/src/components/invoices/create/locales/is.ts +23 -14
  178. package/src/components/invoices/create/locales/it.ts +19 -11
  179. package/src/components/invoices/create/locales/nb.ts +23 -14
  180. package/src/components/invoices/create/locales/nl.ts +19 -10
  181. package/src/components/invoices/create/locales/pl.ts +19 -11
  182. package/src/components/invoices/create/locales/pt.ts +19 -10
  183. package/src/components/invoices/create/locales/sk.ts +23 -14
  184. package/src/components/invoices/create/locales/sl.ts +17 -9
  185. package/src/components/invoices/create/locales/sv.ts +17 -8
  186. package/src/components/invoices/create/prepare-invoice-submission.ts +55 -1
  187. package/src/components/invoices/invoices.hooks.ts +11 -2
  188. package/src/components/invoices/list/list-table.tsx +2 -1
  189. package/src/components/invoices/send-email-dialog/locales/bg.ts +5 -0
  190. package/src/components/invoices/send-email-dialog/locales/cs.ts +5 -0
  191. package/src/components/invoices/send-email-dialog/locales/de.ts +5 -0
  192. package/src/components/invoices/send-email-dialog/locales/en.ts +5 -0
  193. package/src/components/invoices/send-email-dialog/locales/es.ts +5 -0
  194. package/src/components/invoices/send-email-dialog/locales/et.ts +5 -0
  195. package/src/components/invoices/send-email-dialog/locales/fi.ts +5 -0
  196. package/src/components/invoices/send-email-dialog/locales/fr.ts +5 -0
  197. package/src/components/invoices/send-email-dialog/locales/hr.ts +8 -3
  198. package/src/components/invoices/send-email-dialog/locales/is.ts +5 -0
  199. package/src/components/invoices/send-email-dialog/locales/it.ts +5 -0
  200. package/src/components/invoices/send-email-dialog/locales/nb.ts +5 -0
  201. package/src/components/invoices/send-email-dialog/locales/nl.ts +5 -0
  202. package/src/components/invoices/send-email-dialog/locales/pl.ts +5 -0
  203. package/src/components/invoices/send-email-dialog/locales/pt.ts +5 -0
  204. package/src/components/invoices/send-email-dialog/locales/sk.ts +5 -0
  205. package/src/components/invoices/send-email-dialog/locales/sl.ts +8 -3
  206. package/src/components/invoices/send-email-dialog/locales/sv.ts +5 -0
  207. package/src/components/invoices/send-email-dialog/send-email-dialog.tsx +2 -1
  208. package/src/components/items/item-combobox.tsx +4 -4
  209. package/src/components/payments/create-payment-form/create-payment-form.tsx +5 -2
  210. package/src/components/payments/edit-payment-form/edit-payment-form.tsx +5 -1
  211. package/src/components/recurring-invoices/create-recurring-invoice-form/create-recurring-invoice-form.tsx +98 -22
  212. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/bg.ts +26 -26
  213. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/cs.ts +25 -25
  214. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/et.ts +26 -26
  215. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/fi.ts +36 -36
  216. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/is.ts +26 -26
  217. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/nb.ts +26 -26
  218. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/sk.ts +25 -25
  219. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/sv.ts +26 -26
  220. package/src/components/recurring-invoices/list/list-row-actions.tsx +9 -1
  221. package/src/components/recurring-invoices/list/list-table.tsx +53 -5
  222. package/src/components/recurring-invoices/list/locales/bg.ts +4 -0
  223. package/src/components/recurring-invoices/list/locales/cs.ts +4 -0
  224. package/src/components/recurring-invoices/list/locales/de.ts +4 -0
  225. package/src/components/recurring-invoices/list/locales/en.ts +4 -0
  226. package/src/components/recurring-invoices/list/locales/es.ts +4 -0
  227. package/src/components/recurring-invoices/list/locales/et.ts +4 -0
  228. package/src/components/recurring-invoices/list/locales/fi.ts +4 -0
  229. package/src/components/recurring-invoices/list/locales/fr.ts +4 -0
  230. package/src/components/recurring-invoices/list/locales/hr.ts +4 -0
  231. package/src/components/recurring-invoices/list/locales/is.ts +4 -0
  232. package/src/components/recurring-invoices/list/locales/it.ts +4 -0
  233. package/src/components/recurring-invoices/list/locales/nb.ts +4 -0
  234. package/src/components/recurring-invoices/list/locales/nl.ts +4 -0
  235. package/src/components/recurring-invoices/list/locales/pl.ts +4 -0
  236. package/src/components/recurring-invoices/list/locales/pt.ts +4 -0
  237. package/src/components/recurring-invoices/list/locales/sk.ts +4 -0
  238. package/src/components/recurring-invoices/list/locales/sl.ts +4 -0
  239. package/src/components/recurring-invoices/list/locales/sv.ts +4 -0
  240. package/src/components/tax-reports/slovenia-tax-profile-step.tsx +4 -1
  241. package/src/components/tax-reports/slovenia-yearly-export-form.tsx +3 -0
  242. package/src/components/tax-reports/slovenia-yearly-review-step.tsx +2 -1
  243. package/src/components/ui/form.tsx +5 -13
  244. package/src/components/ui/select.tsx +0 -1
  245. package/src/components/ui/sidebar.tsx +2 -2
  246. package/src/generate-schemas.ts +132 -99
  247. package/src/generated/schemas/acceptentityinvitation_body.ts +4 -3
  248. package/src/generated/schemas/accountwebhook.ts +4 -8
  249. package/src/generated/schemas/addentityuser_body.ts +4 -3
  250. package/src/generated/schemas/advanceinvoice.ts +167 -168
  251. package/src/generated/schemas/authorizeshopify_body.ts +4 -3
  252. package/src/generated/schemas/calculatedocumentpreview.ts +120 -0
  253. package/src/generated/schemas/checktransactiontype.ts +35 -0
  254. package/src/generated/schemas/creditnote.ts +203 -76
  255. package/src/generated/schemas/customadvanceinvoice.ts +172 -165
  256. package/src/generated/schemas/customcreditnote.ts +183 -155
  257. package/src/generated/schemas/customdeliverynote.ts +166 -0
  258. package/src/generated/schemas/customer.ts +4 -8
  259. package/src/generated/schemas/customestimate.ts +123 -97
  260. package/src/generated/schemas/customincomingpurchasedocument.ts +142 -0
  261. package/src/generated/schemas/custominvoice.ts +183 -154
  262. package/src/generated/schemas/deliverynote.ts +124 -79
  263. package/src/generated/schemas/einvoice.ts +19 -0
  264. package/src/generated/schemas/einvoicingsettings.ts +21 -0
  265. package/src/generated/schemas/einvoicingsupplier.ts +45 -0
  266. package/src/generated/schemas/entity.ts +44 -40
  267. package/src/generated/schemas/entityapikey.ts +1 -3
  268. package/src/generated/schemas/entityuserrole.ts +1 -3
  269. package/src/generated/schemas/estimate.ts +120 -127
  270. package/src/generated/schemas/exportsloveniavodxml_body.ts +4 -3
  271. package/src/generated/schemas/exportsloveniayearlynormiranireport_body.ts +4 -3
  272. package/src/generated/schemas/finadevice.ts +15 -0
  273. package/src/generated/schemas/finalizedocument.ts +52 -0
  274. package/src/generated/schemas/finapremise.ts +15 -0
  275. package/src/generated/schemas/finasettings.ts +1 -3
  276. package/src/generated/schemas/furselectronicdevice.ts +15 -0
  277. package/src/generated/schemas/furssettings.ts +1 -3
  278. package/src/generated/schemas/image.ts +15 -0
  279. package/src/generated/schemas/incomingpurchasedocument.ts +7 -27
  280. package/src/generated/schemas/incomingpurchasedocumentattachment.ts +15 -0
  281. package/src/generated/schemas/incomingpurchasedocumentpayment.ts +1 -3
  282. package/src/generated/schemas/index.ts +20 -5
  283. package/src/generated/schemas/invoice.ts +182 -183
  284. package/src/generated/schemas/item.ts +6 -10
  285. package/src/generated/schemas/legacymigrationauth.ts +18 -0
  286. package/src/generated/schemas/me.ts +2 -24
  287. package/src/generated/schemas/migrationjob.ts +20 -0
  288. package/src/generated/schemas/order.ts +4 -8
  289. package/src/generated/schemas/orderintegration.ts +4 -8
  290. package/src/generated/schemas/payment.ts +4 -8
  291. package/src/generated/schemas/ptatcudseries.ts +1 -3
  292. package/src/generated/schemas/queryentitystats.ts +15 -0
  293. package/src/generated/schemas/recurringinvoice.ts +4 -8
  294. package/src/generated/schemas/registerfursmovablepremise_body.ts +1 -3
  295. package/src/generated/schemas/registerfursrealestatepremise_body.ts +1 -3
  296. package/src/generated/schemas/renderadvanceinvoicepreview_body.ts +10 -16
  297. package/src/generated/schemas/rendercreditnotepreview_body.ts +10 -16
  298. package/src/generated/schemas/renderdeliverynotepreview_body.ts +9 -5
  299. package/src/generated/schemas/renderestimatepreview_body.ts +11 -7
  300. package/src/generated/schemas/renderinvoicepreview_body.ts +10 -16
  301. package/src/generated/schemas/reviewsloveniayearlynormiranireport.ts +15 -0
  302. package/src/generated/schemas/searcheinvoicingcustomer.ts +18 -0
  303. package/src/generated/schemas/senddocument_body.ts +1 -3
  304. package/src/generated/schemas/sendemail_body.ts +2 -24
  305. package/src/generated/schemas/sloveniataxprofile.ts +8 -10
  306. package/src/generated/schemas/starteslogexport_body.ts +4 -3
  307. package/src/generated/schemas/startpdfexport_body.ts +8 -87
  308. package/src/generated/schemas/stripeappconnect_body.ts +4 -3
  309. package/src/generated/schemas/stripeappcreateinvoice_body.ts +4 -6
  310. package/src/generated/schemas/stripeappmarketplaceauthorize.ts +15 -0
  311. package/src/generated/schemas/stripeappupdatesettings_body.ts +6 -6
  312. package/src/generated/schemas/supplier.ts +4 -8
  313. package/src/generated/schemas/syncshopifyorders_body.ts +4 -3
  314. package/src/generated/schemas/tax.ts +6 -8
  315. package/src/generated/schemas/uploadfile_body.ts +1 -3
  316. package/src/generated/schemas/uploadfurscertificate_body.ts +6 -6
  317. package/src/generated/schemas/userfinasettings.ts +1 -3
  318. package/src/generated/schemas/userfurssettings.ts +1 -3
  319. package/src/generated/schemas/userptsettings.ts +1 -3
  320. package/src/generated/schemas/voidinvoice_body.ts +8 -3
  321. package/src/generated/schemas/webhook.ts +4 -8
  322. package/src/generated/schemas/wlsubscriptionbillingemail.ts +17 -0
  323. package/src/hooks/use-duplicate-document.ts +61 -30
  324. package/src/lib/date-only.ts +58 -0
  325. package/src/lib/document-display.ts +18 -0
  326. package/src/lib/payment-display.ts +5 -3
  327. package/src/lib/schemas/shared.ts +11 -0
  328. package/src/providers/wl-subscription-provider.tsx +5 -0
  329. package/src/generated/schemas/account_webhook.ts +0 -43
  330. package/src/generated/schemas/previewadvanceinvoice_body.ts +0 -354
  331. package/src/generated/schemas/previewestimate_body.ts +0 -309
  332. package/src/generated/schemas/registerfinamovablepremise_body.ts +0 -26
  333. package/src/generated/schemas/registerfinarealestatepremise_body.ts +0 -37
  334. package/src/generated/schemas/renderdocument_body.ts +0 -594
@@ -1,5 +1,5 @@
1
1
  import { zodResolver } from "@hookform/resolvers/zod";
2
- import type { CreateCreditNoteRequest, CreditNote } from "@spaceinvoices/js-sdk";
2
+ import type { CreateCreditNoteRequest, CreditNote, UpdateCreditNote } from "@spaceinvoices/js-sdk";
3
3
  import { useQueryClient } from "@tanstack/react-query";
4
4
  import { Check, X } from "lucide-react";
5
5
  import type { ReactNode } from "react";
@@ -21,12 +21,14 @@ import {
21
21
  type PtDocumentInputForm,
22
22
  ptDocumentInputFormSchema,
23
23
  } from "@/ui/lib/pt-document-input";
24
+ import { normalizeLineItemDiscountsForForm } from "@/ui/lib/schemas/shared";
24
25
  import type { ComponentTranslationProps } from "@/ui/lib/translation";
25
26
  import { createTranslation } from "@/ui/lib/translation";
26
27
  import { cn } from "@/ui/lib/utils";
27
28
  import { useEntities } from "@/ui/providers/entities-context";
28
29
  import { useFormFooterRegistration } from "@/ui/providers/form-footer-context";
29
30
  import { CUSTOMERS_CACHE_KEY } from "../../customers/customers.hooks";
31
+ import { withCreditNoteIssueDateValidation } from "../../documents/create/document-date-validation";
30
32
  import {
31
33
  DocumentDetailsSection,
32
34
  DocumentFooterField,
@@ -48,9 +50,21 @@ import {
48
50
  serializePaymentRows,
49
51
  validatePaymentRows,
50
52
  } from "../../documents/create/payment-rows";
53
+ import { prepareDocumentItems } from "../../documents/create/prepare-document-submission";
54
+ import { applyCustomCreateTemplate } from "../../documents/create/custom-create-template";
55
+ import { financialInputsMatchInitial, resolvePreservedExpectedTotal } from "../../documents/create/preserved-expected-total";
51
56
  import { useDocumentCustomerForm } from "../../documents/create/use-document-customer-form";
52
57
  import type { DocumentTypes } from "../../documents/types";
53
- import { useCreateCreditNote } from "../credit-notes.hooks";
58
+ import invoiceDe from "../../invoices/create/locales/de";
59
+ import invoiceEs from "../../invoices/create/locales/es";
60
+ import invoiceFr from "../../invoices/create/locales/fr";
61
+ import invoiceHr from "../../invoices/create/locales/hr";
62
+ import invoiceIt from "../../invoices/create/locales/it";
63
+ import invoiceNl from "../../invoices/create/locales/nl";
64
+ import invoicePl from "../../invoices/create/locales/pl";
65
+ import invoicePt from "../../invoices/create/locales/pt";
66
+ import invoiceSl from "../../invoices/create/locales/sl";
67
+ import { useCreateCreditNote, useCreateCustomCreditNote, useUpdateCreditNote } from "../credit-notes.hooks";
54
68
  import de from "./locales/de";
55
69
  import es from "./locales/es";
56
70
  import fr from "./locales/fr";
@@ -60,25 +74,40 @@ import nl from "./locales/nl";
60
74
  import pl from "./locales/pl";
61
75
  import pt from "./locales/pt";
62
76
  import sl from "./locales/sl";
63
- import { prepareCreditNoteSubmission } from "./prepare-credit-note-submission";
77
+ import { prepareCreditNoteSubmission, prepareCreditNoteUpdateSubmission } from "./prepare-credit-note-submission";
64
78
 
65
79
  const translations = {
66
- sl,
67
- de,
68
- it,
69
- fr,
70
- es,
71
- pt,
72
- nl,
73
- pl,
74
- hr,
80
+ sl: { ...invoiceSl, ...sl },
81
+ de: { ...invoiceDe, ...de },
82
+ it: { ...invoiceIt, ...it },
83
+ fr: { ...invoiceFr, ...fr },
84
+ es: { ...invoiceEs, ...es },
85
+ pt: { ...invoicePt, ...pt },
86
+ nl: { ...invoiceNl, ...nl },
87
+ pl: { ...invoicePl, ...pl },
88
+ hr: { ...invoiceHr, ...hr },
75
89
  } as const;
76
- const createCreditNoteFormSchema = withRequiredDocumentItemFields(
77
- createCreditNoteSchema.extend({
78
- pt: ptDocumentInputFormSchema.optional(),
79
- }),
90
+ const createCreditNoteFormSchema = withCreditNoteIssueDateValidation(
91
+ withRequiredDocumentItemFields(
92
+ createCreditNoteSchema.extend({
93
+ pt: ptDocumentInputFormSchema.optional(),
94
+ }),
95
+ ),
80
96
  );
81
97
 
98
+ function isSameCalendarDate(left: string | Date | undefined, right: string | Date): boolean {
99
+ if (!left) return false;
100
+
101
+ const leftDate = new Date(left);
102
+ const rightDate = new Date(right);
103
+
104
+ return (
105
+ leftDate.getFullYear() === rightDate.getFullYear() &&
106
+ leftDate.getMonth() === rightDate.getMonth() &&
107
+ leftDate.getDate() === rightDate.getDate()
108
+ );
109
+ }
110
+
82
111
  // Form values: extend schema with local-only fields (number is for display, not sent to API)
83
112
  type CreateCreditNoteFormValues = z.infer<typeof createCreditNoteFormSchema> & {
84
113
  number?: string;
@@ -99,6 +128,8 @@ type CreateCreditNoteFormProps = {
99
128
  initialValues?: Partial<CreateCreditNoteRequest>;
100
129
  /** Whether draft actions should be available in the UI */
101
130
  allowDrafts?: boolean;
131
+ mode?: "create" | "edit";
132
+ documentId?: string;
102
133
  /** Optional app-level content rendered inside the details section. */
103
134
  detailsExtras?: ReactNode;
104
135
  /** Request-scoped operator override for embed fiscalization flows. */
@@ -116,6 +147,8 @@ export default function CreateCreditNoteForm({
116
147
  onHeaderActionChange,
117
148
  initialValues,
118
149
  allowDrafts = true,
150
+ mode = "create",
151
+ documentId,
119
152
  detailsExtras,
120
153
  operatorPrefill,
121
154
  translationLocale,
@@ -133,6 +166,7 @@ export default function CreateCreditNoteForm({
133
166
 
134
167
  const { activeEntity } = useEntities();
135
168
  const queryClient = useQueryClient();
169
+ const isEditMode = mode === "edit";
136
170
 
137
171
  // ============================================================================
138
172
  // FURS & FINA Premise Selection (shared hook)
@@ -161,31 +195,67 @@ export default function CreateCreditNoteForm({
161
195
  }, {} as PriceModesMap);
162
196
  }, [initialValues?.items]);
163
197
  const priceModesRef = useRef<PriceModesMap>(initialPriceModes);
198
+ const customCreateTemplate = (initialValues as any)?._custom_create_template;
199
+ const financialInputsMatchSource = useCallback(
200
+ (values: { items?: any[]; currency_code?: string; calculation_mode?: string | null }) =>
201
+ financialInputsMatchInitial({
202
+ initialItems: initialValues?.items,
203
+ currentItems: values.items,
204
+ initialCurrencyCode: initialValues?.currency_code,
205
+ currentCurrencyCode: values.currency_code,
206
+ initialCalculationMode: (initialValues as any)?.calculation_mode ?? null,
207
+ currentCalculationMode: values.calculation_mode ?? null,
208
+ initialPriceModes,
209
+ currentPriceModes: priceModesRef.current,
210
+ }),
211
+ [initialPriceModes, initialValues],
212
+ );
213
+ const getPreservedExpectedTotalWithTax = useCallback(
214
+ (values: { items?: any[]; currency_code?: string; calculation_mode?: string | null }) =>
215
+ resolvePreservedExpectedTotal({
216
+ initialExpectedTotalWithTax: (initialValues as any)?._preserved_expected_total_with_tax,
217
+ initialItems: initialValues?.items,
218
+ currentItems: values.items,
219
+ initialCurrencyCode: initialValues?.currency_code,
220
+ currentCurrencyCode: values.currency_code,
221
+ initialCalculationMode: (initialValues as any)?.calculation_mode ?? null,
222
+ currentCalculationMode: values.calculation_mode ?? null,
223
+ initialPriceModes,
224
+ currentPriceModes: priceModesRef.current,
225
+ }),
226
+ [initialPriceModes, initialValues],
227
+ );
164
228
 
165
229
  // Get default payment terms and footer from entity settings
166
230
  const defaultPaymentTerms = (activeEntity?.settings as any)?.default_credit_note_payment_terms || "";
167
231
  const defaultFooter = (activeEntity?.settings as any)?.document_footer || "";
232
+ const defaultSignature = (activeEntity?.settings as any)?.default_document_signature || "";
168
233
 
169
234
  const form = useForm<CreateCreditNoteFormValues>({
170
235
  // Cast resolver to accept extended form type (includes UI-only fields)
171
236
  resolver: zodResolver(createCreditNoteFormSchema) as Resolver<CreateCreditNoteFormValues>,
172
237
  defaultValues: {
173
- number: "",
238
+ number: (initialValues as any)?.number ?? "",
239
+ calculation_mode: (initialValues as any)?.calculation_mode ?? undefined,
174
240
  date: initialValues?.date || new Date().toISOString(),
175
241
  customer_id: initialValues?.customer_id ?? undefined,
176
242
  // Cast customer to form schema type (API type may have additional fields)
177
243
  customer: (initialValues?.customer as CreateCreditNoteFormValues["customer"]) ?? undefined,
178
244
  items: initialValues?.items?.length
179
245
  ? initialValues.items.map((item: any) => ({
180
- type: item.type,
246
+ type: item.type ?? undefined,
181
247
  name: item.name || "",
182
248
  description: item.description || "",
183
249
  ...(item.type !== "separator"
184
250
  ? {
251
+ item_id: item.item_id ?? undefined,
185
252
  quantity: item.quantity ?? 1,
186
- // Use gross_price if set, otherwise use price
187
253
  price: item.gross_price ?? item.price,
254
+ gross_price: item.gross_price ?? undefined,
255
+ unit: item.unit ?? undefined,
256
+ classification: item.classification ?? undefined,
188
257
  taxes: item.taxes || [],
258
+ discounts: normalizeLineItemDiscountsForForm(item.discounts),
189
259
  }
190
260
  : {}),
191
261
  }))
@@ -198,13 +268,17 @@ export default function CreateCreditNoteForm({
198
268
  taxes: [],
199
269
  },
200
270
  ],
201
- date_service: (initialValues as any)?.date_service || new Date().toISOString(),
271
+ date_service:
272
+ (initialValues as any)?.date_service ??
273
+ (isEditMode ? undefined : (initialValues?.date ?? new Date().toISOString())),
274
+ date_service_to: (initialValues as any)?.date_service_to ?? undefined,
202
275
  currency_code: initialValues?.currency_code || activeEntity?.currency_code || "EUR",
203
276
  reference: (initialValues as any)?.reference ?? "",
204
- note: initialValues?.note ?? "",
277
+ note: initialValues?.note ?? (isEditMode ? "" : ""),
205
278
  tax_clause: (initialValues as any)?.tax_clause ?? "",
206
- payment_terms: initialValues?.payment_terms ?? defaultPaymentTerms,
207
- footer: (initialValues as any)?.footer ?? defaultFooter,
279
+ payment_terms: initialValues?.payment_terms ?? (isEditMode ? "" : defaultPaymentTerms),
280
+ footer: (initialValues as any)?.footer ?? (isEditMode ? "" : defaultFooter),
281
+ signature: (initialValues as any)?.signature ?? (isEditMode ? "" : defaultSignature),
208
282
  pt: ((initialValues as any)?.pt as PtDocumentInputForm | undefined) ?? undefined,
209
283
  },
210
284
  });
@@ -250,15 +324,19 @@ export default function CreateCreditNoteForm({
250
324
  !!fina.isActive && (finaUnifiedNumbering || transactionType == null || transactionType === "domestic");
251
325
  const isFinaNonDomestic = !!fina.isActive && !useFinaNumbering;
252
326
  const isFursActive = furs.isActive && !skipFiscalization;
327
+ const isFiscalizationDateLocked = isFursActive || useFinaNumbering;
328
+ const fiscalizationDateLockReason = useFinaNumbering
329
+ ? t("FINA fiscalized invoices always use the current date")
330
+ : t("FURS fiscalized invoices always use the current date");
253
331
 
254
332
  useEffect(() => {
255
- if (skipPreferenceInitializedRef.current || furs.isLoading) return;
333
+ if (skipPreferenceInitializedRef.current || furs.isLoading || isEditMode) return;
256
334
 
257
335
  skipPreferenceInitializedRef.current = true;
258
336
  if (furs.settings?.default_skip_fiscalization === true) {
259
337
  setSkipFiscalization(true);
260
338
  }
261
- }, [furs.isLoading, furs.settings?.default_skip_fiscalization]);
339
+ }, [furs.isLoading, furs.settings?.default_skip_fiscalization, isEditMode]);
262
340
 
263
341
  useEffect(() => {
264
342
  const skipJustEnabled = skipFiscalization && !previousSkipFiscalizationRef.current;
@@ -312,15 +390,21 @@ export default function CreateCreditNoteForm({
312
390
  const { data: nextNumberData, isLoading: isNextNumberLoading } = useNextDocumentNumber(entityId, "credit_note", {
313
391
  businessPremiseName: activePremiseNameForNumber,
314
392
  electronicDeviceName: activeDeviceNameForNumber,
315
- enabled: !!entityId && !furs.isLoading && furs.isSelectionReady && !fina.isLoading && fina.isSelectionReady,
393
+ enabled:
394
+ !!entityId && !furs.isLoading && furs.isSelectionReady && !fina.isLoading && fina.isSelectionReady && !isEditMode,
316
395
  });
317
396
 
318
397
  // Overall loading state
319
- const isFormDataLoading =
320
- furs.isLoading || !furs.isSelectionReady || fina.isLoading || !fina.isSelectionReady || isNextNumberLoading;
398
+ const isFormDataLoading = isEditMode
399
+ ? false
400
+ : furs.isLoading || !furs.isSelectionReady || fina.isLoading || !fina.isSelectionReady || isNextNumberLoading;
321
401
 
322
402
  useEffect(() => {
323
403
  if (!onHeaderActionChange) return;
404
+ if (isEditMode) {
405
+ onHeaderActionChange(null);
406
+ return;
407
+ }
324
408
 
325
409
  if (furs.isLoading || fina.isLoading) {
326
410
  onHeaderActionChange(null);
@@ -365,7 +449,16 @@ export default function CreateCreditNoteForm({
365
449
  </Tooltip>
366
450
  </TooltipProvider>,
367
451
  );
368
- }, [fina.isLoading, furs.hasPremises, furs.isEnabled, furs.isLoading, onHeaderActionChange, skipFiscalization, t]);
452
+ }, [
453
+ fina.isLoading,
454
+ furs.hasPremises,
455
+ furs.isEnabled,
456
+ furs.isLoading,
457
+ isEditMode,
458
+ onHeaderActionChange,
459
+ skipFiscalization,
460
+ t,
461
+ ]);
369
462
 
370
463
  // Auto-populate tax_clause from entity settings when transaction type changes
371
464
  const effectiveTransactionType = transactionType ?? "domestic";
@@ -373,13 +466,14 @@ export default function CreateCreditNoteForm({
373
466
  useEffect(() => {
374
467
  if (effectiveTransactionType === prevTransactionTypeRef.current) return;
375
468
  prevTransactionTypeRef.current = effectiveTransactionType;
469
+ if (isEditMode) return;
376
470
 
377
471
  const taxClauseDefaults = (activeEntity?.settings as any)?.tax_clause_defaults;
378
472
  if (!taxClauseDefaults) return;
379
473
 
380
474
  const clause = taxClauseDefaults[effectiveTransactionType] ?? "";
381
475
  form.setValue("tax_clause", clause);
382
- }, [effectiveTransactionType, activeEntity, form]);
476
+ }, [effectiveTransactionType, activeEntity, form, isEditMode]);
383
477
 
384
478
  // Clear date_service_to when switching from range to single
385
479
  useEffect(() => {
@@ -401,10 +495,25 @@ export default function CreateCreditNoteForm({
401
495
 
402
496
  // Pre-fill credit note number from preview
403
497
  useEffect(() => {
498
+ if (isEditMode) return;
404
499
  if (nextNumberData?.number) {
405
500
  form.setValue("number", nextNumberData.number);
406
501
  }
407
- }, [nextNumberData?.number, form]);
502
+ }, [nextNumberData?.number, form, isEditMode]);
503
+
504
+ useEffect(() => {
505
+ if (isEditMode) return;
506
+ if (!isFiscalizationDateLocked) return;
507
+
508
+ const today = new Date();
509
+ if (isSameCalendarDate(form.getValues("date"), today)) return;
510
+
511
+ form.setValue("date", today.toISOString(), {
512
+ shouldDirty: true,
513
+ shouldTouch: false,
514
+ shouldValidate: true,
515
+ });
516
+ }, [form, isEditMode, isFiscalizationDateLocked]);
408
517
 
409
518
  const { mutate: createCreditNote, isPending } = useCreateCreditNote({
410
519
  entityId,
@@ -420,10 +529,42 @@ export default function CreateCreditNoteForm({
420
529
  },
421
530
  onError,
422
531
  });
532
+ const { mutate: createCustomCreditNote, isPending: isCreateCustomPending } = useCreateCustomCreditNote({
533
+ entityId,
534
+ onSuccess: (data) => {
535
+ furs.saveCombo();
536
+ fina.saveCombo();
537
+ if (data.customer_id) {
538
+ queryClient.invalidateQueries({ queryKey: [CUSTOMERS_CACHE_KEY] });
539
+ }
540
+ onSuccess?.(data);
541
+ },
542
+ onError,
543
+ });
544
+ const { mutate: updateCreditNote, isPending: isUpdatePending } = useUpdateCreditNote({
545
+ entityId,
546
+ onSuccess,
547
+ onError,
548
+ });
423
549
 
424
550
  // Shared submit logic for both regular save and save as draft
425
551
  const submitCreditNote = useCallback(
426
552
  (values: CreateCreditNoteFormValues, isDraft: boolean) => {
553
+ if (isEditMode) {
554
+ if (!documentId) {
555
+ throw new Error("Credit note edit mode requires a documentId");
556
+ }
557
+
558
+ const updatePayload = prepareCreditNoteUpdateSubmission(values as any, {
559
+ originalCustomer,
560
+ wasCustomerFormShown: showCustomerForm,
561
+ priceModes: priceModesRef.current,
562
+ }) as UpdateCreditNote;
563
+
564
+ updateCreditNote({ id: documentId, data: updatePayload });
565
+ return;
566
+ }
567
+
427
568
  // Build FURS options (skip for drafts; user can also skip fiscalization explicitly)
428
569
  const fursOptions = buildFursOptions({
429
570
  isDraft,
@@ -463,6 +604,12 @@ export default function CreateCreditNoteForm({
463
604
  priceModes: priceModesRef.current,
464
605
  isDraft,
465
606
  });
607
+ const preservedExpectedTotalWithTax = getPreservedExpectedTotalWithTax(values);
608
+ if (preservedExpectedTotalWithTax !== undefined) {
609
+ (payload as any).expected_total_with_tax = preservedExpectedTotalWithTax;
610
+ } else {
611
+ delete (payload as any).expected_total_with_tax;
612
+ }
466
613
 
467
614
  // Add FURS data to payload
468
615
  if (fursOptions) {
@@ -474,12 +621,20 @@ export default function CreateCreditNoteForm({
474
621
  (payload as any).fina = finaOptions;
475
622
  }
476
623
 
477
- createCreditNote(payload as CreateCreditNoteRequest);
624
+ if (customCreateTemplate && financialInputsMatchSource(values)) {
625
+ delete (payload as any).expected_total_with_tax;
626
+ createCustomCreditNote(applyCustomCreateTemplate(payload as any, customCreateTemplate));
627
+ } else {
628
+ createCreditNote(payload as CreateCreditNoteRequest);
629
+ }
478
630
  },
479
631
  [
480
632
  createCreditNote,
633
+ createCustomCreditNote,
634
+ documentId,
481
635
  fina,
482
636
  furs,
637
+ isEditMode,
483
638
  markAsPaid,
484
639
  originalCustomer,
485
640
  paymentDocumentTotal,
@@ -487,6 +642,10 @@ export default function CreateCreditNoteForm({
487
642
  showCustomerForm,
488
643
  skipFiscalization,
489
644
  operatorPrefill,
645
+ customCreateTemplate,
646
+ financialInputsMatchSource,
647
+ getPreservedExpectedTotalWithTax,
648
+ updateCreditNote,
490
649
  useFinaNumbering,
491
650
  ],
492
651
  );
@@ -507,20 +666,22 @@ export default function CreateCreditNoteForm({
507
666
 
508
667
  useFormFooterRegistration({
509
668
  formId: "create-credit-note-form",
510
- isPending,
669
+ isPending: isPending || isCreateCustomPending || isUpdatePending,
511
670
  isDirty: form.formState.isDirty || !!initialValues,
512
- label: t("Save"),
513
- secondaryAction: allowDrafts
514
- ? {
515
- label: t("Save as Draft"),
516
- onClick: handleSaveAsDraft,
517
- isPending: isDraftPending,
518
- }
519
- : undefined,
671
+ label: isEditMode ? t("Update") : t("Save"),
672
+ secondaryAction:
673
+ allowDrafts && !isEditMode
674
+ ? {
675
+ label: t("Save as Draft"),
676
+ onClick: handleSaveAsDraft,
677
+ isPending: isDraftPending,
678
+ }
679
+ : undefined,
520
680
  });
521
681
 
522
682
  // Set default note and payment terms from entity settings when entity data is available
523
683
  useEffect(() => {
684
+ if (isEditMode) return;
524
685
  const entityDefaultNote = (activeEntity?.settings as any)?.default_credit_note_note;
525
686
  if (entityDefaultNote && !form.getValues("note")) {
526
687
  form.setValue("note", entityDefaultNote);
@@ -537,7 +698,7 @@ export default function CreateCreditNoteForm({
537
698
  if (entityDefaultSignature && !form.getValues("signature")) {
538
699
  form.setValue("signature", entityDefaultSignature);
539
700
  }
540
- }, [activeEntity, form]);
701
+ }, [activeEntity, form, isEditMode]);
541
702
 
542
703
  // Auto-add tax field for tax subject entities
543
704
  useEffect(() => {
@@ -549,31 +710,32 @@ export default function CreateCreditNoteForm({
549
710
  }
550
711
  }, [activeEntity?.is_tax_subject, form]);
551
712
 
552
- const buildPreviewPayload = useCallback((values: CreateCreditNoteFormValues): CreditNotePreviewPayload => {
553
- const currentItems = values.items || [];
554
-
555
- const transformedItems = currentItems.map((item: any, index: number) => {
556
- const { price, ...rest } = item;
557
- const isGross = priceModesRef.current[index] ?? false;
558
- return isGross ? { ...rest, gross_price: price } : { ...rest, price };
559
- });
560
-
561
- return {
562
- number: values.number,
563
- date: values.date,
564
- date_service: (values as any).date_service,
565
- date_service_to: (values as any).date_service_to,
566
- customer_id: values.customer_id,
567
- customer: values.customer,
568
- items: transformedItems,
569
- currency_code: values.currency_code,
570
- reference: values.reference,
571
- note: values.note,
572
- payment_terms: values.payment_terms,
573
- signature: values.signature,
574
- ...(normalizePtDocumentInput(values.pt) ? { pt: normalizePtDocumentInput(values.pt) } : {}),
575
- };
576
- }, []);
713
+ const buildPreviewPayload = useCallback(
714
+ (values: CreateCreditNoteFormValues): CreditNotePreviewPayload => {
715
+ const preservedExpectedTotalWithTax = getPreservedExpectedTotalWithTax(values);
716
+ return {
717
+ number: values.number,
718
+ date: values.date,
719
+ date_service: (values as any).date_service,
720
+ date_service_to: (values as any).date_service_to,
721
+ customer_id: values.customer_id,
722
+ customer: values.customer,
723
+ items: prepareDocumentItems(values.items, priceModesRef.current),
724
+ currency_code: values.currency_code,
725
+ reference: values.reference,
726
+ note: values.note,
727
+ tax_clause: values.tax_clause,
728
+ payment_terms: values.payment_terms,
729
+ signature: values.signature,
730
+ footer: values.footer,
731
+ ...(preservedExpectedTotalWithTax !== undefined
732
+ ? { expected_total_with_tax: preservedExpectedTotalWithTax }
733
+ : {}),
734
+ ...(normalizePtDocumentInput(values.pt) ? { pt: normalizePtDocumentInput(values.pt) } : {}),
735
+ };
736
+ },
737
+ [getPreservedExpectedTotalWithTax],
738
+ );
577
739
 
578
740
  const emitPreviewPayload = useCallback((payload: CreditNotePreviewPayload) => {
579
741
  const callback = onChangeRef.current;
@@ -670,7 +832,7 @@ export default function CreateCreditNoteForm({
670
832
  t={t}
671
833
  locale={locale}
672
834
  fursInline={
673
- furs.isEnabled && furs.hasPremises
835
+ !isEditMode && furs.isEnabled && furs.hasPremises
674
836
  ? {
675
837
  premises: furs.activePremises.map((p) => ({
676
838
  id: p.id,
@@ -693,7 +855,7 @@ export default function CreateCreditNoteForm({
693
855
  onDateTypeChange: setServiceDateType,
694
856
  }}
695
857
  finaInline={
696
- useFinaNumbering
858
+ !isEditMode && useFinaNumbering
697
859
  ? {
698
860
  premises: fina.activePremises.map((p: any) => ({
699
861
  id: p.id,
@@ -710,24 +872,30 @@ export default function CreateCreditNoteForm({
710
872
  }
711
873
  : undefined
712
874
  }
875
+ dateLock={{
876
+ isLocked: !isEditMode && isFiscalizationDateLocked,
877
+ reason: !isEditMode ? fiscalizationDateLockReason : "",
878
+ }}
713
879
  >
714
880
  {/* Credit note specific: Mark as paid section (UI-only state, not in form schema) */}
715
- <MarkAsPaidSection
716
- checked={markAsPaid}
717
- onCheckedChange={(checked) => {
718
- setMarkAsPaid(checked);
719
- setPaymentValidationMessage(undefined);
720
- }}
721
- paymentRows={paymentRows}
722
- onPaymentRowsChange={(rows) => {
723
- setPaymentRows(rows);
724
- setPaymentValidationMessage(undefined);
725
- }}
726
- documentTotal={paymentDocumentTotal}
727
- t={t}
728
- alwaysShowPaymentType={!!fina.isActive}
729
- validationMessage={paymentValidationMessage}
730
- />
881
+ {!isEditMode && (
882
+ <MarkAsPaidSection
883
+ checked={markAsPaid}
884
+ onCheckedChange={(checked) => {
885
+ setMarkAsPaid(checked);
886
+ setPaymentValidationMessage(undefined);
887
+ }}
888
+ paymentRows={paymentRows}
889
+ onPaymentRowsChange={(rows) => {
890
+ setPaymentRows(rows);
891
+ setPaymentValidationMessage(undefined);
892
+ }}
893
+ documentTotal={paymentDocumentTotal}
894
+ t={t}
895
+ alwaysShowPaymentType={!!fina.isActive}
896
+ validationMessage={paymentValidationMessage}
897
+ />
898
+ )}
731
899
  {detailsExtras}
732
900
  </DocumentDetailsSection>
733
901
  </div>
@@ -10,6 +10,7 @@ export default {
10
10
  Items: "Артикули",
11
11
  "Add item": "Add item",
12
12
  Save: "Запази",
13
+ Update: "Актуализирай",
13
14
  "Save as Draft": "Save as Draft",
14
15
  Quantity: "Quantity",
15
16
  Price: "Цена",
@@ -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: "Описание",
26
- "Mark as Paid": "Mark as Paid",
27
- Paid: "Платено",
28
- "Credit note will be marked as fully paid upon creation": "Credit note will be marked as fully paid upon creation",
29
- "Payment Type": "Payment Type",
27
+ "Mark as Paid": "Маркирай като платено",
28
+ "Paid": "Платено",
29
+ "Credit note will be marked as fully paid upon creation": "Кредитното известие ще бъде маркирано като напълно платено при създаване",
30
+ "Payment Type": "Вид плащане",
30
31
  "Select payment type": "Изберете тип плащане",
31
- Cash: "В брой",
32
+ "Cash": "В брой",
32
33
  "Bank Transfer": "Банков превод",
33
- Card: "Карта",
34
- Check: "Чек",
35
- Other: "Друго",
34
+ "Card": "Карта",
35
+ "Check": "Чек",
36
+ "Other": "Друго",
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": "Моля, изберете",
89
+ "Amount": "Сума",
90
+ "Add payment": "Добави плащане",
91
+ "Recorded now": "Регистрирано сега",
92
+ "Remaining due": "Остава за плащане",
93
+ "Remaining to allocate": "Остава за разпределяне",
94
+ "This document must be fully paid on creation": "Този документ трябва да бъде напълно платен при създаване",
95
+ "Record one or more payments on creation": "Регистрирайте едно или повече плащания при създаване",
96
+ // Service date
97
+ "Service Date": "Дата на услугата",
98
+ "Service Period": "Период на услугата",
99
+ From: "От",
100
+ To: "До",
87
101
  } as const;