@spaceinvoices/react-ui 0.1.1 → 0.4.0

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 (411) hide show
  1. package/cli/dist/index.js +1 -1
  2. package/package.json +1 -1
  3. package/registry.json +86 -122
  4. package/src/components/activities/activity-timeline.tsx +8 -1
  5. package/src/components/activities/locales/es.ts +30 -0
  6. package/src/components/activities/locales/fr.ts +30 -0
  7. package/src/components/activities/locales/hr.ts +30 -0
  8. package/src/components/activities/locales/it.ts +30 -0
  9. package/src/components/activities/locales/nl.ts +30 -0
  10. package/src/components/activities/locales/pl.ts +30 -0
  11. package/src/components/activities/locales/pt.ts +30 -0
  12. package/src/components/advance-invoices/advance-invoices.hooks.ts +2 -2
  13. package/src/components/advance-invoices/create/create-advance-invoice-form.tsx +21 -7
  14. package/src/components/advance-invoices/create/locales/es.ts +29 -0
  15. package/src/components/advance-invoices/create/locales/fr.ts +28 -0
  16. package/src/components/advance-invoices/create/locales/hr.ts +27 -0
  17. package/src/components/advance-invoices/create/locales/it.ts +29 -0
  18. package/src/components/advance-invoices/create/locales/nl.ts +28 -0
  19. package/src/components/advance-invoices/create/locales/pl.ts +28 -0
  20. package/src/components/advance-invoices/create/locales/pt.ts +29 -0
  21. package/src/components/advance-invoices/create/prepare-advance-invoice-submission.ts +3 -3
  22. package/src/components/advance-invoices/list/list-table.tsx +20 -3
  23. package/src/components/advance-invoices/list/locales/de.ts +9 -0
  24. package/src/components/advance-invoices/list/locales/en.ts +8 -0
  25. package/src/components/advance-invoices/list/locales/es.ts +41 -0
  26. package/src/components/advance-invoices/list/locales/fr.ts +41 -0
  27. package/src/components/advance-invoices/list/locales/hr.ts +41 -0
  28. package/src/components/advance-invoices/list/locales/it.ts +41 -0
  29. package/src/components/advance-invoices/list/locales/nl.ts +41 -0
  30. package/src/components/advance-invoices/list/locales/pl.ts +41 -0
  31. package/src/components/advance-invoices/list/locales/pt.ts +41 -0
  32. package/src/components/advance-invoices/list/locales/sl.ts +9 -0
  33. package/src/components/credit-notes/create/create-credit-note-form.tsx +19 -5
  34. package/src/components/credit-notes/create/locales/es.ts +68 -0
  35. package/src/components/credit-notes/create/locales/fr.ts +69 -0
  36. package/src/components/credit-notes/create/locales/hr.ts +68 -0
  37. package/src/components/credit-notes/create/locales/it.ts +68 -0
  38. package/src/components/credit-notes/create/locales/nl.ts +69 -0
  39. package/src/components/credit-notes/create/locales/pl.ts +68 -0
  40. package/src/components/credit-notes/create/locales/pt.ts +68 -0
  41. package/src/components/credit-notes/list/list-table.tsx +25 -8
  42. package/src/components/credit-notes/list/locales/de.ts +10 -2
  43. package/src/components/credit-notes/list/locales/en.ts +8 -0
  44. package/src/components/credit-notes/list/locales/es.ts +41 -0
  45. package/src/components/credit-notes/list/locales/fr.ts +41 -0
  46. package/src/components/credit-notes/list/locales/hr.ts +41 -0
  47. package/src/components/credit-notes/list/locales/it.ts +41 -0
  48. package/src/components/credit-notes/list/locales/nl.ts +41 -0
  49. package/src/components/credit-notes/list/locales/pl.ts +41 -0
  50. package/src/components/credit-notes/list/locales/pt.ts +41 -0
  51. package/src/components/credit-notes/list/locales/sl.ts +10 -2
  52. package/src/components/customers/create-customer-form/create-customer-form.tsx +21 -3
  53. package/src/components/customers/create-customer-form/locales/de.ts +1 -0
  54. package/src/components/customers/create-customer-form/locales/es.ts +21 -0
  55. package/src/components/customers/create-customer-form/locales/fr.ts +21 -0
  56. package/src/components/customers/create-customer-form/locales/hr.ts +21 -0
  57. package/src/components/customers/create-customer-form/locales/it.ts +21 -0
  58. package/src/components/customers/create-customer-form/locales/nl.ts +21 -0
  59. package/src/components/customers/create-customer-form/locales/pl.ts +21 -0
  60. package/src/components/customers/create-customer-form/locales/pt.ts +21 -0
  61. package/src/components/customers/create-customer-form/locales/sl.ts +1 -0
  62. package/src/components/customers/customer-list-table/customer-list-row-actions.tsx +72 -16
  63. package/src/components/customers/customer-list-table/customer-list-table.tsx +35 -2
  64. package/src/components/customers/customer-list-table/locales/de.ts +9 -0
  65. package/src/components/customers/customer-list-table/locales/en.ts +10 -0
  66. package/src/components/customers/customer-list-table/locales/es.ts +25 -0
  67. package/src/components/customers/customer-list-table/locales/fr.ts +25 -0
  68. package/src/components/customers/customer-list-table/locales/hr.ts +25 -0
  69. package/src/components/customers/customer-list-table/locales/it.ts +25 -0
  70. package/src/components/customers/customer-list-table/locales/nl.ts +25 -0
  71. package/src/components/customers/customer-list-table/locales/pl.ts +25 -0
  72. package/src/components/customers/customer-list-table/locales/pt.ts +25 -0
  73. package/src/components/customers/customer-list-table/locales/sl.ts +9 -0
  74. package/src/components/customers/customers.hooks.test.ts +8 -8
  75. package/src/components/customers/customers.hooks.ts +6 -1
  76. package/src/components/customers/edit-customer-form/edit-customer-form.tsx +143 -0
  77. package/src/components/customers/edit-customer-form/locales/de.ts +13 -0
  78. package/src/components/customers/edit-customer-form/locales/es.ts +13 -0
  79. package/src/components/customers/edit-customer-form/locales/fr.ts +13 -0
  80. package/src/components/customers/edit-customer-form/locales/hr.ts +13 -0
  81. package/src/components/customers/edit-customer-form/locales/it.ts +13 -0
  82. package/src/components/customers/edit-customer-form/locales/nl.ts +13 -0
  83. package/src/components/customers/edit-customer-form/locales/pl.ts +13 -0
  84. package/src/components/customers/edit-customer-form/locales/pt.ts +13 -0
  85. package/src/components/customers/edit-customer-form/locales/sl.ts +13 -0
  86. package/src/components/customers/index.ts +1 -0
  87. package/src/components/dashboard/collection-rate-card/collection-rate-card.tsx +9 -1
  88. package/src/components/dashboard/collection-rate-card/locales/de.ts +3 -0
  89. package/src/components/dashboard/collection-rate-card/locales/es.ts +3 -0
  90. package/src/components/dashboard/collection-rate-card/locales/fr.ts +3 -0
  91. package/src/components/dashboard/collection-rate-card/locales/hr.ts +3 -0
  92. package/src/components/dashboard/collection-rate-card/locales/it.ts +3 -0
  93. package/src/components/dashboard/collection-rate-card/locales/nl.ts +3 -0
  94. package/src/components/dashboard/collection-rate-card/locales/pl.ts +3 -0
  95. package/src/components/dashboard/collection-rate-card/locales/pt.ts +3 -0
  96. package/src/components/dashboard/invoice-status-chart/invoice-status-chart.tsx +9 -1
  97. package/src/components/dashboard/invoice-status-chart/locales/de.ts +9 -0
  98. package/src/components/dashboard/invoice-status-chart/locales/es.ts +9 -0
  99. package/src/components/dashboard/invoice-status-chart/locales/fr.ts +9 -0
  100. package/src/components/dashboard/invoice-status-chart/locales/hr.ts +9 -0
  101. package/src/components/dashboard/invoice-status-chart/locales/it.ts +9 -0
  102. package/src/components/dashboard/invoice-status-chart/locales/nl.ts +9 -0
  103. package/src/components/dashboard/invoice-status-chart/locales/pl.ts +9 -0
  104. package/src/components/dashboard/invoice-status-chart/locales/pt.ts +9 -0
  105. package/src/components/dashboard/payment-methods-chart/locales/de.ts +12 -0
  106. package/src/components/dashboard/payment-methods-chart/locales/es.ts +12 -0
  107. package/src/components/dashboard/payment-methods-chart/locales/fr.ts +12 -0
  108. package/src/components/dashboard/payment-methods-chart/locales/hr.ts +12 -0
  109. package/src/components/dashboard/payment-methods-chart/locales/it.ts +12 -0
  110. package/src/components/dashboard/payment-methods-chart/locales/nl.ts +12 -0
  111. package/src/components/dashboard/payment-methods-chart/locales/pl.ts +12 -0
  112. package/src/components/dashboard/payment-methods-chart/locales/pt.ts +12 -0
  113. package/src/components/dashboard/payment-methods-chart/payment-methods-chart.tsx +9 -1
  114. package/src/components/dashboard/payment-trend-chart/locales/de.ts +5 -0
  115. package/src/components/dashboard/payment-trend-chart/locales/es.ts +5 -0
  116. package/src/components/dashboard/payment-trend-chart/locales/fr.ts +5 -0
  117. package/src/components/dashboard/payment-trend-chart/locales/hr.ts +5 -0
  118. package/src/components/dashboard/payment-trend-chart/locales/it.ts +5 -0
  119. package/src/components/dashboard/payment-trend-chart/locales/nl.ts +5 -0
  120. package/src/components/dashboard/payment-trend-chart/locales/pl.ts +5 -0
  121. package/src/components/dashboard/payment-trend-chart/locales/pt.ts +5 -0
  122. package/src/components/dashboard/payment-trend-chart/payment-trend-chart.tsx +10 -2
  123. package/src/components/dashboard/revenue-trend-chart/locales/de.ts +5 -0
  124. package/src/components/dashboard/revenue-trend-chart/locales/es.ts +5 -0
  125. package/src/components/dashboard/revenue-trend-chart/locales/fr.ts +5 -0
  126. package/src/components/dashboard/revenue-trend-chart/locales/hr.ts +5 -0
  127. package/src/components/dashboard/revenue-trend-chart/locales/it.ts +5 -0
  128. package/src/components/dashboard/revenue-trend-chart/locales/nl.ts +5 -0
  129. package/src/components/dashboard/revenue-trend-chart/locales/pl.ts +5 -0
  130. package/src/components/dashboard/revenue-trend-chart/locales/pt.ts +5 -0
  131. package/src/components/dashboard/revenue-trend-chart/revenue-trend-chart.tsx +10 -2
  132. package/src/components/dashboard/top-customers-chart/locales/de.ts +5 -0
  133. package/src/components/dashboard/top-customers-chart/locales/es.ts +5 -0
  134. package/src/components/dashboard/top-customers-chart/locales/fr.ts +5 -0
  135. package/src/components/dashboard/top-customers-chart/locales/hr.ts +5 -0
  136. package/src/components/dashboard/top-customers-chart/locales/it.ts +5 -0
  137. package/src/components/dashboard/top-customers-chart/locales/nl.ts +5 -0
  138. package/src/components/dashboard/top-customers-chart/locales/pl.ts +5 -0
  139. package/src/components/dashboard/top-customers-chart/locales/pt.ts +5 -0
  140. package/src/components/dashboard/top-customers-chart/top-customers-chart.tsx +10 -2
  141. package/src/components/documents/create/document-add-item-form.tsx +1 -1
  142. package/src/components/documents/create/form-types.ts +1 -5
  143. package/src/components/documents/create/mark-as-paid-section.tsx +60 -23
  144. package/src/components/documents/create/prepare-document-submission.test.ts +2 -2
  145. package/src/components/documents/create/prepare-document-submission.ts +12 -7
  146. package/src/components/documents/create/prepare-preview-data.test.ts +1 -1
  147. package/src/components/documents/documents.hooks.ts +5 -48
  148. package/src/components/documents/shared/document-preview-display.tsx +12 -1
  149. package/src/components/documents/view/document-actions-bar.tsx +28 -13
  150. package/src/components/documents/view/document-activities-list.tsx +166 -0
  151. package/src/components/documents/view/document-details-card.tsx +14 -7
  152. package/src/components/documents/view/document-payments-list.tsx +8 -1
  153. package/src/components/documents/view/index.ts +1 -0
  154. package/src/components/documents/view/locales/de.ts +32 -0
  155. package/src/components/documents/view/locales/es.ts +115 -0
  156. package/src/components/documents/view/locales/fr.ts +115 -0
  157. package/src/components/documents/view/locales/hr.ts +115 -0
  158. package/src/components/documents/view/locales/it.ts +115 -0
  159. package/src/components/documents/view/locales/nl.ts +116 -0
  160. package/src/components/documents/view/locales/pl.ts +115 -0
  161. package/src/components/documents/view/locales/pt.ts +115 -0
  162. package/src/components/documents/view/locales/sl.ts +32 -0
  163. package/src/components/entities/create-entity-form.tsx +12 -2
  164. package/src/components/entities/entity-settings-form/entity-settings-form.tsx +18 -0
  165. package/src/components/entities/entity-settings-form/locales/de.ts +3 -1
  166. package/src/components/entities/entity-settings-form/locales/es.ts +197 -0
  167. package/src/components/entities/entity-settings-form/locales/fr.ts +196 -0
  168. package/src/components/entities/entity-settings-form/locales/hr.ts +189 -0
  169. package/src/components/entities/entity-settings-form/locales/it.ts +195 -0
  170. package/src/components/entities/entity-settings-form/locales/nl.ts +192 -0
  171. package/src/components/entities/entity-settings-form/locales/pl.ts +193 -0
  172. package/src/components/entities/entity-settings-form/locales/pt.ts +194 -0
  173. package/src/components/entities/entity-settings-form/locales/sl.ts +2 -0
  174. package/src/components/entities/fina-settings-form/fina-settings-form.tsx +461 -0
  175. package/src/components/entities/fina-settings-form/fina-settings.hooks.ts +215 -0
  176. package/src/components/entities/fina-settings-form/index.ts +3 -0
  177. package/src/components/entities/fina-settings-form/locales/de.ts +148 -0
  178. package/src/components/entities/fina-settings-form/locales/en.ts +145 -0
  179. package/src/components/entities/fina-settings-form/locales/es.ts +146 -0
  180. package/src/components/entities/fina-settings-form/locales/fr.ts +145 -0
  181. package/src/components/entities/fina-settings-form/locales/hr.ts +147 -0
  182. package/src/components/entities/fina-settings-form/locales/it.ts +147 -0
  183. package/src/components/entities/fina-settings-form/locales/nl.ts +147 -0
  184. package/src/components/entities/fina-settings-form/locales/pl.ts +145 -0
  185. package/src/components/entities/fina-settings-form/locales/pt.ts +147 -0
  186. package/src/components/entities/fina-settings-form/locales/sl.ts +147 -0
  187. package/src/components/entities/fina-settings-form/sections/certificate-settings-section.tsx +233 -0
  188. package/src/components/entities/fina-settings-form/sections/premises-management-section.tsx +363 -0
  189. package/src/components/entities/fina-settings-form/sections/register-premise-dialog.tsx +395 -0
  190. package/src/components/entities/furs-settings-form/furs-settings-form.tsx +24 -9
  191. package/src/components/entities/furs-settings-form/furs-settings.hooks.ts +15 -11
  192. package/src/components/entities/furs-settings-form/locales/de.ts +54 -88
  193. package/src/components/entities/furs-settings-form/locales/en.ts +15 -0
  194. package/src/components/entities/furs-settings-form/locales/es.ts +198 -0
  195. package/src/components/entities/furs-settings-form/locales/fr.ts +198 -0
  196. package/src/components/entities/furs-settings-form/locales/hr.ts +197 -0
  197. package/src/components/entities/furs-settings-form/locales/it.ts +198 -0
  198. package/src/components/entities/furs-settings-form/locales/nl.ts +197 -0
  199. package/src/components/entities/furs-settings-form/locales/pl.ts +196 -0
  200. package/src/components/entities/furs-settings-form/locales/pt.ts +197 -0
  201. package/src/components/entities/furs-settings-form/locales/sl.ts +16 -0
  202. package/src/components/entities/furs-settings-form/sections/certificate-settings-section.tsx +19 -4
  203. package/src/components/entities/furs-settings-form/sections/general-settings-section.tsx +121 -1
  204. package/src/components/entities/furs-settings-form/sections/register-premise-dialog.tsx +17 -66
  205. package/src/components/entities/keys.ts +1 -1
  206. package/src/components/entities/settings/company-settings-form.tsx +28 -0
  207. package/src/components/entities/settings/pdf-template-selector/locales/es.ts +18 -0
  208. package/src/components/entities/settings/pdf-template-selector/locales/fr.ts +18 -0
  209. package/src/components/entities/settings/pdf-template-selector/locales/hr.ts +18 -0
  210. package/src/components/entities/settings/pdf-template-selector/locales/it.ts +18 -0
  211. package/src/components/entities/settings/pdf-template-selector/locales/nl.ts +17 -0
  212. package/src/components/entities/settings/pdf-template-selector/locales/pl.ts +18 -0
  213. package/src/components/entities/settings/pdf-template-selector/locales/pt.ts +18 -0
  214. package/src/components/estimates/create/create-estimate-form.tsx +14 -0
  215. package/src/components/estimates/create/locales/es.ts +57 -0
  216. package/src/components/estimates/create/locales/fr.ts +58 -0
  217. package/src/components/estimates/create/locales/hr.ts +57 -0
  218. package/src/components/estimates/create/locales/it.ts +57 -0
  219. package/src/components/estimates/create/locales/nl.ts +58 -0
  220. package/src/components/estimates/create/locales/pl.ts +57 -0
  221. package/src/components/estimates/create/locales/pt.ts +58 -0
  222. package/src/components/estimates/create/prepare-estimate-submission.ts +1 -1
  223. package/src/components/estimates/list/list-table.tsx +20 -3
  224. package/src/components/estimates/list/locales/de.ts +9 -0
  225. package/src/components/estimates/list/locales/en.ts +8 -0
  226. package/src/components/estimates/list/locales/es.ts +32 -0
  227. package/src/components/estimates/list/locales/fr.ts +32 -0
  228. package/src/components/estimates/list/locales/hr.ts +32 -0
  229. package/src/components/estimates/list/locales/it.ts +32 -0
  230. package/src/components/estimates/list/locales/nl.ts +32 -0
  231. package/src/components/estimates/list/locales/pl.ts +32 -0
  232. package/src/components/estimates/list/locales/pt.ts +32 -0
  233. package/src/components/estimates/list/locales/sl.ts +9 -0
  234. package/src/components/export/document-export-form.tsx +0 -2
  235. package/src/components/invoices/create/create-invoice-form.tsx +24 -10
  236. package/src/components/invoices/create/eslog-validation.test.ts +2 -0
  237. package/src/components/invoices/create/locales/es.ts +103 -0
  238. package/src/components/invoices/create/locales/fr.ts +105 -0
  239. package/src/components/invoices/create/locales/hr.ts +103 -0
  240. package/src/components/invoices/create/locales/it.ts +105 -0
  241. package/src/components/invoices/create/locales/nl.ts +104 -0
  242. package/src/components/invoices/create/locales/pl.ts +104 -0
  243. package/src/components/invoices/create/locales/pt.ts +105 -0
  244. package/src/components/invoices/create/prepare-invoice-submission.test.ts +54 -55
  245. package/src/components/invoices/create/prepare-invoice-submission.ts +3 -3
  246. package/src/components/invoices/index.ts +1 -1
  247. package/src/components/invoices/list/list-table.tsx +20 -3
  248. package/src/components/invoices/list/locales/de.ts +9 -0
  249. package/src/components/invoices/list/locales/en.ts +8 -0
  250. package/src/components/invoices/list/locales/es.ts +42 -0
  251. package/src/components/invoices/list/locales/fr.ts +42 -0
  252. package/src/components/invoices/list/locales/hr.ts +42 -0
  253. package/src/components/invoices/list/locales/it.ts +42 -0
  254. package/src/components/invoices/list/locales/nl.ts +42 -0
  255. package/src/components/invoices/list/locales/pl.ts +42 -0
  256. package/src/components/invoices/list/locales/pt.ts +42 -0
  257. package/src/components/invoices/list/locales/sl.ts +9 -0
  258. package/src/components/invoices/send-email-dialog/locales/es.ts +18 -0
  259. package/src/components/invoices/send-email-dialog/locales/fr.ts +18 -0
  260. package/src/components/invoices/send-email-dialog/locales/hr.ts +17 -0
  261. package/src/components/invoices/send-email-dialog/locales/it.ts +18 -0
  262. package/src/components/invoices/send-email-dialog/locales/nl.ts +18 -0
  263. package/src/components/invoices/send-email-dialog/locales/pl.ts +18 -0
  264. package/src/components/invoices/send-email-dialog/locales/pt.ts +18 -0
  265. package/src/components/invoices/send-email-dialog/send-email-dialog.tsx +22 -14
  266. package/src/components/invoices/shared/scaled-document-preview.tsx +1 -0
  267. package/src/components/invoices/view/eslog-info-display.tsx +1 -0
  268. package/src/components/invoices/view/fiscalization-status-card.tsx +121 -0
  269. package/src/components/items/create-item-form/create-item-form.tsx +14 -0
  270. package/src/components/items/create-item-form/locales/en.ts +5 -0
  271. package/src/components/items/create-item-form/locales/es.ts +14 -0
  272. package/src/components/items/create-item-form/locales/fr.ts +14 -0
  273. package/src/components/items/create-item-form/locales/hr.ts +14 -0
  274. package/src/components/items/create-item-form/locales/it.ts +14 -0
  275. package/src/components/items/create-item-form/locales/nl.ts +14 -0
  276. package/src/components/items/create-item-form/locales/pl.ts +14 -0
  277. package/src/components/items/create-item-form/locales/pt.ts +14 -0
  278. package/src/components/items/edit-item-form/edit-item-form.tsx +170 -0
  279. package/src/components/items/edit-item-form/locales/de.ts +12 -0
  280. package/src/components/items/edit-item-form/locales/es.ts +12 -0
  281. package/src/components/items/edit-item-form/locales/fr.ts +12 -0
  282. package/src/components/items/edit-item-form/locales/hr.ts +12 -0
  283. package/src/components/items/edit-item-form/locales/it.ts +12 -0
  284. package/src/components/items/edit-item-form/locales/nl.ts +12 -0
  285. package/src/components/items/edit-item-form/locales/pl.ts +12 -0
  286. package/src/components/items/edit-item-form/locales/pt.ts +12 -0
  287. package/src/components/items/edit-item-form/locales/sl.ts +12 -0
  288. package/src/components/items/item-list-table/item-list-table.tsx +20 -13
  289. package/src/components/items/item-list-table/locales/de.ts +6 -0
  290. package/src/components/items/item-list-table/locales/en.ts +5 -0
  291. package/src/components/items/item-list-table/locales/es.ts +16 -0
  292. package/src/components/items/item-list-table/locales/fr.ts +16 -0
  293. package/src/components/items/item-list-table/locales/hr.ts +16 -0
  294. package/src/components/items/item-list-table/locales/it.ts +16 -0
  295. package/src/components/items/item-list-table/locales/nl.ts +16 -0
  296. package/src/components/items/item-list-table/locales/pl.ts +16 -0
  297. package/src/components/items/item-list-table/locales/pt.ts +16 -0
  298. package/src/components/items/item-list-table/locales/sl.ts +6 -0
  299. package/src/components/items/items.hooks.ts +7 -2
  300. package/src/components/payments/create-payment-form/create-payment-form.tsx +14 -0
  301. package/src/components/payments/create-payment-form/locales/es.ts +20 -0
  302. package/src/components/payments/create-payment-form/locales/fr.ts +20 -0
  303. package/src/components/payments/create-payment-form/locales/hr.ts +20 -0
  304. package/src/components/payments/create-payment-form/locales/it.ts +20 -0
  305. package/src/components/payments/create-payment-form/locales/nl.ts +20 -0
  306. package/src/components/payments/create-payment-form/locales/pl.ts +20 -0
  307. package/src/components/payments/create-payment-form/locales/pt.ts +20 -0
  308. package/src/components/payments/edit-payment-form/edit-payment-form.tsx +18 -2
  309. package/src/components/payments/edit-payment-form/locales/es.ts +20 -0
  310. package/src/components/payments/edit-payment-form/locales/fr.ts +20 -0
  311. package/src/components/payments/edit-payment-form/locales/hr.ts +20 -0
  312. package/src/components/payments/edit-payment-form/locales/it.ts +20 -0
  313. package/src/components/payments/edit-payment-form/locales/nl.ts +20 -0
  314. package/src/components/payments/edit-payment-form/locales/pl.ts +20 -0
  315. package/src/components/payments/edit-payment-form/locales/pt.ts +20 -0
  316. package/src/components/payments/list/list-row-actions.tsx +14 -0
  317. package/src/components/payments/list/list-table.tsx +21 -2
  318. package/src/components/payments/list/locales/de.ts +6 -0
  319. package/src/components/payments/list/locales/en.ts +7 -0
  320. package/src/components/payments/list/locales/es.ts +25 -0
  321. package/src/components/payments/list/locales/fr.ts +25 -0
  322. package/src/components/payments/list/locales/hr.ts +25 -0
  323. package/src/components/payments/list/locales/it.ts +25 -0
  324. package/src/components/payments/list/locales/nl.ts +25 -0
  325. package/src/components/payments/list/locales/pl.ts +25 -0
  326. package/src/components/payments/list/locales/pt.ts +25 -0
  327. package/src/components/payments/list/locales/sl.ts +6 -0
  328. package/src/components/payments/payments.hooks.ts +7 -2
  329. package/src/components/request-logs/index.ts +1 -1
  330. package/src/components/table/data-table.tsx +8 -3
  331. package/src/components/table/filter-panel.tsx +4 -4
  332. package/src/components/table/hooks/use-table-query.ts +3 -0
  333. package/src/components/table/table-empty-state.tsx +11 -4
  334. package/src/components/table/table-no-results.tsx +6 -4
  335. package/src/components/table/types.ts +2 -2
  336. package/src/components/tax-reports/kir-export-form.tsx +0 -1
  337. package/src/components/taxes/create-tax-form/create-tax-form.tsx +14 -0
  338. package/src/components/taxes/create-tax-form/locales/en.ts +1 -0
  339. package/src/components/taxes/create-tax-form/locales/es.ts +8 -0
  340. package/src/components/taxes/create-tax-form/locales/fr.ts +8 -0
  341. package/src/components/taxes/create-tax-form/locales/hr.ts +8 -0
  342. package/src/components/taxes/create-tax-form/locales/it.ts +8 -0
  343. package/src/components/taxes/create-tax-form/locales/nl.ts +8 -0
  344. package/src/components/taxes/create-tax-form/locales/pl.ts +8 -0
  345. package/src/components/taxes/create-tax-form/locales/pt.ts +8 -0
  346. package/src/components/taxes/edit-tax-form/edit-tax-form.tsx +119 -0
  347. package/src/components/taxes/edit-tax-form/locales/de.ts +6 -0
  348. package/src/components/taxes/edit-tax-form/locales/es.ts +6 -0
  349. package/src/components/taxes/edit-tax-form/locales/fr.ts +6 -0
  350. package/src/components/taxes/edit-tax-form/locales/hr.ts +6 -0
  351. package/src/components/taxes/edit-tax-form/locales/it.ts +6 -0
  352. package/src/components/taxes/edit-tax-form/locales/nl.ts +6 -0
  353. package/src/components/taxes/edit-tax-form/locales/pl.ts +6 -0
  354. package/src/components/taxes/edit-tax-form/locales/pt.ts +6 -0
  355. package/src/components/taxes/edit-tax-form/locales/sl.ts +6 -0
  356. package/src/components/taxes/tax-list-table/locales/de.ts +6 -0
  357. package/src/components/taxes/tax-list-table/locales/en.ts +6 -0
  358. package/src/components/taxes/tax-list-table/locales/es.ts +17 -0
  359. package/src/components/taxes/tax-list-table/locales/fr.ts +17 -0
  360. package/src/components/taxes/tax-list-table/locales/hr.ts +17 -0
  361. package/src/components/taxes/tax-list-table/locales/it.ts +17 -0
  362. package/src/components/taxes/tax-list-table/locales/nl.ts +17 -0
  363. package/src/components/taxes/tax-list-table/locales/pl.ts +17 -0
  364. package/src/components/taxes/tax-list-table/locales/pt.ts +17 -0
  365. package/src/components/taxes/tax-list-table/locales/sl.ts +6 -0
  366. package/src/components/taxes/tax-list-table/tax-list-table.tsx +18 -0
  367. package/src/components/taxes/taxes.hooks.ts +12 -7
  368. package/src/components/ui/tooltip.tsx +2 -2
  369. package/src/components/wl-subscription/locked-feature.tsx +1 -0
  370. package/src/components/wl-subscription/upgrade-modal.tsx +1 -0
  371. package/src/generated/schemas/acceptentityinvitation_body.ts +17 -0
  372. package/src/generated/schemas/addentityuser_body.ts +18 -0
  373. package/src/generated/schemas/advanceinvoice.ts +184 -12
  374. package/src/generated/schemas/creditnote.ts +99 -127
  375. package/src/generated/schemas/customadvanceinvoice.ts +246 -0
  376. package/src/generated/schemas/customcreditnote.ts +237 -0
  377. package/src/generated/schemas/customer.ts +26 -0
  378. package/src/generated/schemas/customestimate.ts +181 -0
  379. package/src/generated/schemas/custominvoice.ts +237 -0
  380. package/src/generated/schemas/entity.ts +66 -7
  381. package/src/generated/schemas/entityuserrole.ts +19 -0
  382. package/src/generated/schemas/estimate.ts +149 -1
  383. package/src/generated/schemas/finasettings.ts +25 -0
  384. package/src/generated/schemas/furssettings.ts +1 -2
  385. package/src/generated/schemas/index.ts +24 -5
  386. package/src/generated/schemas/invoice.ts +224 -22
  387. package/src/generated/schemas/me.ts +22 -0
  388. package/src/generated/schemas/registerfinamovablepremise_body.ts +26 -0
  389. package/src/generated/schemas/registerfinarealestatepremise_body.ts +37 -0
  390. package/src/generated/schemas/renderadvanceinvoicepreview_body.ts +342 -0
  391. package/src/generated/schemas/rendercreditnotepreview_body.ts +344 -0
  392. package/src/generated/schemas/renderestimatepreview_body.ts +284 -0
  393. package/src/generated/schemas/renderinvoicepreview_body.ts +344 -0
  394. package/src/generated/schemas/senddocument_body.ts +23 -0
  395. package/src/generated/schemas/sendemail_body.ts +8 -10
  396. package/src/generated/schemas/stripeappconnect_body.ts +18 -0
  397. package/src/generated/schemas/stripeappcreateinvoice_body.ts +20 -0
  398. package/src/generated/schemas/stripeappupdatesettings_body.ts +26 -0
  399. package/src/generated/schemas/webhook.ts +143 -0
  400. package/src/hooks/create-resource-hooks.ts +85 -1
  401. package/src/hooks/use-duplicate-document.ts +19 -11
  402. package/src/hooks/use-next-document-number.ts +1 -1
  403. package/src/hooks/use-resource-mutation.ts +4 -3
  404. package/src/lib/browser-cookies.ts +12 -1
  405. package/src/lib/cookies.ts +2 -2
  406. package/src/lib/translation.ts +1 -1
  407. package/src/providers/entities-provider.tsx +105 -39
  408. package/src/providers/sdk-provider.tsx +7 -3
  409. package/src/providers/white-label-provider.tsx +5 -2
  410. package/src/providers/wl-subscription-provider.tsx +1 -0
  411. package/src/components/invoices/view/furs-info-display.tsx +0 -213
