@spaceinvoices/react-ui 0.4.11 → 0.4.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (738) hide show
  1. package/cli/dist/index.js +1 -1
  2. package/package.json +3 -2
  3. package/registry.json +30 -31
  4. package/src/common/autocomplete.tsx +48 -26
  5. package/src/components/activities/locales/bg.ts +21 -0
  6. package/src/components/activities/locales/cs.ts +21 -0
  7. package/src/components/activities/locales/en.ts +21 -0
  8. package/src/components/activities/locales/et.ts +21 -0
  9. package/src/components/activities/locales/fi.ts +21 -0
  10. package/src/components/activities/locales/is.ts +21 -0
  11. package/src/components/activities/locales/nb.ts +21 -0
  12. package/src/components/activities/locales/sk.ts +21 -0
  13. package/src/components/activities/locales/sv.ts +21 -0
  14. package/src/components/advance-invoices/advance-invoices.hooks.ts +36 -46
  15. package/src/components/advance-invoices/create/create-advance-invoice-form.tsx +452 -115
  16. package/src/components/advance-invoices/create/locales/bg.ts +56 -0
  17. package/src/components/advance-invoices/create/locales/cs.ts +56 -0
  18. package/src/components/advance-invoices/create/locales/de.ts +15 -7
  19. package/src/components/advance-invoices/create/locales/en.ts +56 -0
  20. package/src/components/advance-invoices/create/locales/es.ts +15 -7
  21. package/src/components/advance-invoices/create/locales/et.ts +56 -0
  22. package/src/components/advance-invoices/create/locales/fi.ts +56 -0
  23. package/src/components/advance-invoices/create/locales/fr.ts +16 -8
  24. package/src/components/advance-invoices/create/locales/hr.ts +29 -21
  25. package/src/components/advance-invoices/create/locales/is.ts +56 -0
  26. package/src/components/advance-invoices/create/locales/it.ts +15 -7
  27. package/src/components/advance-invoices/create/locales/nb.ts +56 -0
  28. package/src/components/advance-invoices/create/locales/nl.ts +15 -7
  29. package/src/components/advance-invoices/create/locales/pl.ts +17 -9
  30. package/src/components/advance-invoices/create/locales/pt.ts +16 -8
  31. package/src/components/advance-invoices/create/locales/sk.ts +56 -0
  32. package/src/components/advance-invoices/create/locales/sl.ts +23 -12
  33. package/src/components/advance-invoices/create/locales/sv.ts +56 -0
  34. package/src/components/advance-invoices/create/prepare-advance-invoice-submission.ts +62 -2
  35. package/src/components/advance-invoices/list/list-row-actions.tsx +48 -16
  36. package/src/components/advance-invoices/list/list-table.tsx +35 -9
  37. package/src/components/advance-invoices/list/locales/bg.ts +51 -0
  38. package/src/components/advance-invoices/list/locales/cs.ts +51 -0
  39. package/src/components/advance-invoices/list/locales/en.ts +33 -2
  40. package/src/components/advance-invoices/list/locales/et.ts +51 -0
  41. package/src/components/advance-invoices/list/locales/fi.ts +51 -0
  42. package/src/components/advance-invoices/list/locales/hr.ts +15 -15
  43. package/src/components/advance-invoices/list/locales/is.ts +51 -0
  44. package/src/components/advance-invoices/list/locales/nb.ts +51 -0
  45. package/src/components/advance-invoices/list/locales/sk.ts +51 -0
  46. package/src/components/advance-invoices/list/locales/sv.ts +51 -0
  47. package/src/components/advance-invoices/list/use-advance-invoice-download.ts +3 -5
  48. package/src/components/common/autocomplete-locales.ts +101 -0
  49. package/src/components/company-registry/company-registry.hooks.ts +3 -7
  50. package/src/components/credit-notes/create/create-credit-note-form.tsx +437 -80
  51. package/src/components/credit-notes/create/locales/bg.ts +101 -0
  52. package/src/components/credit-notes/create/locales/cs.ts +101 -0
  53. package/src/components/credit-notes/create/locales/de.ts +20 -7
  54. package/src/components/credit-notes/create/locales/en.ts +101 -0
  55. package/src/components/credit-notes/create/locales/es.ts +20 -7
  56. package/src/components/credit-notes/create/locales/et.ts +101 -0
  57. package/src/components/credit-notes/create/locales/fi.ts +101 -0
  58. package/src/components/credit-notes/create/locales/fr.ts +21 -8
  59. package/src/components/credit-notes/create/locales/hr.ts +41 -28
  60. package/src/components/credit-notes/create/locales/is.ts +101 -0
  61. package/src/components/credit-notes/create/locales/it.ts +20 -7
  62. package/src/components/credit-notes/create/locales/nb.ts +101 -0
  63. package/src/components/credit-notes/create/locales/nl.ts +20 -7
  64. package/src/components/credit-notes/create/locales/pl.ts +22 -9
  65. package/src/components/credit-notes/create/locales/pt.ts +21 -8
  66. package/src/components/credit-notes/create/locales/sk.ts +101 -0
  67. package/src/components/credit-notes/create/locales/sl.ts +28 -14
  68. package/src/components/credit-notes/create/locales/sv.ts +101 -0
  69. package/src/components/credit-notes/create/prepare-credit-note-submission.ts +66 -0
  70. package/src/components/credit-notes/credit-notes.hooks.ts +34 -3
  71. package/src/components/credit-notes/list/list-row-actions.tsx +19 -7
  72. package/src/components/credit-notes/list/list-table.tsx +60 -8
  73. package/src/components/credit-notes/list/locales/bg.ts +48 -0
  74. package/src/components/credit-notes/list/locales/cs.ts +48 -0
  75. package/src/components/credit-notes/list/locales/en.ts +31 -2
  76. package/src/components/credit-notes/list/locales/et.ts +48 -0
  77. package/src/components/credit-notes/list/locales/fi.ts +48 -0
  78. package/src/components/credit-notes/list/locales/hr.ts +12 -12
  79. package/src/components/credit-notes/list/locales/is.ts +48 -0
  80. package/src/components/credit-notes/list/locales/nb.ts +48 -0
  81. package/src/components/credit-notes/list/locales/sk.ts +48 -0
  82. package/src/components/credit-notes/list/locales/sv.ts +48 -0
  83. package/src/components/credit-notes/list/use-credit-note-download.ts +3 -5
  84. package/src/components/customers/create-customer-form/locales/bg.ts +21 -0
  85. package/src/components/customers/create-customer-form/locales/cs.ts +21 -0
  86. package/src/components/customers/create-customer-form/locales/en.ts +21 -0
  87. package/src/components/customers/create-customer-form/locales/et.ts +21 -0
  88. package/src/components/customers/create-customer-form/locales/fi.ts +21 -0
  89. package/src/components/customers/create-customer-form/locales/hr.ts +11 -11
  90. package/src/components/customers/create-customer-form/locales/is.ts +21 -0
  91. package/src/components/customers/create-customer-form/locales/nb.ts +21 -0
  92. package/src/components/customers/create-customer-form/locales/sk.ts +21 -0
  93. package/src/components/customers/create-customer-form/locales/sv.ts +21 -0
  94. package/src/components/customers/customer-autocomplete.tsx +32 -4
  95. package/src/components/customers/customer-list-table/customer-list-table.tsx +8 -6
  96. package/src/components/customers/customer-list-table/locales/bg.ts +25 -0
  97. package/src/components/customers/customer-list-table/locales/cs.ts +25 -0
  98. package/src/components/customers/customer-list-table/locales/en.ts +17 -2
  99. package/src/components/customers/customer-list-table/locales/et.ts +25 -0
  100. package/src/components/customers/customer-list-table/locales/fi.ts +25 -0
  101. package/src/components/customers/customer-list-table/locales/hr.ts +11 -11
  102. package/src/components/customers/customer-list-table/locales/is.ts +25 -0
  103. package/src/components/customers/customer-list-table/locales/nb.ts +25 -0
  104. package/src/components/customers/customer-list-table/locales/sk.ts +25 -0
  105. package/src/components/customers/customer-list-table/locales/sv.ts +25 -0
  106. package/src/components/customers/customers.hooks.ts +14 -17
  107. package/src/components/customers/edit-customer-form/locales/bg.ts +13 -0
  108. package/src/components/customers/edit-customer-form/locales/cs.ts +13 -0
  109. package/src/components/customers/edit-customer-form/locales/en.ts +13 -0
  110. package/src/components/customers/edit-customer-form/locales/et.ts +13 -0
  111. package/src/components/customers/edit-customer-form/locales/fi.ts +13 -0
  112. package/src/components/customers/edit-customer-form/locales/hr.ts +5 -5
  113. package/src/components/customers/edit-customer-form/locales/is.ts +13 -0
  114. package/src/components/customers/edit-customer-form/locales/nb.ts +13 -0
  115. package/src/components/customers/edit-customer-form/locales/sk.ts +13 -0
  116. package/src/components/customers/edit-customer-form/locales/sv.ts +13 -0
  117. package/src/components/dashboard/collection-rate-card/collection-rate-card.tsx +7 -6
  118. package/src/components/dashboard/collection-rate-card/locales/en.ts +3 -0
  119. package/src/components/dashboard/collection-rate-card/use-collection-rate.ts +8 -7
  120. package/src/components/dashboard/invoice-status-chart/invoice-status-chart.tsx +7 -4
  121. package/src/components/dashboard/invoice-status-chart/locales/bg.ts +5 -5
  122. package/src/components/dashboard/invoice-status-chart/locales/cs.ts +5 -5
  123. package/src/components/dashboard/invoice-status-chart/locales/de.ts +1 -1
  124. package/src/components/dashboard/invoice-status-chart/locales/en.ts +10 -0
  125. package/src/components/dashboard/invoice-status-chart/locales/es.ts +1 -1
  126. package/src/components/dashboard/invoice-status-chart/locales/et.ts +5 -5
  127. package/src/components/dashboard/invoice-status-chart/locales/fi.ts +5 -5
  128. package/src/components/dashboard/invoice-status-chart/locales/fr.ts +1 -1
  129. package/src/components/dashboard/invoice-status-chart/locales/hr.ts +5 -5
  130. package/src/components/dashboard/invoice-status-chart/locales/is.ts +5 -5
  131. package/src/components/dashboard/invoice-status-chart/locales/it.ts +1 -1
  132. package/src/components/dashboard/invoice-status-chart/locales/nb.ts +5 -5
  133. package/src/components/dashboard/invoice-status-chart/locales/nl.ts +1 -1
  134. package/src/components/dashboard/invoice-status-chart/locales/pl.ts +1 -1
  135. package/src/components/dashboard/invoice-status-chart/locales/pt.ts +1 -1
  136. package/src/components/dashboard/invoice-status-chart/locales/sk.ts +5 -5
  137. package/src/components/dashboard/invoice-status-chart/locales/sl.ts +1 -1
  138. package/src/components/dashboard/invoice-status-chart/locales/sv.ts +5 -5
  139. package/src/components/dashboard/payment-methods-chart/locales/bg.ts +5 -5
  140. package/src/components/dashboard/payment-methods-chart/locales/cs.ts +5 -5
  141. package/src/components/dashboard/payment-methods-chart/locales/en.ts +12 -0
  142. package/src/components/dashboard/payment-methods-chart/locales/et.ts +5 -5
  143. package/src/components/dashboard/payment-methods-chart/locales/fi.ts +6 -6
  144. package/src/components/dashboard/payment-methods-chart/locales/hr.ts +3 -3
  145. package/src/components/dashboard/payment-methods-chart/locales/is.ts +5 -5
  146. package/src/components/dashboard/payment-methods-chart/locales/nb.ts +5 -5
  147. package/src/components/dashboard/payment-methods-chart/locales/sk.ts +5 -5
  148. package/src/components/dashboard/payment-methods-chart/locales/sv.ts +5 -5
  149. package/src/components/dashboard/payment-methods-chart/payment-methods-chart.tsx +4 -3
  150. package/src/components/dashboard/payment-trend-chart/locales/bg.ts +1 -1
  151. package/src/components/dashboard/payment-trend-chart/locales/cs.ts +1 -1
  152. package/src/components/dashboard/payment-trend-chart/locales/en.ts +6 -0
  153. package/src/components/dashboard/payment-trend-chart/locales/et.ts +1 -1
  154. package/src/components/dashboard/payment-trend-chart/locales/fi.ts +1 -1
  155. package/src/components/dashboard/payment-trend-chart/locales/is.ts +1 -1
  156. package/src/components/dashboard/payment-trend-chart/locales/nb.ts +1 -1
  157. package/src/components/dashboard/payment-trend-chart/locales/sk.ts +1 -1
  158. package/src/components/dashboard/payment-trend-chart/locales/sv.ts +1 -1
  159. package/src/components/dashboard/payment-trend-chart/payment-trend-chart.tsx +4 -3
  160. package/src/components/dashboard/payment-trend-chart/use-payment-trend.ts +12 -9
  161. package/src/components/dashboard/revenue-card.tsx +3 -3
  162. package/src/components/dashboard/revenue-trend-chart/locales/bg.ts +1 -1
  163. package/src/components/dashboard/revenue-trend-chart/locales/cs.ts +1 -1
  164. package/src/components/dashboard/revenue-trend-chart/locales/en.ts +6 -0
  165. package/src/components/dashboard/revenue-trend-chart/locales/et.ts +1 -1
  166. package/src/components/dashboard/revenue-trend-chart/locales/fi.ts +1 -1
  167. package/src/components/dashboard/revenue-trend-chart/locales/is.ts +1 -1
  168. package/src/components/dashboard/revenue-trend-chart/locales/nb.ts +1 -1
  169. package/src/components/dashboard/revenue-trend-chart/locales/sk.ts +1 -1
  170. package/src/components/dashboard/revenue-trend-chart/locales/sv.ts +1 -1
  171. package/src/components/dashboard/revenue-trend-chart/revenue-trend-chart.tsx +4 -3
  172. package/src/components/dashboard/revenue-trend-chart/use-revenue-trend.ts +4 -3
  173. package/src/components/dashboard/shared/local-date.ts +11 -0
  174. package/src/components/dashboard/shared/use-revenue-data.ts +6 -5
  175. package/src/components/dashboard/shared/use-stats-query.ts +7 -11
  176. package/src/components/dashboard/stat-card.tsx +3 -3
  177. package/src/components/dashboard/tax-collected-card/tax-collected-card.tsx +11 -9
  178. package/src/components/dashboard/tax-collected-card/use-tax-collected.ts +3 -2
  179. package/src/components/dashboard/top-customers-chart/locales/bg.ts +2 -2
  180. package/src/components/dashboard/top-customers-chart/locales/cs.ts +2 -2
  181. package/src/components/dashboard/top-customers-chart/locales/en.ts +7 -0
  182. package/src/components/dashboard/top-customers-chart/locales/et.ts +2 -2
  183. package/src/components/dashboard/top-customers-chart/locales/fi.ts +2 -2
  184. package/src/components/dashboard/top-customers-chart/locales/is.ts +2 -2
  185. package/src/components/dashboard/top-customers-chart/locales/nb.ts +2 -2
  186. package/src/components/dashboard/top-customers-chart/locales/sk.ts +2 -2
  187. package/src/components/dashboard/top-customers-chart/locales/sv.ts +2 -2
  188. package/src/components/dashboard/top-customers-chart/top-customers-chart.tsx +4 -3
  189. package/src/components/dashboard/top-customers-chart/use-top-customers.ts +7 -20
  190. package/src/components/delivery-notes/create/create-delivery-note-form.tsx +179 -47
  191. package/src/components/delivery-notes/create/locales/bg.ts +69 -0
  192. package/src/components/delivery-notes/create/locales/cs.ts +69 -0
  193. package/src/components/delivery-notes/create/locales/de.ts +1 -0
  194. package/src/components/delivery-notes/create/locales/en.ts +69 -0
  195. package/src/components/delivery-notes/create/locales/es.ts +1 -0
  196. package/src/components/delivery-notes/create/locales/et.ts +69 -0
  197. package/src/components/delivery-notes/create/locales/fi.ts +69 -0
  198. package/src/components/delivery-notes/create/locales/fr.ts +1 -0
  199. package/src/components/delivery-notes/create/locales/hr.ts +7 -6
  200. package/src/components/delivery-notes/create/locales/is.ts +69 -0
  201. package/src/components/delivery-notes/create/locales/it.ts +1 -0
  202. package/src/components/delivery-notes/create/locales/nb.ts +69 -0
  203. package/src/components/delivery-notes/create/locales/nl.ts +1 -0
  204. package/src/components/delivery-notes/create/locales/pl.ts +1 -0
  205. package/src/components/delivery-notes/create/locales/pt.ts +1 -0
  206. package/src/components/delivery-notes/create/locales/sk.ts +69 -0
  207. package/src/components/delivery-notes/create/locales/sl.ts +6 -5
  208. package/src/components/delivery-notes/create/locales/sv.ts +69 -0
  209. package/src/components/delivery-notes/create/prepare-delivery-note-submission.ts +34 -1
  210. package/src/components/delivery-notes/delivery-notes.hooks.ts +34 -3
  211. package/src/components/delivery-notes/list/list-row-actions.tsx +62 -16
  212. package/src/components/delivery-notes/list/list-table.tsx +44 -10
  213. package/src/components/delivery-notes/list/locales/bg.ts +40 -0
  214. package/src/components/delivery-notes/list/locales/cs.ts +40 -0
  215. package/src/components/delivery-notes/list/locales/et.ts +40 -0
  216. package/src/components/delivery-notes/list/locales/fi.ts +40 -0
  217. package/src/components/delivery-notes/list/locales/is.ts +40 -0
  218. package/src/components/delivery-notes/list/locales/nb.ts +40 -0
  219. package/src/components/delivery-notes/list/locales/sk.ts +40 -0
  220. package/src/components/delivery-notes/list/locales/sv.ts +40 -0
  221. package/src/components/delivery-notes/list/use-delivery-note-download.ts +3 -5
  222. package/src/components/documents/create/custom-create-template.ts +114 -0
  223. package/src/components/documents/create/document-add-item-form.tsx +266 -153
  224. package/src/components/documents/create/document-add-item-tax-rate-field.tsx +3 -3
  225. package/src/components/documents/create/document-date-validation.ts +111 -0
  226. package/src/components/documents/create/document-details-section.tsx +117 -54
  227. package/src/components/documents/create/document-form-item.ts +67 -0
  228. package/src/components/documents/create/document-item-validation.ts +54 -0
  229. package/src/components/documents/create/document-items-section.tsx +44 -6
  230. package/src/components/documents/create/document-recipient-section.tsx +10 -2
  231. package/src/components/documents/create/form-types.ts +2 -2
  232. package/src/components/documents/create/linked-documents-info.tsx +6 -14
  233. package/src/components/documents/create/live-preview.tsx +22 -18
  234. package/src/components/documents/create/mark-as-paid-section.tsx +80 -20
  235. package/src/components/documents/create/payment-rows.ts +321 -0
  236. package/src/components/documents/create/prepare-document-submission.ts +160 -109
  237. package/src/components/documents/create/prepare-preview-data.ts +12 -0
  238. package/src/components/documents/create/preserved-expected-total.ts +90 -0
  239. package/src/components/documents/create/scroll-to-first-invalid-field.ts +27 -0
  240. package/src/components/documents/create/smart-code-insert-button.tsx +5 -53
  241. package/src/components/documents/create/use-document-customer-form.ts +74 -25
  242. package/src/components/documents/documents.hooks.ts +3 -5
  243. package/src/components/documents/index.ts +1 -0
  244. package/src/components/documents/public/index.ts +1 -0
  245. package/src/components/documents/public/public-document-summary.tsx +336 -0
  246. package/src/components/documents/shared/document-preview-display.tsx +65 -39
  247. package/src/components/documents/shared/index.ts +6 -1
  248. package/src/components/documents/shared/scaled-document-preview.tsx +33 -19
  249. package/src/components/documents/types.ts +24 -0
  250. package/src/components/documents/view/document-actions-bar.tsx +251 -63
  251. package/src/components/documents/view/document-activities-list.tsx +23 -11
  252. package/src/components/documents/view/document-details-card.tsx +11 -39
  253. package/src/components/documents/view/document-payments-list.tsx +114 -57
  254. package/src/components/documents/view/document-relations-list.tsx +26 -6
  255. package/src/components/documents/view/document-sidebar.tsx +25 -3
  256. package/src/components/documents/view/document-version-history.tsx +137 -0
  257. package/src/components/documents/view/index.ts +1 -0
  258. package/src/components/documents/view/locales/bg.ts +143 -0
  259. package/src/components/documents/view/locales/cs.ts +143 -0
  260. package/src/components/documents/view/locales/de.ts +13 -0
  261. package/src/components/documents/view/locales/en.ts +143 -0
  262. package/src/components/documents/view/locales/es.ts +13 -0
  263. package/src/components/documents/view/locales/et.ts +143 -0
  264. package/src/components/documents/view/locales/fi.ts +143 -0
  265. package/src/components/documents/view/locales/fr.ts +13 -0
  266. package/src/components/documents/view/locales/hr.ts +18 -5
  267. package/src/components/documents/view/locales/is.ts +143 -0
  268. package/src/components/documents/view/locales/it.ts +13 -0
  269. package/src/components/documents/view/locales/nb.ts +143 -0
  270. package/src/components/documents/view/locales/nl.ts +13 -0
  271. package/src/components/documents/view/locales/pl.ts +13 -0
  272. package/src/components/documents/view/locales/pt.ts +13 -0
  273. package/src/components/documents/view/locales/sk.ts +143 -0
  274. package/src/components/documents/view/locales/sl.ts +21 -8
  275. package/src/components/documents/view/locales/sv.ts +143 -0
  276. package/src/components/documents/view/use-document-download.ts +18 -17
  277. package/src/components/entities/create-entity-form.tsx +200 -12
  278. package/src/components/entities/entities.hooks.ts +15 -7
  279. package/src/components/entities/entity-settings-form/entity-settings-form.tsx +121 -65
  280. package/src/components/entities/entity-settings-form/input-with-preview.tsx +28 -4
  281. package/src/components/entities/entity-settings-form/locales/bg.ts +206 -0
  282. package/src/components/entities/entity-settings-form/locales/cs.ts +206 -0
  283. package/src/components/entities/entity-settings-form/locales/de.ts +17 -3
  284. package/src/components/entities/entity-settings-form/locales/en.ts +206 -0
  285. package/src/components/entities/entity-settings-form/locales/es.ts +15 -3
  286. package/src/components/entities/entity-settings-form/locales/et.ts +205 -0
  287. package/src/components/entities/entity-settings-form/locales/fi.ts +206 -0
  288. package/src/components/entities/entity-settings-form/locales/fr.ts +15 -3
  289. package/src/components/entities/entity-settings-form/locales/hr.ts +23 -11
  290. package/src/components/entities/entity-settings-form/locales/is.ts +206 -0
  291. package/src/components/entities/entity-settings-form/locales/it.ts +15 -3
  292. package/src/components/entities/entity-settings-form/locales/nb.ts +206 -0
  293. package/src/components/entities/entity-settings-form/locales/nl.ts +15 -3
  294. package/src/components/entities/entity-settings-form/locales/pl.ts +15 -3
  295. package/src/components/entities/entity-settings-form/locales/pt.ts +15 -3
  296. package/src/components/entities/entity-settings-form/locales/sk.ts +206 -0
  297. package/src/components/entities/entity-settings-form/locales/sl.ts +31 -18
  298. package/src/components/entities/entity-settings-form/locales/sv.ts +212 -0
  299. package/src/components/entities/fina-settings-form/fina-operator-required-dialog.tsx +34 -9
  300. package/src/components/entities/fina-settings-form/fina-settings-form.tsx +2 -0
  301. package/src/components/entities/fina-settings-form/fina-settings.hooks.ts +14 -45
  302. package/src/components/entities/fina-settings-form/locales/bg.ts +163 -0
  303. package/src/components/entities/fina-settings-form/locales/cs.ts +163 -0
  304. package/src/components/entities/fina-settings-form/locales/et.ts +163 -0
  305. package/src/components/entities/fina-settings-form/locales/fi.ts +163 -0
  306. package/src/components/entities/fina-settings-form/locales/hr.ts +11 -10
  307. package/src/components/entities/fina-settings-form/locales/is.ts +164 -0
  308. package/src/components/entities/fina-settings-form/locales/nb.ts +163 -0
  309. package/src/components/entities/fina-settings-form/locales/sk.ts +163 -0
  310. package/src/components/entities/fina-settings-form/locales/sl.ts +8 -7
  311. package/src/components/entities/fina-settings-form/locales/sv.ts +165 -0
  312. package/src/components/entities/furs-settings-form/furs-operator-required-dialog.tsx +34 -9
  313. package/src/components/entities/furs-settings-form/furs-settings-form.tsx +13 -1
  314. package/src/components/entities/furs-settings-form/furs-settings.hooks.ts +141 -42
  315. package/src/components/entities/furs-settings-form/locales/bg.ts +242 -0
  316. package/src/components/entities/furs-settings-form/locales/cs.ts +241 -0
  317. package/src/components/entities/furs-settings-form/locales/de.ts +42 -15
  318. package/src/components/entities/furs-settings-form/locales/en.ts +24 -0
  319. package/src/components/entities/furs-settings-form/locales/es.ts +42 -15
  320. package/src/components/entities/furs-settings-form/locales/et.ts +242 -0
  321. package/src/components/entities/furs-settings-form/locales/fi.ts +243 -0
  322. package/src/components/entities/furs-settings-form/locales/fr.ts +43 -15
  323. package/src/components/entities/furs-settings-form/locales/hr.ts +44 -19
  324. package/src/components/entities/furs-settings-form/locales/is.ts +242 -0
  325. package/src/components/entities/furs-settings-form/locales/it.ts +42 -15
  326. package/src/components/entities/furs-settings-form/locales/nb.ts +242 -0
  327. package/src/components/entities/furs-settings-form/locales/nl.ts +42 -15
  328. package/src/components/entities/furs-settings-form/locales/pl.ts +40 -15
  329. package/src/components/entities/furs-settings-form/locales/pt.ts +42 -15
  330. package/src/components/entities/furs-settings-form/locales/sk.ts +243 -0
  331. package/src/components/entities/furs-settings-form/locales/sl.ts +34 -10
  332. package/src/components/entities/furs-settings-form/locales/sv.ts +242 -0
  333. package/src/components/entities/furs-settings-form/sections/enable-fiscalization-section.tsx +11 -0
  334. package/src/components/entities/furs-settings-form/sections/furs-internal-act-download-card.tsx +111 -0
  335. package/src/components/entities/furs-settings-form/sections/general-settings-section.tsx +27 -0
  336. package/src/components/entities/furs-settings-form/sections/premises-management-section.tsx +23 -16
  337. package/src/components/entities/furs-settings-form/sections/register-premise-dialog.tsx +89 -31
  338. package/src/components/entities/settings/branding-settings-form.tsx +11 -30
  339. package/src/components/entities/settings/company-settings-form.tsx +2 -1
  340. package/src/components/entities/settings/defaults-settings-form.tsx +106 -3
  341. package/src/components/entities/settings/email-settings-form.tsx +245 -3
  342. package/src/components/entities/settings/eslog-settings-form.tsx +2 -1
  343. package/src/components/entities/settings/number-format-settings-form.tsx +2 -1
  344. package/src/components/entities/settings/pdf-template-selector/locales/bg.ts +20 -0
  345. package/src/components/entities/settings/pdf-template-selector/locales/cs.ts +20 -0
  346. package/src/components/entities/settings/pdf-template-selector/locales/en.ts +20 -0
  347. package/src/components/entities/settings/pdf-template-selector/locales/et.ts +19 -0
  348. package/src/components/entities/settings/pdf-template-selector/locales/fi.ts +20 -0
  349. package/src/components/entities/settings/pdf-template-selector/locales/is.ts +19 -0
  350. package/src/components/entities/settings/pdf-template-selector/locales/nb.ts +19 -0
  351. package/src/components/entities/settings/pdf-template-selector/locales/sk.ts +20 -0
  352. package/src/components/entities/settings/pdf-template-selector/locales/sv.ts +19 -0
  353. package/src/components/entities/settings/tax-rules-settings-form.tsx +57 -6
  354. package/src/components/estimates/create/create-estimate-form.tsx +250 -66
  355. package/src/components/estimates/create/locales/bg.ts +77 -0
  356. package/src/components/estimates/create/locales/cs.ts +77 -0
  357. package/src/components/estimates/create/locales/de.ts +4 -3
  358. package/src/components/estimates/create/locales/en.ts +77 -0
  359. package/src/components/estimates/create/locales/es.ts +4 -3
  360. package/src/components/estimates/create/locales/et.ts +77 -0
  361. package/src/components/estimates/create/locales/fi.ts +77 -0
  362. package/src/components/estimates/create/locales/fr.ts +4 -3
  363. package/src/components/estimates/create/locales/hr.ts +13 -12
  364. package/src/components/estimates/create/locales/is.ts +77 -0
  365. package/src/components/estimates/create/locales/it.ts +4 -3
  366. package/src/components/estimates/create/locales/nb.ts +77 -0
  367. package/src/components/estimates/create/locales/nl.ts +4 -3
  368. package/src/components/estimates/create/locales/pl.ts +4 -3
  369. package/src/components/estimates/create/locales/pt.ts +4 -3
  370. package/src/components/estimates/create/locales/sk.ts +77 -0
  371. package/src/components/estimates/create/locales/sl.ts +13 -12
  372. package/src/components/estimates/create/locales/sv.ts +77 -0
  373. package/src/components/estimates/create/prepare-estimate-submission.ts +41 -4
  374. package/src/components/estimates/estimates.hooks.ts +24 -3
  375. package/src/components/estimates/list/list-row-actions.tsx +34 -7
  376. package/src/components/estimates/list/list-table.tsx +89 -11
  377. package/src/components/estimates/list/locales/bg.ts +40 -0
  378. package/src/components/estimates/list/locales/cs.ts +40 -0
  379. package/src/components/estimates/list/locales/de.ts +2 -0
  380. package/src/components/estimates/list/locales/en.ts +29 -2
  381. package/src/components/estimates/list/locales/es.ts +2 -0
  382. package/src/components/estimates/list/locales/et.ts +40 -0
  383. package/src/components/estimates/list/locales/fi.ts +40 -0
  384. package/src/components/estimates/list/locales/fr.ts +2 -0
  385. package/src/components/estimates/list/locales/hr.ts +9 -7
  386. package/src/components/estimates/list/locales/is.ts +40 -0
  387. package/src/components/estimates/list/locales/it.ts +2 -0
  388. package/src/components/estimates/list/locales/nb.ts +40 -0
  389. package/src/components/estimates/list/locales/nl.ts +2 -0
  390. package/src/components/estimates/list/locales/pl.ts +2 -0
  391. package/src/components/estimates/list/locales/pt.ts +2 -0
  392. package/src/components/estimates/list/locales/sk.ts +40 -0
  393. package/src/components/estimates/list/locales/sl.ts +9 -7
  394. package/src/components/estimates/list/locales/sv.ts +40 -0
  395. package/src/components/estimates/list/use-estimate-download.ts +3 -5
  396. package/src/components/export/document-export-form.tsx +72 -15
  397. package/src/components/export/sales-per-item-export-form.tsx +3 -2
  398. package/src/components/invoices/create/create-invoice-form.tsx +500 -112
  399. package/src/components/invoices/create/eslog-validation.ts +97 -8
  400. package/src/components/invoices/create/locales/bg.ts +173 -0
  401. package/src/components/invoices/create/locales/cs.ts +173 -0
  402. package/src/components/invoices/create/locales/de.ts +41 -9
  403. package/src/components/invoices/create/locales/en.ts +173 -0
  404. package/src/components/invoices/create/locales/es.ts +42 -9
  405. package/src/components/invoices/create/locales/et.ts +173 -0
  406. package/src/components/invoices/create/locales/fi.ts +173 -0
  407. package/src/components/invoices/create/locales/fr.ts +42 -11
  408. package/src/components/invoices/create/locales/hr.ts +50 -18
  409. package/src/components/invoices/create/locales/is.ts +173 -0
  410. package/src/components/invoices/create/locales/it.ts +43 -11
  411. package/src/components/invoices/create/locales/nb.ts +173 -0
  412. package/src/components/invoices/create/locales/nl.ts +42 -10
  413. package/src/components/invoices/create/locales/pl.ts +42 -11
  414. package/src/components/invoices/create/locales/pt.ts +43 -10
  415. package/src/components/invoices/create/locales/sk.ts +173 -0
  416. package/src/components/invoices/create/locales/sl.ts +49 -18
  417. package/src/components/invoices/create/locales/sv.ts +175 -0
  418. package/src/components/invoices/create/prepare-invoice-submission.ts +73 -2
  419. package/src/components/invoices/invoices-furs.hooks.ts +11 -8
  420. package/src/components/invoices/invoices.hooks.ts +36 -10
  421. package/src/components/invoices/list/list-row-actions.tsx +54 -21
  422. package/src/components/invoices/list/list-table.tsx +94 -12
  423. package/src/components/invoices/list/locales/bg.ts +49 -0
  424. package/src/components/invoices/list/locales/cs.ts +49 -0
  425. package/src/components/invoices/list/locales/en.ts +34 -2
  426. package/src/components/invoices/list/locales/et.ts +49 -0
  427. package/src/components/invoices/list/locales/fi.ts +49 -0
  428. package/src/components/invoices/list/locales/is.ts +49 -0
  429. package/src/components/invoices/list/locales/nb.ts +49 -0
  430. package/src/components/invoices/list/locales/sk.ts +49 -0
  431. package/src/components/invoices/list/locales/sv.ts +49 -0
  432. package/src/components/invoices/list/use-invoice-download.ts +3 -5
  433. package/src/components/invoices/send-email-dialog/locales/bg.ts +63 -0
  434. package/src/components/invoices/send-email-dialog/locales/cs.ts +63 -0
  435. package/src/components/invoices/send-email-dialog/locales/de.ts +26 -0
  436. package/src/components/invoices/send-email-dialog/locales/en.ts +63 -0
  437. package/src/components/invoices/send-email-dialog/locales/es.ts +26 -0
  438. package/src/components/invoices/send-email-dialog/locales/et.ts +63 -0
  439. package/src/components/invoices/send-email-dialog/locales/fi.ts +63 -0
  440. package/src/components/invoices/send-email-dialog/locales/fr.ts +26 -0
  441. package/src/components/invoices/send-email-dialog/locales/hr.ts +26 -0
  442. package/src/components/invoices/send-email-dialog/locales/is.ts +63 -0
  443. package/src/components/invoices/send-email-dialog/locales/it.ts +26 -0
  444. package/src/components/invoices/send-email-dialog/locales/nb.ts +63 -0
  445. package/src/components/invoices/send-email-dialog/locales/nl.ts +26 -0
  446. package/src/components/invoices/send-email-dialog/locales/pl.ts +26 -0
  447. package/src/components/invoices/send-email-dialog/locales/pt.ts +26 -0
  448. package/src/components/invoices/send-email-dialog/locales/sk.ts +63 -0
  449. package/src/components/invoices/send-email-dialog/locales/sl.ts +26 -0
  450. package/src/components/invoices/send-email-dialog/locales/sv.ts +63 -0
  451. package/src/components/invoices/send-email-dialog/send-email-dialog.tsx +189 -93
  452. package/src/components/invoices/view/eslog-info-display.tsx +2 -0
  453. package/src/components/invoices/view/fiscalization-status-card.tsx +2 -0
  454. package/src/components/items/create-item-form/create-item-form.tsx +29 -0
  455. package/src/components/items/create-item-form/locales/bg.ts +13 -0
  456. package/src/components/items/create-item-form/locales/cs.ts +13 -0
  457. package/src/components/items/create-item-form/locales/et.ts +13 -0
  458. package/src/components/items/create-item-form/locales/fi.ts +13 -0
  459. package/src/components/items/create-item-form/locales/is.ts +13 -0
  460. package/src/components/items/create-item-form/locales/nb.ts +13 -0
  461. package/src/components/items/create-item-form/locales/sk.ts +13 -0
  462. package/src/components/items/create-item-form/locales/sv.ts +13 -0
  463. package/src/components/items/edit-item-form/edit-item-form.tsx +39 -1
  464. package/src/components/items/edit-item-form/locales/bg.ts +12 -0
  465. package/src/components/items/edit-item-form/locales/cs.ts +12 -0
  466. package/src/components/items/edit-item-form/locales/en.ts +12 -0
  467. package/src/components/items/edit-item-form/locales/et.ts +12 -0
  468. package/src/components/items/edit-item-form/locales/fi.ts +12 -0
  469. package/src/components/items/edit-item-form/locales/is.ts +12 -0
  470. package/src/components/items/edit-item-form/locales/nb.ts +12 -0
  471. package/src/components/items/edit-item-form/locales/sk.ts +12 -0
  472. package/src/components/items/edit-item-form/locales/sv.ts +12 -0
  473. package/src/components/items/item-combobox.tsx +55 -22
  474. package/src/components/items/item-list-table/item-list-table.tsx +47 -23
  475. package/src/components/items/item-list-table/locales/bg.ts +16 -0
  476. package/src/components/items/item-list-table/locales/cs.ts +16 -0
  477. package/src/components/items/item-list-table/locales/en.ts +4 -3
  478. package/src/components/items/item-list-table/locales/et.ts +16 -0
  479. package/src/components/items/item-list-table/locales/fi.ts +16 -0
  480. package/src/components/items/item-list-table/locales/is.ts +16 -0
  481. package/src/components/items/item-list-table/locales/nb.ts +16 -0
  482. package/src/components/items/item-list-table/locales/sk.ts +16 -0
  483. package/src/components/items/item-list-table/locales/sv.ts +16 -0
  484. package/src/components/items/items.hooks.ts +15 -15
  485. package/src/components/payments/create-payment-form/create-payment-form.tsx +16 -9
  486. package/src/components/payments/create-payment-form/locales/bg.ts +20 -0
  487. package/src/components/payments/create-payment-form/locales/cs.ts +20 -0
  488. package/src/components/payments/create-payment-form/locales/en.ts +20 -0
  489. package/src/components/payments/create-payment-form/locales/et.ts +20 -0
  490. package/src/components/payments/create-payment-form/locales/fi.ts +20 -0
  491. package/src/components/payments/create-payment-form/locales/hr.ts +2 -2
  492. package/src/components/payments/create-payment-form/locales/is.ts +20 -0
  493. package/src/components/payments/create-payment-form/locales/nb.ts +20 -0
  494. package/src/components/payments/create-payment-form/locales/sk.ts +20 -0
  495. package/src/components/payments/create-payment-form/locales/sl.ts +4 -4
  496. package/src/components/payments/create-payment-form/locales/sv.ts +20 -0
  497. package/src/components/payments/edit-payment-form/edit-payment-form.tsx +10 -2
  498. package/src/components/payments/edit-payment-form/locales/bg.ts +20 -0
  499. package/src/components/payments/edit-payment-form/locales/cs.ts +20 -0
  500. package/src/components/payments/edit-payment-form/locales/en.ts +20 -0
  501. package/src/components/payments/edit-payment-form/locales/et.ts +20 -0
  502. package/src/components/payments/edit-payment-form/locales/fi.ts +20 -0
  503. package/src/components/payments/edit-payment-form/locales/hr.ts +2 -2
  504. package/src/components/payments/edit-payment-form/locales/is.ts +20 -0
  505. package/src/components/payments/edit-payment-form/locales/nb.ts +20 -0
  506. package/src/components/payments/edit-payment-form/locales/sk.ts +20 -0
  507. package/src/components/payments/edit-payment-form/locales/sl.ts +4 -4
  508. package/src/components/payments/edit-payment-form/locales/sv.ts +20 -0
  509. package/src/components/payments/list/list-row-actions.tsx +10 -2
  510. package/src/components/payments/list/list-table.tsx +51 -45
  511. package/src/components/payments/list/locales/bg.ts +42 -0
  512. package/src/components/payments/list/locales/cs.ts +42 -0
  513. package/src/components/payments/list/locales/de.ts +18 -0
  514. package/src/components/payments/list/locales/en.ts +37 -2
  515. package/src/components/payments/list/locales/es.ts +18 -0
  516. package/src/components/payments/list/locales/et.ts +42 -0
  517. package/src/components/payments/list/locales/fi.ts +42 -0
  518. package/src/components/payments/list/locales/fr.ts +18 -0
  519. package/src/components/payments/list/locales/hr.ts +18 -0
  520. package/src/components/payments/list/locales/is.ts +42 -0
  521. package/src/components/payments/list/locales/it.ts +18 -0
  522. package/src/components/payments/list/locales/nb.ts +42 -0
  523. package/src/components/payments/list/locales/nl.ts +18 -0
  524. package/src/components/payments/list/locales/pl.ts +18 -0
  525. package/src/components/payments/list/locales/pt.ts +18 -0
  526. package/src/components/payments/list/locales/sk.ts +42 -0
  527. package/src/components/payments/list/locales/sl.ts +18 -1
  528. package/src/components/payments/list/locales/sv.ts +42 -0
  529. package/src/components/payments/payments.hooks.ts +13 -6
  530. package/src/components/recurring-invoices/create-recurring-invoice-form/create-recurring-invoice-form.tsx +121 -39
  531. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/bg.ts +44 -0
  532. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/cs.ts +44 -0
  533. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/en.ts +44 -0
  534. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/et.ts +44 -0
  535. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/fi.ts +44 -0
  536. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/hr.ts +6 -6
  537. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/is.ts +44 -0
  538. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/nb.ts +44 -0
  539. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/sk.ts +44 -0
  540. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/sl.ts +4 -4
  541. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/sv.ts +44 -0
  542. package/src/components/recurring-invoices/list/list-row-actions.tsx +12 -6
  543. package/src/components/recurring-invoices/list/list-table.tsx +63 -12
  544. package/src/components/recurring-invoices/list/locales/bg.ts +32 -0
  545. package/src/components/recurring-invoices/list/locales/cs.ts +32 -0
  546. package/src/components/recurring-invoices/list/locales/de.ts +4 -0
  547. package/src/components/recurring-invoices/list/locales/en.ts +27 -0
  548. package/src/components/recurring-invoices/list/locales/es.ts +4 -0
  549. package/src/components/recurring-invoices/list/locales/et.ts +32 -0
  550. package/src/components/recurring-invoices/list/locales/fi.ts +32 -0
  551. package/src/components/recurring-invoices/list/locales/fr.ts +4 -0
  552. package/src/components/recurring-invoices/list/locales/hr.ts +4 -0
  553. package/src/components/recurring-invoices/list/locales/is.ts +32 -0
  554. package/src/components/recurring-invoices/list/locales/it.ts +4 -0
  555. package/src/components/recurring-invoices/list/locales/nb.ts +32 -0
  556. package/src/components/recurring-invoices/list/locales/nl.ts +4 -0
  557. package/src/components/recurring-invoices/list/locales/pl.ts +4 -0
  558. package/src/components/recurring-invoices/list/locales/pt.ts +4 -0
  559. package/src/components/recurring-invoices/list/locales/sk.ts +32 -0
  560. package/src/components/recurring-invoices/list/locales/sl.ts +4 -0
  561. package/src/components/recurring-invoices/list/locales/sv.ts +32 -0
  562. package/src/components/recurring-invoices/recurring-invoices.hooks.ts +11 -8
  563. package/src/components/request-logs/request-log-detail.tsx +30 -23
  564. package/src/components/request-logs/request-log-list-table.tsx +88 -45
  565. package/src/components/table/README.md +47 -9
  566. package/src/components/table/data-table.tsx +232 -92
  567. package/src/components/table/filter-bar.tsx +1 -1
  568. package/src/components/table/filter-panel.tsx +51 -22
  569. package/src/components/table/hooks/use-table-state.ts +64 -11
  570. package/src/components/table/index.ts +3 -0
  571. package/src/components/table/locales.ts +119 -4
  572. package/src/components/table/selection-toolbar.tsx +65 -9
  573. package/src/components/table/sorting.ts +80 -0
  574. package/src/components/table/table-skeleton.tsx +15 -9
  575. package/src/components/table/types.ts +17 -0
  576. package/src/components/tax-reports/index.ts +8 -0
  577. package/src/components/tax-reports/kir-export-form.tsx +4 -5
  578. package/src/components/tax-reports/slovenia-accounting-mappings-fields.tsx +271 -0
  579. package/src/components/tax-reports/slovenia-tax-profile-step.tsx +25 -11
  580. package/src/components/tax-reports/slovenia-vod-export-form.tsx +452 -0
  581. package/src/components/tax-reports/slovenia-yearly-export-form.tsx +20 -16
  582. package/src/components/tax-reports/slovenia-yearly-review-step.tsx +42 -19
  583. package/src/components/taxes/create-tax-form/create-tax-form.tsx +48 -2
  584. package/src/components/taxes/create-tax-form/locales/bg.ts +8 -0
  585. package/src/components/taxes/create-tax-form/locales/cs.ts +8 -0
  586. package/src/components/taxes/create-tax-form/locales/et.ts +8 -0
  587. package/src/components/taxes/create-tax-form/locales/fi.ts +8 -0
  588. package/src/components/taxes/create-tax-form/locales/is.ts +8 -0
  589. package/src/components/taxes/create-tax-form/locales/nb.ts +8 -0
  590. package/src/components/taxes/create-tax-form/locales/sk.ts +8 -0
  591. package/src/components/taxes/create-tax-form/locales/sv.ts +8 -0
  592. package/src/components/taxes/edit-tax-form/edit-tax-form.tsx +80 -11
  593. package/src/components/taxes/edit-tax-form/locales/bg.ts +6 -0
  594. package/src/components/taxes/edit-tax-form/locales/cs.ts +6 -0
  595. package/src/components/taxes/edit-tax-form/locales/en.ts +6 -0
  596. package/src/components/taxes/edit-tax-form/locales/et.ts +6 -0
  597. package/src/components/taxes/edit-tax-form/locales/fi.ts +6 -0
  598. package/src/components/taxes/edit-tax-form/locales/is.ts +6 -0
  599. package/src/components/taxes/edit-tax-form/locales/nb.ts +6 -0
  600. package/src/components/taxes/edit-tax-form/locales/sk.ts +6 -0
  601. package/src/components/taxes/edit-tax-form/locales/sv.ts +6 -0
  602. package/src/components/taxes/tax-list-table/locales/bg.ts +17 -0
  603. package/src/components/taxes/tax-list-table/locales/cs.ts +17 -0
  604. package/src/components/taxes/tax-list-table/locales/en.ts +4 -3
  605. package/src/components/taxes/tax-list-table/locales/et.ts +17 -0
  606. package/src/components/taxes/tax-list-table/locales/fi.ts +17 -0
  607. package/src/components/taxes/tax-list-table/locales/is.ts +17 -0
  608. package/src/components/taxes/tax-list-table/locales/nb.ts +17 -0
  609. package/src/components/taxes/tax-list-table/locales/sk.ts +17 -0
  610. package/src/components/taxes/tax-list-table/locales/sv.ts +17 -0
  611. package/src/components/taxes/tax-list-table/tax-list-table.tsx +53 -19
  612. package/src/components/taxes/taxes.hooks.ts +53 -12
  613. package/src/components/ui/badge.tsx +1 -1
  614. package/src/components/ui/button.tsx +1 -1
  615. package/src/components/ui/drawer.tsx +2 -2
  616. package/src/components/ui/form.tsx +118 -10
  617. package/src/components/ui/progress.tsx +6 -4
  618. package/src/components/ui/select.tsx +118 -2
  619. package/src/components/ui/sidebar.tsx +2 -2
  620. package/src/components/ui/sonner.tsx +17 -36
  621. package/src/components/ui/sticky-form-footer.tsx +6 -1
  622. package/src/components/ui/tooltip.tsx +15 -2
  623. package/src/components/webhook-logs/webhook-delivery-detail.tsx +22 -22
  624. package/src/components/webhook-logs/webhook-delivery-list-table.tsx +92 -17
  625. package/src/components/wl-subscription/locked-feature.tsx +11 -10
  626. package/src/components/wl-subscription/paywall.tsx +184 -72
  627. package/src/components/wl-subscription/upgrade-modal.tsx +28 -31
  628. package/src/generate-schemas.ts +146 -103
  629. package/src/generated/schemas/acceptentityinvitation_body.ts +4 -3
  630. package/src/generated/schemas/accountwebhook.ts +63 -0
  631. package/src/generated/schemas/addentityuser_body.ts +4 -3
  632. package/src/generated/schemas/advanceinvoice.ts +167 -168
  633. package/src/generated/schemas/authorizeshopify_body.ts +4 -3
  634. package/src/generated/schemas/calculatedocumentpreview.ts +120 -0
  635. package/src/generated/schemas/checktransactiontype.ts +35 -0
  636. package/src/generated/schemas/creditnote.ts +203 -76
  637. package/src/generated/schemas/customadvanceinvoice.ts +172 -165
  638. package/src/generated/schemas/customcreditnote.ts +183 -155
  639. package/src/generated/schemas/customdeliverynote.ts +166 -0
  640. package/src/generated/schemas/customer.ts +4 -8
  641. package/src/generated/schemas/customestimate.ts +123 -97
  642. package/src/generated/schemas/customincomingpurchasedocument.ts +142 -0
  643. package/src/generated/schemas/custominvoice.ts +183 -154
  644. package/src/generated/schemas/deliverynote.ts +124 -79
  645. package/src/generated/schemas/einvoice.ts +19 -0
  646. package/src/generated/schemas/einvoicingsettings.ts +21 -0
  647. package/src/generated/schemas/einvoicingsupplier.ts +45 -0
  648. package/src/generated/schemas/entity.ts +267 -24
  649. package/src/generated/schemas/entityapikey.ts +1 -3
  650. package/src/generated/schemas/entityuserrole.ts +1 -3
  651. package/src/generated/schemas/estimate.ts +120 -127
  652. package/src/generated/schemas/exportsloveniavodxml_body.ts +17 -0
  653. package/src/generated/schemas/exportsloveniayearlynormiranireport_body.ts +4 -3
  654. package/src/generated/schemas/finadevice.ts +15 -0
  655. package/src/generated/schemas/finalizedocument.ts +52 -0
  656. package/src/generated/schemas/finapremise.ts +15 -0
  657. package/src/generated/schemas/finasettings.ts +1 -3
  658. package/src/generated/schemas/furselectronicdevice.ts +15 -0
  659. package/src/generated/schemas/furssettings.ts +2 -3
  660. package/src/generated/schemas/image.ts +15 -0
  661. package/src/generated/schemas/incomingpurchasedocument.ts +178 -0
  662. package/src/generated/schemas/incomingpurchasedocumentattachment.ts +15 -0
  663. package/src/generated/schemas/incomingpurchasedocumentpayment.ts +36 -0
  664. package/src/generated/schemas/index.ts +30 -5
  665. package/src/generated/schemas/invoice.ts +182 -183
  666. package/src/generated/schemas/item.ts +35 -3
  667. package/src/generated/schemas/legacymigrationauth.ts +18 -0
  668. package/src/generated/schemas/me.ts +4 -22
  669. package/src/generated/schemas/migrationjob.ts +20 -0
  670. package/src/generated/schemas/order.ts +6 -8
  671. package/src/generated/schemas/orderintegration.ts +12 -12
  672. package/src/generated/schemas/payment.ts +9 -8
  673. package/src/generated/schemas/ptatcudseries.ts +28 -0
  674. package/src/generated/schemas/queryentitystats.ts +15 -0
  675. package/src/generated/schemas/recurringinvoice.ts +4 -8
  676. package/src/generated/schemas/registerfursmovablepremise_body.ts +1 -3
  677. package/src/generated/schemas/registerfursrealestatepremise_body.ts +1 -3
  678. package/src/generated/schemas/renderadvanceinvoicepreview_body.ts +42 -16
  679. package/src/generated/schemas/rendercreditnotepreview_body.ts +42 -16
  680. package/src/generated/schemas/renderdeliverynotepreview_body.ts +19 -8
  681. package/src/generated/schemas/renderestimatepreview_body.ts +45 -8
  682. package/src/generated/schemas/renderinvoicepreview_body.ts +46 -18
  683. package/src/generated/schemas/reviewsloveniayearlynormiranireport.ts +15 -0
  684. package/src/generated/schemas/searcheinvoicingcustomer.ts +18 -0
  685. package/src/generated/schemas/senddocument_body.ts +2 -3
  686. package/src/generated/schemas/sendemail_body.ts +48 -42
  687. package/src/generated/schemas/sloveniataxprofile.ts +98 -24
  688. package/src/generated/schemas/starteslogexport_body.ts +34 -0
  689. package/src/generated/schemas/startpdfexport_body.ts +18 -81
  690. package/src/generated/schemas/stripeappconnect_body.ts +4 -3
  691. package/src/generated/schemas/stripeappcreateinvoice_body.ts +4 -6
  692. package/src/generated/schemas/stripeappmarketplaceauthorize.ts +15 -0
  693. package/src/generated/schemas/stripeappupdatesettings_body.ts +6 -6
  694. package/src/generated/schemas/supplier.ts +55 -0
  695. package/src/generated/schemas/syncshopifyorders_body.ts +21 -0
  696. package/src/generated/schemas/tax.ts +8 -8
  697. package/src/generated/schemas/uploadfile_body.ts +2 -3
  698. package/src/generated/schemas/uploadfurscertificate_body.ts +6 -6
  699. package/src/generated/schemas/userfinasettings.ts +1 -3
  700. package/src/generated/schemas/userfurssettings.ts +1 -3
  701. package/src/generated/schemas/userptsettings.ts +24 -0
  702. package/src/generated/schemas/voidinvoice_body.ts +25 -0
  703. package/src/generated/schemas/webhook.ts +6 -8
  704. package/src/generated/schemas/wlsubscriptionbillingemail.ts +17 -0
  705. package/src/hooks/create-resource-hooks.ts +22 -19
  706. package/src/hooks/use-duplicate-document.ts +71 -38
  707. package/src/hooks/use-eslog-validation.ts +5 -1
  708. package/src/hooks/use-next-document-number.ts +13 -6
  709. package/src/hooks/use-resolved-entity-id.ts +14 -0
  710. package/src/hooks/use-resource-mutation.ts +11 -30
  711. package/src/hooks/use-transaction-type-check.ts +3 -8
  712. package/src/lib/browser-cookies.ts +1 -1
  713. package/src/lib/country-capabilities.ts +114 -0
  714. package/src/lib/date-fns-locale.ts +1 -20
  715. package/src/lib/date-only.ts +58 -0
  716. package/src/lib/document-display.ts +18 -0
  717. package/src/lib/eslog-export.ts +32 -0
  718. package/src/lib/fiscalization-options.ts +21 -1
  719. package/src/lib/formatting.ts +27 -0
  720. package/src/lib/furs-error-utils.ts +29 -0
  721. package/src/lib/locale.ts +4 -0
  722. package/src/lib/payment-display.ts +97 -0
  723. package/src/lib/pt-document-input.ts +67 -0
  724. package/src/lib/schemas/shared.ts +12 -0
  725. package/src/lib/template-variables.tsx +102 -4
  726. package/src/lib/translation.ts +51 -33
  727. package/src/lib/white-label-capabilities.ts +626 -0
  728. package/src/lib/zod-validation-message.ts +291 -0
  729. package/src/providers/entities-provider.tsx +32 -14
  730. package/src/providers/sdk-provider.tsx +112 -12
  731. package/src/providers/space-invoices-provider.tsx +129 -0
  732. package/src/providers/white-label-provider.tsx +96 -4
  733. package/src/providers/wl-subscription-provider.tsx +149 -10
  734. package/src/generated/schemas/previewadvanceinvoice_body.ts +0 -354
  735. package/src/generated/schemas/previewestimate_body.ts +0 -309
  736. package/src/generated/schemas/registerfinamovablepremise_body.ts +0 -26
  737. package/src/generated/schemas/registerfinarealestatepremise_body.ts +0 -37
  738. package/src/generated/schemas/renderdocument_body.ts +0 -594
