@spaceinvoices/react-ui 0.4.10 → 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 (638) hide show
  1. package/README.md +24 -8
  2. package/cli/dist/index.js +89 -26
  3. package/package.json +6 -2
  4. package/registry.json +30 -31
  5. package/spaceinvoices.schema.json +6 -1
  6. package/src/common/autocomplete.tsx +41 -25
  7. package/src/components/activities/locales/bg.ts +21 -0
  8. package/src/components/activities/locales/cs.ts +21 -0
  9. package/src/components/activities/locales/en.ts +21 -0
  10. package/src/components/activities/locales/et.ts +21 -0
  11. package/src/components/activities/locales/fi.ts +21 -0
  12. package/src/components/activities/locales/is.ts +21 -0
  13. package/src/components/activities/locales/nb.ts +21 -0
  14. package/src/components/activities/locales/sk.ts +21 -0
  15. package/src/components/activities/locales/sv.ts +21 -0
  16. package/src/components/advance-invoices/advance-invoices.hooks.ts +2 -3
  17. package/src/components/advance-invoices/create/create-advance-invoice-form.tsx +290 -69
  18. package/src/components/advance-invoices/create/locales/bg.ts +48 -0
  19. package/src/components/advance-invoices/create/locales/cs.ts +48 -0
  20. package/src/components/advance-invoices/create/locales/en.ts +48 -0
  21. package/src/components/advance-invoices/create/locales/et.ts +48 -0
  22. package/src/components/advance-invoices/create/locales/fi.ts +48 -0
  23. package/src/components/advance-invoices/create/locales/hr.ts +17 -17
  24. package/src/components/advance-invoices/create/locales/is.ts +48 -0
  25. package/src/components/advance-invoices/create/locales/nb.ts +48 -0
  26. package/src/components/advance-invoices/create/locales/sk.ts +48 -0
  27. package/src/components/advance-invoices/create/locales/sl.ts +9 -7
  28. package/src/components/advance-invoices/create/locales/sv.ts +48 -0
  29. package/src/components/advance-invoices/create/prepare-advance-invoice-submission.ts +16 -2
  30. package/src/components/advance-invoices/list/list-row-actions.tsx +48 -16
  31. package/src/components/advance-invoices/list/list-table.tsx +33 -8
  32. package/src/components/advance-invoices/list/locales/bg.ts +51 -0
  33. package/src/components/advance-invoices/list/locales/cs.ts +51 -0
  34. package/src/components/advance-invoices/list/locales/en.ts +33 -2
  35. package/src/components/advance-invoices/list/locales/et.ts +51 -0
  36. package/src/components/advance-invoices/list/locales/fi.ts +51 -0
  37. package/src/components/advance-invoices/list/locales/hr.ts +15 -15
  38. package/src/components/advance-invoices/list/locales/is.ts +51 -0
  39. package/src/components/advance-invoices/list/locales/nb.ts +51 -0
  40. package/src/components/advance-invoices/list/locales/sk.ts +51 -0
  41. package/src/components/advance-invoices/list/locales/sv.ts +51 -0
  42. package/src/components/advance-invoices/list/use-advance-invoice-download.ts +3 -5
  43. package/src/components/common/autocomplete-locales.ts +101 -0
  44. package/src/components/company-registry/company-registry.hooks.ts +3 -7
  45. package/src/components/credit-notes/create/create-credit-note-form.tsx +211 -22
  46. package/src/components/credit-notes/create/locales/bg.ts +87 -0
  47. package/src/components/credit-notes/create/locales/cs.ts +87 -0
  48. package/src/components/credit-notes/create/locales/en.ts +87 -0
  49. package/src/components/credit-notes/create/locales/et.ts +87 -0
  50. package/src/components/credit-notes/create/locales/fi.ts +87 -0
  51. package/src/components/credit-notes/create/locales/hr.ts +24 -24
  52. package/src/components/credit-notes/create/locales/is.ts +87 -0
  53. package/src/components/credit-notes/create/locales/nb.ts +87 -0
  54. package/src/components/credit-notes/create/locales/sk.ts +87 -0
  55. package/src/components/credit-notes/create/locales/sl.ts +9 -9
  56. package/src/components/credit-notes/create/locales/sv.ts +87 -0
  57. package/src/components/credit-notes/create/prepare-credit-note-submission.ts +32 -0
  58. package/src/components/credit-notes/credit-notes.hooks.ts +15 -3
  59. package/src/components/credit-notes/list/list-row-actions.tsx +19 -7
  60. package/src/components/credit-notes/list/list-table.tsx +58 -7
  61. package/src/components/credit-notes/list/locales/bg.ts +48 -0
  62. package/src/components/credit-notes/list/locales/cs.ts +48 -0
  63. package/src/components/credit-notes/list/locales/en.ts +31 -2
  64. package/src/components/credit-notes/list/locales/et.ts +48 -0
  65. package/src/components/credit-notes/list/locales/fi.ts +48 -0
  66. package/src/components/credit-notes/list/locales/hr.ts +12 -12
  67. package/src/components/credit-notes/list/locales/is.ts +48 -0
  68. package/src/components/credit-notes/list/locales/nb.ts +48 -0
  69. package/src/components/credit-notes/list/locales/sk.ts +48 -0
  70. package/src/components/credit-notes/list/locales/sv.ts +48 -0
  71. package/src/components/credit-notes/list/use-credit-note-download.ts +3 -5
  72. package/src/components/customers/create-customer-form/locales/bg.ts +21 -0
  73. package/src/components/customers/create-customer-form/locales/cs.ts +21 -0
  74. package/src/components/customers/create-customer-form/locales/en.ts +21 -0
  75. package/src/components/customers/create-customer-form/locales/et.ts +21 -0
  76. package/src/components/customers/create-customer-form/locales/fi.ts +21 -0
  77. package/src/components/customers/create-customer-form/locales/hr.ts +11 -11
  78. package/src/components/customers/create-customer-form/locales/is.ts +21 -0
  79. package/src/components/customers/create-customer-form/locales/nb.ts +21 -0
  80. package/src/components/customers/create-customer-form/locales/sk.ts +21 -0
  81. package/src/components/customers/create-customer-form/locales/sv.ts +21 -0
  82. package/src/components/customers/customer-autocomplete.tsx +32 -4
  83. package/src/components/customers/customer-list-table/customer-list-table.tsx +8 -6
  84. package/src/components/customers/customer-list-table/locales/bg.ts +25 -0
  85. package/src/components/customers/customer-list-table/locales/cs.ts +25 -0
  86. package/src/components/customers/customer-list-table/locales/en.ts +17 -2
  87. package/src/components/customers/customer-list-table/locales/et.ts +25 -0
  88. package/src/components/customers/customer-list-table/locales/fi.ts +25 -0
  89. package/src/components/customers/customer-list-table/locales/hr.ts +11 -11
  90. package/src/components/customers/customer-list-table/locales/is.ts +25 -0
  91. package/src/components/customers/customer-list-table/locales/nb.ts +25 -0
  92. package/src/components/customers/customer-list-table/locales/sk.ts +25 -0
  93. package/src/components/customers/customer-list-table/locales/sv.ts +25 -0
  94. package/src/components/customers/customers.hooks.ts +14 -17
  95. package/src/components/customers/edit-customer-form/locales/bg.ts +13 -0
  96. package/src/components/customers/edit-customer-form/locales/cs.ts +13 -0
  97. package/src/components/customers/edit-customer-form/locales/en.ts +13 -0
  98. package/src/components/customers/edit-customer-form/locales/et.ts +13 -0
  99. package/src/components/customers/edit-customer-form/locales/fi.ts +13 -0
  100. package/src/components/customers/edit-customer-form/locales/hr.ts +5 -5
  101. package/src/components/customers/edit-customer-form/locales/is.ts +13 -0
  102. package/src/components/customers/edit-customer-form/locales/nb.ts +13 -0
  103. package/src/components/customers/edit-customer-form/locales/sk.ts +13 -0
  104. package/src/components/customers/edit-customer-form/locales/sv.ts +13 -0
  105. package/src/components/dashboard/collection-rate-card/collection-rate-card.tsx +7 -6
  106. package/src/components/dashboard/collection-rate-card/locales/en.ts +3 -0
  107. package/src/components/dashboard/collection-rate-card/use-collection-rate.ts +8 -7
  108. package/src/components/dashboard/invoice-status-chart/invoice-status-chart.tsx +7 -4
  109. package/src/components/dashboard/invoice-status-chart/locales/bg.ts +5 -5
  110. package/src/components/dashboard/invoice-status-chart/locales/cs.ts +5 -5
  111. package/src/components/dashboard/invoice-status-chart/locales/de.ts +1 -1
  112. package/src/components/dashboard/invoice-status-chart/locales/en.ts +10 -0
  113. package/src/components/dashboard/invoice-status-chart/locales/es.ts +1 -1
  114. package/src/components/dashboard/invoice-status-chart/locales/et.ts +5 -5
  115. package/src/components/dashboard/invoice-status-chart/locales/fi.ts +5 -5
  116. package/src/components/dashboard/invoice-status-chart/locales/fr.ts +1 -1
  117. package/src/components/dashboard/invoice-status-chart/locales/hr.ts +5 -5
  118. package/src/components/dashboard/invoice-status-chart/locales/is.ts +5 -5
  119. package/src/components/dashboard/invoice-status-chart/locales/it.ts +1 -1
  120. package/src/components/dashboard/invoice-status-chart/locales/nb.ts +5 -5
  121. package/src/components/dashboard/invoice-status-chart/locales/nl.ts +1 -1
  122. package/src/components/dashboard/invoice-status-chart/locales/pl.ts +1 -1
  123. package/src/components/dashboard/invoice-status-chart/locales/pt.ts +1 -1
  124. package/src/components/dashboard/invoice-status-chart/locales/sk.ts +5 -5
  125. package/src/components/dashboard/invoice-status-chart/locales/sl.ts +1 -1
  126. package/src/components/dashboard/invoice-status-chart/locales/sv.ts +5 -5
  127. package/src/components/dashboard/payment-methods-chart/locales/bg.ts +5 -5
  128. package/src/components/dashboard/payment-methods-chart/locales/cs.ts +5 -5
  129. package/src/components/dashboard/payment-methods-chart/locales/en.ts +12 -0
  130. package/src/components/dashboard/payment-methods-chart/locales/et.ts +5 -5
  131. package/src/components/dashboard/payment-methods-chart/locales/fi.ts +6 -6
  132. package/src/components/dashboard/payment-methods-chart/locales/hr.ts +3 -3
  133. package/src/components/dashboard/payment-methods-chart/locales/is.ts +5 -5
  134. package/src/components/dashboard/payment-methods-chart/locales/nb.ts +5 -5
  135. package/src/components/dashboard/payment-methods-chart/locales/sk.ts +5 -5
  136. package/src/components/dashboard/payment-methods-chart/locales/sv.ts +5 -5
  137. package/src/components/dashboard/payment-methods-chart/payment-methods-chart.tsx +4 -3
  138. package/src/components/dashboard/payment-trend-chart/locales/bg.ts +1 -1
  139. package/src/components/dashboard/payment-trend-chart/locales/cs.ts +1 -1
  140. package/src/components/dashboard/payment-trend-chart/locales/en.ts +6 -0
  141. package/src/components/dashboard/payment-trend-chart/locales/et.ts +1 -1
  142. package/src/components/dashboard/payment-trend-chart/locales/fi.ts +1 -1
  143. package/src/components/dashboard/payment-trend-chart/locales/is.ts +1 -1
  144. package/src/components/dashboard/payment-trend-chart/locales/nb.ts +1 -1
  145. package/src/components/dashboard/payment-trend-chart/locales/sk.ts +1 -1
  146. package/src/components/dashboard/payment-trend-chart/locales/sv.ts +1 -1
  147. package/src/components/dashboard/payment-trend-chart/payment-trend-chart.tsx +4 -3
  148. package/src/components/dashboard/payment-trend-chart/use-payment-trend.ts +12 -9
  149. package/src/components/dashboard/revenue-card.tsx +3 -3
  150. package/src/components/dashboard/revenue-trend-chart/locales/bg.ts +1 -1
  151. package/src/components/dashboard/revenue-trend-chart/locales/cs.ts +1 -1
  152. package/src/components/dashboard/revenue-trend-chart/locales/en.ts +6 -0
  153. package/src/components/dashboard/revenue-trend-chart/locales/et.ts +1 -1
  154. package/src/components/dashboard/revenue-trend-chart/locales/fi.ts +1 -1
  155. package/src/components/dashboard/revenue-trend-chart/locales/is.ts +1 -1
  156. package/src/components/dashboard/revenue-trend-chart/locales/nb.ts +1 -1
  157. package/src/components/dashboard/revenue-trend-chart/locales/sk.ts +1 -1
  158. package/src/components/dashboard/revenue-trend-chart/locales/sv.ts +1 -1
  159. package/src/components/dashboard/revenue-trend-chart/revenue-trend-chart.tsx +4 -3
  160. package/src/components/dashboard/revenue-trend-chart/use-revenue-trend.ts +4 -3
  161. package/src/components/dashboard/shared/local-date.ts +11 -0
  162. package/src/components/dashboard/shared/use-revenue-data.ts +6 -5
  163. package/src/components/dashboard/shared/use-stats-query.ts +7 -11
  164. package/src/components/dashboard/stat-card.tsx +3 -3
  165. package/src/components/dashboard/tax-collected-card/tax-collected-card.tsx +11 -9
  166. package/src/components/dashboard/tax-collected-card/use-tax-collected.ts +3 -2
  167. package/src/components/dashboard/top-customers-chart/locales/bg.ts +2 -2
  168. package/src/components/dashboard/top-customers-chart/locales/cs.ts +2 -2
  169. package/src/components/dashboard/top-customers-chart/locales/en.ts +7 -0
  170. package/src/components/dashboard/top-customers-chart/locales/et.ts +2 -2
  171. package/src/components/dashboard/top-customers-chart/locales/fi.ts +2 -2
  172. package/src/components/dashboard/top-customers-chart/locales/is.ts +2 -2
  173. package/src/components/dashboard/top-customers-chart/locales/nb.ts +2 -2
  174. package/src/components/dashboard/top-customers-chart/locales/sk.ts +2 -2
  175. package/src/components/dashboard/top-customers-chart/locales/sv.ts +2 -2
  176. package/src/components/dashboard/top-customers-chart/top-customers-chart.tsx +4 -3
  177. package/src/components/dashboard/top-customers-chart/use-top-customers.ts +7 -20
  178. package/src/components/delivery-notes/create/create-delivery-note-form.tsx +61 -31
  179. package/src/components/delivery-notes/create/locales/bg.ts +68 -0
  180. package/src/components/delivery-notes/create/locales/cs.ts +68 -0
  181. package/src/components/delivery-notes/create/locales/en.ts +68 -0
  182. package/src/components/delivery-notes/create/locales/et.ts +68 -0
  183. package/src/components/delivery-notes/create/locales/fi.ts +68 -0
  184. package/src/components/delivery-notes/create/locales/hr.ts +6 -6
  185. package/src/components/delivery-notes/create/locales/is.ts +68 -0
  186. package/src/components/delivery-notes/create/locales/nb.ts +68 -0
  187. package/src/components/delivery-notes/create/locales/sk.ts +68 -0
  188. package/src/components/delivery-notes/create/locales/sl.ts +5 -5
  189. package/src/components/delivery-notes/create/locales/sv.ts +68 -0
  190. package/src/components/delivery-notes/delivery-notes.hooks.ts +20 -3
  191. package/src/components/delivery-notes/list/list-row-actions.tsx +62 -16
  192. package/src/components/delivery-notes/list/list-table.tsx +42 -9
  193. package/src/components/delivery-notes/list/locales/bg.ts +40 -0
  194. package/src/components/delivery-notes/list/locales/cs.ts +40 -0
  195. package/src/components/delivery-notes/list/locales/et.ts +40 -0
  196. package/src/components/delivery-notes/list/locales/fi.ts +40 -0
  197. package/src/components/delivery-notes/list/locales/is.ts +40 -0
  198. package/src/components/delivery-notes/list/locales/nb.ts +40 -0
  199. package/src/components/delivery-notes/list/locales/sk.ts +40 -0
  200. package/src/components/delivery-notes/list/locales/sv.ts +40 -0
  201. package/src/components/delivery-notes/list/use-delivery-note-download.ts +3 -5
  202. package/src/components/documents/create/document-add-item-form.tsx +256 -147
  203. package/src/components/documents/create/document-add-item-tax-rate-field.tsx +2 -1
  204. package/src/components/documents/create/document-details-section.tsx +30 -12
  205. package/src/components/documents/create/document-item-validation.ts +50 -0
  206. package/src/components/documents/create/document-items-section.tsx +44 -6
  207. package/src/components/documents/create/document-recipient-section.tsx +10 -2
  208. package/src/components/documents/create/linked-documents-info.tsx +4 -3
  209. package/src/components/documents/create/live-preview.tsx +19 -15
  210. package/src/components/documents/create/mark-as-paid-section.tsx +77 -20
  211. package/src/components/documents/create/payment-rows.ts +291 -0
  212. package/src/components/documents/create/prepare-document-submission.ts +24 -13
  213. package/src/components/documents/create/scroll-to-first-invalid-field.ts +27 -0
  214. package/src/components/documents/create/smart-code-insert-button.tsx +5 -53
  215. package/src/components/documents/create/use-document-customer-form.ts +74 -25
  216. package/src/components/documents/documents.hooks.ts +3 -5
  217. package/src/components/documents/index.ts +1 -0
  218. package/src/components/documents/public/index.ts +1 -0
  219. package/src/components/documents/public/public-document-summary.tsx +343 -0
  220. package/src/components/documents/shared/document-preview-display.tsx +65 -39
  221. package/src/components/documents/shared/index.ts +6 -1
  222. package/src/components/documents/shared/scaled-document-preview.tsx +33 -19
  223. package/src/components/documents/types.ts +24 -0
  224. package/src/components/documents/view/document-actions-bar.tsx +241 -62
  225. package/src/components/documents/view/document-activities-list.tsx +23 -11
  226. package/src/components/documents/view/document-details-card.tsx +7 -27
  227. package/src/components/documents/view/document-payments-list.tsx +114 -57
  228. package/src/components/documents/view/document-relations-list.tsx +26 -6
  229. package/src/components/documents/view/document-sidebar.tsx +25 -3
  230. package/src/components/documents/view/document-version-history.tsx +137 -0
  231. package/src/components/documents/view/index.ts +1 -0
  232. package/src/components/documents/view/locales/bg.ts +143 -0
  233. package/src/components/documents/view/locales/cs.ts +143 -0
  234. package/src/components/documents/view/locales/de.ts +13 -0
  235. package/src/components/documents/view/locales/en.ts +143 -0
  236. package/src/components/documents/view/locales/es.ts +13 -0
  237. package/src/components/documents/view/locales/et.ts +143 -0
  238. package/src/components/documents/view/locales/fi.ts +143 -0
  239. package/src/components/documents/view/locales/fr.ts +13 -0
  240. package/src/components/documents/view/locales/hr.ts +13 -0
  241. package/src/components/documents/view/locales/is.ts +143 -0
  242. package/src/components/documents/view/locales/it.ts +13 -0
  243. package/src/components/documents/view/locales/nb.ts +143 -0
  244. package/src/components/documents/view/locales/nl.ts +13 -0
  245. package/src/components/documents/view/locales/pl.ts +13 -0
  246. package/src/components/documents/view/locales/pt.ts +13 -0
  247. package/src/components/documents/view/locales/sk.ts +143 -0
  248. package/src/components/documents/view/locales/sl.ts +13 -0
  249. package/src/components/documents/view/locales/sv.ts +143 -0
  250. package/src/components/documents/view/use-document-download.ts +18 -17
  251. package/src/components/entities/create-entity-form.tsx +200 -12
  252. package/src/components/entities/entities.hooks.ts +15 -7
  253. package/src/components/entities/entity-settings-form/entity-settings-form.tsx +131 -75
  254. package/src/components/entities/entity-settings-form/input-with-preview.tsx +28 -4
  255. package/src/components/entities/entity-settings-form/locales/bg.ts +199 -0
  256. package/src/components/entities/entity-settings-form/locales/cs.ts +199 -0
  257. package/src/components/entities/entity-settings-form/locales/de.ts +18 -3
  258. package/src/components/entities/entity-settings-form/locales/en.ts +199 -0
  259. package/src/components/entities/entity-settings-form/locales/es.ts +18 -3
  260. package/src/components/entities/entity-settings-form/locales/et.ts +198 -0
  261. package/src/components/entities/entity-settings-form/locales/fi.ts +199 -0
  262. package/src/components/entities/entity-settings-form/locales/fr.ts +18 -3
  263. package/src/components/entities/entity-settings-form/locales/hr.ts +26 -11
  264. package/src/components/entities/entity-settings-form/locales/is.ts +199 -0
  265. package/src/components/entities/entity-settings-form/locales/it.ts +18 -3
  266. package/src/components/entities/entity-settings-form/locales/nb.ts +199 -0
  267. package/src/components/entities/entity-settings-form/locales/nl.ts +18 -3
  268. package/src/components/entities/entity-settings-form/locales/pl.ts +18 -3
  269. package/src/components/entities/entity-settings-form/locales/pt.ts +18 -3
  270. package/src/components/entities/entity-settings-form/locales/sk.ts +199 -0
  271. package/src/components/entities/entity-settings-form/locales/sl.ts +30 -15
  272. package/src/components/entities/entity-settings-form/locales/sv.ts +205 -0
  273. package/src/components/entities/fina-settings-form/fina-operator-required-dialog.tsx +34 -9
  274. package/src/components/entities/fina-settings-form/fina-settings-form.tsx +2 -0
  275. package/src/components/entities/fina-settings-form/fina-settings.hooks.ts +14 -45
  276. package/src/components/entities/fina-settings-form/locales/bg.ts +163 -0
  277. package/src/components/entities/fina-settings-form/locales/cs.ts +163 -0
  278. package/src/components/entities/fina-settings-form/locales/et.ts +163 -0
  279. package/src/components/entities/fina-settings-form/locales/fi.ts +163 -0
  280. package/src/components/entities/fina-settings-form/locales/hr.ts +11 -10
  281. package/src/components/entities/fina-settings-form/locales/is.ts +164 -0
  282. package/src/components/entities/fina-settings-form/locales/nb.ts +163 -0
  283. package/src/components/entities/fina-settings-form/locales/sk.ts +163 -0
  284. package/src/components/entities/fina-settings-form/locales/sl.ts +8 -7
  285. package/src/components/entities/fina-settings-form/locales/sv.ts +165 -0
  286. package/src/components/entities/furs-settings-form/furs-operator-required-dialog.tsx +34 -9
  287. package/src/components/entities/furs-settings-form/furs-settings-form.tsx +13 -1
  288. package/src/components/entities/furs-settings-form/furs-settings.hooks.ts +141 -42
  289. package/src/components/entities/furs-settings-form/locales/bg.ts +242 -0
  290. package/src/components/entities/furs-settings-form/locales/cs.ts +241 -0
  291. package/src/components/entities/furs-settings-form/locales/de.ts +42 -15
  292. package/src/components/entities/furs-settings-form/locales/en.ts +24 -0
  293. package/src/components/entities/furs-settings-form/locales/es.ts +42 -15
  294. package/src/components/entities/furs-settings-form/locales/et.ts +242 -0
  295. package/src/components/entities/furs-settings-form/locales/fi.ts +243 -0
  296. package/src/components/entities/furs-settings-form/locales/fr.ts +43 -15
  297. package/src/components/entities/furs-settings-form/locales/hr.ts +44 -19
  298. package/src/components/entities/furs-settings-form/locales/is.ts +242 -0
  299. package/src/components/entities/furs-settings-form/locales/it.ts +42 -15
  300. package/src/components/entities/furs-settings-form/locales/nb.ts +242 -0
  301. package/src/components/entities/furs-settings-form/locales/nl.ts +42 -15
  302. package/src/components/entities/furs-settings-form/locales/pl.ts +40 -15
  303. package/src/components/entities/furs-settings-form/locales/pt.ts +42 -15
  304. package/src/components/entities/furs-settings-form/locales/sk.ts +243 -0
  305. package/src/components/entities/furs-settings-form/locales/sl.ts +34 -10
  306. package/src/components/entities/furs-settings-form/locales/sv.ts +242 -0
  307. package/src/components/entities/furs-settings-form/sections/enable-fiscalization-section.tsx +11 -0
  308. package/src/components/entities/furs-settings-form/sections/furs-internal-act-download-card.tsx +111 -0
  309. package/src/components/entities/furs-settings-form/sections/general-settings-section.tsx +27 -0
  310. package/src/components/entities/furs-settings-form/sections/premises-management-section.tsx +23 -16
  311. package/src/components/entities/furs-settings-form/sections/register-premise-dialog.tsx +89 -31
  312. package/src/components/entities/settings/branding-settings-form.tsx +11 -30
  313. package/src/components/entities/settings/company-settings-form.tsx +2 -1
  314. package/src/components/entities/settings/defaults-settings-form.tsx +112 -9
  315. package/src/components/entities/settings/email-settings-form.tsx +245 -3
  316. package/src/components/entities/settings/eslog-settings-form.tsx +2 -1
  317. package/src/components/entities/settings/number-format-settings-form.tsx +2 -1
  318. package/src/components/entities/settings/pdf-template-selector/locales/bg.ts +20 -0
  319. package/src/components/entities/settings/pdf-template-selector/locales/cs.ts +20 -0
  320. package/src/components/entities/settings/pdf-template-selector/locales/en.ts +20 -0
  321. package/src/components/entities/settings/pdf-template-selector/locales/et.ts +19 -0
  322. package/src/components/entities/settings/pdf-template-selector/locales/fi.ts +20 -0
  323. package/src/components/entities/settings/pdf-template-selector/locales/is.ts +19 -0
  324. package/src/components/entities/settings/pdf-template-selector/locales/nb.ts +19 -0
  325. package/src/components/entities/settings/pdf-template-selector/locales/sk.ts +20 -0
  326. package/src/components/entities/settings/pdf-template-selector/locales/sv.ts +19 -0
  327. package/src/components/entities/settings/tax-rules-settings-form.tsx +21 -6
  328. package/src/components/estimates/create/create-estimate-form.tsx +70 -34
  329. package/src/components/estimates/create/locales/bg.ts +76 -0
  330. package/src/components/estimates/create/locales/cs.ts +76 -0
  331. package/src/components/estimates/create/locales/en.ts +76 -0
  332. package/src/components/estimates/create/locales/et.ts +76 -0
  333. package/src/components/estimates/create/locales/fi.ts +76 -0
  334. package/src/components/estimates/create/locales/hr.ts +8 -8
  335. package/src/components/estimates/create/locales/is.ts +76 -0
  336. package/src/components/estimates/create/locales/nb.ts +76 -0
  337. package/src/components/estimates/create/locales/sk.ts +76 -0
  338. package/src/components/estimates/create/locales/sl.ts +8 -8
  339. package/src/components/estimates/create/locales/sv.ts +76 -0
  340. package/src/components/estimates/create/prepare-estimate-submission.ts +4 -1
  341. package/src/components/estimates/estimates.hooks.ts +15 -3
  342. package/src/components/estimates/list/list-row-actions.tsx +34 -7
  343. package/src/components/estimates/list/list-table.tsx +78 -10
  344. package/src/components/estimates/list/locales/bg.ts +38 -0
  345. package/src/components/estimates/list/locales/cs.ts +38 -0
  346. package/src/components/estimates/list/locales/en.ts +27 -2
  347. package/src/components/estimates/list/locales/et.ts +38 -0
  348. package/src/components/estimates/list/locales/fi.ts +38 -0
  349. package/src/components/estimates/list/locales/hr.ts +2 -2
  350. package/src/components/estimates/list/locales/is.ts +38 -0
  351. package/src/components/estimates/list/locales/nb.ts +38 -0
  352. package/src/components/estimates/list/locales/sk.ts +38 -0
  353. package/src/components/estimates/list/locales/sv.ts +38 -0
  354. package/src/components/estimates/list/use-estimate-download.ts +3 -5
  355. package/src/components/export/document-export-form.tsx +72 -15
  356. package/src/components/export/sales-per-item-export-form.tsx +3 -2
  357. package/src/components/invoices/create/create-invoice-form.tsx +294 -76
  358. package/src/components/invoices/create/eslog-validation.ts +97 -8
  359. package/src/components/invoices/create/locales/bg.ts +164 -0
  360. package/src/components/invoices/create/locales/cs.ts +164 -0
  361. package/src/components/invoices/create/locales/de.ts +24 -0
  362. package/src/components/invoices/create/locales/en.ts +164 -0
  363. package/src/components/invoices/create/locales/es.ts +24 -0
  364. package/src/components/invoices/create/locales/et.ts +164 -0
  365. package/src/components/invoices/create/locales/fi.ts +164 -0
  366. package/src/components/invoices/create/locales/fr.ts +23 -0
  367. package/src/components/invoices/create/locales/hr.ts +32 -9
  368. package/src/components/invoices/create/locales/is.ts +164 -0
  369. package/src/components/invoices/create/locales/it.ts +24 -0
  370. package/src/components/invoices/create/locales/nb.ts +164 -0
  371. package/src/components/invoices/create/locales/nl.ts +23 -0
  372. package/src/components/invoices/create/locales/pl.ts +23 -0
  373. package/src/components/invoices/create/locales/pt.ts +24 -0
  374. package/src/components/invoices/create/locales/sk.ts +164 -0
  375. package/src/components/invoices/create/locales/sl.ts +32 -9
  376. package/src/components/invoices/create/locales/sv.ts +166 -0
  377. package/src/components/invoices/create/prepare-invoice-submission.ts +19 -2
  378. package/src/components/invoices/invoices-furs.hooks.ts +11 -8
  379. package/src/components/invoices/invoices.hooks.ts +27 -10
  380. package/src/components/invoices/list/list-row-actions.tsx +54 -21
  381. package/src/components/invoices/list/list-table.tsx +92 -11
  382. package/src/components/invoices/list/locales/bg.ts +49 -0
  383. package/src/components/invoices/list/locales/cs.ts +49 -0
  384. package/src/components/invoices/list/locales/en.ts +34 -2
  385. package/src/components/invoices/list/locales/et.ts +49 -0
  386. package/src/components/invoices/list/locales/fi.ts +49 -0
  387. package/src/components/invoices/list/locales/is.ts +49 -0
  388. package/src/components/invoices/list/locales/nb.ts +49 -0
  389. package/src/components/invoices/list/locales/sk.ts +49 -0
  390. package/src/components/invoices/list/locales/sv.ts +49 -0
  391. package/src/components/invoices/list/use-invoice-download.ts +3 -5
  392. package/src/components/invoices/send-email-dialog/locales/bg.ts +58 -0
  393. package/src/components/invoices/send-email-dialog/locales/cs.ts +58 -0
  394. package/src/components/invoices/send-email-dialog/locales/de.ts +39 -0
  395. package/src/components/invoices/send-email-dialog/locales/en.ts +58 -0
  396. package/src/components/invoices/send-email-dialog/locales/es.ts +39 -0
  397. package/src/components/invoices/send-email-dialog/locales/et.ts +58 -0
  398. package/src/components/invoices/send-email-dialog/locales/fi.ts +58 -0
  399. package/src/components/invoices/send-email-dialog/locales/fr.ts +39 -0
  400. package/src/components/invoices/send-email-dialog/locales/hr.ts +39 -0
  401. package/src/components/invoices/send-email-dialog/locales/is.ts +58 -0
  402. package/src/components/invoices/send-email-dialog/locales/it.ts +39 -0
  403. package/src/components/invoices/send-email-dialog/locales/nb.ts +58 -0
  404. package/src/components/invoices/send-email-dialog/locales/nl.ts +39 -0
  405. package/src/components/invoices/send-email-dialog/locales/pl.ts +39 -0
  406. package/src/components/invoices/send-email-dialog/locales/pt.ts +39 -0
  407. package/src/components/invoices/send-email-dialog/locales/sk.ts +58 -0
  408. package/src/components/invoices/send-email-dialog/locales/sl.ts +39 -0
  409. package/src/components/invoices/send-email-dialog/locales/sv.ts +58 -0
  410. package/src/components/invoices/send-email-dialog/send-email-dialog.tsx +188 -93
  411. package/src/components/invoices/view/eslog-info-display.tsx +2 -0
  412. package/src/components/invoices/view/fiscalization-status-card.tsx +2 -0
  413. package/src/components/items/create-item-form/create-item-form.tsx +29 -0
  414. package/src/components/items/create-item-form/locales/bg.ts +13 -0
  415. package/src/components/items/create-item-form/locales/cs.ts +13 -0
  416. package/src/components/items/create-item-form/locales/et.ts +13 -0
  417. package/src/components/items/create-item-form/locales/fi.ts +13 -0
  418. package/src/components/items/create-item-form/locales/is.ts +13 -0
  419. package/src/components/items/create-item-form/locales/nb.ts +13 -0
  420. package/src/components/items/create-item-form/locales/sk.ts +13 -0
  421. package/src/components/items/create-item-form/locales/sv.ts +13 -0
  422. package/src/components/items/edit-item-form/edit-item-form.tsx +39 -1
  423. package/src/components/items/edit-item-form/locales/bg.ts +12 -0
  424. package/src/components/items/edit-item-form/locales/cs.ts +12 -0
  425. package/src/components/items/edit-item-form/locales/en.ts +12 -0
  426. package/src/components/items/edit-item-form/locales/et.ts +12 -0
  427. package/src/components/items/edit-item-form/locales/fi.ts +12 -0
  428. package/src/components/items/edit-item-form/locales/is.ts +12 -0
  429. package/src/components/items/edit-item-form/locales/nb.ts +12 -0
  430. package/src/components/items/edit-item-form/locales/sk.ts +12 -0
  431. package/src/components/items/edit-item-form/locales/sv.ts +12 -0
  432. package/src/components/items/item-combobox.tsx +51 -18
  433. package/src/components/items/item-list-table/item-list-table.tsx +47 -23
  434. package/src/components/items/item-list-table/locales/bg.ts +16 -0
  435. package/src/components/items/item-list-table/locales/cs.ts +16 -0
  436. package/src/components/items/item-list-table/locales/en.ts +4 -3
  437. package/src/components/items/item-list-table/locales/et.ts +16 -0
  438. package/src/components/items/item-list-table/locales/fi.ts +16 -0
  439. package/src/components/items/item-list-table/locales/is.ts +16 -0
  440. package/src/components/items/item-list-table/locales/nb.ts +16 -0
  441. package/src/components/items/item-list-table/locales/sk.ts +16 -0
  442. package/src/components/items/item-list-table/locales/sv.ts +16 -0
  443. package/src/components/items/items.hooks.ts +15 -15
  444. package/src/components/payments/create-payment-form/create-payment-form.tsx +11 -7
  445. package/src/components/payments/create-payment-form/index.ts +1 -0
  446. package/src/components/payments/create-payment-form/locales/bg.ts +20 -0
  447. package/src/components/payments/create-payment-form/locales/cs.ts +20 -0
  448. package/src/components/payments/create-payment-form/locales/en.ts +20 -0
  449. package/src/components/payments/create-payment-form/locales/et.ts +20 -0
  450. package/src/components/payments/create-payment-form/locales/fi.ts +20 -0
  451. package/src/components/payments/create-payment-form/locales/hr.ts +2 -2
  452. package/src/components/payments/create-payment-form/locales/is.ts +20 -0
  453. package/src/components/payments/create-payment-form/locales/nb.ts +20 -0
  454. package/src/components/payments/create-payment-form/locales/sk.ts +20 -0
  455. package/src/components/payments/create-payment-form/locales/sl.ts +4 -4
  456. package/src/components/payments/create-payment-form/locales/sv.ts +20 -0
  457. package/src/components/payments/edit-payment-form/edit-payment-form.tsx +5 -1
  458. package/src/components/payments/edit-payment-form/locales/bg.ts +20 -0
  459. package/src/components/payments/edit-payment-form/locales/cs.ts +20 -0
  460. package/src/components/payments/edit-payment-form/locales/en.ts +20 -0
  461. package/src/components/payments/edit-payment-form/locales/et.ts +20 -0
  462. package/src/components/payments/edit-payment-form/locales/fi.ts +20 -0
  463. package/src/components/payments/edit-payment-form/locales/hr.ts +2 -2
  464. package/src/components/payments/edit-payment-form/locales/is.ts +20 -0
  465. package/src/components/payments/edit-payment-form/locales/nb.ts +20 -0
  466. package/src/components/payments/edit-payment-form/locales/sk.ts +20 -0
  467. package/src/components/payments/edit-payment-form/locales/sl.ts +4 -4
  468. package/src/components/payments/edit-payment-form/locales/sv.ts +20 -0
  469. package/src/components/payments/list/list-row-actions.tsx +10 -2
  470. package/src/components/payments/list/list-table.tsx +51 -45
  471. package/src/components/payments/list/locales/bg.ts +42 -0
  472. package/src/components/payments/list/locales/cs.ts +42 -0
  473. package/src/components/payments/list/locales/de.ts +18 -0
  474. package/src/components/payments/list/locales/en.ts +37 -2
  475. package/src/components/payments/list/locales/es.ts +18 -0
  476. package/src/components/payments/list/locales/et.ts +42 -0
  477. package/src/components/payments/list/locales/fi.ts +42 -0
  478. package/src/components/payments/list/locales/fr.ts +18 -0
  479. package/src/components/payments/list/locales/hr.ts +18 -0
  480. package/src/components/payments/list/locales/is.ts +42 -0
  481. package/src/components/payments/list/locales/it.ts +18 -0
  482. package/src/components/payments/list/locales/nb.ts +42 -0
  483. package/src/components/payments/list/locales/nl.ts +18 -0
  484. package/src/components/payments/list/locales/pl.ts +18 -0
  485. package/src/components/payments/list/locales/pt.ts +18 -0
  486. package/src/components/payments/list/locales/sk.ts +42 -0
  487. package/src/components/payments/list/locales/sl.ts +18 -1
  488. package/src/components/payments/list/locales/sv.ts +42 -0
  489. package/src/components/payments/payments.hooks.ts +13 -6
  490. package/src/components/recurring-invoices/create-recurring-invoice-form/create-recurring-invoice-form.tsx +23 -17
  491. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/bg.ts +44 -0
  492. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/cs.ts +44 -0
  493. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/en.ts +44 -0
  494. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/et.ts +44 -0
  495. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/fi.ts +44 -0
  496. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/hr.ts +6 -6
  497. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/is.ts +44 -0
  498. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/nb.ts +44 -0
  499. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/sk.ts +44 -0
  500. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/sl.ts +4 -4
  501. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/sv.ts +44 -0
  502. package/src/components/recurring-invoices/list/list-row-actions.tsx +3 -5
  503. package/src/components/recurring-invoices/list/list-table.tsx +10 -7
  504. package/src/components/recurring-invoices/list/locales/bg.ts +28 -0
  505. package/src/components/recurring-invoices/list/locales/cs.ts +28 -0
  506. package/src/components/recurring-invoices/list/locales/en.ts +23 -0
  507. package/src/components/recurring-invoices/list/locales/et.ts +28 -0
  508. package/src/components/recurring-invoices/list/locales/fi.ts +28 -0
  509. package/src/components/recurring-invoices/list/locales/is.ts +28 -0
  510. package/src/components/recurring-invoices/list/locales/nb.ts +28 -0
  511. package/src/components/recurring-invoices/list/locales/sk.ts +28 -0
  512. package/src/components/recurring-invoices/list/locales/sv.ts +28 -0
  513. package/src/components/recurring-invoices/recurring-invoices.hooks.ts +11 -8
  514. package/src/components/request-logs/request-log-detail.tsx +30 -23
  515. package/src/components/request-logs/request-log-list-table.tsx +88 -45
  516. package/src/components/table/README.md +47 -9
  517. package/src/components/table/data-table.tsx +232 -92
  518. package/src/components/table/filter-bar.tsx +1 -1
  519. package/src/components/table/filter-panel.tsx +51 -22
  520. package/src/components/table/hooks/use-table-state.ts +64 -11
  521. package/src/components/table/index.ts +3 -0
  522. package/src/components/table/locales.ts +119 -4
  523. package/src/components/table/selection-toolbar.tsx +65 -9
  524. package/src/components/table/sorting.ts +80 -0
  525. package/src/components/table/table-skeleton.tsx +15 -9
  526. package/src/components/table/types.ts +17 -0
  527. package/src/components/tax-reports/index.ts +8 -0
  528. package/src/components/tax-reports/kir-export-form.tsx +4 -5
  529. package/src/components/tax-reports/slovenia-accounting-mappings-fields.tsx +271 -0
  530. package/src/components/tax-reports/slovenia-tax-profile-step.tsx +21 -10
  531. package/src/components/tax-reports/slovenia-vod-export-form.tsx +452 -0
  532. package/src/components/tax-reports/slovenia-yearly-export-form.tsx +17 -16
  533. package/src/components/tax-reports/slovenia-yearly-review-step.tsx +40 -18
  534. package/src/components/taxes/create-tax-form/create-tax-form.tsx +48 -2
  535. package/src/components/taxes/create-tax-form/locales/bg.ts +8 -0
  536. package/src/components/taxes/create-tax-form/locales/cs.ts +8 -0
  537. package/src/components/taxes/create-tax-form/locales/et.ts +8 -0
  538. package/src/components/taxes/create-tax-form/locales/fi.ts +8 -0
  539. package/src/components/taxes/create-tax-form/locales/is.ts +8 -0
  540. package/src/components/taxes/create-tax-form/locales/nb.ts +8 -0
  541. package/src/components/taxes/create-tax-form/locales/sk.ts +8 -0
  542. package/src/components/taxes/create-tax-form/locales/sv.ts +8 -0
  543. package/src/components/taxes/edit-tax-form/edit-tax-form.tsx +80 -11
  544. package/src/components/taxes/edit-tax-form/locales/bg.ts +6 -0
  545. package/src/components/taxes/edit-tax-form/locales/cs.ts +6 -0
  546. package/src/components/taxes/edit-tax-form/locales/en.ts +6 -0
  547. package/src/components/taxes/edit-tax-form/locales/et.ts +6 -0
  548. package/src/components/taxes/edit-tax-form/locales/fi.ts +6 -0
  549. package/src/components/taxes/edit-tax-form/locales/is.ts +6 -0
  550. package/src/components/taxes/edit-tax-form/locales/nb.ts +6 -0
  551. package/src/components/taxes/edit-tax-form/locales/sk.ts +6 -0
  552. package/src/components/taxes/edit-tax-form/locales/sv.ts +6 -0
  553. package/src/components/taxes/tax-list-table/locales/bg.ts +17 -0
  554. package/src/components/taxes/tax-list-table/locales/cs.ts +17 -0
  555. package/src/components/taxes/tax-list-table/locales/en.ts +4 -3
  556. package/src/components/taxes/tax-list-table/locales/et.ts +17 -0
  557. package/src/components/taxes/tax-list-table/locales/fi.ts +17 -0
  558. package/src/components/taxes/tax-list-table/locales/is.ts +17 -0
  559. package/src/components/taxes/tax-list-table/locales/nb.ts +17 -0
  560. package/src/components/taxes/tax-list-table/locales/sk.ts +17 -0
  561. package/src/components/taxes/tax-list-table/locales/sv.ts +17 -0
  562. package/src/components/taxes/tax-list-table/tax-list-table.tsx +53 -19
  563. package/src/components/taxes/taxes.hooks.ts +53 -12
  564. package/src/components/ui/badge.tsx +1 -1
  565. package/src/components/ui/button.tsx +1 -1
  566. package/src/components/ui/drawer.tsx +2 -2
  567. package/src/components/ui/form.tsx +118 -2
  568. package/src/components/ui/progress.tsx +6 -4
  569. package/src/components/ui/select.tsx +118 -1
  570. package/src/components/ui/sidebar.tsx +3 -2
  571. package/src/components/ui/sonner.tsx +17 -36
  572. package/src/components/ui/sticky-form-footer.tsx +6 -1
  573. package/src/components/ui/tooltip.tsx +15 -2
  574. package/src/components/webhook-logs/webhook-delivery-detail.tsx +22 -22
  575. package/src/components/webhook-logs/webhook-delivery-list-table.tsx +92 -17
  576. package/src/components/wl-subscription/locked-feature.tsx +11 -10
  577. package/src/components/wl-subscription/paywall.tsx +184 -72
  578. package/src/components/wl-subscription/upgrade-modal.tsx +28 -31
  579. package/src/generate-schemas.ts +17 -7
  580. package/src/generated/schemas/account_webhook.ts +43 -0
  581. package/src/generated/schemas/accountwebhook.ts +67 -0
  582. package/src/generated/schemas/entity.ts +343 -4
  583. package/src/generated/schemas/exportsloveniavodxml_body.ts +16 -0
  584. package/src/generated/schemas/exportsloveniayearlynormiranireport_body.ts +27 -0
  585. package/src/generated/schemas/furssettings.ts +1 -0
  586. package/src/generated/schemas/incomingpurchasedocument.ts +198 -0
  587. package/src/generated/schemas/incomingpurchasedocumentpayment.ts +38 -0
  588. package/src/generated/schemas/index.ts +12 -0
  589. package/src/generated/schemas/item.ts +36 -0
  590. package/src/generated/schemas/me.ts +23 -19
  591. package/src/generated/schemas/order.ts +2 -0
  592. package/src/generated/schemas/orderintegration.ts +8 -4
  593. package/src/generated/schemas/payment.ts +5 -0
  594. package/src/generated/schemas/ptatcudseries.ts +30 -0
  595. package/src/generated/schemas/renderadvanceinvoicepreview_body.ts +35 -3
  596. package/src/generated/schemas/rendercreditnotepreview_body.ts +35 -3
  597. package/src/generated/schemas/renderdeliverynotepreview_body.ts +12 -5
  598. package/src/generated/schemas/renderestimatepreview_body.ts +38 -5
  599. package/src/generated/schemas/renderinvoicepreview_body.ts +39 -5
  600. package/src/generated/schemas/senddocument_body.ts +1 -0
  601. package/src/generated/schemas/sendemail_body.ts +67 -39
  602. package/src/generated/schemas/sloveniataxprofile.ts +118 -0
  603. package/src/generated/schemas/starteslogexport_body.ts +33 -0
  604. package/src/generated/schemas/startpdfexport_body.ts +94 -78
  605. package/src/generated/schemas/supplier.ts +59 -0
  606. package/src/generated/schemas/syncshopifyorders_body.ts +20 -0
  607. package/src/generated/schemas/tax.ts +2 -0
  608. package/src/generated/schemas/uploadfile_body.ts +1 -0
  609. package/src/generated/schemas/userptsettings.ts +26 -0
  610. package/src/generated/schemas/voidinvoice_body.ts +20 -0
  611. package/src/generated/schemas/webhook.ts +2 -0
  612. package/src/hooks/create-resource-hooks.ts +22 -19
  613. package/src/hooks/use-duplicate-document.ts +10 -8
  614. package/src/hooks/use-eslog-validation.ts +5 -1
  615. package/src/hooks/use-next-document-number.ts +13 -6
  616. package/src/hooks/use-resolved-entity-id.ts +14 -0
  617. package/src/hooks/use-resource-mutation.ts +11 -30
  618. package/src/hooks/use-transaction-type-check.ts +3 -8
  619. package/src/lib/browser-cookies.ts +1 -1
  620. package/src/lib/country-capabilities.ts +114 -0
  621. package/src/lib/date-fns-locale.ts +1 -20
  622. package/src/lib/eslog-export.ts +32 -0
  623. package/src/lib/fiscalization-options.ts +21 -1
  624. package/src/lib/formatting.ts +27 -0
  625. package/src/lib/furs-error-utils.ts +29 -0
  626. package/src/lib/locale.ts +4 -0
  627. package/src/lib/payment-display.ts +95 -0
  628. package/src/lib/pt-document-input.ts +67 -0
  629. package/src/lib/schemas/shared.ts +1 -0
  630. package/src/lib/template-variables.tsx +102 -4
  631. package/src/lib/translation.ts +51 -33
  632. package/src/lib/white-label-capabilities.ts +626 -0
  633. package/src/lib/zod-validation-message.ts +291 -0
  634. package/src/providers/entities-provider.tsx +32 -14
  635. package/src/providers/sdk-provider.tsx +112 -12
  636. package/src/providers/space-invoices-provider.tsx +129 -0
  637. package/src/providers/white-label-provider.tsx +96 -4
  638. package/src/providers/wl-subscription-provider.tsx +144 -10
