@spaceinvoices/react-ui 0.4.11 → 0.4.12

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 (633) 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 +41 -25
  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 +2 -3
  15. package/src/components/advance-invoices/create/create-advance-invoice-form.tsx +290 -69
  16. package/src/components/advance-invoices/create/locales/bg.ts +48 -0
  17. package/src/components/advance-invoices/create/locales/cs.ts +48 -0
  18. package/src/components/advance-invoices/create/locales/en.ts +48 -0
  19. package/src/components/advance-invoices/create/locales/et.ts +48 -0
  20. package/src/components/advance-invoices/create/locales/fi.ts +48 -0
  21. package/src/components/advance-invoices/create/locales/hr.ts +17 -17
  22. package/src/components/advance-invoices/create/locales/is.ts +48 -0
  23. package/src/components/advance-invoices/create/locales/nb.ts +48 -0
  24. package/src/components/advance-invoices/create/locales/sk.ts +48 -0
  25. package/src/components/advance-invoices/create/locales/sl.ts +9 -7
  26. package/src/components/advance-invoices/create/locales/sv.ts +48 -0
  27. package/src/components/advance-invoices/create/prepare-advance-invoice-submission.ts +16 -2
  28. package/src/components/advance-invoices/list/list-row-actions.tsx +48 -16
  29. package/src/components/advance-invoices/list/list-table.tsx +33 -8
  30. package/src/components/advance-invoices/list/locales/bg.ts +51 -0
  31. package/src/components/advance-invoices/list/locales/cs.ts +51 -0
  32. package/src/components/advance-invoices/list/locales/en.ts +33 -2
  33. package/src/components/advance-invoices/list/locales/et.ts +51 -0
  34. package/src/components/advance-invoices/list/locales/fi.ts +51 -0
  35. package/src/components/advance-invoices/list/locales/hr.ts +15 -15
  36. package/src/components/advance-invoices/list/locales/is.ts +51 -0
  37. package/src/components/advance-invoices/list/locales/nb.ts +51 -0
  38. package/src/components/advance-invoices/list/locales/sk.ts +51 -0
  39. package/src/components/advance-invoices/list/locales/sv.ts +51 -0
  40. package/src/components/advance-invoices/list/use-advance-invoice-download.ts +3 -5
  41. package/src/components/common/autocomplete-locales.ts +101 -0
  42. package/src/components/company-registry/company-registry.hooks.ts +3 -7
  43. package/src/components/credit-notes/create/create-credit-note-form.tsx +211 -22
  44. package/src/components/credit-notes/create/locales/bg.ts +87 -0
  45. package/src/components/credit-notes/create/locales/cs.ts +87 -0
  46. package/src/components/credit-notes/create/locales/en.ts +87 -0
  47. package/src/components/credit-notes/create/locales/et.ts +87 -0
  48. package/src/components/credit-notes/create/locales/fi.ts +87 -0
  49. package/src/components/credit-notes/create/locales/hr.ts +24 -24
  50. package/src/components/credit-notes/create/locales/is.ts +87 -0
  51. package/src/components/credit-notes/create/locales/nb.ts +87 -0
  52. package/src/components/credit-notes/create/locales/sk.ts +87 -0
  53. package/src/components/credit-notes/create/locales/sl.ts +9 -9
  54. package/src/components/credit-notes/create/locales/sv.ts +87 -0
  55. package/src/components/credit-notes/create/prepare-credit-note-submission.ts +32 -0
  56. package/src/components/credit-notes/credit-notes.hooks.ts +15 -3
  57. package/src/components/credit-notes/list/list-row-actions.tsx +19 -7
  58. package/src/components/credit-notes/list/list-table.tsx +58 -7
  59. package/src/components/credit-notes/list/locales/bg.ts +48 -0
  60. package/src/components/credit-notes/list/locales/cs.ts +48 -0
  61. package/src/components/credit-notes/list/locales/en.ts +31 -2
  62. package/src/components/credit-notes/list/locales/et.ts +48 -0
  63. package/src/components/credit-notes/list/locales/fi.ts +48 -0
  64. package/src/components/credit-notes/list/locales/hr.ts +12 -12
  65. package/src/components/credit-notes/list/locales/is.ts +48 -0
  66. package/src/components/credit-notes/list/locales/nb.ts +48 -0
  67. package/src/components/credit-notes/list/locales/sk.ts +48 -0
  68. package/src/components/credit-notes/list/locales/sv.ts +48 -0
  69. package/src/components/credit-notes/list/use-credit-note-download.ts +3 -5
  70. package/src/components/customers/create-customer-form/locales/bg.ts +21 -0
  71. package/src/components/customers/create-customer-form/locales/cs.ts +21 -0
  72. package/src/components/customers/create-customer-form/locales/en.ts +21 -0
  73. package/src/components/customers/create-customer-form/locales/et.ts +21 -0
  74. package/src/components/customers/create-customer-form/locales/fi.ts +21 -0
  75. package/src/components/customers/create-customer-form/locales/hr.ts +11 -11
  76. package/src/components/customers/create-customer-form/locales/is.ts +21 -0
  77. package/src/components/customers/create-customer-form/locales/nb.ts +21 -0
  78. package/src/components/customers/create-customer-form/locales/sk.ts +21 -0
  79. package/src/components/customers/create-customer-form/locales/sv.ts +21 -0
  80. package/src/components/customers/customer-autocomplete.tsx +32 -4
  81. package/src/components/customers/customer-list-table/customer-list-table.tsx +8 -6
  82. package/src/components/customers/customer-list-table/locales/bg.ts +25 -0
  83. package/src/components/customers/customer-list-table/locales/cs.ts +25 -0
  84. package/src/components/customers/customer-list-table/locales/en.ts +17 -2
  85. package/src/components/customers/customer-list-table/locales/et.ts +25 -0
  86. package/src/components/customers/customer-list-table/locales/fi.ts +25 -0
  87. package/src/components/customers/customer-list-table/locales/hr.ts +11 -11
  88. package/src/components/customers/customer-list-table/locales/is.ts +25 -0
  89. package/src/components/customers/customer-list-table/locales/nb.ts +25 -0
  90. package/src/components/customers/customer-list-table/locales/sk.ts +25 -0
  91. package/src/components/customers/customer-list-table/locales/sv.ts +25 -0
  92. package/src/components/customers/customers.hooks.ts +14 -17
  93. package/src/components/customers/edit-customer-form/locales/bg.ts +13 -0
  94. package/src/components/customers/edit-customer-form/locales/cs.ts +13 -0
  95. package/src/components/customers/edit-customer-form/locales/en.ts +13 -0
  96. package/src/components/customers/edit-customer-form/locales/et.ts +13 -0
  97. package/src/components/customers/edit-customer-form/locales/fi.ts +13 -0
  98. package/src/components/customers/edit-customer-form/locales/hr.ts +5 -5
  99. package/src/components/customers/edit-customer-form/locales/is.ts +13 -0
  100. package/src/components/customers/edit-customer-form/locales/nb.ts +13 -0
  101. package/src/components/customers/edit-customer-form/locales/sk.ts +13 -0
  102. package/src/components/customers/edit-customer-form/locales/sv.ts +13 -0
  103. package/src/components/dashboard/collection-rate-card/collection-rate-card.tsx +7 -6
  104. package/src/components/dashboard/collection-rate-card/locales/en.ts +3 -0
  105. package/src/components/dashboard/collection-rate-card/use-collection-rate.ts +8 -7
  106. package/src/components/dashboard/invoice-status-chart/invoice-status-chart.tsx +7 -4
  107. package/src/components/dashboard/invoice-status-chart/locales/bg.ts +5 -5
  108. package/src/components/dashboard/invoice-status-chart/locales/cs.ts +5 -5
  109. package/src/components/dashboard/invoice-status-chart/locales/de.ts +1 -1
  110. package/src/components/dashboard/invoice-status-chart/locales/en.ts +10 -0
  111. package/src/components/dashboard/invoice-status-chart/locales/es.ts +1 -1
  112. package/src/components/dashboard/invoice-status-chart/locales/et.ts +5 -5
  113. package/src/components/dashboard/invoice-status-chart/locales/fi.ts +5 -5
  114. package/src/components/dashboard/invoice-status-chart/locales/fr.ts +1 -1
  115. package/src/components/dashboard/invoice-status-chart/locales/hr.ts +5 -5
  116. package/src/components/dashboard/invoice-status-chart/locales/is.ts +5 -5
  117. package/src/components/dashboard/invoice-status-chart/locales/it.ts +1 -1
  118. package/src/components/dashboard/invoice-status-chart/locales/nb.ts +5 -5
  119. package/src/components/dashboard/invoice-status-chart/locales/nl.ts +1 -1
  120. package/src/components/dashboard/invoice-status-chart/locales/pl.ts +1 -1
  121. package/src/components/dashboard/invoice-status-chart/locales/pt.ts +1 -1
  122. package/src/components/dashboard/invoice-status-chart/locales/sk.ts +5 -5
  123. package/src/components/dashboard/invoice-status-chart/locales/sl.ts +1 -1
  124. package/src/components/dashboard/invoice-status-chart/locales/sv.ts +5 -5
  125. package/src/components/dashboard/payment-methods-chart/locales/bg.ts +5 -5
  126. package/src/components/dashboard/payment-methods-chart/locales/cs.ts +5 -5
  127. package/src/components/dashboard/payment-methods-chart/locales/en.ts +12 -0
  128. package/src/components/dashboard/payment-methods-chart/locales/et.ts +5 -5
  129. package/src/components/dashboard/payment-methods-chart/locales/fi.ts +6 -6
  130. package/src/components/dashboard/payment-methods-chart/locales/hr.ts +3 -3
  131. package/src/components/dashboard/payment-methods-chart/locales/is.ts +5 -5
  132. package/src/components/dashboard/payment-methods-chart/locales/nb.ts +5 -5
  133. package/src/components/dashboard/payment-methods-chart/locales/sk.ts +5 -5
  134. package/src/components/dashboard/payment-methods-chart/locales/sv.ts +5 -5
  135. package/src/components/dashboard/payment-methods-chart/payment-methods-chart.tsx +4 -3
  136. package/src/components/dashboard/payment-trend-chart/locales/bg.ts +1 -1
  137. package/src/components/dashboard/payment-trend-chart/locales/cs.ts +1 -1
  138. package/src/components/dashboard/payment-trend-chart/locales/en.ts +6 -0
  139. package/src/components/dashboard/payment-trend-chart/locales/et.ts +1 -1
  140. package/src/components/dashboard/payment-trend-chart/locales/fi.ts +1 -1
  141. package/src/components/dashboard/payment-trend-chart/locales/is.ts +1 -1
  142. package/src/components/dashboard/payment-trend-chart/locales/nb.ts +1 -1
  143. package/src/components/dashboard/payment-trend-chart/locales/sk.ts +1 -1
  144. package/src/components/dashboard/payment-trend-chart/locales/sv.ts +1 -1
  145. package/src/components/dashboard/payment-trend-chart/payment-trend-chart.tsx +4 -3
  146. package/src/components/dashboard/payment-trend-chart/use-payment-trend.ts +12 -9
  147. package/src/components/dashboard/revenue-card.tsx +3 -3
  148. package/src/components/dashboard/revenue-trend-chart/locales/bg.ts +1 -1
  149. package/src/components/dashboard/revenue-trend-chart/locales/cs.ts +1 -1
  150. package/src/components/dashboard/revenue-trend-chart/locales/en.ts +6 -0
  151. package/src/components/dashboard/revenue-trend-chart/locales/et.ts +1 -1
  152. package/src/components/dashboard/revenue-trend-chart/locales/fi.ts +1 -1
  153. package/src/components/dashboard/revenue-trend-chart/locales/is.ts +1 -1
  154. package/src/components/dashboard/revenue-trend-chart/locales/nb.ts +1 -1
  155. package/src/components/dashboard/revenue-trend-chart/locales/sk.ts +1 -1
  156. package/src/components/dashboard/revenue-trend-chart/locales/sv.ts +1 -1
  157. package/src/components/dashboard/revenue-trend-chart/revenue-trend-chart.tsx +4 -3
  158. package/src/components/dashboard/revenue-trend-chart/use-revenue-trend.ts +4 -3
  159. package/src/components/dashboard/shared/local-date.ts +11 -0
  160. package/src/components/dashboard/shared/use-revenue-data.ts +6 -5
  161. package/src/components/dashboard/shared/use-stats-query.ts +7 -11
  162. package/src/components/dashboard/stat-card.tsx +3 -3
  163. package/src/components/dashboard/tax-collected-card/tax-collected-card.tsx +11 -9
  164. package/src/components/dashboard/tax-collected-card/use-tax-collected.ts +3 -2
  165. package/src/components/dashboard/top-customers-chart/locales/bg.ts +2 -2
  166. package/src/components/dashboard/top-customers-chart/locales/cs.ts +2 -2
  167. package/src/components/dashboard/top-customers-chart/locales/en.ts +7 -0
  168. package/src/components/dashboard/top-customers-chart/locales/et.ts +2 -2
  169. package/src/components/dashboard/top-customers-chart/locales/fi.ts +2 -2
  170. package/src/components/dashboard/top-customers-chart/locales/is.ts +2 -2
  171. package/src/components/dashboard/top-customers-chart/locales/nb.ts +2 -2
  172. package/src/components/dashboard/top-customers-chart/locales/sk.ts +2 -2
  173. package/src/components/dashboard/top-customers-chart/locales/sv.ts +2 -2
  174. package/src/components/dashboard/top-customers-chart/top-customers-chart.tsx +4 -3
  175. package/src/components/dashboard/top-customers-chart/use-top-customers.ts +7 -20
  176. package/src/components/delivery-notes/create/create-delivery-note-form.tsx +61 -31
  177. package/src/components/delivery-notes/create/locales/bg.ts +68 -0
  178. package/src/components/delivery-notes/create/locales/cs.ts +68 -0
  179. package/src/components/delivery-notes/create/locales/en.ts +68 -0
  180. package/src/components/delivery-notes/create/locales/et.ts +68 -0
  181. package/src/components/delivery-notes/create/locales/fi.ts +68 -0
  182. package/src/components/delivery-notes/create/locales/hr.ts +6 -6
  183. package/src/components/delivery-notes/create/locales/is.ts +68 -0
  184. package/src/components/delivery-notes/create/locales/nb.ts +68 -0
  185. package/src/components/delivery-notes/create/locales/sk.ts +68 -0
  186. package/src/components/delivery-notes/create/locales/sl.ts +5 -5
  187. package/src/components/delivery-notes/create/locales/sv.ts +68 -0
  188. package/src/components/delivery-notes/delivery-notes.hooks.ts +20 -3
  189. package/src/components/delivery-notes/list/list-row-actions.tsx +62 -16
  190. package/src/components/delivery-notes/list/list-table.tsx +42 -9
  191. package/src/components/delivery-notes/list/locales/bg.ts +40 -0
  192. package/src/components/delivery-notes/list/locales/cs.ts +40 -0
  193. package/src/components/delivery-notes/list/locales/et.ts +40 -0
  194. package/src/components/delivery-notes/list/locales/fi.ts +40 -0
  195. package/src/components/delivery-notes/list/locales/is.ts +40 -0
  196. package/src/components/delivery-notes/list/locales/nb.ts +40 -0
  197. package/src/components/delivery-notes/list/locales/sk.ts +40 -0
  198. package/src/components/delivery-notes/list/locales/sv.ts +40 -0
  199. package/src/components/delivery-notes/list/use-delivery-note-download.ts +3 -5
  200. package/src/components/documents/create/document-add-item-form.tsx +256 -147
  201. package/src/components/documents/create/document-add-item-tax-rate-field.tsx +2 -1
  202. package/src/components/documents/create/document-details-section.tsx +30 -12
  203. package/src/components/documents/create/document-item-validation.ts +50 -0
  204. package/src/components/documents/create/document-items-section.tsx +44 -6
  205. package/src/components/documents/create/document-recipient-section.tsx +10 -2
  206. package/src/components/documents/create/linked-documents-info.tsx +4 -3
  207. package/src/components/documents/create/live-preview.tsx +19 -15
  208. package/src/components/documents/create/mark-as-paid-section.tsx +77 -20
  209. package/src/components/documents/create/payment-rows.ts +291 -0
  210. package/src/components/documents/create/prepare-document-submission.ts +24 -13
  211. package/src/components/documents/create/scroll-to-first-invalid-field.ts +27 -0
  212. package/src/components/documents/create/smart-code-insert-button.tsx +5 -53
  213. package/src/components/documents/create/use-document-customer-form.ts +74 -25
  214. package/src/components/documents/documents.hooks.ts +3 -5
  215. package/src/components/documents/index.ts +1 -0
  216. package/src/components/documents/public/index.ts +1 -0
  217. package/src/components/documents/public/public-document-summary.tsx +343 -0
  218. package/src/components/documents/shared/document-preview-display.tsx +65 -39
  219. package/src/components/documents/shared/index.ts +6 -1
  220. package/src/components/documents/shared/scaled-document-preview.tsx +33 -19
  221. package/src/components/documents/types.ts +24 -0
  222. package/src/components/documents/view/document-actions-bar.tsx +241 -62
  223. package/src/components/documents/view/document-activities-list.tsx +23 -11
  224. package/src/components/documents/view/document-details-card.tsx +7 -27
  225. package/src/components/documents/view/document-payments-list.tsx +114 -57
  226. package/src/components/documents/view/document-relations-list.tsx +26 -6
  227. package/src/components/documents/view/document-sidebar.tsx +25 -3
  228. package/src/components/documents/view/document-version-history.tsx +137 -0
  229. package/src/components/documents/view/index.ts +1 -0
  230. package/src/components/documents/view/locales/bg.ts +143 -0
  231. package/src/components/documents/view/locales/cs.ts +143 -0
  232. package/src/components/documents/view/locales/de.ts +13 -0
  233. package/src/components/documents/view/locales/en.ts +143 -0
  234. package/src/components/documents/view/locales/es.ts +13 -0
  235. package/src/components/documents/view/locales/et.ts +143 -0
  236. package/src/components/documents/view/locales/fi.ts +143 -0
  237. package/src/components/documents/view/locales/fr.ts +13 -0
  238. package/src/components/documents/view/locales/hr.ts +13 -0
  239. package/src/components/documents/view/locales/is.ts +143 -0
  240. package/src/components/documents/view/locales/it.ts +13 -0
  241. package/src/components/documents/view/locales/nb.ts +143 -0
  242. package/src/components/documents/view/locales/nl.ts +13 -0
  243. package/src/components/documents/view/locales/pl.ts +13 -0
  244. package/src/components/documents/view/locales/pt.ts +13 -0
  245. package/src/components/documents/view/locales/sk.ts +143 -0
  246. package/src/components/documents/view/locales/sl.ts +13 -0
  247. package/src/components/documents/view/locales/sv.ts +143 -0
  248. package/src/components/documents/view/use-document-download.ts +18 -17
  249. package/src/components/entities/create-entity-form.tsx +200 -12
  250. package/src/components/entities/entities.hooks.ts +15 -7
  251. package/src/components/entities/entity-settings-form/entity-settings-form.tsx +121 -65
  252. package/src/components/entities/entity-settings-form/input-with-preview.tsx +28 -4
  253. package/src/components/entities/entity-settings-form/locales/bg.ts +199 -0
  254. package/src/components/entities/entity-settings-form/locales/cs.ts +199 -0
  255. package/src/components/entities/entity-settings-form/locales/de.ts +8 -3
  256. package/src/components/entities/entity-settings-form/locales/en.ts +199 -0
  257. package/src/components/entities/entity-settings-form/locales/es.ts +8 -3
  258. package/src/components/entities/entity-settings-form/locales/et.ts +198 -0
  259. package/src/components/entities/entity-settings-form/locales/fi.ts +199 -0
  260. package/src/components/entities/entity-settings-form/locales/fr.ts +8 -3
  261. package/src/components/entities/entity-settings-form/locales/hr.ts +16 -11
  262. package/src/components/entities/entity-settings-form/locales/is.ts +199 -0
  263. package/src/components/entities/entity-settings-form/locales/it.ts +8 -3
  264. package/src/components/entities/entity-settings-form/locales/nb.ts +199 -0
  265. package/src/components/entities/entity-settings-form/locales/nl.ts +8 -3
  266. package/src/components/entities/entity-settings-form/locales/pl.ts +8 -3
  267. package/src/components/entities/entity-settings-form/locales/pt.ts +8 -3
  268. package/src/components/entities/entity-settings-form/locales/sk.ts +199 -0
  269. package/src/components/entities/entity-settings-form/locales/sl.ts +20 -15
  270. package/src/components/entities/entity-settings-form/locales/sv.ts +205 -0
  271. package/src/components/entities/fina-settings-form/fina-operator-required-dialog.tsx +34 -9
  272. package/src/components/entities/fina-settings-form/fina-settings-form.tsx +2 -0
  273. package/src/components/entities/fina-settings-form/fina-settings.hooks.ts +14 -45
  274. package/src/components/entities/fina-settings-form/locales/bg.ts +163 -0
  275. package/src/components/entities/fina-settings-form/locales/cs.ts +163 -0
  276. package/src/components/entities/fina-settings-form/locales/et.ts +163 -0
  277. package/src/components/entities/fina-settings-form/locales/fi.ts +163 -0
  278. package/src/components/entities/fina-settings-form/locales/hr.ts +11 -10
  279. package/src/components/entities/fina-settings-form/locales/is.ts +164 -0
  280. package/src/components/entities/fina-settings-form/locales/nb.ts +163 -0
  281. package/src/components/entities/fina-settings-form/locales/sk.ts +163 -0
  282. package/src/components/entities/fina-settings-form/locales/sl.ts +8 -7
  283. package/src/components/entities/fina-settings-form/locales/sv.ts +165 -0
  284. package/src/components/entities/furs-settings-form/furs-operator-required-dialog.tsx +34 -9
  285. package/src/components/entities/furs-settings-form/furs-settings-form.tsx +13 -1
  286. package/src/components/entities/furs-settings-form/furs-settings.hooks.ts +141 -42
  287. package/src/components/entities/furs-settings-form/locales/bg.ts +242 -0
  288. package/src/components/entities/furs-settings-form/locales/cs.ts +241 -0
  289. package/src/components/entities/furs-settings-form/locales/de.ts +42 -15
  290. package/src/components/entities/furs-settings-form/locales/en.ts +24 -0
  291. package/src/components/entities/furs-settings-form/locales/es.ts +42 -15
  292. package/src/components/entities/furs-settings-form/locales/et.ts +242 -0
  293. package/src/components/entities/furs-settings-form/locales/fi.ts +243 -0
  294. package/src/components/entities/furs-settings-form/locales/fr.ts +43 -15
  295. package/src/components/entities/furs-settings-form/locales/hr.ts +44 -19
  296. package/src/components/entities/furs-settings-form/locales/is.ts +242 -0
  297. package/src/components/entities/furs-settings-form/locales/it.ts +42 -15
  298. package/src/components/entities/furs-settings-form/locales/nb.ts +242 -0
  299. package/src/components/entities/furs-settings-form/locales/nl.ts +42 -15
  300. package/src/components/entities/furs-settings-form/locales/pl.ts +40 -15
  301. package/src/components/entities/furs-settings-form/locales/pt.ts +42 -15
  302. package/src/components/entities/furs-settings-form/locales/sk.ts +243 -0
  303. package/src/components/entities/furs-settings-form/locales/sl.ts +34 -10
  304. package/src/components/entities/furs-settings-form/locales/sv.ts +242 -0
  305. package/src/components/entities/furs-settings-form/sections/enable-fiscalization-section.tsx +11 -0
  306. package/src/components/entities/furs-settings-form/sections/furs-internal-act-download-card.tsx +111 -0
  307. package/src/components/entities/furs-settings-form/sections/general-settings-section.tsx +27 -0
  308. package/src/components/entities/furs-settings-form/sections/premises-management-section.tsx +23 -16
  309. package/src/components/entities/furs-settings-form/sections/register-premise-dialog.tsx +89 -31
  310. package/src/components/entities/settings/branding-settings-form.tsx +11 -30
  311. package/src/components/entities/settings/company-settings-form.tsx +2 -1
  312. package/src/components/entities/settings/defaults-settings-form.tsx +106 -3
  313. package/src/components/entities/settings/email-settings-form.tsx +245 -3
  314. package/src/components/entities/settings/eslog-settings-form.tsx +2 -1
  315. package/src/components/entities/settings/number-format-settings-form.tsx +2 -1
  316. package/src/components/entities/settings/pdf-template-selector/locales/bg.ts +20 -0
  317. package/src/components/entities/settings/pdf-template-selector/locales/cs.ts +20 -0
  318. package/src/components/entities/settings/pdf-template-selector/locales/en.ts +20 -0
  319. package/src/components/entities/settings/pdf-template-selector/locales/et.ts +19 -0
  320. package/src/components/entities/settings/pdf-template-selector/locales/fi.ts +20 -0
  321. package/src/components/entities/settings/pdf-template-selector/locales/is.ts +19 -0
  322. package/src/components/entities/settings/pdf-template-selector/locales/nb.ts +19 -0
  323. package/src/components/entities/settings/pdf-template-selector/locales/sk.ts +20 -0
  324. package/src/components/entities/settings/pdf-template-selector/locales/sv.ts +19 -0
  325. package/src/components/entities/settings/tax-rules-settings-form.tsx +21 -6
  326. package/src/components/estimates/create/create-estimate-form.tsx +70 -34
  327. package/src/components/estimates/create/locales/bg.ts +76 -0
  328. package/src/components/estimates/create/locales/cs.ts +76 -0
  329. package/src/components/estimates/create/locales/en.ts +76 -0
  330. package/src/components/estimates/create/locales/et.ts +76 -0
  331. package/src/components/estimates/create/locales/fi.ts +76 -0
  332. package/src/components/estimates/create/locales/hr.ts +8 -8
  333. package/src/components/estimates/create/locales/is.ts +76 -0
  334. package/src/components/estimates/create/locales/nb.ts +76 -0
  335. package/src/components/estimates/create/locales/sk.ts +76 -0
  336. package/src/components/estimates/create/locales/sl.ts +8 -8
  337. package/src/components/estimates/create/locales/sv.ts +76 -0
  338. package/src/components/estimates/create/prepare-estimate-submission.ts +4 -1
  339. package/src/components/estimates/estimates.hooks.ts +15 -3
  340. package/src/components/estimates/list/list-row-actions.tsx +34 -7
  341. package/src/components/estimates/list/list-table.tsx +78 -10
  342. package/src/components/estimates/list/locales/bg.ts +38 -0
  343. package/src/components/estimates/list/locales/cs.ts +38 -0
  344. package/src/components/estimates/list/locales/en.ts +27 -2
  345. package/src/components/estimates/list/locales/et.ts +38 -0
  346. package/src/components/estimates/list/locales/fi.ts +38 -0
  347. package/src/components/estimates/list/locales/hr.ts +2 -2
  348. package/src/components/estimates/list/locales/is.ts +38 -0
  349. package/src/components/estimates/list/locales/nb.ts +38 -0
  350. package/src/components/estimates/list/locales/sk.ts +38 -0
  351. package/src/components/estimates/list/locales/sv.ts +38 -0
  352. package/src/components/estimates/list/use-estimate-download.ts +3 -5
  353. package/src/components/export/document-export-form.tsx +72 -15
  354. package/src/components/export/sales-per-item-export-form.tsx +3 -2
  355. package/src/components/invoices/create/create-invoice-form.tsx +294 -76
  356. package/src/components/invoices/create/eslog-validation.ts +97 -8
  357. package/src/components/invoices/create/locales/bg.ts +164 -0
  358. package/src/components/invoices/create/locales/cs.ts +164 -0
  359. package/src/components/invoices/create/locales/de.ts +24 -0
  360. package/src/components/invoices/create/locales/en.ts +164 -0
  361. package/src/components/invoices/create/locales/es.ts +24 -0
  362. package/src/components/invoices/create/locales/et.ts +164 -0
  363. package/src/components/invoices/create/locales/fi.ts +164 -0
  364. package/src/components/invoices/create/locales/fr.ts +23 -0
  365. package/src/components/invoices/create/locales/hr.ts +32 -9
  366. package/src/components/invoices/create/locales/is.ts +164 -0
  367. package/src/components/invoices/create/locales/it.ts +24 -0
  368. package/src/components/invoices/create/locales/nb.ts +164 -0
  369. package/src/components/invoices/create/locales/nl.ts +23 -0
  370. package/src/components/invoices/create/locales/pl.ts +23 -0
  371. package/src/components/invoices/create/locales/pt.ts +24 -0
  372. package/src/components/invoices/create/locales/sk.ts +164 -0
  373. package/src/components/invoices/create/locales/sl.ts +32 -9
  374. package/src/components/invoices/create/locales/sv.ts +166 -0
  375. package/src/components/invoices/create/prepare-invoice-submission.ts +19 -2
  376. package/src/components/invoices/invoices-furs.hooks.ts +11 -8
  377. package/src/components/invoices/invoices.hooks.ts +27 -10
  378. package/src/components/invoices/list/list-row-actions.tsx +54 -21
  379. package/src/components/invoices/list/list-table.tsx +92 -11
  380. package/src/components/invoices/list/locales/bg.ts +49 -0
  381. package/src/components/invoices/list/locales/cs.ts +49 -0
  382. package/src/components/invoices/list/locales/en.ts +34 -2
  383. package/src/components/invoices/list/locales/et.ts +49 -0
  384. package/src/components/invoices/list/locales/fi.ts +49 -0
  385. package/src/components/invoices/list/locales/is.ts +49 -0
  386. package/src/components/invoices/list/locales/nb.ts +49 -0
  387. package/src/components/invoices/list/locales/sk.ts +49 -0
  388. package/src/components/invoices/list/locales/sv.ts +49 -0
  389. package/src/components/invoices/list/use-invoice-download.ts +3 -5
  390. package/src/components/invoices/send-email-dialog/locales/bg.ts +58 -0
  391. package/src/components/invoices/send-email-dialog/locales/cs.ts +58 -0
  392. package/src/components/invoices/send-email-dialog/locales/de.ts +21 -0
  393. package/src/components/invoices/send-email-dialog/locales/en.ts +58 -0
  394. package/src/components/invoices/send-email-dialog/locales/es.ts +21 -0
  395. package/src/components/invoices/send-email-dialog/locales/et.ts +58 -0
  396. package/src/components/invoices/send-email-dialog/locales/fi.ts +58 -0
  397. package/src/components/invoices/send-email-dialog/locales/fr.ts +21 -0
  398. package/src/components/invoices/send-email-dialog/locales/hr.ts +21 -0
  399. package/src/components/invoices/send-email-dialog/locales/is.ts +58 -0
  400. package/src/components/invoices/send-email-dialog/locales/it.ts +21 -0
  401. package/src/components/invoices/send-email-dialog/locales/nb.ts +58 -0
  402. package/src/components/invoices/send-email-dialog/locales/nl.ts +21 -0
  403. package/src/components/invoices/send-email-dialog/locales/pl.ts +21 -0
  404. package/src/components/invoices/send-email-dialog/locales/pt.ts +21 -0
  405. package/src/components/invoices/send-email-dialog/locales/sk.ts +58 -0
  406. package/src/components/invoices/send-email-dialog/locales/sl.ts +21 -0
  407. package/src/components/invoices/send-email-dialog/locales/sv.ts +58 -0
  408. package/src/components/invoices/send-email-dialog/send-email-dialog.tsx +188 -93
  409. package/src/components/invoices/view/eslog-info-display.tsx +2 -0
  410. package/src/components/invoices/view/fiscalization-status-card.tsx +2 -0
  411. package/src/components/items/create-item-form/create-item-form.tsx +29 -0
  412. package/src/components/items/create-item-form/locales/bg.ts +13 -0
  413. package/src/components/items/create-item-form/locales/cs.ts +13 -0
  414. package/src/components/items/create-item-form/locales/et.ts +13 -0
  415. package/src/components/items/create-item-form/locales/fi.ts +13 -0
  416. package/src/components/items/create-item-form/locales/is.ts +13 -0
  417. package/src/components/items/create-item-form/locales/nb.ts +13 -0
  418. package/src/components/items/create-item-form/locales/sk.ts +13 -0
  419. package/src/components/items/create-item-form/locales/sv.ts +13 -0
  420. package/src/components/items/edit-item-form/edit-item-form.tsx +39 -1
  421. package/src/components/items/edit-item-form/locales/bg.ts +12 -0
  422. package/src/components/items/edit-item-form/locales/cs.ts +12 -0
  423. package/src/components/items/edit-item-form/locales/en.ts +12 -0
  424. package/src/components/items/edit-item-form/locales/et.ts +12 -0
  425. package/src/components/items/edit-item-form/locales/fi.ts +12 -0
  426. package/src/components/items/edit-item-form/locales/is.ts +12 -0
  427. package/src/components/items/edit-item-form/locales/nb.ts +12 -0
  428. package/src/components/items/edit-item-form/locales/sk.ts +12 -0
  429. package/src/components/items/edit-item-form/locales/sv.ts +12 -0
  430. package/src/components/items/item-combobox.tsx +51 -18
  431. package/src/components/items/item-list-table/item-list-table.tsx +47 -23
  432. package/src/components/items/item-list-table/locales/bg.ts +16 -0
  433. package/src/components/items/item-list-table/locales/cs.ts +16 -0
  434. package/src/components/items/item-list-table/locales/en.ts +4 -3
  435. package/src/components/items/item-list-table/locales/et.ts +16 -0
  436. package/src/components/items/item-list-table/locales/fi.ts +16 -0
  437. package/src/components/items/item-list-table/locales/is.ts +16 -0
  438. package/src/components/items/item-list-table/locales/nb.ts +16 -0
  439. package/src/components/items/item-list-table/locales/sk.ts +16 -0
  440. package/src/components/items/item-list-table/locales/sv.ts +16 -0
  441. package/src/components/items/items.hooks.ts +15 -15
  442. package/src/components/payments/create-payment-form/create-payment-form.tsx +11 -7
  443. package/src/components/payments/create-payment-form/locales/bg.ts +20 -0
  444. package/src/components/payments/create-payment-form/locales/cs.ts +20 -0
  445. package/src/components/payments/create-payment-form/locales/en.ts +20 -0
  446. package/src/components/payments/create-payment-form/locales/et.ts +20 -0
  447. package/src/components/payments/create-payment-form/locales/fi.ts +20 -0
  448. package/src/components/payments/create-payment-form/locales/hr.ts +2 -2
  449. package/src/components/payments/create-payment-form/locales/is.ts +20 -0
  450. package/src/components/payments/create-payment-form/locales/nb.ts +20 -0
  451. package/src/components/payments/create-payment-form/locales/sk.ts +20 -0
  452. package/src/components/payments/create-payment-form/locales/sl.ts +4 -4
  453. package/src/components/payments/create-payment-form/locales/sv.ts +20 -0
  454. package/src/components/payments/edit-payment-form/edit-payment-form.tsx +5 -1
  455. package/src/components/payments/edit-payment-form/locales/bg.ts +20 -0
  456. package/src/components/payments/edit-payment-form/locales/cs.ts +20 -0
  457. package/src/components/payments/edit-payment-form/locales/en.ts +20 -0
  458. package/src/components/payments/edit-payment-form/locales/et.ts +20 -0
  459. package/src/components/payments/edit-payment-form/locales/fi.ts +20 -0
  460. package/src/components/payments/edit-payment-form/locales/hr.ts +2 -2
  461. package/src/components/payments/edit-payment-form/locales/is.ts +20 -0
  462. package/src/components/payments/edit-payment-form/locales/nb.ts +20 -0
  463. package/src/components/payments/edit-payment-form/locales/sk.ts +20 -0
  464. package/src/components/payments/edit-payment-form/locales/sl.ts +4 -4
  465. package/src/components/payments/edit-payment-form/locales/sv.ts +20 -0
  466. package/src/components/payments/list/list-row-actions.tsx +10 -2
  467. package/src/components/payments/list/list-table.tsx +51 -45
  468. package/src/components/payments/list/locales/bg.ts +42 -0
  469. package/src/components/payments/list/locales/cs.ts +42 -0
  470. package/src/components/payments/list/locales/de.ts +18 -0
  471. package/src/components/payments/list/locales/en.ts +37 -2
  472. package/src/components/payments/list/locales/es.ts +18 -0
  473. package/src/components/payments/list/locales/et.ts +42 -0
  474. package/src/components/payments/list/locales/fi.ts +42 -0
  475. package/src/components/payments/list/locales/fr.ts +18 -0
  476. package/src/components/payments/list/locales/hr.ts +18 -0
  477. package/src/components/payments/list/locales/is.ts +42 -0
  478. package/src/components/payments/list/locales/it.ts +18 -0
  479. package/src/components/payments/list/locales/nb.ts +42 -0
  480. package/src/components/payments/list/locales/nl.ts +18 -0
  481. package/src/components/payments/list/locales/pl.ts +18 -0
  482. package/src/components/payments/list/locales/pt.ts +18 -0
  483. package/src/components/payments/list/locales/sk.ts +42 -0
  484. package/src/components/payments/list/locales/sl.ts +18 -1
  485. package/src/components/payments/list/locales/sv.ts +42 -0
  486. package/src/components/payments/payments.hooks.ts +13 -6
  487. package/src/components/recurring-invoices/create-recurring-invoice-form/create-recurring-invoice-form.tsx +23 -17
  488. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/bg.ts +44 -0
  489. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/cs.ts +44 -0
  490. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/en.ts +44 -0
  491. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/et.ts +44 -0
  492. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/fi.ts +44 -0
  493. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/hr.ts +6 -6
  494. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/is.ts +44 -0
  495. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/nb.ts +44 -0
  496. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/sk.ts +44 -0
  497. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/sl.ts +4 -4
  498. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/sv.ts +44 -0
  499. package/src/components/recurring-invoices/list/list-row-actions.tsx +3 -5
  500. package/src/components/recurring-invoices/list/list-table.tsx +10 -7
  501. package/src/components/recurring-invoices/list/locales/bg.ts +28 -0
  502. package/src/components/recurring-invoices/list/locales/cs.ts +28 -0
  503. package/src/components/recurring-invoices/list/locales/en.ts +23 -0
  504. package/src/components/recurring-invoices/list/locales/et.ts +28 -0
  505. package/src/components/recurring-invoices/list/locales/fi.ts +28 -0
  506. package/src/components/recurring-invoices/list/locales/is.ts +28 -0
  507. package/src/components/recurring-invoices/list/locales/nb.ts +28 -0
  508. package/src/components/recurring-invoices/list/locales/sk.ts +28 -0
  509. package/src/components/recurring-invoices/list/locales/sv.ts +28 -0
  510. package/src/components/recurring-invoices/recurring-invoices.hooks.ts +11 -8
  511. package/src/components/request-logs/request-log-detail.tsx +30 -23
  512. package/src/components/request-logs/request-log-list-table.tsx +88 -45
  513. package/src/components/table/README.md +47 -9
  514. package/src/components/table/data-table.tsx +232 -92
  515. package/src/components/table/filter-bar.tsx +1 -1
  516. package/src/components/table/filter-panel.tsx +51 -22
  517. package/src/components/table/hooks/use-table-state.ts +64 -11
  518. package/src/components/table/index.ts +3 -0
  519. package/src/components/table/locales.ts +119 -4
  520. package/src/components/table/selection-toolbar.tsx +65 -9
  521. package/src/components/table/sorting.ts +80 -0
  522. package/src/components/table/table-skeleton.tsx +15 -9
  523. package/src/components/table/types.ts +17 -0
  524. package/src/components/tax-reports/index.ts +8 -0
  525. package/src/components/tax-reports/kir-export-form.tsx +4 -5
  526. package/src/components/tax-reports/slovenia-accounting-mappings-fields.tsx +271 -0
  527. package/src/components/tax-reports/slovenia-tax-profile-step.tsx +21 -10
  528. package/src/components/tax-reports/slovenia-vod-export-form.tsx +452 -0
  529. package/src/components/tax-reports/slovenia-yearly-export-form.tsx +17 -16
  530. package/src/components/tax-reports/slovenia-yearly-review-step.tsx +40 -18
  531. package/src/components/taxes/create-tax-form/create-tax-form.tsx +48 -2
  532. package/src/components/taxes/create-tax-form/locales/bg.ts +8 -0
  533. package/src/components/taxes/create-tax-form/locales/cs.ts +8 -0
  534. package/src/components/taxes/create-tax-form/locales/et.ts +8 -0
  535. package/src/components/taxes/create-tax-form/locales/fi.ts +8 -0
  536. package/src/components/taxes/create-tax-form/locales/is.ts +8 -0
  537. package/src/components/taxes/create-tax-form/locales/nb.ts +8 -0
  538. package/src/components/taxes/create-tax-form/locales/sk.ts +8 -0
  539. package/src/components/taxes/create-tax-form/locales/sv.ts +8 -0
  540. package/src/components/taxes/edit-tax-form/edit-tax-form.tsx +80 -11
  541. package/src/components/taxes/edit-tax-form/locales/bg.ts +6 -0
  542. package/src/components/taxes/edit-tax-form/locales/cs.ts +6 -0
  543. package/src/components/taxes/edit-tax-form/locales/en.ts +6 -0
  544. package/src/components/taxes/edit-tax-form/locales/et.ts +6 -0
  545. package/src/components/taxes/edit-tax-form/locales/fi.ts +6 -0
  546. package/src/components/taxes/edit-tax-form/locales/is.ts +6 -0
  547. package/src/components/taxes/edit-tax-form/locales/nb.ts +6 -0
  548. package/src/components/taxes/edit-tax-form/locales/sk.ts +6 -0
  549. package/src/components/taxes/edit-tax-form/locales/sv.ts +6 -0
  550. package/src/components/taxes/tax-list-table/locales/bg.ts +17 -0
  551. package/src/components/taxes/tax-list-table/locales/cs.ts +17 -0
  552. package/src/components/taxes/tax-list-table/locales/en.ts +4 -3
  553. package/src/components/taxes/tax-list-table/locales/et.ts +17 -0
  554. package/src/components/taxes/tax-list-table/locales/fi.ts +17 -0
  555. package/src/components/taxes/tax-list-table/locales/is.ts +17 -0
  556. package/src/components/taxes/tax-list-table/locales/nb.ts +17 -0
  557. package/src/components/taxes/tax-list-table/locales/sk.ts +17 -0
  558. package/src/components/taxes/tax-list-table/locales/sv.ts +17 -0
  559. package/src/components/taxes/tax-list-table/tax-list-table.tsx +53 -19
  560. package/src/components/taxes/taxes.hooks.ts +53 -12
  561. package/src/components/ui/badge.tsx +1 -1
  562. package/src/components/ui/button.tsx +1 -1
  563. package/src/components/ui/drawer.tsx +2 -2
  564. package/src/components/ui/form.tsx +118 -2
  565. package/src/components/ui/progress.tsx +6 -4
  566. package/src/components/ui/select.tsx +118 -1
  567. package/src/components/ui/sonner.tsx +17 -36
  568. package/src/components/ui/sticky-form-footer.tsx +6 -1
  569. package/src/components/ui/tooltip.tsx +15 -2
  570. package/src/components/webhook-logs/webhook-delivery-detail.tsx +22 -22
  571. package/src/components/webhook-logs/webhook-delivery-list-table.tsx +92 -17
  572. package/src/components/wl-subscription/locked-feature.tsx +11 -10
  573. package/src/components/wl-subscription/paywall.tsx +184 -72
  574. package/src/components/wl-subscription/upgrade-modal.tsx +28 -31
  575. package/src/generate-schemas.ts +14 -4
  576. package/src/generated/schemas/account_webhook.ts +43 -0
  577. package/src/generated/schemas/accountwebhook.ts +67 -0
  578. package/src/generated/schemas/entity.ts +255 -16
  579. package/src/generated/schemas/exportsloveniavodxml_body.ts +16 -0
  580. package/src/generated/schemas/furssettings.ts +1 -0
  581. package/src/generated/schemas/incomingpurchasedocument.ts +198 -0
  582. package/src/generated/schemas/incomingpurchasedocumentpayment.ts +38 -0
  583. package/src/generated/schemas/index.ts +10 -0
  584. package/src/generated/schemas/item.ts +36 -0
  585. package/src/generated/schemas/me.ts +23 -19
  586. package/src/generated/schemas/order.ts +2 -0
  587. package/src/generated/schemas/orderintegration.ts +8 -4
  588. package/src/generated/schemas/payment.ts +5 -0
  589. package/src/generated/schemas/ptatcudseries.ts +30 -0
  590. package/src/generated/schemas/renderadvanceinvoicepreview_body.ts +35 -3
  591. package/src/generated/schemas/rendercreditnotepreview_body.ts +35 -3
  592. package/src/generated/schemas/renderdeliverynotepreview_body.ts +12 -5
  593. package/src/generated/schemas/renderestimatepreview_body.ts +38 -5
  594. package/src/generated/schemas/renderinvoicepreview_body.ts +39 -5
  595. package/src/generated/schemas/senddocument_body.ts +1 -0
  596. package/src/generated/schemas/sendemail_body.ts +67 -39
  597. package/src/generated/schemas/sloveniataxprofile.ts +97 -21
  598. package/src/generated/schemas/starteslogexport_body.ts +33 -0
  599. package/src/generated/schemas/startpdfexport_body.ts +94 -78
  600. package/src/generated/schemas/supplier.ts +59 -0
  601. package/src/generated/schemas/syncshopifyorders_body.ts +20 -0
  602. package/src/generated/schemas/tax.ts +2 -0
  603. package/src/generated/schemas/uploadfile_body.ts +1 -0
  604. package/src/generated/schemas/userptsettings.ts +26 -0
  605. package/src/generated/schemas/voidinvoice_body.ts +20 -0
  606. package/src/generated/schemas/webhook.ts +2 -0
  607. package/src/hooks/create-resource-hooks.ts +22 -19
  608. package/src/hooks/use-duplicate-document.ts +10 -8
  609. package/src/hooks/use-eslog-validation.ts +5 -1
  610. package/src/hooks/use-next-document-number.ts +13 -6
  611. package/src/hooks/use-resolved-entity-id.ts +14 -0
  612. package/src/hooks/use-resource-mutation.ts +11 -30
  613. package/src/hooks/use-transaction-type-check.ts +3 -8
  614. package/src/lib/browser-cookies.ts +1 -1
  615. package/src/lib/country-capabilities.ts +114 -0
  616. package/src/lib/date-fns-locale.ts +1 -20
  617. package/src/lib/eslog-export.ts +32 -0
  618. package/src/lib/fiscalization-options.ts +21 -1
  619. package/src/lib/formatting.ts +27 -0
  620. package/src/lib/furs-error-utils.ts +29 -0
  621. package/src/lib/locale.ts +4 -0
  622. package/src/lib/payment-display.ts +95 -0
  623. package/src/lib/pt-document-input.ts +67 -0
  624. package/src/lib/schemas/shared.ts +1 -0
  625. package/src/lib/template-variables.tsx +102 -4
  626. package/src/lib/translation.ts +51 -33
  627. package/src/lib/white-label-capabilities.ts +626 -0
  628. package/src/lib/zod-validation-message.ts +291 -0
  629. package/src/providers/entities-provider.tsx +32 -14
  630. package/src/providers/sdk-provider.tsx +112 -12
  631. package/src/providers/space-invoices-provider.tsx +129 -0
  632. package/src/providers/white-label-provider.tsx +96 -4
  633. package/src/providers/wl-subscription-provider.tsx +144 -10
