@spaceinvoices/react-ui 0.4.2 → 0.4.4

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 (267) hide show
  1. package/cli/dist/index.js +1 -1
  2. package/package.json +1 -1
  3. package/src/common/autocomplete.tsx +18 -2
  4. package/src/components/advance-invoices/create/create-advance-invoice-form.tsx +0 -1
  5. package/src/components/advance-invoices/create/locales/de.ts +2 -0
  6. package/src/components/advance-invoices/create/locales/es.ts +2 -0
  7. package/src/components/advance-invoices/create/locales/fr.ts +2 -0
  8. package/src/components/advance-invoices/create/locales/hr.ts +1 -0
  9. package/src/components/advance-invoices/create/locales/it.ts +2 -0
  10. package/src/components/advance-invoices/create/locales/nl.ts +2 -0
  11. package/src/components/advance-invoices/create/locales/pl.ts +1 -0
  12. package/src/components/advance-invoices/create/locales/pt.ts +1 -0
  13. package/src/components/advance-invoices/create/locales/sl.ts +1 -0
  14. package/src/components/advance-invoices/create/prepare-advance-invoice-submission.ts +0 -1
  15. package/src/components/advance-invoices/list/list-table.tsx +130 -40
  16. package/src/components/advance-invoices/list/locales/de.ts +6 -0
  17. package/src/components/advance-invoices/list/locales/en.ts +5 -0
  18. package/src/components/advance-invoices/list/locales/es.ts +6 -0
  19. package/src/components/advance-invoices/list/locales/fr.ts +6 -0
  20. package/src/components/advance-invoices/list/locales/hr.ts +6 -0
  21. package/src/components/advance-invoices/list/locales/it.ts +6 -0
  22. package/src/components/advance-invoices/list/locales/nl.ts +6 -0
  23. package/src/components/advance-invoices/list/locales/pl.ts +6 -0
  24. package/src/components/advance-invoices/list/locales/pt.ts +6 -0
  25. package/src/components/advance-invoices/list/locales/sl.ts +6 -0
  26. package/src/components/credit-notes/create/create-credit-note-form.tsx +114 -3
  27. package/src/components/credit-notes/create/locales/de.ts +2 -0
  28. package/src/components/credit-notes/create/locales/es.ts +2 -0
  29. package/src/components/credit-notes/create/locales/fr.ts +2 -0
  30. package/src/components/credit-notes/create/locales/hr.ts +1 -0
  31. package/src/components/credit-notes/create/locales/it.ts +2 -0
  32. package/src/components/credit-notes/create/locales/nl.ts +2 -0
  33. package/src/components/credit-notes/create/locales/pl.ts +1 -0
  34. package/src/components/credit-notes/create/locales/pt.ts +1 -0
  35. package/src/components/credit-notes/create/locales/sl.ts +1 -0
  36. package/src/components/credit-notes/credit-notes.hooks.ts +30 -0
  37. package/src/components/credit-notes/list/list-table.tsx +111 -36
  38. package/src/components/credit-notes/list/locales/de.ts +6 -1
  39. package/src/components/credit-notes/list/locales/en.ts +6 -0
  40. package/src/components/credit-notes/list/locales/es.ts +6 -1
  41. package/src/components/credit-notes/list/locales/fr.ts +6 -1
  42. package/src/components/credit-notes/list/locales/hr.ts +6 -1
  43. package/src/components/credit-notes/list/locales/it.ts +6 -1
  44. package/src/components/credit-notes/list/locales/nl.ts +6 -1
  45. package/src/components/credit-notes/list/locales/pl.ts +6 -1
  46. package/src/components/credit-notes/list/locales/pt.ts +6 -1
  47. package/src/components/credit-notes/list/locales/sl.ts +6 -1
  48. package/src/components/customers/customer-list-table/customer-list-table.tsx +0 -3
  49. package/src/components/customers/customer-list-table/locales/de.ts +1 -0
  50. package/src/components/customers/customer-list-table/locales/es.ts +1 -0
  51. package/src/components/customers/customer-list-table/locales/fr.ts +1 -0
  52. package/src/components/customers/customer-list-table/locales/hr.ts +1 -0
  53. package/src/components/customers/customer-list-table/locales/it.ts +1 -0
  54. package/src/components/customers/customer-list-table/locales/nl.ts +1 -0
  55. package/src/components/customers/customer-list-table/locales/pl.ts +1 -0
  56. package/src/components/customers/customer-list-table/locales/pt.ts +1 -0
  57. package/src/components/customers/customer-list-table/locales/sl.ts +1 -0
  58. package/src/components/dashboard/collection-rate-card/use-collection-rate.ts +2 -2
  59. package/src/components/dashboard/invoice-status-chart/use-invoice-status.ts +3 -3
  60. package/src/components/dashboard/payment-methods-chart/use-payment-methods.ts +1 -1
  61. package/src/components/dashboard/payment-trend-chart/use-payment-trend.ts +1 -1
  62. package/src/components/dashboard/revenue-trend-chart/use-revenue-trend.ts +1 -1
  63. package/src/components/dashboard/shared/use-revenue-data.ts +4 -4
  64. package/src/components/dashboard/shared/use-stats-counts.ts +4 -4
  65. package/src/components/dashboard/shared/use-stats-query.ts +1 -1
  66. package/src/components/dashboard/tax-collected-card/use-tax-collected.ts +2 -2
  67. package/src/components/dashboard/top-customers-chart/use-top-customers.ts +1 -1
  68. package/src/components/delivery-notes/create/create-delivery-note-form.tsx +332 -0
  69. package/src/components/delivery-notes/create/locales/de.ts +50 -0
  70. package/src/components/delivery-notes/create/locales/es.ts +49 -0
  71. package/src/components/delivery-notes/create/locales/fr.ts +50 -0
  72. package/src/components/delivery-notes/create/locales/hr.ts +49 -0
  73. package/src/components/delivery-notes/create/locales/it.ts +49 -0
  74. package/src/components/delivery-notes/create/locales/nl.ts +50 -0
  75. package/src/components/delivery-notes/create/locales/pl.ts +49 -0
  76. package/src/components/delivery-notes/create/locales/pt.ts +50 -0
  77. package/src/components/delivery-notes/create/locales/sl.ts +49 -0
  78. package/src/components/delivery-notes/create/prepare-delivery-note-submission.ts +38 -0
  79. package/src/components/delivery-notes/create/use-delivery-note-customer-form.ts +1 -0
  80. package/src/components/delivery-notes/delivery-notes.hooks.ts +15 -0
  81. package/src/components/delivery-notes/list/index.ts +3 -0
  82. package/src/components/delivery-notes/list/list-row-actions.tsx +122 -0
  83. package/src/components/delivery-notes/list/list-table.tsx +247 -0
  84. package/src/components/delivery-notes/list/locales/de.ts +13 -0
  85. package/src/components/delivery-notes/list/locales/en.ts +13 -0
  86. package/src/components/delivery-notes/list/locales/es.ts +13 -0
  87. package/src/components/delivery-notes/list/locales/fr.ts +13 -0
  88. package/src/components/delivery-notes/list/locales/hr.ts +13 -0
  89. package/src/components/delivery-notes/list/locales/it.ts +13 -0
  90. package/src/components/delivery-notes/list/locales/nl.ts +13 -0
  91. package/src/components/delivery-notes/list/locales/pl.ts +13 -0
  92. package/src/components/delivery-notes/list/locales/pt.ts +13 -0
  93. package/src/components/delivery-notes/list/locales/sl.ts +13 -0
  94. package/src/components/delivery-notes/list/use-delivery-note-download.ts +63 -0
  95. package/src/components/documents/create/document-details-section.tsx +76 -58
  96. package/src/components/documents/create/linked-documents-info.tsx +82 -0
  97. package/src/components/documents/create/live-preview.tsx +38 -11
  98. package/src/components/documents/create/prepare-document-submission.ts +1 -1
  99. package/src/components/documents/documents.hooks.ts +2 -1
  100. package/src/components/documents/shared/document-preview-display.tsx +12 -5
  101. package/src/components/documents/types.ts +12 -3
  102. package/src/components/documents/view/document-activities-list.tsx +65 -47
  103. package/src/components/documents/view/document-details-card.tsx +102 -77
  104. package/src/components/documents/view/document-payments-list.tsx +102 -68
  105. package/src/components/documents/view/document-relations-list.tsx +120 -0
  106. package/src/components/documents/view/document-sidebar.tsx +151 -0
  107. package/src/components/documents/view/index.ts +2 -0
  108. package/src/components/documents/view/locales/de.ts +23 -0
  109. package/src/components/documents/view/locales/es.ts +23 -0
  110. package/src/components/documents/view/locales/fr.ts +23 -0
  111. package/src/components/documents/view/locales/hr.ts +23 -0
  112. package/src/components/documents/view/locales/it.ts +23 -0
  113. package/src/components/documents/view/locales/nl.ts +23 -0
  114. package/src/components/documents/view/locales/pl.ts +23 -0
  115. package/src/components/documents/view/locales/pt.ts +23 -0
  116. package/src/components/documents/view/locales/sl.ts +23 -0
  117. package/src/components/documents/view/use-document-download.ts +8 -5
  118. package/src/components/entities/create-entity-form.tsx +165 -13
  119. package/src/components/entities/entity-settings-form/entity-settings-form.tsx +101 -1
  120. package/src/components/entities/entity-settings-form/locales/de.ts +9 -0
  121. package/src/components/entities/entity-settings-form/locales/es.ts +9 -0
  122. package/src/components/entities/entity-settings-form/locales/fr.ts +9 -0
  123. package/src/components/entities/entity-settings-form/locales/hr.ts +9 -0
  124. package/src/components/entities/entity-settings-form/locales/it.ts +9 -0
  125. package/src/components/entities/entity-settings-form/locales/nl.ts +9 -0
  126. package/src/components/entities/entity-settings-form/locales/pl.ts +9 -0
  127. package/src/components/entities/entity-settings-form/locales/pt.ts +9 -0
  128. package/src/components/entities/entity-settings-form/locales/sl.ts +9 -0
  129. package/src/components/entities/fina-settings-form/fina-settings-form.tsx +83 -71
  130. package/src/components/entities/fina-settings-form/fina-settings.hooks.ts +7 -2
  131. package/src/components/entities/fina-settings-form/locales/de.ts +2 -2
  132. package/src/components/entities/fina-settings-form/locales/en.ts +2 -2
  133. package/src/components/entities/fina-settings-form/locales/es.ts +2 -2
  134. package/src/components/entities/fina-settings-form/locales/fr.ts +2 -2
  135. package/src/components/entities/fina-settings-form/locales/hr.ts +2 -2
  136. package/src/components/entities/fina-settings-form/locales/it.ts +2 -2
  137. package/src/components/entities/fina-settings-form/locales/nl.ts +2 -2
  138. package/src/components/entities/fina-settings-form/locales/pl.ts +2 -2
  139. package/src/components/entities/fina-settings-form/locales/pt.ts +2 -2
  140. package/src/components/entities/fina-settings-form/locales/sl.ts +2 -2
  141. package/src/components/entities/furs-settings-form/furs-settings-form.tsx +10 -1
  142. package/src/components/entities/furs-settings-form/furs-settings.hooks.ts +7 -2
  143. package/src/components/entities/furs-settings-form/locales/en.ts +0 -1
  144. package/src/components/entities/furs-settings-form/sections/general-settings-section.tsx +12 -4
  145. package/src/components/entities/settings/pdf-template-selector/locales/de.ts +3 -1
  146. package/src/components/entities/settings/pdf-template-selector/locales/es.ts +3 -1
  147. package/src/components/entities/settings/pdf-template-selector/locales/fr.ts +4 -1
  148. package/src/components/entities/settings/pdf-template-selector/locales/hr.ts +4 -1
  149. package/src/components/entities/settings/pdf-template-selector/locales/it.ts +3 -1
  150. package/src/components/entities/settings/pdf-template-selector/locales/nl.ts +3 -1
  151. package/src/components/entities/settings/pdf-template-selector/locales/pl.ts +3 -1
  152. package/src/components/entities/settings/pdf-template-selector/locales/pt.ts +3 -1
  153. package/src/components/entities/settings/pdf-template-selector/locales/sl.ts +3 -1
  154. package/src/components/entities/settings/pdf-template-selector/pdf-template-cards.tsx +1 -0
  155. package/src/components/estimates/create/create-estimate-form.tsx +29 -2
  156. package/src/components/estimates/list/list-table.tsx +3 -6
  157. package/src/components/estimates/list/locales/de.ts +1 -0
  158. package/src/components/estimates/list/locales/es.ts +1 -0
  159. package/src/components/estimates/list/locales/fr.ts +1 -0
  160. package/src/components/estimates/list/locales/hr.ts +1 -0
  161. package/src/components/estimates/list/locales/it.ts +1 -0
  162. package/src/components/estimates/list/locales/nl.ts +1 -0
  163. package/src/components/estimates/list/locales/pl.ts +1 -0
  164. package/src/components/estimates/list/locales/pt.ts +1 -0
  165. package/src/components/estimates/list/locales/sl.ts +1 -0
  166. package/src/components/export/document-export-form.tsx +9 -2
  167. package/src/components/export/index.ts +2 -0
  168. package/src/components/export/sales-per-item-export-form.tsx +223 -0
  169. package/src/components/invoices/create/create-invoice-form.tsx +48 -1
  170. package/src/components/invoices/create/locales/de.ts +11 -0
  171. package/src/components/invoices/create/locales/es.ts +11 -0
  172. package/src/components/invoices/create/locales/fr.ts +11 -0
  173. package/src/components/invoices/create/locales/hr.ts +10 -0
  174. package/src/components/invoices/create/locales/it.ts +11 -0
  175. package/src/components/invoices/create/locales/nl.ts +11 -0
  176. package/src/components/invoices/create/locales/pl.ts +10 -0
  177. package/src/components/invoices/create/locales/pt.ts +10 -0
  178. package/src/components/invoices/create/locales/sl.ts +10 -0
  179. package/src/components/invoices/invoices-furs.hooks.ts +27 -9
  180. package/src/components/invoices/list/list-row-actions.tsx +3 -3
  181. package/src/components/invoices/list/list-table.tsx +132 -21
  182. package/src/components/invoices/list/locales/de.ts +6 -0
  183. package/src/components/invoices/list/locales/en.ts +5 -0
  184. package/src/components/invoices/list/locales/es.ts +6 -0
  185. package/src/components/invoices/list/locales/fr.ts +6 -0
  186. package/src/components/invoices/list/locales/hr.ts +6 -0
  187. package/src/components/invoices/list/locales/it.ts +6 -0
  188. package/src/components/invoices/list/locales/nl.ts +6 -0
  189. package/src/components/invoices/list/locales/pl.ts +6 -0
  190. package/src/components/invoices/list/locales/pt.ts +6 -0
  191. package/src/components/invoices/list/locales/sl.ts +6 -0
  192. package/src/components/invoices/view/fiscalization-status-card.tsx +42 -24
  193. package/src/components/items/item-combobox.tsx +5 -3
  194. package/src/components/items/item-list-table/item-list-header.tsx +4 -17
  195. package/src/components/items/item-list-table/item-list-row-actions.tsx +3 -2
  196. package/src/components/items/item-list-table/item-list-row.tsx +3 -2
  197. package/src/components/items/item-list-table/item-list-table.tsx +3 -3
  198. package/src/components/items/item-list-table/locales/de.ts +1 -0
  199. package/src/components/items/item-list-table/locales/es.ts +1 -0
  200. package/src/components/items/item-list-table/locales/fr.ts +1 -0
  201. package/src/components/items/item-list-table/locales/hr.ts +1 -0
  202. package/src/components/items/item-list-table/locales/it.ts +1 -0
  203. package/src/components/items/item-list-table/locales/nl.ts +1 -0
  204. package/src/components/items/item-list-table/locales/pl.ts +1 -0
  205. package/src/components/items/item-list-table/locales/pt.ts +1 -0
  206. package/src/components/items/item-list-table/locales/sl.ts +1 -0
  207. package/src/components/payments/list/list-table.tsx +0 -4
  208. package/src/components/payments/list/locales/de.ts +1 -0
  209. package/src/components/payments/list/locales/es.ts +1 -0
  210. package/src/components/payments/list/locales/fr.ts +1 -0
  211. package/src/components/payments/list/locales/hr.ts +1 -0
  212. package/src/components/payments/list/locales/it.ts +1 -0
  213. package/src/components/payments/list/locales/nl.ts +1 -0
  214. package/src/components/payments/list/locales/pl.ts +1 -0
  215. package/src/components/payments/list/locales/pt.ts +1 -0
  216. package/src/components/payments/list/locales/sl.ts +1 -0
  217. package/src/components/recurring-invoices/list/list-table.tsx +0 -7
  218. package/src/components/recurring-invoices/list/locales/de.ts +1 -0
  219. package/src/components/recurring-invoices/list/locales/es.ts +1 -0
  220. package/src/components/recurring-invoices/list/locales/fr.ts +1 -0
  221. package/src/components/recurring-invoices/list/locales/hr.ts +1 -0
  222. package/src/components/recurring-invoices/list/locales/it.ts +1 -0
  223. package/src/components/recurring-invoices/list/locales/nl.ts +1 -0
  224. package/src/components/recurring-invoices/list/locales/pl.ts +1 -0
  225. package/src/components/recurring-invoices/list/locales/pt.ts +1 -0
  226. package/src/components/recurring-invoices/list/locales/sl.ts +1 -0
  227. package/src/components/request-logs/request-log-list-table.tsx +0 -3
  228. package/src/components/table/README.md +14 -121
  229. package/src/components/table/data-table.tsx +22 -37
  230. package/src/components/table/hooks/use-table-state.ts +3 -27
  231. package/src/components/table/index.ts +0 -2
  232. package/src/components/table/selection-toolbar.tsx +35 -1
  233. package/src/components/table/table-empty-state.tsx +6 -3
  234. package/src/components/table/table-no-results.tsx +10 -5
  235. package/src/components/table/types.ts +0 -5
  236. package/src/components/taxes/tax-list-table/locales/de.ts +1 -0
  237. package/src/components/taxes/tax-list-table/locales/es.ts +1 -0
  238. package/src/components/taxes/tax-list-table/locales/fr.ts +1 -0
  239. package/src/components/taxes/tax-list-table/locales/hr.ts +1 -0
  240. package/src/components/taxes/tax-list-table/locales/it.ts +1 -0
  241. package/src/components/taxes/tax-list-table/locales/nl.ts +1 -0
  242. package/src/components/taxes/tax-list-table/locales/pl.ts +1 -0
  243. package/src/components/taxes/tax-list-table/locales/pt.ts +1 -0
  244. package/src/components/taxes/tax-list-table/locales/sl.ts +1 -0
  245. package/src/components/taxes/tax-list-table/tax-list-header.tsx +3 -14
  246. package/src/components/taxes/tax-list-table/tax-list-table.tsx +3 -3
  247. package/src/components/ui/popover.tsx +3 -1
  248. package/src/components/ui/tooltip.tsx +3 -1
  249. package/src/generated/schemas/deliverynote.ts +134 -0
  250. package/src/generated/schemas/entity.ts +4 -0
  251. package/src/generated/schemas/index.ts +3 -0
  252. package/src/generated/schemas/order.ts +5 -3
  253. package/src/generated/schemas/payment.ts +22 -2
  254. package/src/generated/schemas/renderadvanceinvoicepreview_body.ts +1 -0
  255. package/src/generated/schemas/rendercreditnotepreview_body.ts +1 -0
  256. package/src/generated/schemas/renderdeliverynotepreview_body.ts +185 -0
  257. package/src/generated/schemas/renderestimatepreview_body.ts +1 -0
  258. package/src/generated/schemas/renderinvoicepreview_body.ts +1 -0
  259. package/src/generated/schemas/startpdfexport_body.ts +18 -2
  260. package/src/generated/schemas/userfinasettings.ts +19 -0
  261. package/src/generated/schemas/webhook.ts +12 -0
  262. package/src/hooks/use-duplicate-document.ts +49 -6
  263. package/src/hooks/use-next-document-number.ts +2 -2
  264. package/src/lib/fiscalization.ts +12 -0
  265. package/src/lib/schemas/advance-invoice.ts +0 -1
  266. package/src/providers/sdk-provider.tsx +5 -7
  267. package/src/components/table/sortable-header.tsx +0 -56
