@spaceinvoices/react-ui 0.4.4 → 0.4.6

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 (178) hide show
  1. package/cli/dist/index.js +1 -1
  2. package/package.json +1 -1
  3. package/src/components/advance-invoices/advance-invoices.hooks.ts +2 -2
  4. package/src/components/advance-invoices/create/create-advance-invoice-form.tsx +151 -45
  5. package/src/components/advance-invoices/create/locales/de.ts +20 -0
  6. package/src/components/advance-invoices/create/locales/es.ts +20 -0
  7. package/src/components/advance-invoices/create/locales/fr.ts +20 -0
  8. package/src/components/advance-invoices/create/locales/hr.ts +20 -0
  9. package/src/components/advance-invoices/create/locales/it.ts +20 -0
  10. package/src/components/advance-invoices/create/locales/nl.ts +20 -0
  11. package/src/components/advance-invoices/create/locales/pl.ts +20 -0
  12. package/src/components/advance-invoices/create/locales/pt.ts +20 -0
  13. package/src/components/advance-invoices/create/locales/sl.ts +20 -0
  14. package/src/components/advance-invoices/create/prepare-advance-invoice-submission.ts +5 -5
  15. package/src/components/advance-invoices/list/list-row-actions.tsx +48 -1
  16. package/src/components/advance-invoices/list/list-table.tsx +21 -1
  17. package/src/components/advance-invoices/list/locales/de.ts +4 -0
  18. package/src/components/advance-invoices/list/locales/en.ts +3 -0
  19. package/src/components/advance-invoices/list/locales/es.ts +4 -0
  20. package/src/components/advance-invoices/list/locales/fr.ts +4 -0
  21. package/src/components/advance-invoices/list/locales/hr.ts +3 -0
  22. package/src/components/advance-invoices/list/locales/it.ts +4 -0
  23. package/src/components/advance-invoices/list/locales/nl.ts +4 -0
  24. package/src/components/advance-invoices/list/locales/pl.ts +3 -0
  25. package/src/components/advance-invoices/list/locales/pt.ts +4 -0
  26. package/src/components/advance-invoices/list/locales/sl.ts +3 -0
  27. package/src/components/credit-notes/create/create-credit-note-form.tsx +161 -42
  28. package/src/components/credit-notes/create/locales/de.ts +21 -0
  29. package/src/components/credit-notes/create/locales/es.ts +21 -0
  30. package/src/components/credit-notes/create/locales/fr.ts +21 -0
  31. package/src/components/credit-notes/create/locales/hr.ts +21 -0
  32. package/src/components/credit-notes/create/locales/it.ts +21 -0
  33. package/src/components/credit-notes/create/locales/nl.ts +21 -0
  34. package/src/components/credit-notes/create/locales/pl.ts +21 -0
  35. package/src/components/credit-notes/create/locales/pt.ts +21 -0
  36. package/src/components/credit-notes/create/locales/sl.ts +22 -1
  37. package/src/components/credit-notes/credit-notes.hooks.ts +2 -2
  38. package/src/components/credit-notes/list/list-row-actions.tsx +44 -1
  39. package/src/components/credit-notes/list/list-table.tsx +16 -2
  40. package/src/components/credit-notes/list/locales/de.ts +2 -0
  41. package/src/components/credit-notes/list/locales/en.ts +2 -0
  42. package/src/components/credit-notes/list/locales/es.ts +2 -0
  43. package/src/components/credit-notes/list/locales/fr.ts +2 -0
  44. package/src/components/credit-notes/list/locales/hr.ts +2 -0
  45. package/src/components/credit-notes/list/locales/it.ts +2 -0
  46. package/src/components/credit-notes/list/locales/nl.ts +2 -0
  47. package/src/components/credit-notes/list/locales/pl.ts +2 -0
  48. package/src/components/credit-notes/list/locales/pt.ts +2 -0
  49. package/src/components/credit-notes/list/locales/sl.ts +2 -0
  50. package/src/components/dashboard/collection-rate-card/use-collection-rate.ts +48 -9
  51. package/src/components/dashboard/revenue-trend-chart/use-revenue-trend.ts +77 -48
  52. package/src/components/dashboard/shared/use-revenue-data.ts +77 -9
  53. package/src/components/delivery-notes/create/create-delivery-note-form.tsx +114 -7
  54. package/src/components/delivery-notes/create/locales/de.ts +21 -0
  55. package/src/components/delivery-notes/create/locales/es.ts +21 -0
  56. package/src/components/delivery-notes/create/locales/fr.ts +21 -0
  57. package/src/components/delivery-notes/create/locales/hr.ts +21 -0
  58. package/src/components/delivery-notes/create/locales/it.ts +21 -0
  59. package/src/components/delivery-notes/create/locales/nl.ts +21 -0
  60. package/src/components/delivery-notes/create/locales/pl.ts +21 -0
  61. package/src/components/delivery-notes/create/locales/pt.ts +21 -0
  62. package/src/components/delivery-notes/create/locales/sl.ts +22 -1
  63. package/src/components/delivery-notes/list/list-table.tsx +17 -8
  64. package/src/components/delivery-notes/list/locales/de.ts +32 -1
  65. package/src/components/delivery-notes/list/locales/en.ts +31 -0
  66. package/src/components/delivery-notes/list/locales/es.ts +32 -1
  67. package/src/components/delivery-notes/list/locales/fr.ts +32 -1
  68. package/src/components/delivery-notes/list/locales/hr.ts +32 -1
  69. package/src/components/delivery-notes/list/locales/it.ts +32 -1
  70. package/src/components/delivery-notes/list/locales/nl.ts +32 -1
  71. package/src/components/delivery-notes/list/locales/pl.ts +32 -1
  72. package/src/components/delivery-notes/list/locales/pt.ts +32 -1
  73. package/src/components/delivery-notes/list/locales/sl.ts +32 -1
  74. package/src/components/documents/create/document-add-item-form.tsx +70 -0
  75. package/src/components/documents/create/document-details-section.tsx +590 -344
  76. package/src/components/documents/create/document-items-section.tsx +21 -4
  77. package/src/components/documents/create/live-preview.tsx +24 -4
  78. package/src/components/documents/create/mark-as-paid-section.tsx +29 -20
  79. package/src/components/documents/create/prepare-document-submission.ts +22 -8
  80. package/src/components/documents/create/smart-code-insert-button.tsx +6 -0
  81. package/src/components/documents/shared/document-preview-display.tsx +3 -4
  82. package/src/components/documents/view/document-actions-bar.tsx +7 -27
  83. package/src/components/documents/view/document-details-card.tsx +32 -9
  84. package/src/components/documents/view/locales/de.ts +3 -0
  85. package/src/components/documents/view/locales/es.ts +3 -0
  86. package/src/components/documents/view/locales/fr.ts +3 -0
  87. package/src/components/documents/view/locales/hr.ts +3 -0
  88. package/src/components/documents/view/locales/it.ts +3 -0
  89. package/src/components/documents/view/locales/nl.ts +3 -0
  90. package/src/components/documents/view/locales/pl.ts +3 -0
  91. package/src/components/documents/view/locales/pt.ts +3 -0
  92. package/src/components/documents/view/locales/sl.ts +4 -1
  93. package/src/components/documents/view/use-document-download.ts +6 -3
  94. package/src/components/entities/create-entity-form.tsx +2 -1
  95. package/src/components/entities/entity-settings-form/email-template-variables-info.tsx +6 -0
  96. package/src/components/entities/entity-settings-form/input-with-preview.tsx +2 -117
  97. package/src/components/entities/entity-settings-form/locales/de.ts +5 -0
  98. package/src/components/entities/entity-settings-form/locales/es.ts +5 -0
  99. package/src/components/entities/entity-settings-form/locales/fr.ts +5 -0
  100. package/src/components/entities/entity-settings-form/locales/hr.ts +5 -0
  101. package/src/components/entities/entity-settings-form/locales/it.ts +5 -0
  102. package/src/components/entities/entity-settings-form/locales/nl.ts +5 -0
  103. package/src/components/entities/entity-settings-form/locales/pl.ts +5 -0
  104. package/src/components/entities/entity-settings-form/locales/pt.ts +5 -0
  105. package/src/components/entities/entity-settings-form/locales/sl.ts +5 -0
  106. package/src/components/entities/fina-settings-form/fina-settings-form.tsx +15 -0
  107. package/src/components/entities/fina-settings-form/fina-settings.hooks.ts +5 -1
  108. package/src/components/entities/fina-settings-form/locales/de.ts +3 -0
  109. package/src/components/entities/fina-settings-form/locales/en.ts +3 -0
  110. package/src/components/entities/fina-settings-form/locales/es.ts +3 -0
  111. package/src/components/entities/fina-settings-form/locales/fr.ts +3 -0
  112. package/src/components/entities/fina-settings-form/locales/hr.ts +3 -0
  113. package/src/components/entities/fina-settings-form/locales/it.ts +3 -0
  114. package/src/components/entities/fina-settings-form/locales/nl.ts +3 -0
  115. package/src/components/entities/fina-settings-form/locales/pl.ts +3 -0
  116. package/src/components/entities/fina-settings-form/locales/pt.ts +3 -0
  117. package/src/components/entities/fina-settings-form/locales/sl.ts +3 -0
  118. package/src/components/entities/fina-settings-form/sections/premises-management-section.tsx +4 -4
  119. package/src/components/entities/fina-settings-form/sections/register-premise-dialog.tsx +3 -3
  120. package/src/components/entities/settings/company-settings-form.tsx +173 -20
  121. package/src/components/entities/settings/defaults-settings-form.tsx +38 -1
  122. package/src/components/entities/settings/tax-rules-settings-form.tsx +1 -2
  123. package/src/components/estimates/create/create-estimate-form.tsx +107 -8
  124. package/src/components/estimates/create/locales/de.ts +21 -0
  125. package/src/components/estimates/create/locales/es.ts +21 -0
  126. package/src/components/estimates/create/locales/fr.ts +21 -0
  127. package/src/components/estimates/create/locales/hr.ts +21 -0
  128. package/src/components/estimates/create/locales/it.ts +21 -0
  129. package/src/components/estimates/create/locales/nl.ts +21 -0
  130. package/src/components/estimates/create/locales/pl.ts +21 -0
  131. package/src/components/estimates/create/locales/pt.ts +21 -0
  132. package/src/components/estimates/create/locales/sl.ts +22 -1
  133. package/src/components/estimates/list/list-table.tsx +11 -2
  134. package/src/components/estimates/list/locales/de.ts +1 -0
  135. package/src/components/estimates/list/locales/en.ts +1 -0
  136. package/src/components/estimates/list/locales/es.ts +1 -0
  137. package/src/components/estimates/list/locales/fr.ts +1 -0
  138. package/src/components/estimates/list/locales/hr.ts +1 -0
  139. package/src/components/estimates/list/locales/it.ts +1 -0
  140. package/src/components/estimates/list/locales/nl.ts +1 -0
  141. package/src/components/estimates/list/locales/pl.ts +1 -0
  142. package/src/components/estimates/list/locales/pt.ts +1 -0
  143. package/src/components/estimates/list/locales/sl.ts +1 -0
  144. package/src/components/export/document-export-form.tsx +46 -12
  145. package/src/components/invoices/create/create-invoice-form.tsx +186 -48
  146. package/src/components/invoices/create/locales/de.ts +28 -0
  147. package/src/components/invoices/create/locales/es.ts +28 -0
  148. package/src/components/invoices/create/locales/fr.ts +28 -0
  149. package/src/components/invoices/create/locales/hr.ts +28 -0
  150. package/src/components/invoices/create/locales/it.ts +28 -0
  151. package/src/components/invoices/create/locales/nl.ts +28 -0
  152. package/src/components/invoices/create/locales/pl.ts +28 -0
  153. package/src/components/invoices/create/locales/pt.ts +28 -0
  154. package/src/components/invoices/create/locales/sl.ts +29 -1
  155. package/src/components/invoices/create/prepare-invoice-submission.ts +5 -5
  156. package/src/components/invoices/invoices.hooks.ts +2 -2
  157. package/src/components/invoices/view/fiscalization-status-card.tsx +10 -8
  158. package/src/components/table/search-input.tsx +17 -0
  159. package/src/components/table/table-pagination.tsx +1 -1
  160. package/src/generated/schemas/advanceinvoice.ts +6 -2
  161. package/src/generated/schemas/creditnote.ts +3 -1
  162. package/src/generated/schemas/deliverynote.ts +3 -1
  163. package/src/generated/schemas/entity.ts +4 -4
  164. package/src/generated/schemas/entityapikey.ts +19 -0
  165. package/src/generated/schemas/estimate.ts +6 -2
  166. package/src/generated/schemas/index.ts +1 -0
  167. package/src/generated/schemas/invoice.ts +4 -1
  168. package/src/generated/schemas/renderadvanceinvoicepreview_body.ts +17 -23
  169. package/src/generated/schemas/rendercreditnotepreview_body.ts +17 -23
  170. package/src/generated/schemas/renderdeliverynotepreview_body.ts +17 -23
  171. package/src/generated/schemas/renderestimatepreview_body.ts +17 -23
  172. package/src/generated/schemas/renderinvoicepreview_body.ts +19 -23
  173. package/src/generated/schemas/startpdfexport_body.ts +14 -2
  174. package/src/generated/schemas/webhook.ts +4 -0
  175. package/src/hooks/use-duplicate-document.ts +16 -9
  176. package/src/hooks/use-vies-check.ts +3 -0
  177. package/src/lib/template-variables.tsx +167 -0
  178. package/src/providers/entities-context.tsx +2 -2