@@ -0,0 +1,165 @@
1
+ export default {
2
+ "FINA is for Croatian Entities": "FINA är för kroatiska enheter",
3
+ "FINA fiscalization is only available for entities with country code HR":
4
+ "FINA-fiskalisering är bara tillgänglig för enheter med landskod HR",
5
+ "Test Mode (Sandbox)": "Testläge (Sandbox)",
6
+ "This entity is in test mode. FINA invoices will be sent to the test environment. No real fiscalization will occur.":
7
+ "Den här enheten är i testläge. FINA-fakturor skickas till testmiljön. Ingen verklig fiskalisering kommer att ske.",
8
+ "General Settings": "Allmänna inställningar",
9
+ Certificate: "Certifikat",
10
+ "Business Premises": "Affärslokaler",
11
+ "Enable FINA Fiscalization": "Aktivera FINA-fiskalisering",
12
+ "Upload and validate digital certificate first": "Ladda upp och validera digitalt certifikat först",
13
+ "Certificate Required": "Certifikat krävs",
14
+ "You must upload a FINA digital certificate before you can fiscalize invoices":
15
+ "Du måste ladda upp ett digitalt FINA-certifikat innan du kan fiskalisera fakturor",
16
+ "Business Premise Required": "Affärslokal krävs",
17
+ "Register at least one business premise before fiscalizing invoices":
18
+ "Registrera minst en affärslokal innan du fiskaliserar fakturor",
19
+ "Numbering Sequence": "Numreringssekvens",
20
+ "Choose how invoice numbers are sequenced": "Välj hur fakturanummer ska sekvenseras",
21
+ "Per Device (N)": "Per enhet (N)",
22
+ "Per Premise (P)": "Per lokal (P)",
23
+ Recommended: "Rekommenderad",
24
+ "One sequence per business premise. Simpler to manage.": "En sekvens per affärslokal. Enklare att hantera.",
25
+ "Separate sequence per electronic device. For multi-device setups.":
26
+ "Separat sekvens per elektronisk enhet. För installationer med flera enheter.",
27
+ "Operator Information": "Operatörsinformation",
28
+ "Configure default operator for API usage": "Konfigurera standardoperatör för API-användning",
29
+ "Operator OIB": "Operatörens OIB",
30
+ "OIB of the operator (11 digits)": "Operatörens OIB (11 siffror)",
31
+ "OIB must be exactly 11 digits": "OIB måste bestå av exakt 11 siffror",
32
+ "Operator OIB set": "Operatörens OIB har angetts",
33
+ "Set operator OIB in General Settings first": "Ange först operatörens OIB under Allmänna inställningar",
34
+ "Operator Label": "Operatörsetikett",
35
+ "e.g. Cashier 1": "t.ex. Kassör 1",
36
+ "PDV System": "PDV-system",
37
+ "Entity is registered in the Croatian PDV (VAT) system": "Enheten är registrerad i det kroatiska PDV-systemet (moms)",
38
+ "Digital Certificate": "Digitalt certifikat",
39
+ "Upload your FINA digital certificate": "Ladda upp ditt digitala FINA-certifikat",
40
+ "Your certificate is required to digitally sign all fiscalized invoices. The certificate must be obtained from FINA (Financial Agency of Croatia).":
41
+ "Ditt certifikat krävs för att digitalt signera alla fiskaliserade fakturor. Certifikatet måste erhållas från FINA (Kroatiens finansiella myndighet).",
42
+ "Invalid file type. Please upload a .p12 or .pfx certificate file.":
43
+ "Ogiltig filtyp. Vänligen ladda upp en .p12- eller .pfx-certifikatfil.",
44
+ "Please select a certificate file and enter the passphrase": "Vänligen välj en certifikatfil och ange lösenordet",
45
+ "Invalid certificate passphrase. Please check your passphrase and try again.":
46
+ "Ogiltig lösenfras för certifikatet. Kontrollera lösenfrasen och försök igen.",
47
+ "Certificate OIB does not match entity OIB. Please upload a certificate for this entity.":
48
+ "Certifikatets OIB matchar inte enhetens OIB. Ladda upp ett certifikat för den här enheten.",
49
+ Valid: "Giltig",
50
+ "Expiring Soon": "Löper ut snart",
51
+ Expired: "Utgånget",
52
+ Missing: "Saknas",
53
+ Expires: "Löper ut",
54
+ Issuer: "Utfärdare",
55
+ Subject: "Ämne",
56
+ "Change Certificate": "Byt certifikat",
57
+ "P12/PFX Certificate File": "P12/PFX-certifikatfil",
58
+ Selected: "Vald",
59
+ "Certificate Passphrase": "Certifikatlösenord",
60
+ "Enter certificate passphrase": "Ange certifikatlösenord",
61
+ "Upload Certificate": "Ladda upp certifikat",
62
+ "Upload New Certificate": "Ladda upp nytt certifikat",
63
+ "Manage your business premises for FINA": "Hantera dina affärslokaler för FINA",
64
+ "Register your premises on ePorezna first, then add the premise ID here.":
65
+ "Registrera först din lokal i ePorezna och lägg sedan till lokal-ID:t här.",
66
+ "Add Premise": "Lägg till lokal",
67
+ "No premises registered yet": "Inga lokaler registrerade ännu",
68
+ Active: "Aktiv",
69
+ Inactive: "Inaktiv",
70
+ Closed: "Stängd",
71
+ "Delete Premise": "Ta bort lokal",
72
+ "Delete Device": "Ta bort enhet",
73
+ "Are you sure you want to delete this premise? This will also deactivate all its devices.":
74
+ "Är du säker på att du vill ta bort den här lokalen? Det kommer också att avaktivera alla dess enheter.",
75
+ "Are you sure you want to delete this device?": "Är du säker på att du vill ta bort den här enheten?",
76
+ Other: "Övrigt",
77
+ Device: "Enhet",
78
+ Devices: "Enheter",
79
+ "No devices registered. Add at least one device to fiscalize invoices.":
80
+ "Inga enheter registrerade. Lägg till minst en enhet för att fiskalisera fakturor.",
81
+ Created: "Skapad",
82
+ "Add Electronic Device": "Lägg till elektronisk enhet",
83
+ "Register an electronic device for this business premise.":
84
+ "Registrera en elektronisk enhet för den här affärslokalen.",
85
+ "Device ID": "Device ID",
86
+ "Enter a numeric device ID (e.g., 1, 2, 3)": "Ange ett numeriskt enhets-ID, till exempel 1, 2 eller 3",
87
+ Cancel: "Avbryt",
88
+ "Register Device": "Registrera enhet",
89
+ "Registering...": "Registrerar...",
90
+ "Add Business Premise": "Lägg till affärslokal",
91
+ "Enter the premise ID that you registered on ePorezna. After adding, you'll need to register at least one electronic device.":
92
+ "Ange lokal-ID:t som du registrerade i ePorezna. Efter att du har lagt till det behöver du registrera minst en elektronisk enhet.",
93
+ "Premise ID": "Lokal-ID",
94
+ "Unique identifier for this premise (e.g., PP1, OFFICE1)":
95
+ "Unik identifierare för den här lokalen, till exempel PP1 eller OFFICE1",
96
+ "Adding...": "Adding...",
97
+ "Save Settings": "Spara inställningar",
98
+ "Saving...": "Sparar...",
99
+ "Loading...": "Laddar...",
100
+ "Enable Fiscalization": "Aktivera fiskalisering",
101
+ "Turn on FINA fiscalization for invoices": "Aktivera FINA-fiskalisering för fakturor",
102
+ "Setup Checklist": "Checklista för konfiguration",
103
+ "Valid certificate uploaded": "Giltigt certifikat uppladdat",
104
+ "At least one business premise registered": "Minst en affärslokal är registrerad",
105
+ "At least one electronic device registered": "Minst en elektronisk enhet är registrerad",
106
+ "Cannot Enable Fiscalization": "Det går inte att aktivera fiskalisering",
107
+ "Complete all prerequisites above before enabling FINA fiscalization.":
108
+ "Uppfyll alla ovanstående krav innan du aktiverar FINA-fiskalisering.",
109
+ "Once enabled, all new B2C invoices will be automatically fiscalized with FINA":
110
+ "När funktionen är aktiverad fiskaliseras alla nya B2C-fakturor automatiskt med FINA",
111
+ "Warning: Disabling fiscalization will prevent new invoices from being fiscalized.":
112
+ "Varning: Om du inaktiverar fiskalisering kommer nya fakturor inte att fiskaliseras.",
113
+ "Register at least one business premise first": "Registrera först minst en affärslokal",
114
+ "Register at least one electronic device first": "Registrera först minst en elektronisk enhet",
115
+ "Activate FINA fiscalization for your invoices": "Aktivera FINA-fiskalisering för dina fakturor",
116
+ "You must upload a digital certificate before you can register business premises":
117
+ "Du måste ladda upp ett digitalt certifikat innan du kan registrera affärslokaler",
118
+ "FINA Fiscalization": "FINA-fiskalisering",
119
+ "Croatian tax authority fiscalization details": "Fiskalisering hos den kroatiska skattemyndigheten",
120
+ Fiscalized: "Fiskaliserad",
121
+ Pending: "Väntande",
122
+ Failed: "Misslyckad",
123
+ JIR: "JIR",
124
+ ZKI: "ZKI",
125
+ "Invoice Number": "Fakturanummer",
126
+ "QR Code": "QR-kod",
127
+ "Issuer OIB": "Utfärdarens OIB",
128
+ Operator: "Operatör",
129
+ Verify: "Verifiera",
130
+ "Fiscalized at": "Fiskaliserad den",
131
+ "Business Premise": "Affärslokal",
132
+ "Electronic Device": "Elektronisk enhet",
133
+ "Fiscalization Error": "Fiskaliseringsfel",
134
+ "Your Operator Settings": "Dina operatörsinställningar",
135
+ "Your personal operator info for FINA invoices": "Din personliga operatörsinformation för FINA-fakturor",
136
+ "Save Operator Settings": "Spara operatörsinställningar",
137
+ "Advanced Settings": "Avancerade inställningar",
138
+ "API Default Operator": "API-standardoperatör",
139
+ "Default operator settings for API key usage (when no user context)":
140
+ "Standardinställningar för operatör vid API-nyckelanvändning (när det inte finns någon användarkontext)",
141
+ "OIB for API key usage (optional)": "OIB för användning med API-nyckel (valfritt)",
142
+ "Operator label for API key usage (optional)": "Operatörsetikett för API-nyckelanvändning (valfritt)",
143
+ City: "Stad",
144
+ "Entity Information": "Enhetsinformation",
145
+ "Required company details for FINA fiscalization": "Obligatoriska företagsuppgifter för FINA-fiskalisering",
146
+ "Entity OIB": "Enhetens OIB",
147
+ "Your company's OIB (must match FINA certificate)": "Ditt företags OIB måste matcha FINA-certifikatet",
148
+ "Entity OIB is required for FINA fiscalization": "Enhetens OIB krävs för FINA-fiskalisering",
149
+ "Set entity OIB in General Settings first": "Ange först enhetens OIB under Allmänna inställningar",
150
+ "Set operator OIB and label in General Settings first":
151
+ "Ange först operatörens OIB och etikett under Allmänna inställningar",
152
+ "Complete General Settings first": "Slutför Allmänna inställningar först",
153
+ "Operator OIB and label are required for FINA fiscalization":
154
+ "Operatörens OIB och etikett krävs för FINA-fiskalisering",
155
+ Address: "Adress",
156
+ "Post Code": "Postnummer",
157
+ "Save Entity Info": "Spara enhetsinformation",
158
+ "FINA Operator Settings Required": "FINA-operatörsinställningar krävs",
159
+ "Your FINA operator information is needed to fiscalize this document. Please enter your operator details.":
160
+ "Din FINA-operatörsinformation krävs för att fiskalisera det här dokumentet. Ange dina operatörsuppgifter.",
161
+ "Save & Retry": "Spara och försök igen",
162
+ "Unified document numbering": "Enhetlig dokumentnumrering",
163
+ "Use the same numbering sequence for all documents, including non-fiscalized ones":
164
+ "Använd samma nummersekvens för alla dokument, även de som inte fiskaliseras",
165
+ } as const;
@@ -9,7 +9,7 @@ import {
9
9
  DialogTitle,
10
10
  } from "@/ui/components/ui/dialog";