@@ -1,22 +1,34 @@
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
+ import { Check, X } from "lucide-react";
5
+ import type { ReactNode } from "react";
4
6
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
5
7
  import type { Resolver } from "react-hook-form";
6
8
  import { useForm, useWatch } from "react-hook-form";
7
9
  import type { z } from "zod";
10
+ import { Button } from "@/ui/components/ui/button";
8
11
  import { Form } from "@/ui/components/ui/form";
9
12
  import { Skeleton } from "@/ui/components/ui/skeleton";
13
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/ui/components/ui/tooltip";
10
14
  import { createCreditNoteSchema } from "@/ui/generated/schemas";
11
15
  import { useNextDocumentNumber } from "@/ui/hooks/use-next-document-number";
12
16
  import { usePremiseSelection } from "@/ui/hooks/use-premise-selection";
13
17
  import { useTransactionTypeCheck } from "@/ui/hooks/use-transaction-type-check";
14
- import { buildFinaOptions, buildFursOptions } from "@/ui/lib/fiscalization-options";
18
+ import { buildFinaOptions, buildFursOptions, type FiscalizationOperatorOverride } from "@/ui/lib/fiscalization-options";
19
+ import {
20
+ normalizePtDocumentInput,
21
+ type PtDocumentInputForm,
22
+ ptDocumentInputFormSchema,
23
+ } from "@/ui/lib/pt-document-input";
24
+ import { normalizeLineItemDiscountsForForm } from "@/ui/lib/schemas/shared";
15
25
  import type { ComponentTranslationProps } from "@/ui/lib/translation";