@@ -33,6 +33,9 @@ export default {
33
33
  Note: "Napomena",
34
34
  "Insert variable": "Umetni varijablu",
35
35
  "Add payment instructions, terms, or other notes...": "Dodajte upute za plaćanje, uvjete ili druge napomene...",
36
+ // Signature field
37
+ Signature: "Potpis",
38
+ "Add signature text...": "Dodaj tekst potpisa...",
36
39
  "Payment Terms": "Uvjeti plaćanja",
37
40
  "Add payment terms...": "Dodajte uvjete plaćanja...",
38
41
  Quantity: "Količina",
@@ -54,4 +57,22 @@ export default {
54
57
  "Net price": "Neto cijena",
55
58
  "Gross price (tax included)": "Bruto cijena (s porezom)",
56
59
  "Net price (before tax)": "Neto cijena (prije poreza)",
60
+ // Separator items
61
+ "Add separator": "Dodaj separator",
62
+ "Section header": "Naslov odjeljka",
63
+ "Section title...": "Naslov odjeljka...",
64
+ // Transaction type
65
+ "Transaction type": "Vrsta transakcije",
66
+ Domestic: "Domaća",
67
+ "EU B2B": "EU B2B",
68
+ "EU B2C": "EU B2C",
69
+ Export: "Izvoz",
70
+ "Determining transaction type...": "Određivanje vrste transakcije...",
71
+ "This invoice will not be fiscalized (non-domestic transaction)":
72
+ "Ovaj račun neće biti fiskaliziran (nedomaća transakcija)",
73
+ "Tax Clause": "Porezna klauzula",
74
+ "Add tax clause...": "Dodajte poreznu klauzulu...",
75
+ Footer: "Podnožje",
76
+ "Add document footer...": "Dodajte podnožje dokumenta...",
77
+ "Reverse charge - tax exempt EU B2B sale": "Prijenos porezne obveze - porezno oslobođena EU B2B prodaja",
57
78
  } as const;
@@ -33,6 +33,9 @@ export default {
33
33
  Note: "Nota",
34
34
  "Insert variable": "Inserisci variabile",
35
35
  "Add payment instructions, terms, or other notes...": "Aggiungi istruzioni di pagamento, condizioni o altre note...",
36
+ // Signature field
37
+ Signature: "Firma",
38
+ "Add signature text...": "Aggiungi testo della firma...",
36
39
  "Payment Terms": "Condizioni di pagamento",
37
40
  "Add payment terms...": "Aggiungi condizioni di pagamento...",
38
41
  Quantity: "Quantità",
@@ -54,4 +57,22 @@ export default {
54
57
  "Net price": "Prezzo netto",
55
58
  "Gross price (tax included)": "Prezzo lordo (imposte incluse)",
56
59
  "Net price (before tax)": "Prezzo netto (prima delle imposte)",
60
+ // Separator items
61
+ "Add separator": "Aggiungi separatore",
62
+ "Section header": "Intestazione sezione",
63
+ "Section title...": "Titolo sezione...",
64
+ // Transaction type
65
+ "Transaction type": "Tipo di transazione",
66
+ Domestic: "Nazionale",
67
+ "EU B2B": "EU B2B",
68
+ "EU B2C": "EU B2C",
69
+ Export: "Esportazione",
70
+ "Determining transaction type...": "Determinazione tipo di transazione...",
71
+ "This invoice will not be fiscalized (non-domestic transaction)":
72
+ "Questa fattura non sarà fiscalizzata (transazione non nazionale)",
73
+ "Tax Clause": "Clausola fiscale",
74
+ "Add tax clause...": "Aggiungi clausola fiscale...",
75
+ Footer: "Piè di pagina",
76
+ "Add document footer...": "Aggiungi piè di pagina del documento...",
77
+ "Reverse charge - tax exempt EU B2B sale": "Inversione contabile - vendita B2B UE esente da imposta",
57
78
  } as const;
@@ -34,6 +34,9 @@ export default {
34
34
  "Insert variable": "Variabele invoegen",
35
35
  "Add payment instructions, terms, or other notes...":
36
36
  "Voeg betalingsinstructies, voorwaarden of andere notities toe...",
37
+ // Signature field
38
+ Signature: "Handtekening",
39
+ "Add signature text...": "Handtekeningtekst toevoegen...",
37
40
  "Payment Terms": "Betalingsvoorwaarden",
38
41
  "Add payment terms...": "Voeg betalingsvoorwaarden toe...",
39
42
  Quantity: "Aantal",
@@ -55,4 +58,22 @@ export default {
55
58
  "Net price": "Nettoprijs",
56
59
  "Gross price (tax included)": "Brutoprijs (inclusief belasting)",
57
60
  "Net price (before tax)": "Nettoprijs (exclusief belasting)",
61
+ // Separator items
62
+ "Add separator": "Scheidingslijn toevoegen",
63
+ "Section header": "Sectiekop",
64
+ "Section title...": "Sectietitel...",
65
+ // Transaction type
66
+ "Transaction type": "Transactietype",
67
+ Domestic: "Binnenland",
68
+ "EU B2B": "EU B2B",
69
+ "EU B2C": "EU B2C",
70
+ Export: "Export",
71
+ "Determining transaction type...": "Transactietype bepalen...",
72
+ "This invoice will not be fiscalized (non-domestic transaction)":
73
+ "Deze factuur wordt niet gefiscaliseerd (niet-binnenlandse transactie)",
74
+ "Tax Clause": "Belastingclausule",
75
+ "Add tax clause...": "Belastingclausule toevoegen...",
76
+ Footer: "Voettekst",
77
+ "Add document footer...": "Documentvoettekst toevoegen...",
78
+ "Reverse charge - tax exempt EU B2B sale": "Verlegging - belastingvrijgestelde EU B2B verkoop",
58
79
  } as const;
@@ -33,6 +33,9 @@ export default {
33
33
  Note: "Uwaga",
34
34
  "Insert variable": "Wstaw zmienną",
35
35
  "Add payment instructions, terms, or other notes...": "Dodaj instrukcje płatności, warunki lub inne uwagi...",
36
+ // Signature field
37
+ Signature: "Podpis",
38
+ "Add signature text...": "Dodaj tekst podpisu...",
36
39
  "Payment Terms": "Warunki płatności",
37
40
  "Add payment terms...": "Dodaj warunki płatności...",
38
41
  Quantity: "Ilość",
@@ -54,4 +57,22 @@ export default {
54
57
  "Net price": "Cena netto",
55
58
  "Gross price (tax included)": "Cena brutto (z podatkiem)",
56
59
  "Net price (before tax)": "Cena netto (przed podatkiem)",
60
+ // Separator items
61
+ "Add separator": "Dodaj separator",
62
+ "Section header": "Nagłówek sekcji",
63
+ "Section title...": "Tytuł sekcji...",
64
+ // Transaction type
65
+ "Transaction type": "Typ transakcji",
66
+ Domestic: "Krajowa",
67
+ "EU B2B": "EU B2B",
68
+ "EU B2C": "EU B2C",
69
+ Export: "Eksport",
70
+ "Determining transaction type...": "Określanie typu transakcji...",
71
+ "This invoice will not be fiscalized (non-domestic transaction)":
72
+ "Ta faktura nie będzie fiskalizowana (transakcja niekrajowa)",
73
+ "Tax Clause": "Klauzula podatkowa",
74
+ "Add tax clause...": "Dodaj klauzulę podatkową...",
75
+ Footer: "Stopka",
76
+ "Add document footer...": "Dodaj stopkę dokumentu...",
77
+ "Reverse charge - tax exempt EU B2B sale": "Odwrotne obciążenie - zwolniona z podatku sprzedaż EU B2B",
57
78
  } as const;
@@ -34,6 +34,9 @@ export default {
34
34
  "Insert variable": "Inserir variável",
35
35
  "Add payment instructions, terms, or other notes...":
36
36
  "Adicione instruções de pagamento, condições ou outras notas...",
37
+ // Signature field
38
+ Signature: "Assinatura",
39
+ "Add signature text...": "Adicionar texto de assinatura...",
37
40
  "Payment Terms": "Condições de pagamento",
38
41
  "Add payment terms...": "Adicione condições de pagamento...",
39
42
  Quantity: "Quantidade",
@@ -55,4 +58,22 @@ export default {
55
58
  "Net price": "Preço líquido",
56
59
  "Gross price (tax included)": "Preço bruto (impostos incluídos)",
57
60
  "Net price (before tax)": "Preço líquido (antes de impostos)",
61
+ // Separator items
62
+ "Add separator": "Adicionar separador",
63
+ "Section header": "Cabeçalho da secção",
64
+ "Section title...": "Título da secção...",
65
+ // Transaction type
66
+ "Transaction type": "Tipo de transação",
67
+ Domestic: "Nacional",
68
+ "EU B2B": "EU B2B",
69
+ "EU B2C": "EU B2C",
70
+ Export: "Exportação",
71
+ "Determining transaction type...": "Determinando tipo de transação...",
72
+ "This invoice will not be fiscalized (non-domestic transaction)":
73
+ "Esta fatura não será fiscalizada (transação não nacional)",
74
+ "Tax Clause": "Cláusula fiscal",
75
+ "Add tax clause...": "Adicionar cláusula fiscal...",
76
+ Footer: "Rodapé",
77
+ "Add document footer...": "Adicionar rodapé do documento...",
78
+ "Reverse charge - tax exempt EU B2B sale": "Autoliquidação - venda B2B UE isenta de imposto",
58
79
  } as const;
@@ -23,7 +23,7 @@ export default {
23
23
  "Tax Number": "Davčna številka",
24
24
  Items: "Postavke",
25
25
  "Add item": "Dodaj postavko",
26
- Tax: "Davek",
26
+ Tax: "DDV",
27
27
  "Tax rate": "Davčna stopnja",
28
28
  "Add tax": "Dodaj davek",
29
29
  "Select tax...": "Izberi davek...",
@@ -34,6 +34,9 @@ export default {
34
34
  Note: "Opomba",
35
35
  "Insert variable": "Vstavi spremenljivko",
36
36
  "Add payment instructions, terms, or other notes...": "Dodajte navodila za plačilo, pogoje ali druge opombe...",
37
+ // Signature field
38
+ Signature: "Podpis",
39
+ "Add signature text...": "Dodaj besedilo podpisa...",
37
40
  // Payment terms field
38
41
  "Payment Terms": "Plačilni pogoji",
39
42
  "Add payment terms...": "Dodajte plačilne pogoje...",
@@ -60,4 +63,22 @@ export default {
60
63
  "Net price": "Neto cena",
61
64
  "Gross price (tax included)": "Bruto cena (z davkom)",
62
65
  "Net price (before tax)": "Neto cena (brez davka)",
66
+ // Separator items
67
+ "Add separator": "Dodaj ločilnik",
68
+ "Section header": "Naslov razdelka",
69
+ "Section title...": "Naslov razdelka...",
70
+ // Transaction type
71
+ "Transaction type": "Vrsta transakcije",
72
+ Domestic: "Domača",
73
+ "EU B2B": "EU B2B",
74
+ "EU B2C": "EU B2C",
75
+ Export: "Izvoz",
76
+ "Determining transaction type...": "Določanje vrste transakcije...",
77
+ "This invoice will not be fiscalized (non-domestic transaction)":
78
+ "Ta račun ne bo fiskaliziran (nedomača transakcija)",
79
+ "Tax Clause": "Davčna klavzula",
80
+ "Add tax clause...": "Dodajte davčno klavzulo...",
81
+ Footer: "Noga dokumenta",
82
+ "Add document footer...": "Dodajte nogo dokumenta...",
83
+ "Reverse charge - tax exempt EU B2B sale": "Obrnjena davčna obveznost - davka oproščena EU B2B prodaja",
63
84
  } as const;
@@ -52,6 +52,7 @@ type EstimateListTableProps = {
52
52
  onDownloadSuccess?: (fileName: string) => void;
53
53
  onDownloadError?: (error: string) => void;
54
54
  onExportSelected?: (documentIds: string[]) => void;
55
+ onCopyToInvoice?: (documentIds: string[]) => void;
55
56
  onCreateNew?: () => void;
56
57
  } & ListTableProps<Estimate>;
57
58
 
@@ -66,6 +67,7 @@ export default function EstimateListTable({
66
67
  onDownloadSuccess,
67
68
  onDownloadError,
68
69
  onExportSelected,
70
+ onCopyToInvoice,
69
71
  onCreateNew,
70
72
  ...i18nProps
71
73
  }: EstimateListTableProps) {
@@ -110,6 +112,12 @@ export default function EstimateListTable({
110
112
  }
111
113
  }, [selectedIds, onExportSelected]);
112
114
 
115
+ const handleCopyToInvoice = useCallback(() => {
116
+ if (selectedIds.size > 0 && onCopyToInvoice) {
117
+ onCopyToInvoice(Array.from(selectedIds));
118
+ }
119
+ }, [selectedIds, onCopyToInvoice]);
120
+
113
121
  const handleDeselectAll = useCallback(() => {
114
122
  setSelectedIds(new Set());
115
123
  }, []);
@@ -119,11 +127,12 @@ export default function EstimateListTable({
119
127
  <SelectionToolbar
120
128
  selectedCount={count}
121
129
  onExportPdfs={onExportSelected ? handleExportPdfs : undefined}
130
+ onCopyToInvoice={onCopyToInvoice ? handleCopyToInvoice : undefined}
122
131
  onDeselectAll={handleDeselectAll}
123
132
  t={t}
124
133
  />
125
134
  ),
126
- [handleExportPdfs, handleDeselectAll, onExportSelected, t],
135
+ [handleExportPdfs, handleCopyToInvoice, handleDeselectAll, onExportSelected, onCopyToInvoice, t],
127
136
  );
128
137
 
129
138
  const columns: Column<Estimate>[] = useMemo(
@@ -209,7 +218,7 @@ export default function EstimateListTable({
209
218
  filterConfig={filterConfig}
210
219
  t={t}
211
220
  locale={i18nProps.locale}
212
- selectable={!!onExportSelected}
221
+ selectable={!!(onExportSelected || onCopyToInvoice)}
213
222
  selectedIds={selectedIds}
214
223
  onSelectionChange={setSelectedIds}
215
224
  selectionToolbar={selectionToolbar}
@@ -36,4 +36,5 @@ export default {
36
36
  selected: "ausgewählt",
37
37
  "Export PDFs": "PDFs exportieren",
38
38
  "Deselect all": "Auswahl aufheben",
39
+ "Copy to Invoice": "In Rechnung kopieren",
39
40
  } as const;
@@ -8,4 +8,5 @@ export default {
8
8
  selected: "selected",
9
9
  "Export PDFs": "Export PDFs",
10
10
  "Deselect all": "Deselect all",
11
+ "Copy to Invoice": "Copy to Invoice",
11
12
  } as const;
@@ -33,4 +33,5 @@ export default {
33
33
  selected: "seleccionados",
34
34
  "Export PDFs": "Exportar PDFs",
35
35
  "Deselect all": "Deseleccionar todo",
36
+ "Copy to Invoice": "Copiar a factura",
36
37
  } as const;
@@ -33,4 +33,5 @@ export default {
33
33
  selected: "sélectionnés",
34
34
  "Export PDFs": "Exporter les PDF",
35
35
  "Deselect all": "Tout désélectionner",
36
+ "Copy to Invoice": "Copier vers facture",
36
37
  } as const;
@@ -33,4 +33,5 @@ export default {
33
33
  selected: "odabranih",
34
34
  "Export PDFs": "Izvezi PDF-ove",
35
35
  "Deselect all": "Poništi odabir",
36
+ "Copy to Invoice": "Kopiraj u račun",
36
37
  } as const;
@@ -33,4 +33,5 @@ export default {
33
33
  selected: "selezionati",
34
34
  "Export PDFs": "Esporta PDF",
35
35
  "Deselect all": "Deseleziona tutto",
36
+ "Copy to Invoice": "Copia in fattura",
36
37
  } as const;
@@ -33,4 +33,5 @@ export default {
33
33
  selected: "geselecteerd",
34
34
  "Export PDFs": "PDFs exporteren",
35
35
  "Deselect all": "Alles deselecteren",
36
+ "Copy to Invoice": "Kopieer naar factuur",
36
37
  } as const;
@@ -33,4 +33,5 @@ export default {
33
33
  selected: "wybranych",
34
34
  "Export PDFs": "Eksportuj PDF-y",
35
35
  "Deselect all": "Odznacz wszystko",
36
+ "Copy to Invoice": "Kopiuj do faktury",
36
37
  } as const;
@@ -33,4 +33,5 @@ export default {
33
33
  selected: "selecionados",
34
34
  "Export PDFs": "Exportar PDFs",
35
35
  "Deselect all": "Desselecionar tudo",
36
+ "Copy to Invoice": "Copiar para fatura",
36
37
  } as const;
@@ -36,4 +36,5 @@ export default {
36
36
  selected: "izbranih",
37
37
  "Export PDFs": "Izvozi PDF-je",
38
38
  "Deselect all": "Počisti izbiro",
39
+ "Copy to Invoice": "Kopiraj v račun",
39
40
  } as const;
@@ -3,13 +3,16 @@ type TFunction = (key: string, options?: Record<string, unknown>) => string;
3
3
  import { Calendar, Download, Loader2 } from "lucide-react";
4
4
  import { useRef, useState } from "react";
5
5
  import { Button } from "../ui/button";
6
+ import { Checkbox } from "../ui/checkbox";
6
7
  import { Input } from "../ui/input";
7
8
  import { Label } from "../ui/label";
8
9
  import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../ui/select";
9
10
 
10
- export type DocumentType = "invoice" | "estimate" | "credit_note";
11
+ export type DocumentType = "invoice" | "estimate" | "credit_note" | "advance_invoice" | "delivery_note";
11
12
  export type ExportFormat = "xlsx" | "csv" | "pdf_zip";
12
13
 
14
+ const ALL_DOCUMENT_TYPES: DocumentType[] = ["invoice", "estimate", "credit_note", "advance_invoice", "delivery_note"];
15
+
13
16
  // Maximum date range for export (1 year in milliseconds)
14
17
  const MAX_DATE_RANGE_MS = 365 * 24 * 60 * 60 * 1000;
15
18
 
@@ -65,6 +68,7 @@ export function DocumentExportForm({
65
68
  }: DocumentExportFormProps) {
66
69
  const defaultDates = getPreviousMonthRange();
67
70
  const [documentType, setDocumentType] = useState<DocumentType>("invoice");
71
+ const [selectedTypes, setSelectedTypes] = useState<DocumentType[]>(["invoice"]);
68
72
  const [exportFormat, setExportFormat] = useState<ExportFormat>("xlsx");
69
73
  const [dateFrom, setDateFrom] = useState(defaultDates.from);
70
74
  const [dateTo, setDateTo] = useState(defaultDates.to);
@@ -73,6 +77,17 @@ export function DocumentExportForm({
73
77
 
74
78
  const toastIdRef = useRef<string | number | null>(null);
75
79
 
80
+ const toggleType = (type: DocumentType) => {
81
+ setSelectedTypes((prev) => {
82
+ if (prev.includes(type)) {
83
+ // Don't allow deselecting the last type
84
+ if (prev.length === 1) return prev;
85
+ return prev.filter((t) => t !== type);
86
+ }
87
+ return [...prev, type];
88
+ });
89
+ };
90
+
76
91
  const validateDateRange = (from: string, to: string) => {
77
92
  const isValid = isDateRangeValid(from, to);
78
93
  setDateRangeError(!isValid);
@@ -100,7 +115,7 @@ export function DocumentExportForm({
100
115
  "Content-Type": "application/json",
101
116
  },
102
117
  body: JSON.stringify({
103
- type: documentType,
118
+ types: selectedTypes,
104
119
  date_from: dateFrom || undefined,
105
120
  date_to: dateTo || undefined,
106
121
  }),
@@ -187,16 +202,35 @@ export function DocumentExportForm({
187
202
  <div className="grid grid-cols-2 gap-4">
188
203
  <div className="space-y-2">
189
204
  <Label htmlFor="document-type">{t("export-page.document-type")}</Label>
190
- <Select value={documentType} onValueChange={(v) => setDocumentType(v as DocumentType)}>
191
- <SelectTrigger id="document-type">
192
- <SelectValue />
193
- </SelectTrigger>
194
- <SelectContent>
195
- <SelectItem value="invoice">{t("export-page.types.invoice")}</SelectItem>
196
- <SelectItem value="estimate">{t("export-page.types.estimate")}</SelectItem>
197
- <SelectItem value="credit_note">{t("export-page.types.credit_note")}</SelectItem>
198
- </SelectContent>
199
- </Select>
205
+ {exportFormat === "pdf_zip" ? (
206
+ <fieldset className="space-y-2 rounded-md border p-3">
207
+ {ALL_DOCUMENT_TYPES.map((type) => (
208
+ <div key={type} className="flex items-center gap-2">
209
+ <Checkbox
210
+ id={`type-${type}`}
211
+ checked={selectedTypes.includes(type)}
212
+ onCheckedChange={() => toggleType(type)}
213
+ />
214
+ <Label htmlFor={`type-${type}`} className="cursor-pointer font-normal">
215
+ {t(`export-page.types.${type}`)}
216
+ </Label>
217
+ </div>
218
+ ))}
219
+ </fieldset>
220
+ ) : (
221
+ <Select value={documentType} onValueChange={(v) => setDocumentType(v as DocumentType)}>
222
+ <SelectTrigger id="document-type">
223
+ <SelectValue />
224
+ </SelectTrigger>
225
+ <SelectContent>
226
+ <SelectItem value="invoice">{t("export-page.types.invoice")}</SelectItem>
227
+ <SelectItem value="estimate">{t("export-page.types.estimate")}</SelectItem>
228
+ <SelectItem value="credit_note">{t("export-page.types.credit_note")}</SelectItem>
229
+ <SelectItem value="advance_invoice">{t("export-page.types.advance_invoice")}</SelectItem>
230
+ <SelectItem value="delivery_note">{t("export-page.types.delivery_note")}</SelectItem>
231
+ </SelectContent>
232
+ </Select>
233
+ )}
200
234
  </div>
201
235
 
202
236
  <div className="space-y-2">