11
11
  import { Input } from "@/ui/components/ui/input";
12
- import { useUpdateUserFursSettings } from "./furs-settings.hooks";
12
+ import { useUpdateFursSettings, useUpdateUserFursSettings } from "./furs-settings.hooks";
13
13
 
14
14
  interface FursOperatorRequiredDialogProps {
15
15
  open: boolean;
@@ -17,6 +17,7 @@ interface FursOperatorRequiredDialogProps {
17
17
  entityId: string;
18
18
  onSaved: () => void;
19
19
  t: (key: string) => string;
20
+ saveScope?: "user" | "entity";
20
21
  }
21
22
 
22
23
  export const FursOperatorRequiredDialog: FC<FursOperatorRequiredDialogProps> = ({
@@ -25,28 +26,52 @@ export const FursOperatorRequiredDialog: FC<FursOperatorRequiredDialogProps> = (
25
26
  entityId,
26
27
  onSaved,
27
28
  t,
29
+ saveScope = "user",
28
30
  }) => {
29
31
  const [operatorTaxNumber, setOperatorTaxNumber] = useState("");
30
32
  const [operatorLabel, setOperatorLabel] = useState("");
31
33
 
32
- const { mutate: updateUserSettings, isPending } = useUpdateUserFursSettings({
34
+ const handleSuccess = () => {
35
+ setOperatorTaxNumber("");
36
+ setOperatorLabel("");
37
+ onSaved();
38
+ };
39
+
40
+ const { mutate: updateUserSettings, isPending: isUserPending } = useUpdateUserFursSettings({
41
+ onSuccess: () => {
42
+ handleSuccess();
43
+ },
44
+ });
45
+
46
+ const { mutate: updateEntitySettings, isPending: isEntityPending } = useUpdateFursSettings({
33
47
  onSuccess: () => {
34
- setOperatorTaxNumber("");
35
- setOperatorLabel("");
36
- onSaved();
48
+ handleSuccess();
37
49
  },
38
50
  });
39
51
 
52
+ const isPending = isUserPending || isEntityPending;
53
+
40
54
  const handleSubmit = (e: React.FormEvent) => {
41
55
  e.preventDefault();
42
56
  e.stopPropagation();
43
57
  if (!operatorTaxNumber || !operatorLabel) return;
58
+
59
+ const payload = {
60
+ operator_tax_number: operatorTaxNumber,
61
+ operator_label: operatorLabel,
62
+ };
63
+
64
+ if (saveScope === "entity") {
65
+ updateEntitySettings({
66
+ entityId,
67
+ data: payload,
68
+ });
69
+ return;
70
+ }
71
+
44
72
  updateUserSettings({
45
73
  entityId,
46
- data: {
47
- operator_tax_number: operatorTaxNumber,
48
- operator_label: operatorLabel,
49
- },
74
+ data: payload,
50
75
  });
51
76
  };
52
77
 
@@ -15,22 +15,30 @@ import { type FiscalizationStepConfig, useFiscalizationStepFlow } from "../share
15
15
  import { FiscalizationStepTabs } from "../shared/fiscalization-step-tabs";
16
16
  import { useFursPremises, useFursSettings, useUpdateFursSettings, useUserFursSettings } from "./furs-settings.hooks";
17
17
  // Import locale files
18
+ import bg from "./locales/bg";
19
+ import cs from "./locales/cs";
18
20
  import de from "./locales/de";
19
21
  import en from "./locales/en";
20
22
  import es from "./locales/es";
23
+ import et from "./locales/et";
24
+ import fi from "./locales/fi";
21
25
  import fr from "./locales/fr";
22
26
  import hr from "./locales/hr";
27
+ import is from "./locales/is";
23
28
  import it from "./locales/it";
29
+ import nb from "./locales/nb";
24
30
  import nl from "./locales/nl";
25
31
  import pl from "./locales/pl";
26
32
  import pt from "./locales/pt";
33
+ import sk from "./locales/sk";
27
34
  import sl from "./locales/sl";
35
+ import sv from "./locales/sv";
28
36
  import { CertificateSettingsSection } from "./sections/certificate-settings-section";
29
37
  import { EnableFiscalizationSection } from "./sections/enable-fiscalization-section";
30
38
  import { GeneralSettingsSection } from "./sections/general-settings-section";
31
39
  import { PremisesManagementSection } from "./sections/premises-management-section";
32
40
 
33
- const translations = { sl, de, en, it, fr, es, pt, nl, pl, hr } as const;
41
+ const translations = { bg, cs, de, en, es, et, fi, fr, hr, is, it, nb, nl, pl, pt, sk, sl, sv } as const;
34
42
 
35
43
  /**
36
44
  * FURS Settings Form Schema
@@ -93,6 +101,7 @@ export const FursSettingsForm: FC<FursSettingsFormProps> = ({
93
101
  t: translateFn,
94
102
  namespace,
95
103
  locale,
104
+ translationLocale,
96
105
  initialStep = "settings",
97
106
  onStepChange,
98
107
  renderSection,
@@ -103,6 +112,7 @@ export const FursSettingsForm: FC<FursSettingsFormProps> = ({
103
112
  t: translateFn,
104
113
  namespace,
105
114
  locale,
115
+ translationLocale,
106
116
  translations,
107
117
  });
108
118
 
@@ -126,6 +136,7 @@ export const FursSettingsForm: FC<FursSettingsFormProps> = ({
126
136
  resolver: zodResolver(fursSettingsFormSchema),
127
137
  values: {
128
138
  enabled: fursSettings?.enabled || false,
139
+ default_skip_fiscalization: fursSettings?.default_skip_fiscalization || false,
129
140
  numbering_strategy: fursSettings?.numbering_strategy || "C",
130
141
  operator_tax_number: fursSettings?.operator_tax_number || "",
131
142
  operator_label: fursSettings?.operator_label || "",
@@ -361,6 +372,7 @@ export const FursSettingsForm: FC<FursSettingsFormProps> = ({
361
372
 
362
373
  {activeStep === "enable" && (
363
374
  <EnableFiscalizationSection
375
+ entityId={entity.id}
364
376
  form={form}
365
377
  fursSettings={fursSettings}
366
378
  premises={(premises || []) as any}
@@ -13,6 +13,7 @@ import type {
13
13
  UploadFursCertificate200,
14
14
  User,
15
15
  } from "@spaceinvoices/js-sdk";
16
+ import { downloadBlob, fursCertificate, fursDevices, fursPremises, fursSettings, users } from "@spaceinvoices/js-sdk";
16
17
  import {
17
18
  type UseMutationOptions,
18
19
  type UseQueryOptions,
@@ -20,8 +21,8 @@ import {
20
21
  useQuery,
21
22
  useQueryClient,
22
23
  } from "@tanstack/react-query";
23
- import { useMemo } from "react";
24
- import { useSDK } from "../../../providers/sdk-provider";
24
+ import { useMemo, useState } from "react";
25
+ import { toast } from "sonner";
25
26
 
26
27
  /**
27
28
  * Query Keys
@@ -34,6 +35,78 @@ export const fursQueryKeys = {
34
35
  currentUser: () => ["user", "me"] as const,
35
36
  };
36
37
 
38
+ type TranslationFn = (key: string) => string;
39
+ type InternalActFormat = "pdf" | "docx";
40
+ type FursInternalActApi = {
41
+ generateFursInternalActPdf?: (options?: { entity_id?: string; signal?: AbortSignal }) => Promise<Blob>;
42
+ generateFursInternalActDocx?: (options?: { entity_id?: string; signal?: AbortSignal }) => Promise<Blob>;
43
+ downloadPdf?: (options?: { entity_id?: string; signal?: AbortSignal }) => Promise<Blob>;
44
+ downloadDocx?: (options?: { entity_id?: string; signal?: AbortSignal }) => Promise<Blob>;
45
+ };
46
+
47
+ function getInternalActDownloadFilename(format: InternalActFormat) {
48
+ const date = new Date().toISOString().slice(0, 10);
49
+ return `furs-interni-akt-${date}.${format}`;
50
+ }
51
+
52
+ function getInternalActDownloadSuccessKey(format: InternalActFormat) {
53
+ return format === "pdf" ? "Internal act PDF downloaded" : "Internal act DOCX downloaded";
54
+ }
55
+
56
+ function getInternalActDownloadPendingKey(format: InternalActFormat) {
57
+ return format === "pdf" ? "Preparing PDF..." : "Preparing DOCX...";
58
+ }
59
+
60
+ function getInternalActDownloadErrorDescription(error: unknown, t: TranslationFn) {
61
+ const apiMessage = (error as any)?.data?.message || (error as Error | undefined)?.message;
62
+
63
+ if (typeof apiMessage === "string") {
64
+ const normalizedMessage = apiMessage.toLowerCase();
65
+
66
+ if (normalizedMessage.includes("certificate")) {
67
+ return t("Upload a valid certificate to download the internal act");
68
+ }
69
+
70
+ if (normalizedMessage.includes("premise")) {
71
+ return t("Register at least one active business premise to download the internal act");
72
+ }
73
+
74
+ if (normalizedMessage.includes("device")) {
75
+ return t("Register at least one electronic device to download the internal act");
76
+ }
77
+
78
+ return apiMessage;
79
+ }
80
+
81
+ return t("Internal act download unavailable");
82
+ }
83
+
84
+ function getInternalActDownloader(api: FursInternalActApi, format: InternalActFormat) {
85
+ if (format === "pdf") {
86
+ return api.generateFursInternalActPdf ?? api.downloadPdf;
87
+ }
88
+
89
+ return api.generateFursInternalActDocx ?? api.downloadDocx;
90
+ }
91
+
92
+ async function loadFursInternalActApi(): Promise<FursInternalActApi> {
93
+ try {
94
+ const module = (await import("../../../../../js-sdk/src/sdk/furs-internal-act.ts")) as unknown as {
95
+ fursInternalAct?: FursInternalActApi;
96
+ };
97
+
98
+ if (!module.fursInternalAct) {
99
+ throw new Error("FURS internal act SDK module is not available");
100
+ }
101
+
102
+ return module.fursInternalAct;
103
+ } catch (error) {
104
+ throw new Error("FURS internal act download is not available yet", {
105
+ cause: error,
106
+ });
107
+ }
108
+ }
109
+
37
110
  /**
38
111
  * Hook: Get FURS settings
39
112
  */
@@ -41,16 +114,13 @@ export function useFursSettings(
41
114
  entityId: string,
42
115
  options?: Omit<UseQueryOptions<GetFursSettings200>, "queryKey" | "queryFn">,
43
116
  ) {
44
- const { sdk } = useSDK();
45
-
46
117
  return useQuery({
47
118
  queryKey: fursQueryKeys.settings(entityId),
48
119
  queryFn: async () => {
49
- if (!sdk) throw new Error("SDK not initialized");
50
120
  if (!entityId) throw new Error("Entity ID required");
51
- return sdk.fursSettings.list({ entity_id: entityId });
121
+ return fursSettings.list({ entity_id: entityId });
52
122
  },
53
- enabled: !!sdk && !!entityId,
123
+ enabled: !!entityId,
54
124
  staleTime: 0, // Always fetch fresh data
55
125
  ...options,
56
126
  });
@@ -62,14 +132,12 @@ export function useFursSettings(
62
132
  export function useUpdateFursSettings(
63
133
  options?: UseMutationOptions<GetFursSettings200, Error, { entityId: string; data: UpdateFursSettingsBody }>,
64
134
  ) {
65
- const { sdk } = useSDK();
66
135
  const queryClient = useQueryClient();
67
136
 
68
137
  return useMutation({
69
138
  ...options,
70
139
  mutationFn: async ({ entityId, data }) => {
71
- if (!sdk) throw new Error("SDK not initialized");
72
- return sdk.fursSettings.update(data, { entity_id: entityId });
140
+ return fursSettings.update(data, { entity_id: entityId });
73
141
  },
74
142
  onSuccess: (data, variables, context) => {
75
143
  // Invalidate settings query
@@ -90,14 +158,12 @@ export function useUpdateFursSettings(
90
158
  export function useUploadFursCertificate(
91
159
  options?: UseMutationOptions<UploadFursCertificate200, Error, { entityId: string; file: Blob; passphrase: string }>,
92
160
  ) {
93
- const { sdk } = useSDK();
94
161
  const queryClient = useQueryClient();
95
162
 
96
163
  return useMutation({
97
164
  ...options,
98
165
  mutationFn: async ({ entityId, file, passphrase }) => {
99
- if (!sdk) throw new Error("SDK not initialized");
100
- return sdk.fursCertificate.uploadFursCertificate({ file, passphrase }, { entity_id: entityId });
166
+ return fursCertificate.uploadFursCertificate({ file, passphrase }, { entity_id: entityId });
101
167
  },
102
168
  onSuccess: (data, variables, context) => {
103
169
  // Invalidate settings query to refresh certificate status
@@ -119,15 +185,10 @@ export function useFursPremises(
119
185
  entityId: string,
120
186
  options?: Omit<UseQueryOptions<FursBusinessPremise[]>, "queryKey" | "queryFn">,
121
187
  ) {
122
- const { sdk } = useSDK();
123
-
124
188
  return useQuery({
125
189
  queryKey: fursQueryKeys.premises(entityId),
126
- queryFn: async () => {
127
- if (!sdk) throw new Error("SDK not initialized");
128
- return sdk.fursPremises.listFursBusinessPremises({ entity_id: entityId });
129
- },
130
- enabled: !!sdk,
190
+ queryFn: async () => fursPremises.listFursBusinessPremises({ entity_id: entityId }),
191
+ enabled: !!entityId,
131
192
  staleTime: 0, // Always fetch fresh data to reflect device changes
132
193
  ...options,
133
194
  });
@@ -139,14 +200,12 @@ export function useFursPremises(
139
200
  export function useRegisterRealEstatePremise(
140
201
  options?: UseMutationOptions<any, Error, { entityId: string; data: RegisterFursRealEstatePremiseBody }>,
141
202
  ) {
142
- const { sdk } = useSDK();
143
203
  const queryClient = useQueryClient();
144
204
 
145
205
  return useMutation({
146
206
  ...options,
147
207
  mutationFn: async ({ entityId, data }) => {
148
- if (!sdk) throw new Error("SDK not initialized");
149
- return sdk.fursPremises.registerFursRealEstatePremise(data, { entity_id: entityId });
208
+ return fursPremises.registerFursRealEstatePremise(data, { entity_id: entityId });
150
209
  },
151
210
  onSuccess: (data, variables, context) => {
152
211
  // Invalidate premises list
@@ -167,14 +226,12 @@ export function useRegisterRealEstatePremise(
167
226
  export function useRegisterMovablePremise(
168
227
  options?: UseMutationOptions<any, Error, { entityId: string; data: RegisterFursMovablePremiseBody }>,
169
228
  ) {
170
- const { sdk } = useSDK();
171
229
  const queryClient = useQueryClient();
172
230
 
173
231
  return useMutation({
174
232
  ...options,
175
233
  mutationFn: async ({ entityId, data }) => {
176
- if (!sdk) throw new Error("SDK not initialized");
177
- return sdk.fursPremises.registerFursMovablePremise(data, { entity_id: entityId });
234
+ return fursPremises.registerFursMovablePremise(data, { entity_id: entityId });
178
235
  },
179
236
  onSuccess: (data, variables, context) => {
180
237
  // Invalidate premises list
@@ -193,14 +250,12 @@ export function useRegisterMovablePremise(
193
250
  * Hook: Close premise
194
251
  */
195
252
  export function useClosePremise(options?: UseMutationOptions<any, Error, { entityId: string; premiseId: string }>) {
196
- const { sdk } = useSDK();
197
253
  const queryClient = useQueryClient();
198
254
 
199
255
  return useMutation({
200
256
  ...options,
201
257
  mutationFn: async ({ entityId, premiseId }) => {
202
- if (!sdk) throw new Error("SDK not initialized");
203
- return sdk.fursPremises.closeFursBusinessPremise(premiseId, { entity_id: entityId });
258
+ return fursPremises.closeFursBusinessPremise(premiseId, { entity_id: entityId });
204
259
  },
205
260
  onSuccess: (data, variables, context) => {
206
261
  // Invalidate premises list
@@ -221,14 +276,12 @@ export function useClosePremise(options?: UseMutationOptions<any, Error, { entit
221
276
  export function useRegisterElectronicDevice(
222
277
  options?: UseMutationOptions<any, Error, { entityId: string; premiseId: string; deviceName: string }>,
223
278
  ) {
224
- const { sdk } = useSDK();
225
279
  const queryClient = useQueryClient();
226
280
 
227
281
  return useMutation({
228
282
  ...options,
229
283
  mutationFn: async ({ entityId, premiseId, deviceName }) => {
230
- if (!sdk) throw new Error("SDK not initialized");
231
- return sdk.fursDevices.registerFursElectronicDevice(premiseId, { name: deviceName }, { entity_id: entityId });
284
+ return fursDevices.registerFursElectronicDevice(premiseId, { name: deviceName }, { entity_id: entityId });
232
285
  },
233
286
  onSuccess: (data, variables, context) => {
234
287
  // Invalidate premises list to refresh devices
@@ -259,15 +312,10 @@ export interface UserFursSettings {
259
312
  * Hook: Get current user
260
313
  */
261
314
  export function useCurrentUser(options?: Omit<UseQueryOptions<User>, "queryKey" | "queryFn">) {
262
- const { sdk } = useSDK();
263
-
264
315
  return useQuery({
265
316
  queryKey: fursQueryKeys.currentUser(),
266
- queryFn: async () => {
267
- if (!sdk) throw new Error("SDK not initialized");
268
- return sdk.users.getMe();
269
- },
270
- enabled: !!sdk,
317
+ queryFn: async () => users.getMe(),
318
+ enabled: options?.enabled,
271
319
  staleTime: 1000 * 60 * 5, // 5 minutes - user data doesn't change often
272
320
  ...options,
273
321
  });
@@ -302,14 +350,12 @@ export function useUserFursSettings(entityId: string, options?: { enabled?: bool
302
350
  export function useUpdateUserFursSettings(
303
351
  options?: UseMutationOptions<User, Error, { entityId: string; data: UpdateUserFursSettingsBody }>,
304
352
  ) {
305
- const { sdk } = useSDK();
306
353
  const queryClient = useQueryClient();
307
354
 
308
355
  return useMutation({
309
356
  ...options,
310
357
  mutationFn: async ({ entityId, data }) => {
311
- if (!sdk) throw new Error("SDK not initialized");
312
- return sdk.users.updateFursSettings(data, { entity_id: entityId });
358
+ return users.updateFursSettings(data, { entity_id: entityId });
313
359
  },
314
360
  onSuccess: (data, variables, context) => {
315
361
  // Invalidate current user query to refresh settings
@@ -323,3 +369,56 @@ export function useUpdateUserFursSettings(
323
369
  },
324
370
  });
325
371
  }
372
+
373
+ /**
374
+ * Hook: Download the FURS internal act in PDF or DOCX format.
375
+ */
376
+ export function useFursInternalActDownloads(t: TranslationFn) {
377
+ const [downloadFormat, setDownloadFormat] = useState<InternalActFormat | null>(null);
378
+
379
+ const downloadInternalAct = async (entityId: string, format: InternalActFormat) => {
380
+ if (!entityId) {
381
+ toast.error(t("Failed to download internal act"), {
382
+ description: t("Internal act download unavailable"),
383
+ });
384
+ return;
385
+ }
386
+
387
+ toast.message(t(getInternalActDownloadPendingKey(format)));
388
+ setDownloadFormat(format);
389
+
390
+ try {
391
+ const fursInternalAct = await loadFursInternalActApi();
392
+ const downloadInternalActFile = getInternalActDownloader(fursInternalAct, format);
393
+
394
+ if (!downloadInternalActFile) {
395
+ throw new Error("FURS internal act download is not available yet");
396
+ }
397
+
398
+ const blob = await downloadInternalActFile({ entity_id: entityId });
399
+
400
+ downloadBlob(blob, getInternalActDownloadFilename(format));
401
+
402
+ toast.success(t(getInternalActDownloadSuccessKey(format)), {
403
+ description: t(
404
+ "The internal act contains your current business premises, devices, and invoice numbering setup.",
405
+ ),
406
+ });
407
+ } catch (error) {
408
+ console.error("Error downloading FURS internal act:", error);
409
+
410
+ toast.error(t("Failed to download internal act"), {
411
+ description: getInternalActDownloadErrorDescription(error, t),
412
+ });
413
+ } finally {
414
+ setDownloadFormat(null);
415
+ }
416
+ };
417
+
418
+ return {
419
+ downloadFursInternalActPdf: async (entityId: string) => downloadInternalAct(entityId, "pdf"),
420
+ downloadFursInternalActDocx: async (entityId: string) => downloadInternalAct(entityId, "docx"),
421
+ isDownloadingPdf: downloadFormat === "pdf",
422
+ isDownloadingDocx: downloadFormat === "docx",
423
+ };
424
+ }