@@ -9,14 +9,24 @@ import { useForm, useWatch } from "react-hook-form";
9
9
  import type { z } from "zod";
10
10
  import { Alert, AlertDescription, AlertTitle } from "@/ui/components/ui/alert";
11
11
  import { Button } from "@/ui/components/ui/button";
12
- import { Form } from "@/ui/components/ui/form";
12
+ import { Form, FormRoot } from "@/ui/components/ui/form";
13
13
  import { Skeleton } from "@/ui/components/ui/skeleton";
14
14
  import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/ui/components/ui/tooltip";
15
15
  import { createInvoiceSchema } from "@/ui/generated/schemas";
16
16
  import { useEslogValidation } from "@/ui/hooks/use-eslog-validation";
17
17
  import { usePremiseSelection } from "@/ui/hooks/use-premise-selection";
18
18
  import { useTransactionTypeCheck } from "@/ui/hooks/use-transaction-type-check";
19
- import { buildEslogOptions, buildFinaOptions, buildFursOptions } from "@/ui/lib/fiscalization-options";
19
+ import {
20
+ buildEslogOptions,
21
+ buildFinaOptions,
22
+ buildFursOptions,
23
+ type FiscalizationOperatorOverride,
24
+ } from "@/ui/lib/fiscalization-options";
25
+ import {
26
+ normalizePtDocumentInput,
27
+ type PtDocumentInputForm,
28
+ ptDocumentInputFormSchema,
29
+ } from "@/ui/lib/pt-document-input";
20
30
  import type { ComponentTranslationProps } from "@/ui/lib/translation";