@@ -26,7 +26,14 @@ import { prepareDocumentSubmission } from "../../documents/create/prepare-docume
26
26
  import { useDocumentCustomerForm } from "../../documents/create/use-document-customer-form";
27
27
  import type { DocumentTypes } from "../../documents/types";
28
28
  import { useFinaPremises, useFinaSettings } from "../../entities/fina-settings-form/fina-settings.hooks";
29
- import { getLastUsedFinaCombo, setLastUsedFinaCombo, useCreateCreditNote } from "../credit-notes.hooks";
29
+ import { useFursPremises, useFursSettings } from "../../entities/furs-settings-form/furs-settings.hooks";
30
+ import {
31
+ getLastUsedFinaCombo,
32
+ getLastUsedFursCombo,
33
+ setLastUsedFinaCombo,
34
+ setLastUsedFursCombo,
35
+ useCreateCreditNote,
36
+ } from "../credit-notes.hooks";
30
37
  import de from "./locales/de";
31
38
  import es from "./locales/es";
32
39
  import fr from "./locales/fr";
@@ -90,6 +97,23 @@ export default function CreateCreditNoteForm({
90
97
  const { activeEntity } = useEntities();
91
98
  const queryClient = useQueryClient();
92
99
 
100
+ // ============================================================================
101
+ // FURS Settings & Premises
102
+ // ============================================================================
103
+ const { data: fursSettings, isLoading: isFursSettingsLoading } = useFursSettings(entityId);
104
+ const { data: fursPremises, isLoading: isFursPremisesLoading } = useFursPremises(entityId, {
105
+ enabled: fursSettings?.enabled === true,
106
+ });
107
+
108
+ const isFursLoading = isFursSettingsLoading || (fursSettings?.enabled && isFursPremisesLoading);
109
+ const isFursEnabled = fursSettings?.enabled === true;
110
+ const activePremises = useMemo(() => fursPremises?.filter((p) => p.is_active) || [], [fursPremises]);
111
+ const hasFursPremises = activePremises.length > 0;
112
+
113
+ // FURS premise/device selection state
114
+ const [selectedPremiseName, setSelectedPremiseName] = useState<string | undefined>();
115
+ const [selectedDeviceName, setSelectedDeviceName] = useState<string | undefined>();
116
+
93
117
  // ============================================================================
94
118
  // FINA Settings & Premises
95
119
  // ============================================================================
@@ -122,6 +146,57 @@ export default function CreateCreditNoteForm({
122
146
  }, [initialValues?.items]);
123
147
  const priceModesRef = useRef<PriceModesMap>(initialPriceModes);
124
148
 
149
+ // Get active FURS devices for selected premise
150
+ const activeDevices = useMemo(() => {
151
+ if (!selectedPremiseName) return [];
152
+ const premise = activePremises.find((p) => p.business_premise_name === selectedPremiseName);
153
+ return premise?.Devices?.filter((d) => d.is_active) || [];
154
+ }, [activePremises, selectedPremiseName]);
155
+
156
+ // Initialize FURS selection from localStorage or first active combo
157
+ useEffect(() => {
158
+ if (!isFursEnabled || !hasFursPremises || selectedPremiseName) return;
159
+
160
+ const lastUsed = getLastUsedFursCombo(entityId);
161
+ if (lastUsed) {
162
+ const premise = activePremises.find((p) => p.business_premise_name === lastUsed.business_premise_name);
163
+ const device = premise?.Devices?.find(
164
+ (d) => d.electronic_device_name === lastUsed.electronic_device_name && d.is_active,
165
+ );
166
+ if (premise && device) {
167
+ setSelectedPremiseName(lastUsed.business_premise_name);
168
+ setSelectedDeviceName(lastUsed.electronic_device_name);
169
+ return;
170
+ }
171
+ }
172
+
173
+ const firstPremise = activePremises[0];
174
+ const firstDevice = firstPremise?.Devices?.find((d) => d.is_active);
175
+ if (firstPremise && firstDevice) {
176
+ setSelectedPremiseName(firstPremise.business_premise_name);
177
+ setSelectedDeviceName(firstDevice.electronic_device_name);
178
+ }
179
+ }, [isFursEnabled, hasFursPremises, activePremises, entityId, selectedPremiseName]);
180
+
181
+ // When FURS premise changes, select first active device
182
+ useEffect(() => {
183
+ if (!selectedPremiseName) return;
184
+ const premise = activePremises.find((p) => p.business_premise_name === selectedPremiseName);
185
+ const firstDevice = premise?.Devices?.find((d) => d.is_active);
186
+ if (firstDevice && selectedDeviceName !== firstDevice.electronic_device_name) {
187
+ const currentDeviceInPremise = premise?.Devices?.find(
188
+ (d) => d.electronic_device_name === selectedDeviceName && d.is_active,
189
+ );
190
+ if (!currentDeviceInPremise) {
191
+ setSelectedDeviceName(firstDevice.electronic_device_name);
192
+ }
193
+ }
194
+ }, [selectedPremiseName, activePremises, selectedDeviceName]);
195
+
196
+ // FURS selection ready and active checks
197
+ const isFursSelectionReady = !isFursEnabled || !hasFursPremises || (!!selectedPremiseName && !!selectedDeviceName);
198
+ const isFursActive = isFursEnabled && hasFursPremises && selectedPremiseName && selectedDeviceName;
199
+
125
200
  // Get active FINA devices for selected premise
126
201
  const activeFinaDevices = useMemo(() => {
127
202
  if (!selectedFinaPremiseId) return [];
@@ -176,11 +251,14 @@ export default function CreateCreditNoteForm({
176
251
  // Next Credit Note Number Preview
177
252
  // ============================================================================
178
253
  const { data: nextNumberData, isLoading: isNextNumberLoading } = useNextDocumentNumber(entityId, "credit_note", {
179
- enabled: !!entityId && !isFinaLoading && isFinaSelectionReady,
254
+ businessPremiseName: isFursActive ? selectedPremiseName : undefined,
255
+ electronicDeviceName: isFursActive ? selectedDeviceName : undefined,
256
+ enabled: !!entityId && !isFursLoading && isFursSelectionReady && !isFinaLoading && isFinaSelectionReady,
180
257
  });
181
258
 
182
259
  // Overall loading state
183
- const isFormDataLoading = isFinaLoading || !isFinaSelectionReady || isNextNumberLoading;
260
+ const isFormDataLoading =
261
+ isFursLoading || !isFursSelectionReady || isFinaLoading || !isFinaSelectionReady || isNextNumberLoading;
184
262
 
185
263
  // No header action for credit notes - FINA can't be skipped
186
264
 
@@ -245,6 +323,13 @@ export default function CreateCreditNoteForm({
245
323
  const { mutate: createCreditNote, isPending } = useCreateCreditNote({
246
324
  entityId,
247
325
  onSuccess: (data) => {
326
+ // Save FURS combo to localStorage on successful creation
327
+ if (isFursActive && selectedPremiseName && selectedDeviceName) {
328
+ setLastUsedFursCombo(entityId, {
329
+ business_premise_name: selectedPremiseName,
330
+ electronic_device_name: selectedDeviceName,
331
+ });
332
+ }
248
333
  // Save FINA combo to localStorage on successful creation
249
334
  if (isFinaActive && selectedFinaPremiseId && selectedFinaDeviceId) {
250
335
  setLastUsedFinaCombo(entityId, {
@@ -264,6 +349,12 @@ export default function CreateCreditNoteForm({
264
349
  // Shared submit logic for both regular save and save as draft
265
350
  const submitCreditNote = useCallback(
266
351
  (values: CreateCreditNoteFormValues, isDraft: boolean) => {
352
+ // Build FURS options (skip for drafts; no skip toggle for credit notes)
353
+ const fursOptions =
354
+ !isDraft && isFursEnabled && selectedPremiseName && selectedDeviceName
355
+ ? { business_premise_name: selectedPremiseName, electronic_device_name: selectedDeviceName }
356
+ : undefined;
357
+
267
358
  // Build FINA options (skip for drafts; FINA can't be skipped)
268
359
  const finaOptions =
269
360
  !isDraft && isFinaEnabled && selectedFinaPremiseId && selectedFinaDeviceId
@@ -280,6 +371,11 @@ export default function CreateCreditNoteForm({
280
371
  isDraft,
281
372
  });
282
373
 
374
+ // Add FURS data to payload
375
+ if (fursOptions) {
376
+ (payload as any).furs = fursOptions;
377
+ }
378
+
283
379
  // Add FINA data to payload
284
380
  if (finaOptions) {
285
381
  (payload as any).fina = finaOptions;
@@ -289,12 +385,15 @@ export default function CreateCreditNoteForm({
289
385
  },
290
386
  [
291
387
  createCreditNote,
388
+ isFursEnabled,
292
389
  isFinaEnabled,
293
390
  markAsPaid,
294
391
  originalCustomer,
295
392
  paymentTypes,
393
+ selectedDeviceName,
296
394
  selectedFinaDeviceId,
297
395
  selectedFinaPremiseId,
396
+ selectedPremiseName,
298
397
  showCustomerForm,
299
398
  ],
300
399
  );
@@ -449,6 +548,18 @@ export default function CreateCreditNoteForm({
449
548
  control={form.control}
450
549
  documentType={_type}
451
550
  t={t}
551
+ fursInline={
552
+ isFursEnabled && hasFursPremises
553
+ ? {
554
+ premises: activePremises.map((p) => ({ id: p.id, business_premise_name: p.business_premise_name })),
555
+ devices: activeDevices.map((d) => ({ id: d.id, electronic_device_name: d.electronic_device_name })),
556
+ selectedPremise: selectedPremiseName,
557
+ selectedDevice: selectedDeviceName,
558
+ onPremiseChange: setSelectedPremiseName,
559
+ onDeviceChange: setSelectedDeviceName,
560
+ }
561
+ : undefined
562
+ }
452
563
  finaInline={
453
564
  isFinaEnabled && hasFinaPremises
454
565
  ? {
@@ -74,4 +74,6 @@ export default {
74
74
  "Cannot skip fiscalization for cash payments": "Fiskalisierung kann für Barzahlungen nicht übersprungen werden",
75
75
  Premise: "Geschäftsräume",
76
76
  Device: "Gerät",
77
+ "FINA fiscalized invoices always use the current date":
78
+ "FINA-fiskalisierte Dokumente verwenden immer das aktuelle Datum",
77
79
  } as const;
@@ -73,4 +73,6 @@ export default {
73
73
  "Cannot skip fiscalization for cash payments": "No se puede omitir la fiscalizacion para pagos en efectivo",
74
74
  Premise: "Local",
75
75
  Device: "Dispositivo",
76
+ "FINA fiscalized invoices always use the current date":
77
+ "Los documentos fiscalizados con FINA siempre usan la fecha actual",
76
78
  } as const;
@@ -73,4 +73,6 @@ export default {
73
73
  "Cannot skip fiscalization for cash payments": "Impossible d'ignorer la fiscalisation pour les paiements en especes",
74
74
  Premise: "Local",
75
75
  Device: "Appareil",
76
+ "FINA fiscalized invoices always use the current date":
77
+ "Les documents fiscalisés FINA utilisent toujours la date actuelle",
76
78
  } as const;
@@ -72,4 +72,5 @@ export default {
72
72
  "Cannot skip fiscalization for cash payments": "Za gotovinska placanja nije moguce preskociti fiskalizaciju",
73
73
  Premise: "Prostor",
74
74
  Device: "Uredaj",
75
+ "FINA fiscalized invoices always use the current date": "FINA fiskalizirani dokumenti uvijek koriste trenutni datum",
75
76
  } as const;
@@ -74,4 +74,6 @@ export default {
74
74
  "Non e possibile saltare la fiscalizzazione per i pagamenti in contanti",
75
75
  Premise: "Locale",
76
76
  Device: "Dispositivo",
77
+ "FINA fiscalized invoices always use the current date":
78
+ "I documenti fiscalizzati FINA utilizzano sempre la data corrente",
77
79
  } as const;
@@ -73,4 +73,6 @@ export default {
73
73
  "Cannot skip fiscalization for cash payments": "Fiscalisatie kan niet worden overgeslagen voor contante betalingen",
74
74
  Premise: "Bedrijfsruimte",
75
75
  Device: "Apparaat",
76
+ "FINA fiscalized invoices always use the current date":
77
+ "FINA-gefiscaliseerde documenten gebruiken altijd de huidige datum",
76
78
  } as const;
@@ -72,4 +72,5 @@ export default {
72
72
  "Cannot skip fiscalization for cash payments": "Nie mozna pominac fiskalizacji dla platnosci gotowkowych",
73
73
  Premise: "Lokal",
74
74
  Device: "Urządzenie",
75
+ "FINA fiscalized invoices always use the current date": "Dokumenty fiskalizowane FINA zawsze używają bieżącej daty",
75
76
  } as const;
@@ -72,4 +72,5 @@ export default {
72
72
  "Cannot skip fiscalization for cash payments": "Nao e possivel ignorar a fiscalizacao para pagamentos em dinheiro",
73
73
  Premise: "Estabelecimento",
74
74
  Device: "Dispositivo",
75
+ "FINA fiscalized invoices always use the current date": "Os documentos fiscalizados FINA usam sempre a data atual",
75
76
  } as const;
@@ -71,4 +71,5 @@ export default {
71
71
  "Cannot skip fiscalization for cash payments": "Za gotovinska plačila ni mogoče preskočiti davčnega potrjevanja",
72
72
  Premise: "Poslovni prostor",
73
73
  Device: "Naprava",
74
+ "FINA fiscalized invoices always use the current date": "FINA fiskalizirani dokumenti vedno uporabijo trenutni datum",
74
75
  } as const;
@@ -21,6 +21,36 @@ const {
21
21
 
22
22
  export { useCreateCreditNote, useUpdateCreditNote, useDeleteCreditNote };
23
23
 
24
+ // ============================================================================
25
+ // FURS Last-Used Combo (localStorage) for credit notes
26
+ // ============================================================================
27
+
28
+ const FURS_CN_LAST_USED_KEY = "si:furs:cn:last-used";
29
+
30
+ export type FursCombo = {
31
+ business_premise_name: string;
32
+ electronic_device_name: string;
33
+ };
34
+
35
+ export function getLastUsedFursCombo(entityId: string): FursCombo | null {
36
+ if (typeof window === "undefined") return null;
37
+ try {
38
+ const stored = localStorage.getItem(`${FURS_CN_LAST_USED_KEY}:${entityId}`);
39
+ return stored ? JSON.parse(stored) : null;
40
+ } catch {
41
+ return null;
42
+ }
43
+ }
44
+
45
+ export function setLastUsedFursCombo(entityId: string, combo: FursCombo): void {
46
+ if (typeof window === "undefined") return;
47
+ try {
48
+ localStorage.setItem(`${FURS_CN_LAST_USED_KEY}:${entityId}`, JSON.stringify(combo));
49
+ } catch {
50
+ // Ignore localStorage errors
51
+ }
52
+ }
53
+
24
54
  // ============================================================================
25
55
  // FINA Last-Used Combo (localStorage) for credit notes
26
56
  // ============================================================================
@@ -1,4 +1,5 @@
1
1
  import type { CreditNote } from "@spaceinvoices/js-sdk";
2
+ import { AlertTriangle } from "lucide-react";
2
3
  import { useCallback, useMemo, useState } from "react";
3
4
  import { DataTable } from "@/ui/components/table/data-table";
4
5
  import { FormattedDate } from "@/ui/components/table/date-cell";
@@ -13,6 +14,8 @@ import type {
13
14
  } from "@/ui/components/table/types";
14
15
  import { Badge } from "@/ui/components/ui/badge";
15
16
  import { Button } from "@/ui/components/ui/button";
17
+ import { Tooltip, TooltipContent, TooltipTrigger } from "@/ui/components/ui/tooltip";
18
+ import { getFiscalizationFailureType } from "@/ui/lib/fiscalization";
16
19
  import { createTranslation } from "@/ui/lib/translation";
17
20
  import { useSDK } from "@/ui/providers/sdk-provider";
18
21
 
@@ -53,6 +56,9 @@ type CreditNoteListTableProps = {
53
56
  onDownloadSuccess?: (fileName: string) => void;
54
57
  onDownloadError?: (error: string) => void;
55
58
  onExportSelected?: (documentIds: string[]) => void;
59
+ onRetryFiscalization?: (documentIds: string[]) => void;
60
+ fiscalizationFeatures?: ("furs" | "fina")[];
61
+ onCreateNew?: () => void;
56
62
  } & ListTableProps<CreditNote>;
57
63
 
58
64
  export default function CreditNoteListTable({
@@ -67,6 +73,9 @@ export default function CreditNoteListTable({
67
73
  onDownloadSuccess,
68
74
  onDownloadError,
69
75
  onExportSelected,
76
+ onRetryFiscalization,
77
+ fiscalizationFeatures,
78
+ onCreateNew,
70
79
  ...i18nProps
71
80
  }: CreditNoteListTableProps) {
72
81
  const t = createTranslation({
@@ -86,7 +95,6 @@ export default function CreditNoteListTable({
86
95
  limit: params.limit,
87
96
  next_cursor: params.next_cursor,
88
97
  prev_cursor: params.prev_cursor,
89
- order_by: params.order_by,
90
98
  search: params.search,
91
99
  query: params.query,
92
100
  });
@@ -115,15 +123,42 @@ export default function CreditNoteListTable({
115
123
  }, []);
116
124
 
117
125
  const selectionToolbar = useCallback(
118
- (count: number) => (
119
- <SelectionToolbar
120
- selectedCount={count}
121
- onExportPdfs={onExportSelected ? handleExportPdfs : undefined}
122
- onDeselectAll={handleDeselectAll}
123
- t={t}
124
- />
125
- ),
126
- [handleExportPdfs, handleDeselectAll, onExportSelected, t],
126
+ (count: number, data: CreditNote[]) => {
127
+ const selectedDocs = data.filter((d) => selectedIds.has(d.id));
128
+ const failedDocs = selectedDocs.filter((d) => {
129
+ const failureType = getFiscalizationFailureType(d as any);
130
+ return failureType && fiscalizationFeatures?.includes(failureType);
131
+ });
132
+
133
+ const hasRetry = onRetryFiscalization && fiscalizationFeatures?.length;
134
+ const failedCount = failedDocs.length;
135
+ const allFailed = failedCount > 0 && failedCount === selectedDocs.length;
136
+ const someFailed = failedCount > 0 && failedCount < selectedDocs.length;
137
+ const showRetry = hasRetry && failedCount > 0;
138
+
139
+ return (
140
+ <SelectionToolbar
141
+ selectedCount={count}
142
+ onExportPdfs={onExportSelected ? handleExportPdfs : undefined}
143
+ onRetryFiscalization={showRetry ? () => onRetryFiscalization(failedDocs.map((d) => d.id)) : undefined}
144
+ retryFiscalizationDisabled={someFailed && !allFailed}
145
+ retryFiscalizationTooltip={
146
+ someFailed ? t("Some selected documents don't have failed fiscalization") : undefined
147
+ }
148
+ onDeselectAll={handleDeselectAll}
149
+ t={t}
150
+ />
151
+ );
152
+ },
153
+ [
154
+ handleExportPdfs,
155
+ handleDeselectAll,
156
+ onExportSelected,
157
+ onRetryFiscalization,
158
+ fiscalizationFeatures,
159
+ selectedIds,
160
+ t,
161
+ ],
127
162
  );
128
163
 
129
164
  const columns: Column<CreditNote>[] = useMemo(
@@ -131,22 +166,35 @@ export default function CreditNoteListTable({
131
166
  {
132
167
  id: "number",
133
168
  header: t("Number"),
134
- sortable: true,
135
- cell: (creditNote) => (
136
- <div className="flex items-center gap-2">
137
- <Button variant="link" className="cursor-pointer py-0 underline" onClick={() => onRowClick?.(creditNote)}>
138
- {creditNote.number}
139
- </Button>
140
- {(creditNote as any).is_draft && (
141
- <Badge
142
- variant="outline"
143
- className="border-amber-500 bg-amber-50 text-amber-700 dark:bg-amber-950 dark:text-amber-400"
144
- >
145
- {t("Draft")}
146
- </Badge>
147
- )}
148
- </div>
149
- ),
169
+ cell: (creditNote) => {
170
+ const failureType = getFiscalizationFailureType(creditNote as any);
171
+ const showWarning = failureType && fiscalizationFeatures?.includes(failureType);
172
+ return (
173
+ <div className="flex items-center gap-2">
174
+ <Button variant="link" className="cursor-pointer py-0 underline" onClick={() => onRowClick?.(creditNote)}>
175
+ {creditNote.number}
176
+ </Button>
177
+ {(creditNote as any).is_draft && (
178
+ <Badge
179
+ variant="outline"
180
+ className="border-amber-500 bg-amber-50 text-amber-700 dark:bg-amber-950 dark:text-amber-400"
181
+ >
182
+ {t("Draft")}
183
+ </Badge>
184
+ )}
185
+ {showWarning && (
186
+ <Tooltip>
187
+ <TooltipTrigger>
188
+ <AlertTriangle className="size-4 text-orange-500" />
189
+ </TooltipTrigger>
190
+ <TooltipContent>
191
+ {t(failureType === "furs" ? "FURS fiscalization failed" : "FINA fiscalization failed")}
192
+ </TooltipContent>
193
+ </Tooltip>
194
+ )}
195
+ </div>
196
+ );
197
+ },
150
198
  },
151
199
  {
152
200
  id: "customer",
@@ -156,27 +204,24 @@ export default function CreditNoteListTable({
156
204
  {
157
205
  id: "date",
158
206
  header: t("Date"),
159
- sortable: true,
160
207
  cell: (creditNote) => <FormattedDate date={creditNote.date} />,
161
208
  },
162
209
  {
163
210
  id: "total",
164
211
  header: t("Total"),
165
- sortable: true,
166
212
  align: "right",
167
213
  cell: (creditNote) => creditNote.total,
168
214
  },
169
215
  {
170
216
  id: "total_with_tax",
171
217
  header: t("Total with Tax"),
172
- sortable: true,
173
218
  align: "right",
174
219
  cell: (creditNote) => creditNote.total_with_tax,
175
220
  },
176
221
  {
177
222
  id: "status",
178
223
  header: t("Status"),
179
- cell: (creditNote) => <PaymentStatusBadge creditNote={creditNote} t={t} />,
224
+ cell: (creditNote) => <CreditNoteStatusBadge creditNote={creditNote} t={t} />,
180
225
  },
181
226
  {
182
227
  id: "actions",
@@ -207,6 +252,7 @@ export default function CreditNoteListTable({
207
252
  onDownloadSuccess,
208
253
  onDownloadError,
209
254
  i18nProps.locale,
255
+ fiscalizationFeatures,
210
256
  ],
211
257
  );
212
258
 
@@ -217,13 +263,14 @@ export default function CreditNoteListTable({
217
263
  resourceName="credit_note"
218
264
  cacheKey="credit-notes"
219
265
  createNewLink={entityId ? `/app/${entityId}/documents/add/credit_note` : undefined}
266
+ onCreateNew={onCreateNew}
220
267
  onFetch={handleFetch}
221
268
  onChangeParams={onChangeParams}
222
269
  entityId={entityId}
223
270
  filterConfig={filterConfig}
224
271
  t={t}
225
272
  locale={i18nProps.locale}
226
- selectable={!!onExportSelected}
273
+ selectable={!!(onExportSelected || onRetryFiscalization)}
227
274
  selectedIds={selectedIds}
228
275
  onSelectionChange={setSelectedIds}
229
276
  selectionToolbar={selectionToolbar}
@@ -231,13 +278,41 @@ export default function CreditNoteListTable({
231
278
  );
232
279
  }
233
280
 
234
- /** Payment status badge for credit notes */
235
- function PaymentStatusBadge({ creditNote, t }: { creditNote: CreditNote; t: (key: string) => string }) {
281
+ /** Status badge for credit notes */
282
+ function CreditNoteStatusBadge({ creditNote, t }: { creditNote: CreditNote; t: (key: string) => string }) {
283
+ if ((creditNote as any).voided_at) {
284
+ return (
285
+ <Badge variant="outline" className="border-red-500 bg-red-50 text-red-700 dark:bg-red-950 dark:text-red-400">
286
+ {t("Voided")}
287
+ </Badge>
288
+ );
289
+ }
290
+ if ((creditNote as any).is_draft) {
291
+ return null;
292
+ }
236
293
  if (creditNote.paid_in_full) {
237
- return <span className="rounded-full bg-green-100 px-2 py-1 text-green-800 text-xs">{t("Paid")}</span>;
294
+ return (
295
+ <Badge
296
+ variant="outline"
297
+ className="border-green-500 bg-green-50 text-green-700 dark:bg-green-950 dark:text-green-400"
298
+ >
299
+ {t("Paid")}
300
+ </Badge>
301
+ );
238
302
  }
239
303
  if (creditNote.total_paid > 0) {
240
- return <span className="rounded-full bg-yellow-100 px-2 py-1 text-xs text-yellow-800">{t("Partial")}</span>;
304
+ return (
305
+ <Badge
306
+ variant="outline"
307
+ className="border-yellow-500 bg-yellow-50 text-yellow-700 dark:bg-yellow-950 dark:text-yellow-400"
308
+ >
309
+ {t("Partially Paid")}
310
+ </Badge>
311
+ );
241
312
  }
242
- return <span className="rounded-full bg-gray-100 px-2 py-1 text-gray-800 text-xs">{t("Unpaid")}</span>;
313
+ return (
314
+ <Badge variant="outline" className="border-gray-500 bg-gray-50 text-gray-700 dark:bg-gray-800 dark:text-gray-400">
315
+ {t("Unpaid")}
316
+ </Badge>
317
+ );
243
318
  }
@@ -28,7 +28,7 @@ export default {
28
28
  Overdue: "Überfällig",
29
29
  Voided: "Storniert",
30
30
  "Created At": "Erstellt am",
31
- Partial: "Teilweise bezahlt",
31
+ "Partially Paid": "Teilweise bezahlt",
32
32
  Unshare: "Freigabe aufheben",
33
33
  // Empty state translations
34
34
  "Your list is empty": "Ihre Gutschriftenliste ist leer",
@@ -38,7 +38,12 @@ export default {
38
38
  "No results found": "Keine Gutschriften gefunden",
39
39
  "Try adjusting your search criteria": "Versuchen Sie, Ihre Suchkriterien anzupassen",
40
40
  "Clear search": "Suche zurücksetzen",
41
+ "Clear all": "Alles zurücksetzen",
41
42
  selected: "ausgewählt",
42
43
  "Export PDFs": "PDFs exportieren",
43
44
  "Deselect all": "Auswahl aufheben",
45
+ "FURS fiscalization failed": "FURS fiscalization failed",
46
+ "FINA fiscalization failed": "FINA fiscalization failed",
47
+ "Retry Fiscalization": "Retry Fiscalization",
48
+ "Some selected documents don't have failed fiscalization": "Some selected documents don't have failed fiscalization",
44
49
  } as const;
@@ -8,4 +8,10 @@ export default {
8
8
  selected: "selected",
9
9
  "Export PDFs": "Export PDFs",
10
10
  "Deselect all": "Deselect all",
11
+ "Partially Paid": "Partially Paid",
12
+ Voided: "Voided",
13
+ "FURS fiscalization failed": "FURS fiscalization failed",
14
+ "FINA fiscalization failed": "FINA fiscalization failed",
15
+ "Retry Fiscalization": "Retry Fiscalization",
16
+ "Some selected documents don't have failed fiscalization": "Some selected documents don't have failed fiscalization",
11
17
  } as const;
@@ -28,7 +28,7 @@ export default {
28
28
  Overdue: "Vencido",
29
29
  Voided: "Anulado",
30
30
  "Created At": "Creado el",
31
- Partial: "Parcialmente pagado",
31
+ "Partially Paid": "Parcialmente pagado",
32
32
  Unshare: "Dejar de compartir",
33
33
  // Empty state translations
34
34
  "Your list is empty": "Su lista de notas de credito esta vacia",
@@ -38,7 +38,12 @@ export default {
38
38
  "No results found": "No se encontraron notas de credito",
39
39
  "Try adjusting your search criteria": "Intente ajustar sus criterios de busqueda",
40
40
  "Clear search": "Limpiar busqueda",
41
+ "Clear all": "Borrar todo",
41
42
  selected: "seleccionados",
42
43
  "Export PDFs": "Exportar PDFs",
43
44
  "Deselect all": "Deseleccionar todo",
45
+ "FURS fiscalization failed": "FURS fiscalization failed",
46
+ "FINA fiscalization failed": "FINA fiscalization failed",
47
+ "Retry Fiscalization": "Retry Fiscalization",
48
+ "Some selected documents don't have failed fiscalization": "Some selected documents don't have failed fiscalization",
44
49
  } as const;
@@ -28,7 +28,7 @@ export default {
28
28
  Overdue: "En retard",
29
29
  Voided: "Annule",
30
30
  "Created At": "Cree le",
31
- Partial: "Partiellement paye",
31
+ "Partially Paid": "Partiellement payé",
32
32
  Unshare: "Supprimer le partage",
33
33
  // Empty state translations
34
34
  "Your list is empty": "Votre liste d'avoirs est vide",
@@ -38,7 +38,12 @@ export default {
38
38
  "No results found": "Aucun avoir trouve",
39
39
  "Try adjusting your search criteria": "Essayez de modifier vos criteres de recherche",
40
40
  "Clear search": "Effacer la recherche",
41
+ "Clear all": "Tout effacer",
41
42
  selected: "sélectionnés",
42
43
  "Export PDFs": "Exporter les PDF",
43
44
  "Deselect all": "Tout désélectionner",
45
+ "FURS fiscalization failed": "FURS fiscalization failed",
46
+ "FINA fiscalization failed": "FINA fiscalization failed",
47
+ "Retry Fiscalization": "Retry Fiscalization",
48
+ "Some selected documents don't have failed fiscalization": "Some selected documents don't have failed fiscalization",
44
49
  } as const;
@@ -28,7 +28,7 @@ export default {
28
28
  Overdue: "Dospjelo",
29
29
  Voided: "Stornirano",
30
30
  "Created At": "Kreirano",
31
- Partial: "Djelomicno placeno",
31
+ "Partially Paid": "Djelomično plaćeno",
32
32
  Unshare: "Ukloni dijeljenje",
33
33
  // Empty state translations
34
34
  "Your list is empty": "Vasa lista odobrenja je prazna",
@@ -38,7 +38,12 @@ export default {
38
38
  "No results found": "Nije pronadjeno nijedno odobrenje",
39
39
  "Try adjusting your search criteria": "Pokusajte prilagoditi kriterije pretrazivanja",
40
40
  "Clear search": "Ocisti pretragu",
41
+ "Clear all": "Očisti sve",
41
42
  selected: "odabranih",
42
43
  "Export PDFs": "Izvezi PDF-ove",
43
44
  "Deselect all": "Poništi odabir",
45
+ "FURS fiscalization failed": "FURS fiskalizacija nije uspjela",
46
+ "FINA fiscalization failed": "FINA fiskalizacija nije uspjela",
47
+ "Retry Fiscalization": "Ponovi fiskalizaciju",
48
+ "Some selected documents don't have failed fiscalization": "Neki odabrani dokumenti nemaju neuspjelu fiskalizaciju",
44
49
  } as const;
@@ -28,7 +28,7 @@ export default {
28
28
  Overdue: "Scaduto",
29
29
  Voided: "Annullato",
30
30
  "Created At": "Creato il",
31
- Partial: "Parzialmente pagato",
31
+ "Partially Paid": "Parzialmente pagato",
32
32
  Unshare: "Rimuovi condivisione",
33
33
  // Empty state translations
34
34
  "Your list is empty": "La lista delle note di credito e vuota",
@@ -38,7 +38,12 @@ export default {
38
38
  "No results found": "Nessuna nota di credito trovata",
39
39
  "Try adjusting your search criteria": "Prova a modificare i criteri di ricerca",
40
40
  "Clear search": "Cancella ricerca",
41
+ "Clear all": "Cancella tutto",
41
42
  selected: "selezionati",
42
43
  "Export PDFs": "Esporta PDF",
43
44
  "Deselect all": "Deseleziona tutto",
45
+ "FURS fiscalization failed": "FURS fiscalization failed",
46
+ "FINA fiscalization failed": "FINA fiscalization failed",
47
+ "Retry Fiscalization": "Retry Fiscalization",
48
+ "Some selected documents don't have failed fiscalization": "Some selected documents don't have failed fiscalization",
44
49
  } as const;