16
26
  import { createTranslation } from "@/ui/lib/translation";
27
+ import { cn } from "@/ui/lib/utils";
17
28
  import { useEntities } from "@/ui/providers/entities-context";
18
29
  import { useFormFooterRegistration } from "@/ui/providers/form-footer-context";
19
30
  import { CUSTOMERS_CACHE_KEY } from "../../customers/customers.hooks";
31
+ import { withCreditNoteIssueDateValidation } from "../../documents/create/document-date-validation";
20
32
  import {
21
33
  DocumentDetailsSection,
22
34
  DocumentFooterField,
@@ -25,13 +37,34 @@ import {
25
37
  DocumentSignatureField,
26
38
  DocumentTaxClauseField,
27
39
  } from "../../documents/create/document-details-section";
40
+ import { withRequiredDocumentItemFields } from "../../documents/create/document-item-validation";
28
41
  import { DocumentItemsSection, type PriceModesMap } from "../../documents/create/document-items-section";
29
42
  import { DocumentRecipientSection } from "../../documents/create/document-recipient-section";
30
43
  import { MarkAsPaidSection } from "../../documents/create/mark-as-paid-section";
31
- import { prepareDocumentSubmission } from "../../documents/create/prepare-document-submission";
44
+ import {
45
+ calculateDocumentTotal,
46
+ coercePaymentRowsToType,
47
+ createEmptyPaymentRow,
48
+ type DraftPaymentRow,
49
+ getFirstValidPaymentType,
50
+ serializePaymentRows,
51
+ validatePaymentRows,
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";
32
56
  import { useDocumentCustomerForm } from "../../documents/create/use-document-customer-form";
33
57
  import type { DocumentTypes } from "../../documents/types";
34
- 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";
35
68
  import de from "./locales/de";
36
69
  import es from "./locales/es";
37
70
  import fr from "./locales/fr";
@@ -41,26 +74,47 @@ import nl from "./locales/nl";
41
74
  import pl from "./locales/pl";
42
75
  import pt from "./locales/pt";
43
76
  import sl from "./locales/sl";
77
+ import { prepareCreditNoteSubmission, prepareCreditNoteUpdateSubmission } from "./prepare-credit-note-submission";
44
78
 
45
79
  const translations = {
46
- sl,
47
- de,
48
- it,
49
- fr,
50
- es,
51
- pt,
52
- nl,
53
- pl,
54
- 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 },
55
89
  } as const;
90
+ const createCreditNoteFormSchema = withCreditNoteIssueDateValidation(
91
+ withRequiredDocumentItemFields(
92
+ createCreditNoteSchema.extend({
93
+ pt: ptDocumentInputFormSchema.optional(),
94
+ }),
95
+ ),
96
+ );
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
+ }
56
110
 