21
31
  import { createTranslation } from "@/ui/lib/translation";
22
32
  import { cn } from "@/ui/lib/utils";
@@ -31,13 +41,31 @@ import {
31
41
  DocumentSignatureField,
32
42
  DocumentTaxClauseField,
33
43
  } from "../../documents/create/document-details-section";
44
+ import { withRequiredDocumentItemFields } from "../../documents/create/document-item-validation";
34
45
  import { DocumentItemsSection, type PriceModesMap } from "../../documents/create/document-items-section";
35
46
  import { DocumentRecipientSection } from "../../documents/create/document-recipient-section";
36
47
  import { type LinkedDocumentSummary, LinkedDocumentsInfo } from "../../documents/create/linked-documents-info";
37
48
  import { MarkAsPaidSection } from "../../documents/create/mark-as-paid-section";
49
+ import {
50
+ calculateDocumentTotal,
51
+ coercePaymentRowsToType,
52
+ createEmptyPaymentRow,
53
+ type DraftPaymentRow,
54
+ getFirstValidPaymentType,
55
+ serializePaymentRows,
56
+ validatePaymentRows,
57
+ } from "../../documents/create/payment-rows";
58
+ import { scrollToFirstInvalidField } from "../../documents/create/scroll-to-first-invalid-field";
38
59
  import type { DocumentTypes } from "../../documents/types";