@@ -41,11 +41,15 @@ export const CertificateSettingsSection: FC<CertificateSettingsSectionProps> = (
41
41
  }
42
42
  }, [fursSettings, hasCertificate]);
43
43
 
44
- const { mutate: uploadCertificate, isPending } = useUploadFursCertificate({
44
+ const {
45
+ mutate: uploadCertificate,
46
+ isPending,
47
+ isSuccess: uploadSuccess,
48
+ } = useUploadFursCertificate({
45
49
  onSuccess: () => {
46
50
  setCertificateFile(null);
47
51
  setPassphrase("");
48
- setShowUploadForm(false); // Hide form after successful upload
52
+ setShowUploadForm(false);
49
53
  onSuccess?.();
50
54
  },
51
55
  onError: (error) => {
@@ -84,8 +88,8 @@ export const CertificateSettingsSection: FC<CertificateSettingsSectionProps> = (
84
88
 
85
89
  const certificateStatus = fursSettings?.certificate_status || "missing";
86
90
 
87
- // Show upload form if: no certificate exists OR user clicked "Change Certificate"
88
- const shouldShowUploadForm = !hasCertificate || showUploadForm;
91
+ // Show upload form if: no certificate exists (and didn't just upload) OR user clicked "Change Certificate"
92
+ const shouldShowUploadForm = (!hasCertificate && !uploadSuccess) || showUploadForm;
89
93
 
90
94
  // Status display configuration with dark mode support
91
95
  const statusConfig = {
@@ -131,6 +135,17 @@ export const CertificateSettingsSection: FC<CertificateSettingsSectionProps> = (
131
135
  </div>
132
136
 
133
137
  <div className="space-y-6">
138
+ {/* Upload success - Show briefly while settings refetch */}
139
+ {!hasCertificate && uploadSuccess && (
140
+ <div className="space-y-4">
141
+ <Alert>
142
+ <CheckCircle2 className="h-4 w-4 text-green-600 dark:text-green-400" />
143
+ <AlertTitle>{t("Certificate uploaded successfully")}</AlertTitle>
144
+ <AlertDescription>{t("Loading certificate details...")}</AlertDescription>
145
+ </Alert>
146
+ </div>
147
+ )}
148
+
134
149
  {/* Certificate Status - Show when certificate exists */}
135
150
  {hasCertificate && (
136
151
  <div className="space-y-4">
@@ -1,7 +1,9 @@
1
1
  import type { Entity } from "@spaceinvoices/js-sdk";
2
- import { ChevronRight, Settings, User } from "lucide-react";
2
+ import { AlertTriangle, Building2, ChevronRight, Settings, User } from "lucide-react";
3
3
  import { type FC, type ReactNode, useEffect, useState } from "react";
4
4
  import type { UseFormReturn } from "react-hook-form";
5
+ import { useUpdateEntity } from "@/ui/components/entities/entities.hooks";
6
+ import { Alert, AlertDescription } from "@/ui/components/ui/alert";
5
7
  import { Button } from "@/ui/components/ui/button";
6
8
  import { FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage } from "@/ui/components/ui/form";
7
9
  import { Input } from "@/ui/components/ui/input";
@@ -30,6 +32,37 @@ export const GeneralSettingsSection: FC<GeneralSettingsSectionProps> = ({
30
32
  const wrap = (section: SectionType, content: ReactNode) => (wrapSection ? wrapSection(section, content) : content);
31
33
  const [isAdvancedOpen, setIsAdvancedOpen] = useState(false);
32
34
 
35
+ // Entity info (local state for form)
36
+ const [entityTaxNumber, setEntityTaxNumber] = useState("");
37
+ const [entityAddress, setEntityAddress] = useState("");
38
+ const [entityCity, setEntityCity] = useState("");
39
+ const [entityPostCode, setEntityPostCode] = useState("");
40
+
41
+ // Initialize entity fields from entity prop
42
+ useEffect(() => {
43
+ setEntityTaxNumber(entity.tax_number || "");
44
+ setEntityAddress(entity.address || "");
45
+ setEntityCity(entity.city || "");
46
+ setEntityPostCode(entity.post_code || "");
47
+ }, [entity.tax_number, entity.address, entity.city, entity.post_code]);
48
+
49
+ const { mutate: updateEntity, isPending: isEntityUpdatePending } = useUpdateEntity({
50
+ onSuccess: () => onSuccess?.(),
51
+ onError: (error) => onError?.(error),
52
+ });
53
+
54
+ const handleSaveEntityInfo = () => {
55
+ updateEntity({
56
+ id: entity.id,
57
+ data: {
58
+ tax_number: entityTaxNumber || null,
59
+ address: entityAddress || null,
60
+ city: entityCity || null,
61
+ post_code: entityPostCode || null,
62
+ },
63
+ });
64
+ };
65
+
33
66
  // User operator settings (local state for form)
34
67
  const { data: userFursSettings, isLoading: userSettingsLoading } = useUserFursSettings(entity.id);
35
68
  const [operatorTaxNumber, setOperatorTaxNumber] = useState("");
@@ -58,6 +91,92 @@ export const GeneralSettingsSection: FC<GeneralSettingsSectionProps> = ({
58
91
  });
59
92
  };
60
93
 
94
+ // Entity Information content
95
+ const entityInfoContent = (
96
+ <div className="space-y-4">
97
+ <div className="flex items-center gap-3">
98
+ <div className="flex h-10 w-10 items-center justify-center rounded-lg bg-orange-500/10">
99
+ <Building2 className="h-5 w-5 text-orange-600 dark:text-orange-400" />
100
+ </div>
101
+ <div>
102
+ <h3 className="font-semibold text-lg">{t("Entity Information")}</h3>
103
+ <p className="text-muted-foreground text-sm">{t("Required company details for FURS fiscalization")}</p>
104
+ </div>
105
+ </div>
106
+
107
+ {!entity.tax_number && (
108
+ <Alert variant="destructive">
109
+ <AlertTriangle className="h-4 w-4" />
110
+ <AlertDescription>{t("Tax number is required for FURS fiscalization")}</AlertDescription>
111
+ </Alert>
112
+ )}
113
+
114
+ <div className="space-y-4">
115
+ <div>
116
+ <label htmlFor="entity-tax-number" className="font-medium text-sm">
117
+ {t("Entity Tax Number")}
118
+ </label>
119
+ <Input
120
+ id="entity-tax-number"
121
+ placeholder="12345678"
122
+ value={entityTaxNumber}
123
+ onChange={(e) => setEntityTaxNumber(e.target.value)}
124
+ className={cn("mt-2 h-10", !entity.tax_number && "border-destructive")}
125
+ />
126
+ <p className="mt-1 text-muted-foreground text-xs">
127
+ {t("Your company's tax number (must match FURS certificate)")}
128
+ </p>
129
+ </div>
130
+
131
+ <div>
132
+ <label htmlFor="entity-address" className="font-medium text-sm">
133
+ {t("Address")}
134
+ </label>
135
+ <Input
136
+ id="entity-address"
137
+ value={entityAddress}
138
+ onChange={(e) => setEntityAddress(e.target.value)}
139
+ className="mt-2 h-10"
140
+ />
141
+ </div>
142
+
143
+ <div className="grid grid-cols-2 gap-4">
144
+ <div>
145
+ <label htmlFor="entity-post-code" className="font-medium text-sm">
146
+ {t("Post Code")}
147
+ </label>
148
+ <Input
149
+ id="entity-post-code"
150
+ value={entityPostCode}
151
+ onChange={(e) => setEntityPostCode(e.target.value)}
152
+ className="mt-2 h-10"
153
+ />
154
+ </div>
155
+ <div>
156
+ <label htmlFor="entity-city" className="font-medium text-sm">
157
+ {t("City")}
158
+ </label>
159
+ <Input
160
+ id="entity-city"
161
+ value={entityCity}
162
+ onChange={(e) => setEntityCity(e.target.value)}
163
+ className="mt-2 h-10"
164
+ />
165
+ </div>
166
+ </div>
167
+
168
+ <Button
169
+ type="button"
170
+ onClick={handleSaveEntityInfo}
171
+ disabled={isEntityUpdatePending}
172
+ className="cursor-pointer"
173
+ >
174
+ {isEntityUpdatePending ? t("Saving...") : t("Save Entity Info")}
175
+ </Button>
176
+ </div>
177
+ </div>
178
+ );
179
+
61
180
  // Operator Settings content
62
181
  const operatorContent = (
63
182
  <div className="space-y-4">
@@ -244,6 +363,7 @@ export const GeneralSettingsSection: FC<GeneralSettingsSectionProps> = ({
244
363
 
245
364
  return (
246
365
  <div className="space-y-6">
366
+ {wrap("entity-info", entityInfoContent)}
247
367
  {wrap("operator", operatorContent)}
248
368
  {wrap("fiscalization", fiscalizationContent)}
249
369
  {wrap("advanced", advancedContent)}
@@ -1,6 +1,7 @@
1
1
  import { zodResolver } from "@hookform/resolvers/zod";
2
2
  import type { Entity } from "@spaceinvoices/js-sdk";
3
3
  import type { FC } from "react";
4
+ import type { Resolver } from "react-hook-form";
4
5
  import { useForm } from "react-hook-form";
5
6
  import type { z } from "zod";
6
7
  import { Button } from "@/ui/components/ui/button";
@@ -57,7 +58,7 @@ export const RegisterPremiseDialog: FC<RegisterPremiseDialogProps> = ({
57
58
 
58
59
  // Real Estate Form
59
60
  const realEstateForm = useForm<RealEstatePremiseForm>({
60
- resolver: zodResolver(realEstatePremiseSchema),
61
+ resolver: zodResolver(realEstatePremiseSchema) as Resolver<RealEstatePremiseForm>,
61
62
  defaultValues: {
62
63
  business_premise_name: "",
63
64
  real_estate: {
@@ -71,19 +72,17 @@ export const RegisterPremiseDialog: FC<RegisterPremiseDialogProps> = ({
71
72
  house_number_additional: "",
72
73
  postal_code: "",
73
74
  },
74
- numbering_strategy: "C",
75
75
  },
76
76
  });
77
77
 
78
78
  // Movable Form
79
79
  const movableForm = useForm<MovablePremiseForm>({
80
- resolver: zodResolver(movablePremiseSchema),
80
+ resolver: zodResolver(movablePremiseSchema) as Resolver<MovablePremiseForm>,
81
81
  defaultValues: {
82
82
  business_premise_name: "",
83
83
  movable_premise: {
84
84
  premise_type: "A",
85
85
  },
86
- numbering_strategy: "C",
87
86
  },
88
87
  });
89
88
 
@@ -133,10 +132,10 @@ export const RegisterPremiseDialog: FC<RegisterPremiseDialogProps> = ({
133
132
 
134
133
  {isRealEstate ? (
135
134
  <Form {...realEstateForm}>
136
- <form onSubmit={realEstateForm.handleSubmit(handleRealEstateSubmit)} className="space-y-4">
135
+ <form onSubmit={realEstateForm.handleSubmit(handleRealEstateSubmit as any)} className="space-y-4">
137
136
  {/* Premise Name */}
138
137
  <FormField
139
- control={realEstateForm.control}
138
+ control={realEstateForm.control as any}
140
139
  name="business_premise_name"
141
140
  render={({ field }) => (
142
141
  <FormItem>
@@ -152,7 +151,7 @@ export const RegisterPremiseDialog: FC<RegisterPremiseDialogProps> = ({
152
151
 
153
152
  {/* Property Information */}
154
153
  <FormField
155
- control={realEstateForm.control}
154
+ control={realEstateForm.control as any}
156
155
  name="real_estate.cadastral_number"
157
156
  render={({ field }) => (
158
157
  <FormItem>
@@ -169,7 +168,7 @@ export const RegisterPremiseDialog: FC<RegisterPremiseDialogProps> = ({
169
168
  {/* Building Information */}
170
169
  <div className="grid grid-cols-2 gap-4">
171
170
  <FormField
172
- control={realEstateForm.control}
171
+ control={realEstateForm.control as any}
173
172
  name="real_estate.building_number"
174
173
  render={({ field }) => (
175
174
  <FormItem>
@@ -190,7 +189,7 @@ export const RegisterPremiseDialog: FC<RegisterPremiseDialogProps> = ({
190
189
  )}
191
190
  />
192
191
  <FormField
193
- control={realEstateForm.control}
192
+ control={realEstateForm.control as any}
194
193
  name="real_estate.building_section"
195
194
  render={({ field }) => (
196
195
  <FormItem>
@@ -214,7 +213,7 @@ export const RegisterPremiseDialog: FC<RegisterPremiseDialogProps> = ({
214
213
 
215
214
  {/* Community */}
216
215
  <FormField
217
- control={realEstateForm.control}
216
+ control={realEstateForm.control as any}
218
217
  name="real_estate.community"
219
218
  render={({ field }) => (
220
219
  <FormItem>
@@ -230,7 +229,7 @@ export const RegisterPremiseDialog: FC<RegisterPremiseDialogProps> = ({
230
229
 
231
230
  {/* Address */}
232
231
  <FormField
233
- control={realEstateForm.control}
232
+ control={realEstateForm.control as any}
234
233
  name="real_estate.street"
235
234
  render={({ field }) => (
236
235
  <FormItem>
@@ -245,7 +244,7 @@ export const RegisterPremiseDialog: FC<RegisterPremiseDialogProps> = ({
245
244
 
246
245
  <div className="grid grid-cols-2 gap-4">
247
246
  <FormField
248
- control={realEstateForm.control}
247
+ control={realEstateForm.control as any}
249
248
  name="real_estate.house_number"
250
249
  render={({ field }) => (
251
250
  <FormItem>
@@ -258,7 +257,7 @@ export const RegisterPremiseDialog: FC<RegisterPremiseDialogProps> = ({
258
257
  )}
259
258
  />
260
259
  <FormField
261
- control={realEstateForm.control}
260
+ control={realEstateForm.control as any}
262
261
  name="real_estate.house_number_additional"
263
262
  render={({ field }) => (
264
263
  <FormItem>
@@ -274,7 +273,7 @@ export const RegisterPremiseDialog: FC<RegisterPremiseDialogProps> = ({
274
273
 
275
274
  <div className="grid grid-cols-2 gap-4">
276
275
  <FormField
277
- control={realEstateForm.control}
276
+ control={realEstateForm.control as any}
278
277
  name="real_estate.city"
279
278
  render={({ field }) => (
280
279
  <FormItem>
@@ -287,7 +286,7 @@ export const RegisterPremiseDialog: FC<RegisterPremiseDialogProps> = ({
287
286
  )}
288
287
  />
289
288
  <FormField
290
- control={realEstateForm.control}
289
+ control={realEstateForm.control as any}
291
290
  name="real_estate.postal_code"
292
291
  render={({ field }) => (
293
292
  <FormItem>
@@ -301,30 +300,6 @@ export const RegisterPremiseDialog: FC<RegisterPremiseDialogProps> = ({
301
300
  />
302
301
  </div>
303
302
 
304
- {/* Numbering Strategy */}
305
- <FormField
306
- control={realEstateForm.control}
307
- name="numbering_strategy"
308
- render={({ field }) => (
309
- <FormItem>
310
- <FormLabel>{t("Numbering Strategy")}</FormLabel>
311
- <Select onValueChange={field.onChange} value={field.value}>
312
- <FormControl>
313
- <SelectTrigger>
314
- <SelectValue placeholder="Select strategy" />
315
- </SelectTrigger>
316
- </FormControl>
317
- <SelectContent>
318
- <SelectItem value="B">{t("Strategy B (Device-level)")}</SelectItem>
319
- <SelectItem value="C">{t("Strategy C (Centralized)")}</SelectItem>
320
- </SelectContent>
321
- </Select>
322
- <FormDescription>{t("Choose how invoice numbers are generated")}</FormDescription>
323
- <FormMessage />
324
- </FormItem>
325
- )}
326
- />
327
-
328
303
  <DialogFooter>
329
304
  <Button type="button" variant="outline" onClick={() => onOpenChange(false)} disabled={isPending}>
330
305
  {t("Cancel")}
@@ -337,10 +312,10 @@ export const RegisterPremiseDialog: FC<RegisterPremiseDialogProps> = ({
337
312
  </Form>
338
313
  ) : (
339
314
  <Form {...movableForm}>
340
- <form onSubmit={movableForm.handleSubmit(handleMovableSubmit)} className="space-y-4">
315
+ <form onSubmit={movableForm.handleSubmit(handleMovableSubmit as any)} className="space-y-4">
341
316
  {/* Premise Name */}
342
317
  <FormField
343
- control={movableForm.control}
318
+ control={movableForm.control as any}
344
319
  name="business_premise_name"
345
320
  render={({ field }) => (
346
321
  <FormItem>
@@ -356,7 +331,7 @@ export const RegisterPremiseDialog: FC<RegisterPremiseDialogProps> = ({
356
331
 
357
332
  {/* Premise Type */}
358
333
  <FormField
359
- control={movableForm.control}
334
+ control={movableForm.control as any}
360
335
  name="movable_premise.premise_type"
361
336
  render={({ field }) => (
362
337
  <FormItem>
@@ -379,30 +354,6 @@ export const RegisterPremiseDialog: FC<RegisterPremiseDialogProps> = ({
379
354
  )}
380
355
  />
381
356
 
382
- {/* Numbering Strategy */}
383
- <FormField
384
- control={movableForm.control}
385
- name="numbering_strategy"
386
- render={({ field }) => (
387
- <FormItem>
388
- <FormLabel>{t("Numbering Strategy")}</FormLabel>
389
- <Select onValueChange={field.onChange} value={field.value}>
390
- <FormControl>
391
- <SelectTrigger>
392
- <SelectValue placeholder="Select strategy" />
393
- </SelectTrigger>
394
- </FormControl>
395
- <SelectContent>
396
- <SelectItem value="B">{t("Strategy B (Device-level)")}</SelectItem>
397
- <SelectItem value="C">{t("Strategy C (Centralized)")}</SelectItem>
398
- </SelectContent>
399
- </Select>
400
- <FormDescription>{t("Choose how invoice numbers are generated")}</FormDescription>
401
- <FormMessage />
402
- </FormItem>
403
- )}
404
- />
405
-
406
357
  <DialogFooter>
407
358
  <Button type="button" variant="outline" onClick={() => onOpenChange(false)} disabled={isPending}>
408
359
  {t("Cancel")}
@@ -1,2 +1,2 @@
1
- export const ACTIVE_ENTITY_COOKIE = "l.ent" as const;
1
+ export const ACTIVE_ENTITY_COOKIE = "l.eid" as const;
2
2
  export const ACTIVE_ENVIRONMENT_COOKIE = "l.env" as const;
@@ -24,6 +24,7 @@ const translations = { sl, de } as const;
24
24
  const companySettingsSchema = z.object({
25
25
  name: z.string().min(1, "Name is required"),
26
26
  tax_number: z.union([z.string(), z.null()]).optional(),
27
+ tax_number_2: z.union([z.string(), z.null()]).optional(),
27
28
  address: z.union([z.string(), z.null()]).optional(),
28
29
  address_2: z.union([z.string(), z.null()]).optional(),
29
30
  post_code: z.union([z.string(), z.null()]).optional(),
@@ -54,6 +55,7 @@ export function CompanySettingsForm({
54
55
  defaultValues: {
55
56
  name: entity.name || "",
56
57
  tax_number: (entity as any).tax_number || null,
58
+ tax_number_2: (entity as any).tax_number_2 || null,
57
59
  address: (entity as any).address || null,
58
60
  address_2: (entity as any).address_2 || null,
59
61
  post_code: (entity as any).post_code || null,
@@ -83,6 +85,7 @@ export function CompanySettingsForm({
83
85
 
84
86
  if (values.name !== entity.name) updatePayload.name = values.name;
85
87
  if (values.tax_number !== (entity as any).tax_number) updatePayload.tax_number = values.tax_number;
88
+ if (values.tax_number_2 !== (entity as any).tax_number_2) updatePayload.tax_number_2 = values.tax_number_2;
86
89
  if (values.address !== (entity as any).address) updatePayload.address = values.address;
87
90
  if (values.address_2 !== (entity as any).address_2) updatePayload.address_2 = values.address_2;
88
91
  if (values.post_code !== (entity as any).post_code) updatePayload.post_code = values.post_code;
@@ -135,6 +138,31 @@ export function CompanySettingsForm({
135
138
  )}
136
139
  />
137
140
 
141
+ {(entity as any).country_rules?.features?.includes("tax_number_2") && (
142
+ <FormField
143
+ control={form.control}
144
+ name="tax_number_2"
145
+ render={({ field }) => (
146
+ <FormItem className="max-w-xs">
147
+ <FormLabel className="font-medium text-base">{t("Tax ID 2")}</FormLabel>
148
+ <FormControl>
149
+ <Input
150
+ {...field}
151
+ value={field.value || ""}
152
+ onChange={(e) => field.onChange(e.target.value || null)}
153
+ placeholder="12/345/67890"
154
+ className="h-10"
155
+ />
156
+ </FormControl>
157
+ <FormDescription className="text-xs">
158
+ {t("Secondary tax identification number (optional)")}
159
+ </FormDescription>
160
+ <FormMessage />
161
+ </FormItem>
162
+ )}
163
+ />
164
+ )}
165
+
138
166
  <div className="border-t pt-6">
139
167
  <FormField
140
168
  control={form.control}
@@ -0,0 +1,18 @@
1
+ export default {
2
+ "PDF Template": "Plantilla PDF",
3
+ "Choose the design template for your invoices and documents":
4
+ "Elija la plantilla de diseño para sus facturas y documentos",
5
+ Preview: "Vista previa",
6
+ Template: "Plantilla",
7
+ Modern: "Moderna",
8
+ "Modern template description": "Diseño limpio y profesional adecuado para la mayoría de las empresas",
9
+ Classic: "Clásica",
10
+ "Classic template description": "Diseño tradicional de factura con fuentes serif y bordes",
11
+ Minimal: "Minimalista",
12
+ "Minimal template description": "Diseño centrado en la tipografía con una estética limpia",
13
+ Fashion: "Fashion",
14
+ "Fashion template description": "Estilo editorial con títulos elegantes para empresas creativas",
15
+ "Save Template": "Guardar plantilla",
16
+ "Template saved successfully": "Plantilla guardada con éxito",
17
+ "Failed to save template": "Error al guardar la plantilla",
18
+ } as const;
@@ -0,0 +1,18 @@
1
+ export default {
2
+ "PDF Template": "Modèle PDF",
3
+ "Choose the design template for your invoices and documents":
4
+ "Choisissez le modèle de design pour vos factures et documents",
5
+ Preview: "Aperçu",
6
+ Template: "Modèle",
7
+ Modern: "Moderne",
8
+ "Modern template description": "Design épuré et professionnel adapté à la plupart des entreprises",
9
+ Classic: "Classique",
10
+ "Classic template description": "Mise en page traditionnelle avec polices à empattements et bordures",
11
+ Minimal: "Minimaliste",
12
+ "Minimal template description": "Design axé sur la typographie avec une esthétique épurée",
13
+ Fashion: "Fashion",
14
+ "Fashion template description": "Style éditorial avec des titres élégants pour les entreprises créatives",
15
+ "Save Template": "Enregistrer le modèle",
16
+ "Template saved successfully": "Modèle enregistré avec succès",
17
+ "Failed to save template": "Échec de l'enregistrement du modèle",
18
+ } as const;
@@ -0,0 +1,18 @@
1
+ export default {
2
+ "PDF Template": "PDF predložak",
3
+ "Choose the design template for your invoices and documents":
4
+ "Odaberite predložak dizajna za svoje račune i dokumente",
5
+ Preview: "Pregled",
6
+ Template: "Predložak",
7
+ Modern: "Moderan",
8
+ "Modern template description": "Čist, profesionalan dizajn prikladan za većinu tvrtki",
9
+ Classic: "Klasičan",
10
+ "Classic template description": "Tradicionalni raspored računa sa serifnim fontovima i okvirima",
11
+ Minimal: "Minimalistički",
12
+ "Minimal template description": "Tipografski usmjeren dizajn s čistom estetikom",
13
+ Fashion: "Fashion",
14
+ "Fashion template description": "Urednički stil s elegantnim naslovima za kreativne tvrtke",
15
+ "Save Template": "Spremi predložak",
16
+ "Template saved successfully": "Predložak uspješno spremljen",
17
+ "Failed to save template": "Spremanje predloška nije uspjelo",
18
+ } as const;
@@ -0,0 +1,18 @@
1
+ export default {
2
+ "PDF Template": "Modello PDF",
3
+ "Choose the design template for your invoices and documents":
4
+ "Scegli il modello di design per le tue fatture e documenti",
5
+ Preview: "Anteprima",
6
+ Template: "Modello",
7
+ Modern: "Moderno",
8
+ "Modern template description": "Design pulito e professionale adatto alla maggior parte delle aziende",
9
+ Classic: "Classico",
10
+ "Classic template description": "Layout tradizionale per fatture con caratteri serif e bordi",
11
+ Minimal: "Minimale",
12
+ "Minimal template description": "Design incentrato sulla tipografia con un'estetica pulita",
13
+ Fashion: "Fashion",
14
+ "Fashion template description": "Stile editoriale con titoli eleganti per aziende creative",
15
+ "Save Template": "Salva modello",
16
+ "Template saved successfully": "Modello salvato con successo",
17
+ "Failed to save template": "Salvataggio del modello non riuscito",
18
+ } as const;
@@ -0,0 +1,17 @@
1
+ export default {
2
+ "PDF Template": "PDF-sjabloon",
3
+ "Choose the design template for your invoices and documents": "Kies het ontwerp voor uw facturen en documenten",
4
+ Preview: "Voorbeeld",
5
+ Template: "Sjabloon",
6
+ Modern: "Modern",
7
+ "Modern template description": "Strak, professioneel ontwerp geschikt voor de meeste bedrijven",
8
+ Classic: "Klassiek",
9
+ "Classic template description": "Traditionele factuurindeling met schreeflettertypen en kaders",
10
+ Minimal: "Minimalistisch",
11
+ "Minimal template description": "Typografisch gericht ontwerp met een strakke esthetiek",
12
+ Fashion: "Fashion",
13
+ "Fashion template description": "Redactionele stijl met elegante koppen voor creatieve bedrijven",
14
+ "Save Template": "Sjabloon opslaan",
15
+ "Template saved successfully": "Sjabloon succesvol opgeslagen",
16
+ "Failed to save template": "Sjabloon opslaan mislukt",
17
+ } as const;
@@ -0,0 +1,18 @@
1
+ export default {
2
+ "PDF Template": "Szablon PDF",
3
+ "Choose the design template for your invoices and documents":
4
+ "Wybierz szablon projektu dla swoich faktur i dokumentów",
5
+ Preview: "Podgląd",
6
+ Template: "Szablon",
7
+ Modern: "Nowoczesny",
8
+ "Modern template description": "Czysty, profesjonalny design odpowiedni dla większości firm",
9
+ Classic: "Klasyczny",
10
+ "Classic template description": "Tradycyjny układ faktury z czcionkami szeryfowymi i ramkami",
11
+ Minimal: "Minimalistyczny",
12
+ "Minimal template description": "Design skoncentrowany na typografii z czystą estetyką",
13
+ Fashion: "Fashion",
14
+ "Fashion template description": "Styl redakcyjny z eleganckimi nagłówkami dla firm kreatywnych",
15
+ "Save Template": "Zapisz szablon",
16
+ "Template saved successfully": "Szablon zapisany pomyślnie",
17
+ "Failed to save template": "Nie udało się zapisać szablonu",
18
+ } as const;
@@ -0,0 +1,18 @@
1
+ export default {
2
+ "PDF Template": "Modelo PDF",
3
+ "Choose the design template for your invoices and documents":
4
+ "Escolha o modelo de design para as suas faturas e documentos",
5
+ Preview: "Pré-visualização",
6
+ Template: "Modelo",
7
+ Modern: "Moderno",
8
+ "Modern template description": "Design limpo e profissional adequado para a maioria das empresas",
9
+ Classic: "Clássico",
10
+ "Classic template description": "Layout tradicional de fatura com fontes serifadas e bordas",
11
+ Minimal: "Minimalista",
12
+ "Minimal template description": "Design focado na tipografia com uma estética limpa",
13
+ Fashion: "Fashion",
14
+ "Fashion template description": "Estilo editorial com títulos elegantes para empresas criativas",
15
+ "Save Template": "Guardar modelo",
16
+ "Template saved successfully": "Modelo guardado com sucesso",
17
+ "Failed to save template": "Falha ao guardar o modelo",
18
+ } as const;
@@ -26,6 +26,13 @@ import { DocumentRecipientSection } from "../../documents/create/document-recipi
26
26
  import type { DocumentTypes } from "../../documents/types";
27
27
  import { useCreateEstimate } from "../estimates.hooks";
28
28
  import de from "./locales/de";
29
+ import es from "./locales/es";
30
+ import fr from "./locales/fr";
31
+ import hr from "./locales/hr";
32
+ import it from "./locales/it";
33
+ import nl from "./locales/nl";
34
+ import pl from "./locales/pl";
35
+ import pt from "./locales/pt";
29
36
  import sl from "./locales/sl";
30
37
  import { prepareEstimateSubmission } from "./prepare-estimate-submission";
31
38
  import { useEstimateCustomerForm } from "./use-estimate-customer-form";
@@ -33,6 +40,13 @@ import { useEstimateCustomerForm } from "./use-estimate-customer-form";
33
40
  const translations = {
34
41
  sl,
35
42
  de,
43
+ it,
44
+ fr,
45
+ es,
46
+ pt,
47
+ nl,
48
+ pl,
49
+ hr,
36
50
  } as const;
37
51
 
38
52
  // Form values: extend schema with local-only fields (number is for display, not sent to API)