57
111
  // Form values: extend schema with local-only fields (number is for display, not sent to API)
58
- type CreateCreditNoteFormValues = z.infer<typeof createCreditNoteSchema> & {
112
+ type CreateCreditNoteFormValues = z.infer<typeof createCreditNoteFormSchema> & {
59
113
  number?: string;
60
114
  };
61
115
 
62
116
  /** Preview payload extends request with display-only fields */
63
- type CreditNotePreviewPayload = Partial<CreateCreditNoteRequest> & { number?: string };
117
+ type CreditNotePreviewPayload = Partial<CreateCreditNoteRequest> & { number?: string; pt?: PtDocumentInputForm };
64
118
 
65
119
  type CreateCreditNoteFormProps = {
66
120
  type: DocumentTypes;
@@ -69,8 +123,18 @@ type CreateCreditNoteFormProps = {
69
123
  onError?: (error: unknown) => void;
70
124
  onChange?: (data: CreditNotePreviewPayload) => void;
71
125
  onAddNewTax?: () => void;
126
+ onHeaderActionChange?: (action: ReactNode | null) => void;
72
127
  /** Initial values for form fields (used for document duplication) */
73
128
  initialValues?: Partial<CreateCreditNoteRequest>;
129
+ /** Whether draft actions should be available in the UI */
130
+ allowDrafts?: boolean;
131
+ mode?: "create" | "edit";
132
+ documentId?: string;
133
+ /** Optional app-level content rendered inside the details section. */
134
+ detailsExtras?: ReactNode;
135
+ /** Request-scoped operator override for embed fiscalization flows. */
136
+ operatorPrefill?: FiscalizationOperatorOverride;
137
+ translationLocale?: string;
74
138
  } & ComponentTranslationProps;
75
139
 
76
140
  export default function CreateCreditNoteForm({
@@ -80,7 +144,14 @@ export default function CreateCreditNoteForm({
80
144
  onError,
81
145
  onChange,
82
146
  onAddNewTax,
147
+ onHeaderActionChange,
83
148
  initialValues,
149
+ allowDrafts = true,
150
+ mode = "create",
151
+ documentId,
152
+ detailsExtras,
153
+ operatorPrefill,
154
+ translationLocale,
84
155
  t: translateProp,
85
156
  namespace,
86
157
  locale,
@@ -89,21 +160,25 @@ export default function CreateCreditNoteForm({
89
160
  t: translateProp,
90
161
  namespace,
91
162
  locale,
163
+ translationLocale,
92
164
  translations,
93
165
  });
94
166
 
95
167
  const { activeEntity } = useEntities();
96
168
  const queryClient = useQueryClient();
169
+ const isEditMode = mode === "edit";
97
170
 
98
171
  // ============================================================================
99
172
  // FURS & FINA Premise Selection (shared hook)
100
173
  // ============================================================================
101
174
  const furs = usePremiseSelection({ entityId, type: "furs" });
102
175
  const fina = usePremiseSelection({ entityId, type: "fina" });
176
+ const [skipFiscalization, setSkipFiscalization] = useState(false);
103
177
 
104
178
  // UI-only state (not part of API schema)
105
179
  const [markAsPaid, setMarkAsPaid] = useState(false);
106
- const [paymentTypes, setPaymentTypes] = useState<string[]>(["bank_transfer"]);
180
+ const [paymentRows, setPaymentRows] = useState<DraftPaymentRow[]>([createEmptyPaymentRow()]);
181
+ const [paymentValidationMessage, setPaymentValidationMessage] = useState<string | undefined>();
107
182
  const [isDraftPending, setIsDraftPending] = useState(false);
108
183
 
109
184
  // Service date type state (single date or range)
@@ -120,31 +195,67 @@ export default function CreateCreditNoteForm({
120
195
  }, {} as PriceModesMap);
121
196
  }, [initialValues?.items]);
122
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
+ );
123
228
 
124
229
  // Get default payment terms and footer from entity settings
125
230
  const defaultPaymentTerms = (activeEntity?.settings as any)?.default_credit_note_payment_terms || "";
126
231
  const defaultFooter = (activeEntity?.settings as any)?.document_footer || "";
232
+ const defaultSignature = (activeEntity?.settings as any)?.default_document_signature || "";
127
233
 
128
234
  const form = useForm<CreateCreditNoteFormValues>({
129
235
  // Cast resolver to accept extended form type (includes UI-only fields)
130
- resolver: zodResolver(createCreditNoteSchema) as Resolver<CreateCreditNoteFormValues>,
236
+ resolver: zodResolver(createCreditNoteFormSchema) as Resolver<CreateCreditNoteFormValues>,
131
237
  defaultValues: {
132
- number: "",
238
+ number: (initialValues as any)?.number ?? "",
239
+ calculation_mode: (initialValues as any)?.calculation_mode ?? undefined,
133
240
  date: initialValues?.date || new Date().toISOString(),
134
241
  customer_id: initialValues?.customer_id ?? undefined,
135
242
  // Cast customer to form schema type (API type may have additional fields)
136
243
  customer: (initialValues?.customer as CreateCreditNoteFormValues["customer"]) ?? undefined,
137
244
  items: initialValues?.items?.length
138
245
  ? initialValues.items.map((item: any) => ({
139
- type: item.type,
246
+ type: item.type ?? undefined,
140
247
  name: item.name || "",
141
248
  description: item.description || "",
142
249
  ...(item.type !== "separator"
143
250
  ? {
251
+ item_id: item.item_id ?? undefined,
144
252
  quantity: item.quantity ?? 1,
145
- // Use gross_price if set, otherwise use price
146
253
  price: item.gross_price ?? item.price,
254
+ gross_price: item.gross_price ?? undefined,
255
+ unit: item.unit ?? undefined,
256
+ classification: item.classification ?? undefined,
147
257
  taxes: item.taxes || [],
258
+ discounts: normalizeLineItemDiscountsForForm(item.discounts),
148
259
  }
149
260
  : {}),
150
261
  }))
@@ -157,19 +268,34 @@ export default function CreateCreditNoteForm({
157
268
  taxes: [],
158
269
  },
159
270
  ],
160
- 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,
161
275
  currency_code: initialValues?.currency_code || activeEntity?.currency_code || "EUR",
162
276
  reference: (initialValues as any)?.reference ?? "",
163
- note: initialValues?.note ?? "",
277
+ note: initialValues?.note ?? (isEditMode ? "" : ""),
164
278
  tax_clause: (initialValues as any)?.tax_clause ?? "",
165
- payment_terms: initialValues?.payment_terms ?? defaultPaymentTerms,
166
- 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),
282
+ pt: ((initialValues as any)?.pt as PtDocumentInputForm | undefined) ?? undefined,
167
283
  },
168
284
  });
169
285
 
170
286
  const formValues = useWatch({
171
287
  control: form.control,
172
288
  });
289
+ const paymentDocumentTotal = useMemo(
290
+ () => calculateDocumentTotal((formValues as any)?.items ?? [], priceModesRef.current),
291
+ [formValues],
292
+ );
293
+ const hasExplicitNonBankTransferPayment =
294
+ markAsPaid && paymentRows.some((row) => row.type != null && row.type !== "bank_transfer");
295
+ const skipPreferenceInitializedRef = useRef(false);
296
+ const skipPaymentCoercionPendingRef = useRef(false);
297
+ const previousSkipFiscalizationRef = useRef(skipFiscalization);
298
+ const previousMarkAsPaidRef = useRef(markAsPaid);
173
299
  const onChangeRef = useRef(onChange);
174
300
  onChangeRef.current = onChange;
175
301
  const prevPayloadRef = useRef("");
@@ -197,17 +323,65 @@ export default function CreateCreditNoteForm({
197
323
  const useFinaNumbering =
198
324
  !!fina.isActive && (finaUnifiedNumbering || transactionType == null || transactionType === "domestic");
199
325
  const isFinaNonDomestic = !!fina.isActive && !useFinaNumbering;
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");
331
+
332
+ useEffect(() => {
333
+ if (skipPreferenceInitializedRef.current || furs.isLoading || isEditMode) return;
334
+
335
+ skipPreferenceInitializedRef.current = true;
336
+ if (furs.settings?.default_skip_fiscalization === true) {
337
+ setSkipFiscalization(true);
338
+ }
339
+ }, [furs.isLoading, furs.settings?.default_skip_fiscalization, isEditMode]);
340
+
341
+ useEffect(() => {
342
+ const skipJustEnabled = skipFiscalization && !previousSkipFiscalizationRef.current;
343
+ const paidJustEnabled = markAsPaid && !previousMarkAsPaidRef.current;
344
+
345
+ if (skipFiscalization && markAsPaid && (skipJustEnabled || paidJustEnabled)) {
346
+ const nextPaymentRows = coercePaymentRowsToType(paymentRows, "bank_transfer");
347
+ const hasChanged = nextPaymentRows.some((row, index) => row.type !== paymentRows[index]?.type);
348
+
349
+ if (hasChanged) {
350
+ skipPaymentCoercionPendingRef.current = true;
351
+ setPaymentRows(nextPaymentRows);
352
+ }
353
+ }
354
+
355
+ previousSkipFiscalizationRef.current = skipFiscalization;
356
+ previousMarkAsPaidRef.current = markAsPaid;
357
+ }, [markAsPaid, paymentRows, skipFiscalization]);
358
+
359
+ useEffect(() => {
360
+ if (skipPaymentCoercionPendingRef.current) return;
361
+
362
+ if (hasExplicitNonBankTransferPayment && skipFiscalization) {
363
+ setSkipFiscalization(false);
364
+ }
365
+ }, [hasExplicitNonBankTransferPayment, skipFiscalization]);
366
+
367
+ useEffect(() => {
368
+ if (!skipPaymentCoercionPendingRef.current) return;
369
+
370
+ if (!markAsPaid || paymentRows.every((row) => row.type === "bank_transfer")) {
371
+ skipPaymentCoercionPendingRef.current = false;
372
+ }
373
+ }, [markAsPaid, paymentRows]);
200
374
 
201
375
  // ============================================================================
202
376
  // Next Credit Note Number Preview
203
377
  // ============================================================================
204
378
  // Use same premise/device params for both FURS and FINA (entity is either one, never both)
205
- const activePremiseNameForNumber = furs.isActive
379
+ const activePremiseNameForNumber = isFursActive
206
380
  ? furs.selectedPremiseName
207
381
  : useFinaNumbering
208
382
  ? fina.selectedPremiseName
209
383
  : undefined;
210
- const activeDeviceNameForNumber = furs.isActive
384
+ const activeDeviceNameForNumber = isFursActive
211
385
  ? furs.selectedDeviceName
212
386
  : useFinaNumbering
213
387
  ? fina.selectedDeviceName
@@ -216,12 +390,75 @@ export default function CreateCreditNoteForm({
216
390
  const { data: nextNumberData, isLoading: isNextNumberLoading } = useNextDocumentNumber(entityId, "credit_note", {
217
391
  businessPremiseName: activePremiseNameForNumber,
218
392
  electronicDeviceName: activeDeviceNameForNumber,
219
- enabled: !!entityId && !furs.isLoading && furs.isSelectionReady && !fina.isLoading && fina.isSelectionReady,
393
+ enabled:
394
+ !!entityId && !furs.isLoading && furs.isSelectionReady && !fina.isLoading && fina.isSelectionReady && !isEditMode,
220
395
  });
221
396
 
222
397
  // Overall loading state
223
- const isFormDataLoading =
224
- 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;
401
+
402
+ useEffect(() => {
403
+ if (!onHeaderActionChange) return;
404
+ if (isEditMode) {
405
+ onHeaderActionChange(null);
406
+ return;
407
+ }
408
+
409
+ if (furs.isLoading || fina.isLoading) {
410
+ onHeaderActionChange(null);
411
+ return;
412
+ }
413
+
414
+ const showFursToggle = furs.isEnabled && furs.hasPremises;
415
+ if (!showFursToggle) {
416
+ onHeaderActionChange(null);
417
+ return;
418
+ }
419
+
420
+ const isFursChecked = !skipFiscalization;
421
+
422
+ onHeaderActionChange(
423
+ <TooltipProvider>
424
+ <Tooltip>
425
+ <TooltipTrigger asChild>
426
+ <Button
427
+ type="button"
428
+ variant={isFursChecked ? "outline" : "ghost"}
429
+ size="sm"
430
+ className={cn("h-8 cursor-pointer gap-2", !isFursChecked && "text-destructive hover:text-destructive")}
431
+ onClick={() => setSkipFiscalization(!skipFiscalization)}
432
+ >
433
+ <div
434
+ className={cn(
435
+ "flex size-4 items-center justify-center rounded border",
436
+ isFursChecked
437
+ ? "border-primary bg-primary text-primary-foreground"
438
+ : "border-destructive bg-destructive text-destructive-foreground",
439
+ )}
440
+ >
441
+ {isFursChecked ? <Check className="size-3" /> : <X className="size-3" />}
442
+ </div>
443
+ <span>{t("Fiscally verify")}</span>
444
+ </Button>
445
+ </TooltipTrigger>
446
+ <TooltipContent side="bottom" className="max-w-xs">
447
+ {isFursChecked ? t("Click to skip fiscalization for this credit note") : t("Click to enable fiscalization")}
448
+ </TooltipContent>
449
+ </Tooltip>
450
+ </TooltipProvider>,
451
+ );
452
+ }, [
453
+ fina.isLoading,
454
+ furs.hasPremises,
455
+ furs.isEnabled,
456
+ furs.isLoading,
457
+ isEditMode,
458
+ onHeaderActionChange,
459
+ skipFiscalization,
460
+ t,
461
+ ]);
225
462
 
226
463
  // Auto-populate tax_clause from entity settings when transaction type changes
227
464
  const effectiveTransactionType = transactionType ?? "domestic";
@@ -229,13 +466,14 @@ export default function CreateCreditNoteForm({
229
466
  useEffect(() => {
230
467
  if (effectiveTransactionType === prevTransactionTypeRef.current) return;
231
468
  prevTransactionTypeRef.current = effectiveTransactionType;
469
+ if (isEditMode) return;
232
470
 
233
471
  const taxClauseDefaults = (activeEntity?.settings as any)?.tax_clause_defaults;
234
472
  if (!taxClauseDefaults) return;
235
473
 
236
474
  const clause = taxClauseDefaults[effectiveTransactionType] ?? "";
237
475
  form.setValue("tax_clause", clause);
238
- }, [effectiveTransactionType, activeEntity, form]);
476
+ }, [effectiveTransactionType, activeEntity, form, isEditMode]);
239
477
 
240
478
  // Clear date_service_to when switching from range to single
241
479
  useEffect(() => {
@@ -257,10 +495,25 @@ export default function CreateCreditNoteForm({
257
495
 
258
496
  // Pre-fill credit note number from preview
259
497
  useEffect(() => {
498
+ if (isEditMode) return;
260
499
  if (nextNumberData?.number) {
261
500
  form.setValue("number", nextNumberData.number);
262
501
  }
263
- }, [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]);
264
517
 
265
518
  const { mutate: createCreditNote, isPending } = useCreateCreditNote({
266
519
  entityId,
@@ -276,16 +529,50 @@ export default function CreateCreditNoteForm({
276
529
  },
277
530
  onError,
278
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
+ });
279
549
 
280
550
  // Shared submit logic for both regular save and save as draft
281
551
  const submitCreditNote = useCallback(
282
552
  (values: CreateCreditNoteFormValues, isDraft: boolean) => {
283
- // Build FURS options (skip for drafts; no skip toggle for credit notes)
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
+
568
+ // Build FURS options (skip for drafts; user can also skip fiscalization explicitly)
284
569
  const fursOptions = buildFursOptions({
285
570
  isDraft,
286
571
  isEnabled: furs.isEnabled,
572
+ skipFiscalization,
287
573
  premiseName: furs.selectedPremiseName,
288
574
  deviceName: furs.selectedDeviceName,
575
+ operator: operatorPrefill,
289
576
  });
290
577
 
291
578
  // Build FINA options (skip for drafts; FINA can't be skipped)
@@ -294,18 +581,35 @@ export default function CreateCreditNoteForm({
294
581
  useFinaNumbering,
295
582
  premiseName: fina.selectedPremiseName,
296
583
  deviceName: fina.selectedDeviceName,
297
- paymentType: paymentTypes[0],
584
+ paymentType: getFirstValidPaymentType(paymentRows),
585
+ operator: operatorPrefill,
298
586
  });
299
587
 
300
- const payload = prepareDocumentSubmission(values, {
588
+ if (!isDraft && markAsPaid) {
589
+ const paymentValidation = validatePaymentRows(paymentRows, paymentDocumentTotal, "partial_allowed");
590
+ const paymentMessage =
591
+ paymentValidation.typeError ?? paymentValidation.amountError ?? paymentValidation.totalError;
592
+
593
+ if (paymentMessage) {
594
+ setPaymentValidationMessage(paymentMessage);
595
+ return;
596
+ }
597
+ }
598
+
599
+ const payload = prepareCreditNoteSubmission(values, {
301
600
  originalCustomer,
302
601
  wasCustomerFormShown: showCustomerForm,
303
602
  markAsPaid: isDraft ? false : markAsPaid,
304
- paymentTypes,
305
- documentType: "credit_note",
603
+ payments: serializePaymentRows(paymentRows, paymentDocumentTotal),
306
604
  priceModes: priceModesRef.current,
307
605
  isDraft,
308
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
+ }
309
613
 
310
614
  // Add FURS data to payload
311
615
  if (fursOptions) {
@@ -317,9 +621,33 @@ export default function CreateCreditNoteForm({
317
621
  (payload as any).fina = finaOptions;
318
622
  }
319
623
 
320
- 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
+ }
321
630
  },
322
- [createCreditNote, furs, fina, useFinaNumbering, markAsPaid, originalCustomer, paymentTypes, showCustomerForm],
631
+ [
632
+ createCreditNote,
633
+ createCustomCreditNote,
634
+ documentId,
635
+ fina,
636
+ furs,
637
+ isEditMode,
638
+ markAsPaid,
639
+ originalCustomer,
640
+ paymentDocumentTotal,
641
+ paymentRows,
642
+ showCustomerForm,
643
+ skipFiscalization,
644
+ operatorPrefill,
645
+ customCreateTemplate,
646
+ financialInputsMatchSource,
647
+ getPreservedExpectedTotalWithTax,
648
+ updateCreditNote,
649
+ useFinaNumbering,
650
+ ],
323
651
  );
324
652
 
325
653
  // Handle save as draft
@@ -338,18 +666,22 @@ export default function CreateCreditNoteForm({
338
666
 
339
667
  useFormFooterRegistration({
340
668
  formId: "create-credit-note-form",
341
- isPending,
669
+ isPending: isPending || isCreateCustomPending || isUpdatePending,
342
670
  isDirty: form.formState.isDirty || !!initialValues,
343
- label: t("Save"),
344
- secondaryAction: {
345
- label: t("Save as Draft"),
346
- onClick: handleSaveAsDraft,
347
- isPending: isDraftPending,
348
- },
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,
349
680
  });
350
681
 
351
682
  // Set default note and payment terms from entity settings when entity data is available
352
683
  useEffect(() => {
684
+ if (isEditMode) return;
353
685
  const entityDefaultNote = (activeEntity?.settings as any)?.default_credit_note_note;
354
686
  if (entityDefaultNote && !form.getValues("note")) {
355
687
  form.setValue("note", entityDefaultNote);
@@ -366,7 +698,7 @@ export default function CreateCreditNoteForm({
366
698
  if (entityDefaultSignature && !form.getValues("signature")) {
367
699
  form.setValue("signature", entityDefaultSignature);
368
700
  }
369
- }, [activeEntity, form]);
701
+ }, [activeEntity, form, isEditMode]);
370
702
 
371
703
  // Auto-add tax field for tax subject entities
372
704
  useEffect(() => {
@@ -378,30 +710,32 @@ export default function CreateCreditNoteForm({
378
710
  }
379
711
  }, [activeEntity?.is_tax_subject, form]);
380
712
 
381
- const buildPreviewPayload = useCallback((values: CreateCreditNoteFormValues): CreditNotePreviewPayload => {
382
- const currentItems = values.items || [];
383
-
384
- const transformedItems = currentItems.map((item: any, index: number) => {
385
- const { price, ...rest } = item;
386
- const isGross = priceModesRef.current[index] ?? false;
387
- return isGross ? { ...rest, gross_price: price } : { ...rest, price };
388
- });
389
-
390
- return {
391
- number: values.number,
392
- date: values.date,
393
- date_service: (values as any).date_service,
394
- date_service_to: (values as any).date_service_to,
395
- customer_id: values.customer_id,
396
- customer: values.customer,
397
- items: transformedItems,
398
- currency_code: values.currency_code,
399
- reference: values.reference,
400
- note: values.note,
401
- payment_terms: values.payment_terms,
402
- signature: values.signature,
403
- };
404
- }, []);
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
+ );
405
739
 
406
740
  const emitPreviewPayload = useCallback((payload: CreditNotePreviewPayload) => {
407
741
  const callback = onChangeRef.current;
@@ -490,13 +824,15 @@ export default function CreateCreditNoteForm({
490
824
  selectedCustomerId={selectedCustomerId}
491
825
  initialCustomerName={initialCustomerName}
492
826
  t={t}
827
+ locale={locale}
493
828
  />
494
829
  <DocumentDetailsSection
495
830
  control={form.control}
496
831
  documentType={_type}
497
832
  t={t}
833
+ locale={locale}
498
834
  fursInline={
499
- furs.isEnabled && furs.hasPremises
835
+ !isEditMode && furs.isEnabled && furs.hasPremises
500
836
  ? {
501
837
  premises: furs.activePremises.map((p) => ({
502
838
  id: p.id,
@@ -510,6 +846,7 @@ export default function CreateCreditNoteForm({
510
846
  selectedDevice: furs.selectedDeviceName,
511
847
  onPremiseChange: furs.setSelectedPremiseName,
512
848
  onDeviceChange: furs.setSelectedDeviceName,
849
+ isSkipped: skipFiscalization,
513
850
  }
514
851
  : undefined
515
852
  }
@@ -518,7 +855,7 @@ export default function CreateCreditNoteForm({
518
855
  onDateTypeChange: setServiceDateType,
519
856
  }}
520
857
  finaInline={
521
- useFinaNumbering
858
+ !isEditMode && useFinaNumbering
522
859
  ? {
523
860
  premises: fina.activePremises.map((p: any) => ({
524
861
  id: p.id,
@@ -535,28 +872,48 @@ export default function CreateCreditNoteForm({
535
872
  }
536
873
  : undefined
537
874
  }
875
+ dateLock={{
876
+ isLocked: !isEditMode && isFiscalizationDateLocked,
877
+ reason: !isEditMode ? fiscalizationDateLockReason : "",
878
+ }}
538
879
  >
539
880
  {/* Credit note specific: Mark as paid section (UI-only state, not in form schema) */}
540
- <MarkAsPaidSection
541
- checked={markAsPaid}
542
- onCheckedChange={setMarkAsPaid}
543
- paymentTypes={paymentTypes}
544
- onPaymentTypesChange={setPaymentTypes}
545
- t={t}
546
- alwaysShowPaymentType={!!fina.isActive}
547
- />
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
+ )}
899
+ {detailsExtras}
548
900
  </DocumentDetailsSection>
549
901
  </div>
550
902
 
551
903
  <DocumentItemsSection
552
904
  control={form.control}
905
+ documentType={_type}
553
906
  watch={form.watch}
554
907
  setValue={form.setValue}
908
+ clearErrors={form.clearErrors}
909
+ trigger={form.trigger}
910
+ isSubmitted={form.formState.isSubmitted}
555
911
  getValues={form.getValues}
556
912
  entityId={entityId}
557
913
  currencyCode={activeEntity?.currency_code ?? undefined}
558
914
  onAddNewTax={onAddNewTax}
559
915
  t={t}
916
+ locale={locale}
560
917
  maxTaxesPerItem={activeEntity?.country_rules?.max_taxes_per_item}
561
918
  priceModesRef={priceModesRef}
562
919
  initialPriceModes={initialPriceModes}