39
60
  import { useCreateInvoice, useNextInvoiceNumber, useUpdateInvoice } from "../invoices.hooks";
40
- import { getEntityErrors, getFormFieldErrors, validateEslogForm } from "./eslog-validation";
61
+ import {
62
+ buildEslogFieldErrors,
63
+ getEntityErrors,
64
+ getFormFieldErrors,
65
+ mergeFieldErrors,
66
+ translateEslogValidationError,
67
+ validateEslogForm,
68
+ } from "./eslog-validation";
41
69
  import de from "./locales/de";
42
70
  import es from "./locales/es";
43
71
  import fr from "./locales/fr";
@@ -72,18 +100,24 @@ const translations = {
72
100
 
73
101
  const DUPLICATE_PREVIEW_SETTLE_MS = 120;
74
102
  const DUPLICATE_PREVIEW_MIN_DELAY_MS = 260;
103
+ const FORM_ID = "create-invoice-form";
104
+ const createInvoiceFormSchema = withRequiredDocumentItemFields(
105
+ createInvoiceSchema.extend({
106
+ pt: ptDocumentInputFormSchema.optional(),
107
+ }),
108
+ );
75
109
 
76
110
  function emitInvoiceCreateDebug(_detail: Record<string, unknown>) {
77
111
  if (!import.meta.env.DEV || typeof window === "undefined") return;
78
112
  }
79
113
 
80
114
  // Form values: extend schema with local-only fields (number is for display, not sent to API)
81
- type CreateInvoiceFormValues = z.infer<typeof createInvoiceSchema> & {
115
+ type CreateInvoiceFormValues = z.infer<typeof createInvoiceFormSchema> & {
82
116
  number?: string;
83
117
  };
84
118
 
85
119
  /** Preview payload extends request with display-only fields */
86
- type InvoicePreviewPayload = Partial<CreateInvoiceRequest> & { number?: string };
120
+ type InvoicePreviewPayload = Partial<CreateInvoiceRequest> & { id?: string; number?: string; pt?: PtDocumentInputForm };
87
121
 
88
122
  type DocumentAddFormProps = {
89
123
  type: DocumentTypes;
@@ -103,6 +137,13 @@ type DocumentAddFormProps = {
103
137
  mode?: "create" | "edit";
104
138
  /** Document ID for edit mode */
105
139
  documentId?: string;
140
+ /** Whether draft actions should be available in the UI */
141
+ allowDrafts?: boolean;
142
+ /** Optional app-level content rendered inside the details section. */
143
+ detailsExtras?: ReactNode;
144
+ /** Request-scoped operator override for embed fiscalization flows. */
145
+ operatorPrefill?: FiscalizationOperatorOverride;
146
+ translationLocale?: string;
106
147
  } & ComponentTranslationProps;
107
148
 
108
149
  function buildInvoiceFormValues({
@@ -158,6 +199,7 @@ function buildInvoiceFormValues({
158
199
  calculateDueDate(initialValues?.date || new Date().toISOString(), defaultInvoiceDueDays),
159
200
  date_service: (initialValues as any)?.date_service || new Date().toISOString(),
160
201
  linked_documents: (initialValues as any)?.linked_documents,
202
+ pt: ((initialValues as any)?.pt as PtDocumentInputForm | undefined) ?? undefined,
161
203
  };
162
204
  }
163
205
 
@@ -174,6 +216,10 @@ export default function CreateInvoiceForm({
174
216
  forceLinkedDocuments,
175
217
  mode = "create",
176
218
  documentId,
219
+ allowDrafts = true,
220
+ detailsExtras,
221
+ operatorPrefill,
222
+ translationLocale,
177
223
  t: translateProp,
178
224
  namespace,
179
225
  locale,
@@ -182,6 +228,7 @@ export default function CreateInvoiceForm({
182
228
  t: translateProp,
183
229
  namespace,
184
230
  locale,
231
+ translationLocale,
185
232
  translations,
186
233
  });
187
234
 
@@ -206,10 +253,14 @@ export default function CreateInvoiceForm({
206
253
  // e-SLOG Validation (shared hook)
207
254
  // ============================================================================
208
255
  const eslog = useEslogValidation(activeEntity);
256
+ const eslogValidationModeRef = useRef<"submit" | "draft">("submit");
257
+ const eslogEntityErrorsRef = useRef(eslog.entityErrors);
258
+ eslogEntityErrorsRef.current = eslog.entityErrors;
209
259
 
210
260
  // UI-only state (not part of API schema)
211
261
  const [markAsPaid, setMarkAsPaid] = useState(false);
212
- const [paymentTypes, setPaymentTypes] = useState<string[]>(["bank_transfer"]);
262
+ const [paymentRows, setPaymentRows] = useState<DraftPaymentRow[]>([createEmptyPaymentRow()]);
263
+ const [paymentValidationMessage, setPaymentValidationMessage] = useState<string | undefined>();
213
264
  const [isDraftPending, setIsDraftPending] = useState(false);
214
265
 
215
266
  // Service date type state (single date or range)
@@ -254,21 +305,117 @@ export default function CreateInvoiceForm({
254
305
  ],
255
306
  );
256
307
 
308
+ const baseResolver = useMemo(() => zodResolver(createInvoiceFormSchema) as Resolver<CreateInvoiceFormValues>, []);
309
+ const eslogResolverStateRef = useRef({
310
+ activeEntity,
311
+ isEnabled: eslog.isEnabled === true,
312
+ isEditMode,
313
+ translate: t,
314
+ setEntityErrors: eslog.setEntityErrors,
315
+ });
316
+ eslogResolverStateRef.current = {
317
+ activeEntity,
318
+ isEnabled: eslog.isEnabled === true,
319
+ isEditMode,
320
+ translate: t,
321
+ setEntityErrors: eslog.setEntityErrors,
322
+ };
323
+ const resolver = useMemo<Resolver<CreateInvoiceFormValues>>(
324
+ () => async (values, context, options) => {
325
+ const result = await baseResolver(values, context, options);
326
+ const resolverState = eslogResolverStateRef.current;
327
+ const shouldValidateEslog =
328
+ eslogValidationModeRef.current === "submit" && !resolverState.isEditMode && resolverState.isEnabled;
329
+
330
+ if (!shouldValidateEslog) {
331
+ eslogEntityErrorsRef.current = [];
332
+ resolverState.setEntityErrors([]);
333
+ return result;
334
+ }
335
+
336
+ const validationErrors = validateEslogForm(values as any, resolverState.activeEntity);
337
+ const entityErrors = getEntityErrors(validationErrors);
338
+ eslogEntityErrorsRef.current = entityErrors;
339
+ resolverState.setEntityErrors(entityErrors);
340
+
341
+ const fieldErrors = getFormFieldErrors(validationErrors);
342
+ if (fieldErrors.length === 0) {
343
+ return result;
344
+ }
345
+
346
+ const mergedErrors = mergeFieldErrors(
347
+ result.errors,
348
+ buildEslogFieldErrors<CreateInvoiceFormValues>(fieldErrors, resolverState.translate),
349
+ );
350
+
351
+ return {
352
+ values: {},
353
+ errors: mergedErrors,
354
+ };
355
+ },
356
+ [baseResolver],
357
+ );
358
+
257
359
  const form = useForm<CreateInvoiceFormValues>({
258
- // Cast resolver to accept extended form type (includes UI-only fields)
259
- resolver: zodResolver(createInvoiceSchema) as Resolver<CreateInvoiceFormValues>,
360
+ resolver,
260
361
  defaultValues: formDefaultValues,
261
362
  });
262
363
 
263
- // Skip fiscalization is only allowed for bank transfers or unpaid invoices
264
- const canSkipFiscalization = !markAsPaid || paymentTypes.every((type) => type === "bank_transfer");
364
+ const watchedItems = useWatch({ control: form.control, name: "items" });
365
+ const paymentDocumentTotal = useMemo(
366
+ () => calculateDocumentTotal((watchedItems as any[]) ?? [], priceModesRef.current),
367
+ [watchedItems],
368
+ );
369
+ const hasExplicitNonBankTransferPayment =
370
+ markAsPaid && paymentRows.some((row) => row.type != null && row.type !== "bank_transfer");
371
+ const skipPreferenceInitializedRef = useRef(false);
372
+ const skipPaymentCoercionPendingRef = useRef(false);
373
+ const previousSkipFiscalizationRef = useRef(skipFiscalization);
374
+ const previousMarkAsPaidRef = useRef(markAsPaid);
375
+
376
+ useEffect(() => {
377
+ if (skipPreferenceInitializedRef.current || furs.isLoading || isEditMode) return;
378
+
379
+ skipPreferenceInitializedRef.current = true;
380
+ if (furs.settings?.default_skip_fiscalization === true) {
381
+ setSkipFiscalization(true);
382
+ }
383
+ }, [furs.isLoading, furs.settings?.default_skip_fiscalization, isEditMode]);
265
384
 
266
- // Auto-disable skip when it becomes invalid (e.g., user changes payment type to cash)
267
385
  useEffect(() => {
268
- if (!canSkipFiscalization && skipFiscalization) {
386
+ const skipJustEnabled = skipFiscalization && !previousSkipFiscalizationRef.current;
387
+ const paidJustEnabled = markAsPaid && !previousMarkAsPaidRef.current;
388
+
389
+ if (skipFiscalization && markAsPaid && (skipJustEnabled || paidJustEnabled)) {
390
+ const nextPaymentRows = coercePaymentRowsToType(paymentRows, "bank_transfer");
391
+ const hasChanged = nextPaymentRows.some((row, index) => row.type !== paymentRows[index]?.type);
392
+
393
+ if (hasChanged) {
394
+ skipPaymentCoercionPendingRef.current = true;
395
+ setPaymentRows(nextPaymentRows);
396
+ }
397
+ }
398
+
399
+ previousSkipFiscalizationRef.current = skipFiscalization;
400
+ previousMarkAsPaidRef.current = markAsPaid;
401
+ }, [markAsPaid, paymentRows, skipFiscalization]);
402
+
403
+ // Auto-disable skip when the user explicitly changes payment away from bank transfer.
404
+ useEffect(() => {
405
+ if (skipPaymentCoercionPendingRef.current) return;
406
+
407
+ if (hasExplicitNonBankTransferPayment && skipFiscalization) {
269
408
  setSkipFiscalization(false);
270
409
  }
271
- }, [canSkipFiscalization, skipFiscalization]);
410
+ }, [hasExplicitNonBankTransferPayment, skipFiscalization]);
411
+
412
+ useEffect(() => {
413
+ if (!skipPaymentCoercionPendingRef.current) return;
414
+
415
+ if (!markAsPaid || paymentRows.every((row) => row.type === "bank_transfer")) {
416
+ skipPaymentCoercionPendingRef.current = false;
417
+ }
418
+ }, [markAsPaid, paymentRows]);
272
419
 
273
420
  // Clear date_service_to when switching from range to single
274
421
  useEffect(() => {
@@ -417,10 +564,9 @@ export default function CreateInvoiceForm({
417
564
  size="sm"
418
565
  className={cn(
419
566
  "h-8 cursor-pointer gap-2",
420
- !canSkipFiscalization && "cursor-not-allowed opacity-50",
421
567
  !isFursChecked && "text-destructive hover:text-destructive",
422
568
  )}
423
- onClick={() => canSkipFiscalization && setSkipFiscalization(!skipFiscalization)}
569
+ onClick={() => setSkipFiscalization(!skipFiscalization)}
424
570
  >
425
571
  <div
426
572
  className={cn(
@@ -436,11 +582,9 @@ export default function CreateInvoiceForm({
436
582
  </Button>
437
583
  </TooltipTrigger>
438
584
  <TooltipContent side="bottom" className="max-w-xs">
439
- {canSkipFiscalization
440
- ? isFursChecked
441
- ? t("Click to skip fiscalization for this invoice")
442
- : t("Click to enable fiscalization")
443
- : t("Cannot skip fiscalization for cash payments")}
585
+ {isFursChecked
586
+ ? t("Click to skip fiscalization for this invoice")
587
+ : t("Click to enable fiscalization")}
444
588
  </TooltipContent>
445
589
  </Tooltip>
446
590
  </TooltipProvider>
@@ -456,7 +600,6 @@ export default function CreateInvoiceForm({
456
600
  furs.isEnabled,
457
601
  furs.hasPremises,
458
602
  skipFiscalization,
459
- canSkipFiscalization,
460
603
  eslog.isAvailable,
461
604
  eslog.isEnabled,
462
605
  eslog.setEnabled,
@@ -478,6 +621,48 @@ export default function CreateInvoiceForm({
478
621
  const watchedDateDue = useWatch({ control: form.control, name: "date_due" });
479
622
  const watchedCurrencyCode = useWatch({ control: form.control, name: "currency_code" });
480
623
  const watchedCustomer = useWatch({ control: form.control, name: "customer" });
624
+ const watchedValidationSnapshot = useMemo(
625
+ () =>
626
+ JSON.stringify({
627
+ date: watchedDate,
628
+ date_due: watchedDateDue,
629
+ currency_code: watchedCurrencyCode,
630
+ customer: watchedCustomer,
631
+ items: watchedItems,
632
+ }),
633
+ [watchedCurrencyCode, watchedCustomer, watchedDate, watchedDateDue, watchedItems],
634
+ );
635
+ const lastRevalidatedSnapshotRef = useRef<string | null>(null);
636
+
637
+ useEffect(() => {
638
+ if (!form.formState.isSubmitted || form.formState.isSubmitting) {
639
+ return;
640
+ }
641
+
642
+ const hasErrors = Object.keys(form.formState.errors).length > 0 || eslog.entityErrors.length > 0;
643
+ if (!hasErrors) {
644
+ lastRevalidatedSnapshotRef.current = watchedValidationSnapshot;
645
+ return;
646
+ }
647
+
648
+ if (lastRevalidatedSnapshotRef.current === watchedValidationSnapshot) {
649
+ return;
650
+ }
651
+
652
+ lastRevalidatedSnapshotRef.current = watchedValidationSnapshot;
653
+ const timeoutId = window.setTimeout(() => {
654
+ void form.trigger();
655
+ }, 0);
656
+
657
+ return () => window.clearTimeout(timeoutId);
658
+ }, [
659
+ eslog.entityErrors.length,
660
+ form,
661
+ form.formState.errors,
662
+ form.formState.isSubmitted,
663
+ form.formState.isSubmitting,
664
+ watchedValidationSnapshot,
665
+ ]);
481
666
 
482
667
  // Croatian invoice validation:
483
668
  // - Domestic/3w B2C requires FINA
@@ -582,23 +767,8 @@ export default function CreateInvoiceForm({
582
767
  // Block Croatian domestic B2B and domestic B2C without FINA
583
768
  if (finaValidationError) return;
584
769
 
585
- // Skip e-SLOG validation for drafts and edit mode
586
- if (!isDraft && !isEditMode && eslog.isEnabled) {
587
- const validationErrors = validateEslogForm(values as any, activeEntity);
588
-
589
- if (validationErrors.length > 0) {
590
- const entityErrors = getEntityErrors(validationErrors);
591
- const formErrors = getFormFieldErrors(validationErrors);
592
- eslog.setEntityErrors(entityErrors);
593
- for (const error of formErrors) {
594
- form.setError(error.field as any, {
595
- type: "eslog",
596
- message: error.message,
597
- });
598
- }
599
- return;
600
- }
601
- eslog.setEntityErrors([]);
770
+ if (!isDraft && !isEditMode && eslog.isEnabled && eslogEntityErrorsRef.current.length > 0) {
771
+ return;
602
772
  }
603
773
 
604
774
  // Build FURS options (skip for drafts and edit mode)
@@ -609,6 +779,7 @@ export default function CreateInvoiceForm({
609
779
  skipFiscalization,
610
780
  premiseName: furs.selectedPremiseName,
611
781
  deviceName: furs.selectedDeviceName,
782
+ operator: operatorPrefill,
612
783
  });
613
784
 
614
785
  // Build FINA options (skip for drafts, edit mode, and non-domestic transactions)
@@ -618,7 +789,8 @@ export default function CreateInvoiceForm({
618
789
  isEditMode,
619
790
  premiseName: fina.selectedPremiseName,
620
791
  deviceName: fina.selectedDeviceName,
621
- paymentType: paymentTypes[0],
792
+ paymentType: getFirstValidPaymentType(paymentRows),
793
+ operator: operatorPrefill,
622
794
  });
623
795
 
624
796
  // Build e-SLOG options (skip for drafts and edit mode)
@@ -629,11 +801,22 @@ export default function CreateInvoiceForm({
629
801
  isEnabled: eslog.isEnabled,
630
802
  });
631
803
 
804
+ if (!isDraft && !isEditMode && markAsPaid) {
805
+ const paymentValidation = validatePaymentRows(paymentRows, paymentDocumentTotal, "partial_allowed");
806
+ const paymentMessage =
807
+ paymentValidation.typeError ?? paymentValidation.amountError ?? paymentValidation.totalError;
808
+
809
+ if (paymentMessage) {
810
+ setPaymentValidationMessage(paymentMessage);
811
+ return;
812
+ }
813
+ }
814
+
632
815
  const payload = prepareInvoiceSubmission(values as any, {
633
816
  originalCustomer,
634
817
  wasCustomerFormShown: showCustomerForm,
635
818
  markAsPaid: isDraft || isEditMode ? false : markAsPaid,
636
- paymentTypes,
819
+ payments: serializePaymentRows(paymentRows, paymentDocumentTotal),
637
820
  furs: fursOptions,
638
821
  fina: finaOptions,
639
822
  eslog: eslogOptions,
@@ -656,7 +839,6 @@ export default function CreateInvoiceForm({
656
839
  }
657
840
  },
658
841
  [
659
- activeEntity,
660
842
  createInvoice,
661
843
  updateInvoice,
662
844
  documentId,
@@ -664,15 +846,16 @@ export default function CreateInvoiceForm({
664
846
  finaValidationError,
665
847
  fina,
666
848
  forceLinkedDocuments,
667
- form,
668
849
  furs,
669
850
  isEditMode,
670
851
  useFinaNumbering,
671
852
  markAsPaid,
672
853
  originalCustomer,
673
- paymentTypes,
854
+ paymentDocumentTotal,
855
+ paymentRows,
674
856
  showCustomerForm,
675
857
  skipFiscalization,
858
+ operatorPrefill,
676
859
  ],
677
860
  );
678
861
 
@@ -680,12 +863,16 @@ export default function CreateInvoiceForm({
680
863
  const handleSaveAsDraft = useCallback(async () => {
681
864
  setIsDraftPending(true);
682
865
  try {
866
+ eslogValidationModeRef.current = "draft";
683
867
  const isValid = await form.trigger();
684
868
  if (isValid) {
685
869
  const values = form.getValues();
686
870
  submitInvoice(values, true);
871
+ } else {
872
+ scrollToFirstInvalidField(FORM_ID);
687
873
  }
688
874
  } finally {
875
+ eslogValidationModeRef.current = "submit";
689
876
  setIsDraftPending(false);
690
877
  }
691
878
  }, [form, submitInvoice]);
@@ -696,14 +883,14 @@ export default function CreateInvoiceForm({
696
883
  const saveLabel = isEditMode ? t("Update") : t("Save");
697
884
  const secondaryAction = useMemo(
698
885
  () =>
699
- isEditMode
886
+ isEditMode || !allowDrafts
700
887
  ? undefined
701
888
  : {
702
889
  label: draftLabel,
703
890
  onClick: handleSaveAsDraft,
704
891
  isPending: isDraftPending,
705
892
  },
706
- [draftLabel, handleSaveAsDraft, isDraftPending, isEditMode],
893
+ [allowDrafts, draftLabel, handleSaveAsDraft, isDraftPending, isEditMode],
707
894
  );
708
895
 
709
896
  // Watch isDirty to get stable reference
@@ -820,28 +1007,43 @@ export default function CreateInvoiceForm({
820
1007
  }
821
1008
  }, [hasInitialValues]);
822
1009
 
823
- const buildPreviewPayload = useCallback((formValues: any): InvoicePreviewPayload => {
824
- const currentItems = formValues.items || [];
825
- const transformedItems = currentItems.map((item: any, index: number) => {
826
- const { price, ...rest } = item;
827
- const isGross = priceModesRef.current[index] ?? false;
828
- return isGross ? { ...rest, gross_price: price } : { ...rest, price };
829
- });
830
- return {
831
- number: formValues.number,
832
- date: formValues.date,
833
- date_service: formValues.date_service,
834
- date_service_to: formValues.date_service_to,
835
- customer_id: formValues.customer_id,
836
- customer: formValues.customer,
837
- items: transformedItems,
838
- currency_code: formValues.currency_code,
839
- reference: formValues.reference,
840
- note: formValues.note,
841
- payment_terms: formValues.payment_terms,
842
- signature: formValues.signature,
843
- };
844
- }, []);
1010
+ const buildPreviewPayload = useCallback(
1011
+ (formValues: any): InvoicePreviewPayload => {
1012
+ const currentItems = formValues.items || [];
1013
+ const transformedItems = currentItems.map((item: any, index: number) => {
1014
+ const { id: _id, price, ...rest } = item;
1015
+
1016
+ if (item.type === "separator") {
1017
+ return {
1018
+ type: "separator" as const,
1019
+ name: item.name || "",
1020
+ description: item.description || undefined,
1021
+ };
1022
+ }
1023
+
1024
+ const isGross = priceModesRef.current[index] ?? false;
1025
+ return isGross ? { ...rest, gross_price: price } : { ...rest, price };
1026
+ });
1027
+ return {
1028
+ number: formValues.number,
1029
+ date: formValues.date,
1030
+ date_service: formValues.date_service,
1031
+ date_service_to: formValues.date_service_to,
1032
+ customer_id: formValues.customer_id,
1033
+ customer: formValues.customer,
1034
+ items: transformedItems,
1035
+ currency_code: formValues.currency_code,
1036
+ linked_documents: formValues.linked_documents,
1037
+ ...(forceLinkedDocuments ? { force_linked_documents: true } : {}),
1038
+ reference: formValues.reference,
1039
+ note: formValues.note,
1040
+ payment_terms: formValues.payment_terms,
1041
+ signature: formValues.signature,
1042
+ ...(normalizePtDocumentInput(formValues.pt) ? { pt: normalizePtDocumentInput(formValues.pt) } : {}),
1043
+ };
1044
+ },
1045
+ [forceLinkedDocuments],
1046
+ );
845
1047
 
846
1048
  const emitCurrentPreviewPayload = useCallback(() => {
847
1049
  if (!onChange) return;
@@ -927,7 +1129,7 @@ export default function CreateInvoiceForm({
927
1129
  return (
928
1130
  <div className="space-y-8">
929
1131
  {/* Recipient + Details columns */}
930
- <div className="flex w-full flex-col md:flex-row md:gap-6">
1132
+ <div className="flex w-full flex-col gap-8 md:flex-row md:gap-6">
931
1133
  {/* Recipient section skeleton */}
932
1134
  <div className="flex-1 space-y-4">
933
1135
  <Skeleton className="h-7 w-24" />
@@ -989,10 +1191,10 @@ export default function CreateInvoiceForm({
989
1191
 
990
1192
  return (
991
1193
  <Form {...form}>
992
- <form id="create-invoice-form" onSubmit={form.handleSubmit(onSubmit)} className="space-y-8">
1194
+ <FormRoot id={FORM_ID} onSubmit={form.handleSubmit(onSubmit)} className="space-y-8">
993
1195
  {/* Croatian domestic invoice validation errors */}
994
1196
  {finaValidationError && (
995
- <Alert variant="destructive">
1197
+ <Alert variant="destructive" data-form-error-summary="true">
996
1198
  <AlertCircle className="h-4 w-4" />
997
1199
  <AlertTitle>{finaValidationError}</AlertTitle>
998
1200
  </Alert>
@@ -1000,7 +1202,7 @@ export default function CreateInvoiceForm({
1000
1202
 
1001
1203
  {/* e-SLOG entity-level validation errors */}
1002
1204
  {eslog.entityErrors.length > 0 && (
1003
- <Alert variant="destructive">
1205
+ <Alert variant="destructive" data-form-error-summary="true">
1004
1206
  <AlertCircle className="h-4 w-4" />
1005
1207
  <AlertTitle>{t("e-SLOG Validation Failed")}</AlertTitle>
1006
1208
  <AlertDescription>
@@ -1008,7 +1210,7 @@ export default function CreateInvoiceForm({
1008
1210
  <ul className="list-disc space-y-1 pl-4">
1009
1211
  {eslog.entityErrors.map((error) => (
1010
1212
  <li key={error.field} className="text-sm">
1011
- {error.message}
1213
+ {translateEslogValidationError(error, t)}
1012
1214
  </li>
1013
1215
  ))}
1014
1216
  </ul>
@@ -1028,11 +1230,13 @@ export default function CreateInvoiceForm({
1028
1230
  initialCustomerName={initialCustomerName}
1029
1231
  showEndConsumerToggle={isCroatianEntity && (isDomesticTransaction || is3wTransaction)}
1030
1232
  t={t}
1233
+ locale={locale}
1031
1234
  />
1032
1235
  <DocumentDetailsSection
1033
1236
  control={form.control}
1034
1237
  documentType={_type}
1035
1238
  t={t}
1239
+ locale={locale}
1036
1240
  fursInline={
1037
1241
  // Hide FURS selector in edit mode - fiscalization is set at creation only
1038
1242
  !isEditMode && furs.isEnabled && furs.hasPremises
@@ -1085,25 +1289,39 @@ export default function CreateInvoiceForm({
1085
1289
  {!isEditMode && (
1086
1290
  <MarkAsPaidSection
1087
1291
  checked={markAsPaid}
1088
- onCheckedChange={setMarkAsPaid}
1089
- paymentTypes={paymentTypes}
1090
- onPaymentTypesChange={setPaymentTypes}
1292
+ onCheckedChange={(checked) => {
1293
+ setMarkAsPaid(checked);
1294
+ setPaymentValidationMessage(undefined);
1295
+ }}
1296
+ paymentRows={paymentRows}
1297
+ onPaymentRowsChange={(rows) => {
1298
+ setPaymentRows(rows);
1299
+ setPaymentValidationMessage(undefined);
1300
+ }}
1301
+ documentTotal={paymentDocumentTotal}
1091
1302
  t={t}
1092
1303
  alwaysShowPaymentType={!!fina.isActive && requiresFinaFiscalization}
1304
+ validationMessage={paymentValidationMessage}
1093
1305
  />
1094
1306
  )}
1307
+ {detailsExtras}
1095
1308
  </DocumentDetailsSection>
1096
1309
  </div>
1097
1310
 
1098
1311
  <DocumentItemsSection
1099
1312
  control={form.control}
1313
+ documentType={_type}
1100
1314
  watch={form.watch}
1101
1315
  setValue={form.setValue}
1316
+ clearErrors={form.clearErrors}
1317
+ trigger={form.trigger}
1318
+ isSubmitted={form.formState.isSubmitted}
1102
1319
  getValues={form.getValues}
1103
1320
  entityId={entityId}
1104
1321
  currencyCode={activeEntity?.currency_code ?? undefined}
1105
1322
  onAddNewTax={onAddNewTax}
1106
1323
  t={t}
1324
+ locale={locale}
1107
1325
  taxesDisabled={reverseChargeApplies}
1108
1326
  taxesDisabledMessage={
1109
1327
  reverseChargeApplies ? t("Reverse charge - tax exempt EU B2B sale") : viesWarning ? viesWarning : undefined
@@ -1185,7 +1403,7 @@ export default function CreateInvoiceForm({
1185
1403
  {sourceDocuments && sourceDocuments.length > 0 && (
1186
1404
  <LinkedDocumentsInfo documents={sourceDocuments} locale={locale || "en"} t={t} />
1187
1405
  )}
1188
- </form>
1406
+ </FormRoot>
1189
1407
  </Form>
1190
1408
  );
1191
1409
  }