@spaceinvoices/react-ui 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/cli/dist/index.js +1 -1
  2. package/package.json +1 -1
  3. package/registry.json +24 -225
  4. package/src/components/advance-invoices/advance-invoices.hooks.ts +2 -2
  5. package/src/components/documents/documents.hooks.ts +5 -48
  6. package/src/components/documents/shared/document-preview-display.tsx +12 -1
  7. package/src/components/documents/view/document-actions-bar.tsx +20 -12
  8. package/src/components/documents/view/document-activities-list.tsx +166 -0
  9. package/src/components/documents/view/document-details-card.tsx +6 -6
  10. package/src/components/documents/view/index.ts +1 -0
  11. package/src/components/documents/view/locales/de.ts +32 -0
  12. package/src/components/documents/view/locales/es.ts +32 -0
  13. package/src/components/documents/view/locales/fr.ts +32 -0
  14. package/src/components/documents/view/locales/hr.ts +32 -0
  15. package/src/components/documents/view/locales/it.ts +32 -0
  16. package/src/components/documents/view/locales/nl.ts +32 -0
  17. package/src/components/documents/view/locales/pl.ts +32 -0
  18. package/src/components/documents/view/locales/pt.ts +32 -0
  19. package/src/components/documents/view/locales/sl.ts +32 -0
  20. package/src/components/entities/fina-settings-form/locales/de.ts +3 -0
  21. package/src/components/entities/fina-settings-form/locales/en.ts +3 -0
  22. package/src/components/entities/fina-settings-form/locales/es.ts +3 -0
  23. package/src/components/entities/fina-settings-form/locales/fr.ts +3 -0
  24. package/src/components/entities/fina-settings-form/locales/hr.ts +3 -0
  25. package/src/components/entities/fina-settings-form/locales/it.ts +3 -0
  26. package/src/components/entities/fina-settings-form/locales/nl.ts +3 -0
  27. package/src/components/entities/fina-settings-form/locales/pl.ts +3 -0
  28. package/src/components/entities/fina-settings-form/locales/pt.ts +3 -0
  29. package/src/components/entities/fina-settings-form/locales/sl.ts +3 -0
  30. package/src/components/entities/furs-settings-form/furs-settings-form.tsx +15 -7
  31. package/src/components/entities/furs-settings-form/furs-settings.hooks.ts +1 -1
  32. package/src/components/entities/furs-settings-form/locales/de.ts +2 -0
  33. package/src/components/entities/furs-settings-form/locales/en.ts +12 -0
  34. package/src/components/entities/furs-settings-form/locales/es.ts +2 -0
  35. package/src/components/entities/furs-settings-form/locales/fr.ts +2 -0
  36. package/src/components/entities/furs-settings-form/locales/hr.ts +2 -0
  37. package/src/components/entities/furs-settings-form/locales/it.ts +2 -0
  38. package/src/components/entities/furs-settings-form/locales/nl.ts +2 -0
  39. package/src/components/entities/furs-settings-form/locales/pl.ts +2 -0
  40. package/src/components/entities/furs-settings-form/locales/pt.ts +2 -0
  41. package/src/components/entities/furs-settings-form/locales/sl.ts +14 -0
  42. package/src/components/entities/furs-settings-form/sections/general-settings-section.tsx +121 -1
  43. package/src/components/invoices/index.ts +1 -1
  44. package/src/components/invoices/send-email-dialog/send-email-dialog.tsx +2 -2
  45. package/src/components/invoices/view/fiscalization-status-card.tsx +121 -0
  46. package/src/generated/schemas/creditnote.ts +3 -0
  47. package/src/hooks/use-duplicate-document.ts +19 -11
  48. package/src/providers/entities-provider.tsx +21 -0
  49. package/src/components/invoices/view/fina-info-display.tsx +0 -196
  50. package/src/components/invoices/view/furs-info-display.tsx +0 -213
@@ -112,15 +112,15 @@ export function DocumentDetailsCard({ document, documentType, locale = "en", ...
112
112
  {/* Document info */}
113
113
  <div className="grid grid-cols-2 gap-x-4 gap-y-2 text-sm">
114
114
  <div className="text-muted-foreground">{t("Number")}</div>
115
- <div className="font-medium">{document.number}</div>
115
+ <div className="text-right font-medium">{document.number}</div>
116
116
 
117
117
  <div className="text-muted-foreground">{t("Date")}</div>
118
- <div>{fmtDate(document.date)}</div>
118
+ <div className="text-right">{fmtDate(document.date)}</div>
119
119
 
120
120
  {isInvoiceOrAdvance && (
121
121
  <>
122
122
  <div className="text-muted-foreground">{t("Due date")}</div>
123
- <div>{fmtDate(invoiceDoc.date_due)}</div>
123
+ <div className="text-right">{fmtDate(invoiceDoc.date_due)}</div>
124
124
  </>
125
125
  )}
126
126
 
@@ -129,7 +129,7 @@ export function DocumentDetailsCard({ document, documentType, locale = "en", ...
129
129
  <div className="text-muted-foreground">
130
130
  {(invoiceDoc as any).date_service_to ? t("Service period") : t("Service date")}
131
131
  </div>
132
- <div>
132
+ <div className="text-right">
133
133
  {(invoiceDoc as any).date_service_to
134
134
  ? `${fmtDate((invoiceDoc as any).date_service)} - ${fmtDate((invoiceDoc as any).date_service_to)}`
135
135
  : fmtDate((invoiceDoc as any).date_service)}
@@ -140,12 +140,12 @@ export function DocumentDetailsCard({ document, documentType, locale = "en", ...
140
140
  {isEstimate && estimateDoc.date_valid_till && (
141
141
  <>
142
142
  <div className="text-muted-foreground">{t("Valid until")}</div>
143
- <div>{fmtDate(estimateDoc.date_valid_till)}</div>
143
+ <div className="text-right">{fmtDate(estimateDoc.date_valid_till)}</div>
144
144
  </>
145
145
  )}
146
146
 
147
147
  <div className="text-muted-foreground">{t("Customer")}</div>
148
- <div>{customerName}</div>
148
+ <div className="text-right">{customerName}</div>
149
149
  </div>
150
150
 
151
151
  <Separator />
@@ -1,4 +1,5 @@
1
1
  export { DocumentActionsBar } from "./document-actions-bar";
2
+ export { DocumentActivitiesList } from "./document-activities-list";
2
3
  export { DocumentDetailsCard } from "./document-details-card";
3
4
  export { DocumentPaymentsList } from "./document-payments-list";
4
5
  export { useDocumentDownload } from "./use-document-download";
@@ -82,4 +82,36 @@ export default {
82
82
  "Draft deleted": "Entwurf wurde gelöscht",
83
83
  "Delete draft failed": "Entwurf löschen fehlgeschlagen",
84
84
  Draft: "Entwurf",
85
+
86
+ // Activity list
87
+ Activity: "Aktivität",
88
+ "No activity": "Keine Aktivität",
89
+ Created: "Erstellt",
90
+ Updated: "Aktualisiert",
91
+ Sent: "Gesendet",
92
+ Deleted: "Gelöscht",
93
+ by: "von",
94
+ me: "mir",
95
+ System: "System",
96
+ Scheduled: "Geplant",
97
+
98
+ // Fiscalization
99
+ Fiscalization: "Fiskalisierung",
100
+ Fiscalized: "Fiskalisiert",
101
+ Pending: "Ausstehend",
102
+ Failed: "Fehlgeschlagen",
103
+ Skipped: "Übersprungen",
104
+ "Retry fiscalization": "Fiskalisierung wiederholen",
105
+
106
+ // PDF language names
107
+ English: "Englisch",
108
+ German: "Deutsch",
109
+ Slovenian: "Slowenisch",
110
+ Italian: "Italienisch",
111
+ French: "Französisch",
112
+ Spanish: "Spanisch",
113
+ Portuguese: "Portugiesisch",
114
+ Dutch: "Niederländisch",
115
+ Polish: "Polnisch",
116
+ Croatian: "Kroatisch",
85
117
  } as const;
@@ -80,4 +80,36 @@ export default {
80
80
  "Draft deleted": "Borrador eliminado",
81
81
  "Delete draft failed": "Error al eliminar el borrador",
82
82
  Draft: "Borrador",
83
+
84
+ // Activity list
85
+ Activity: "Actividad",
86
+ "No activity": "Sin actividad",
87
+ Created: "Creado",
88
+ Updated: "Actualizado",
89
+ Sent: "Enviado",
90
+ Deleted: "Eliminado",
91
+ by: "por",
92
+ me: "mí",
93
+ System: "Sistema",
94
+ Scheduled: "Programado",
95
+
96
+ // Fiscalization
97
+ Fiscalization: "Fiscalización",
98
+ Fiscalized: "Fiscalizado",
99
+ Pending: "Pendiente",
100
+ Failed: "Fallido",
101
+ Skipped: "Omitido",
102
+ "Retry fiscalization": "Reintentar fiscalización",
103
+
104
+ // PDF language names
105
+ English: "Inglés",
106
+ German: "Alemán",
107
+ Slovenian: "Esloveno",
108
+ Italian: "Italiano",
109
+ French: "Francés",
110
+ Spanish: "Español",
111
+ Portuguese: "Portugués",
112
+ Dutch: "Neerlandés",
113
+ Polish: "Polaco",
114
+ Croatian: "Croata",
83
115
  } as const;
@@ -80,4 +80,36 @@ export default {
80
80
  "Draft deleted": "Brouillon supprimé",
81
81
  "Delete draft failed": "Échec de la suppression du brouillon",
82
82
  Draft: "Brouillon",
83
+
84
+ // Activity list
85
+ Activity: "Activité",
86
+ "No activity": "Aucune activité",
87
+ Created: "Créé",
88
+ Updated: "Mis à jour",
89
+ Sent: "Envoyé",
90
+ Deleted: "Supprimé",
91
+ by: "par",
92
+ me: "moi",
93
+ System: "Système",
94
+ Scheduled: "Planifié",
95
+
96
+ // Fiscalization
97
+ Fiscalization: "Fiscalisation",
98
+ Fiscalized: "Fiscalisé",
99
+ Pending: "En attente",
100
+ Failed: "Échoué",
101
+ Skipped: "Ignoré",
102
+ "Retry fiscalization": "Réessayer la fiscalisation",
103
+
104
+ // PDF language names
105
+ English: "Anglais",
106
+ German: "Allemand",
107
+ Slovenian: "Slovène",
108
+ Italian: "Italien",
109
+ French: "Français",
110
+ Spanish: "Espagnol",
111
+ Portuguese: "Portugais",
112
+ Dutch: "Néerlandais",
113
+ Polish: "Polonais",
114
+ Croatian: "Croate",
83
115
  } as const;
@@ -80,4 +80,36 @@ export default {
80
80
  "Draft deleted": "Nacrt obrisan",
81
81
  "Delete draft failed": "Brisanje nacrta nije uspjelo",
82
82
  Draft: "Nacrt",
83
+
84
+ // Activity list
85
+ Activity: "Aktivnost",
86
+ "No activity": "Nema aktivnosti",
87
+ Created: "Stvoreno",
88
+ Updated: "Ažurirano",
89
+ Sent: "Poslano",
90
+ Deleted: "Obrisano",
91
+ by: "od",
92
+ me: "ja",
93
+ System: "Sustav",
94
+ Scheduled: "Zakazano",
95
+
96
+ // Fiscalization
97
+ Fiscalization: "Fiskalizacija",
98
+ Fiscalized: "Fiskalizirano",
99
+ Pending: "Na čekanju",
100
+ Failed: "Neuspjelo",
101
+ Skipped: "Preskočeno",
102
+ "Retry fiscalization": "Ponovi fiskalizaciju",
103
+
104
+ // PDF language names
105
+ English: "Engleski",
106
+ German: "Njemački",
107
+ Slovenian: "Slovenski",
108
+ Italian: "Talijanski",
109
+ French: "Francuski",
110
+ Spanish: "Španjolski",
111
+ Portuguese: "Portugalski",
112
+ Dutch: "Nizozemski",
113
+ Polish: "Poljski",
114
+ Croatian: "Hrvatski",
83
115
  } as const;
@@ -80,4 +80,36 @@ export default {
80
80
  "Draft deleted": "Bozza eliminata",
81
81
  "Delete draft failed": "Eliminazione bozza fallita",
82
82
  Draft: "Bozza",
83
+
84
+ // Activity list
85
+ Activity: "Attività",
86
+ "No activity": "Nessuna attività",
87
+ Created: "Creato",
88
+ Updated: "Aggiornato",
89
+ Sent: "Inviato",
90
+ Deleted: "Eliminato",
91
+ by: "da",
92
+ me: "me",
93
+ System: "Sistema",
94
+ Scheduled: "Pianificato",
95
+
96
+ // Fiscalization
97
+ Fiscalization: "Fiscalizzazione",
98
+ Fiscalized: "Fiscalizzato",
99
+ Pending: "In attesa",
100
+ Failed: "Fallito",
101
+ Skipped: "Saltato",
102
+ "Retry fiscalization": "Riprova fiscalizzazione",
103
+
104
+ // PDF language names
105
+ English: "Inglese",
106
+ German: "Tedesco",
107
+ Slovenian: "Sloveno",
108
+ Italian: "Italiano",
109
+ French: "Francese",
110
+ Spanish: "Spagnolo",
111
+ Portuguese: "Portoghese",
112
+ Dutch: "Olandese",
113
+ Polish: "Polacco",
114
+ Croatian: "Croato",
83
115
  } as const;
@@ -81,4 +81,36 @@ export default {
81
81
  "Draft deleted": "Concept verwijderd",
82
82
  "Delete draft failed": "Verwijderen van concept mislukt",
83
83
  Draft: "Concept",
84
+
85
+ // Activity list
86
+ Activity: "Activiteit",
87
+ "No activity": "Geen activiteit",
88
+ Created: "Aangemaakt",
89
+ Updated: "Bijgewerkt",
90
+ Sent: "Verzonden",
91
+ Deleted: "Verwijderd",
92
+ by: "door",
93
+ me: "mij",
94
+ System: "Systeem",
95
+ Scheduled: "Gepland",
96
+
97
+ // Fiscalization
98
+ Fiscalization: "Fiscalisatie",
99
+ Fiscalized: "Gefiscaliseerd",
100
+ Pending: "In behandeling",
101
+ Failed: "Mislukt",
102
+ Skipped: "Overgeslagen",
103
+ "Retry fiscalization": "Fiscalisatie opnieuw proberen",
104
+
105
+ // PDF language names
106
+ English: "Engels",
107
+ German: "Duits",
108
+ Slovenian: "Sloveens",
109
+ Italian: "Italiaans",
110
+ French: "Frans",
111
+ Spanish: "Spaans",
112
+ Portuguese: "Portugees",
113
+ Dutch: "Nederlands",
114
+ Polish: "Pools",
115
+ Croatian: "Kroatisch",
84
116
  } as const;
@@ -80,4 +80,36 @@ export default {
80
80
  "Draft deleted": "Szkic usunięty",
81
81
  "Delete draft failed": "Usunięcie szkicu nie powiodło się",
82
82
  Draft: "Szkic",
83
+
84
+ // Activity list
85
+ Activity: "Aktywność",
86
+ "No activity": "Brak aktywności",
87
+ Created: "Utworzono",
88
+ Updated: "Zaktualizowano",
89
+ Sent: "Wysłano",
90
+ Deleted: "Usunięto",
91
+ by: "przez",
92
+ me: "mnie",
93
+ System: "System",
94
+ Scheduled: "Zaplanowano",
95
+
96
+ // Fiscalization
97
+ Fiscalization: "Fiskalizacja",
98
+ Fiscalized: "Zfiskalizowano",
99
+ Pending: "Oczekuje",
100
+ Failed: "Niepowodzenie",
101
+ Skipped: "Pominięto",
102
+ "Retry fiscalization": "Ponów fiskalizację",
103
+
104
+ // PDF language names
105
+ English: "Angielski",
106
+ German: "Niemiecki",
107
+ Slovenian: "Słoweński",
108
+ Italian: "Włoski",
109
+ French: "Francuski",
110
+ Spanish: "Hiszpański",
111
+ Portuguese: "Portugalski",
112
+ Dutch: "Niderlandzki",
113
+ Polish: "Polski",
114
+ Croatian: "Chorwacki",
83
115
  } as const;
@@ -80,4 +80,36 @@ export default {
80
80
  "Draft deleted": "Rascunho eliminado",
81
81
  "Delete draft failed": "Falha ao eliminar rascunho",
82
82
  Draft: "Rascunho",
83
+
84
+ // Activity list
85
+ Activity: "Atividade",
86
+ "No activity": "Sem atividade",
87
+ Created: "Criado",
88
+ Updated: "Atualizado",
89
+ Sent: "Enviado",
90
+ Deleted: "Eliminado",
91
+ by: "por",
92
+ me: "mim",
93
+ System: "Sistema",
94
+ Scheduled: "Agendado",
95
+
96
+ // Fiscalization
97
+ Fiscalization: "Fiscalização",
98
+ Fiscalized: "Fiscalizado",
99
+ Pending: "Pendente",
100
+ Failed: "Falhado",
101
+ Skipped: "Ignorado",
102
+ "Retry fiscalization": "Tentar novamente fiscalização",
103
+
104
+ // PDF language names
105
+ English: "Inglês",
106
+ German: "Alemão",
107
+ Slovenian: "Esloveno",
108
+ Italian: "Italiano",
109
+ French: "Francês",
110
+ Spanish: "Espanhol",
111
+ Portuguese: "Português",
112
+ Dutch: "Neerlandês",
113
+ Polish: "Polaco",
114
+ Croatian: "Croata",
83
115
  } as const;
@@ -81,4 +81,36 @@ export default {
81
81
  "Draft deleted": "Osnutek je bil izbrisan",
82
82
  "Delete draft failed": "Brisanje osnutka ni uspelo",
83
83
  Draft: "Osnutek",
84
+
85
+ // Activity list
86
+ Activity: "Aktivnost",
87
+ "No activity": "Ni aktivnosti",
88
+ Created: "Ustvarjeno",
89
+ Updated: "Posodobljeno",
90
+ Sent: "Poslano",
91
+ Deleted: "Izbrisano",
92
+ by: "od",
93
+ me: "jaz",
94
+ System: "Sistem",
95
+ Scheduled: "Načrtovano",
96
+
97
+ // Fiscalization
98
+ Fiscalization: "Fiskalizacija",
99
+ Fiscalized: "Fiskalizirano",
100
+ Pending: "V čakanju",
101
+ Failed: "Neuspešno",
102
+ Skipped: "Preskočeno",
103
+ "Retry fiscalization": "Ponovi fiskalizacijo",
104
+
105
+ // PDF language names
106
+ English: "Angleščina",
107
+ German: "Nemščina",
108
+ Slovenian: "Slovenščina",
109
+ Italian: "Italijanščina",
110
+ French: "Francoščina",
111
+ Spanish: "Španščina",
112
+ Portuguese: "Portugalščina",
113
+ Dutch: "Nizozemščina",
114
+ Polish: "Poljščina",
115
+ Croatian: "Hrvaščina",
84
116
  } as const;
@@ -136,6 +136,9 @@ export default {
136
136
  ZKI: "ZKI",
137
137
  "Invoice Number": "Rechnungsnummer",
138
138
  "QR Code": "QR-Code",
139
+ "Issuer OIB": "OIB des Ausstellers",
140
+ Operator: "Bediener",
141
+ Verify: "Überprüfen",
139
142
  "Fiscalized at": "Fiskalisiert am",
140
143
  "Business Premise": "Geschäftsraum",
141
144
  "Electronic Device": "Elektronisches Gerät",
@@ -133,6 +133,9 @@ export default {
133
133
  ZKI: "ZKI",
134
134
  "Invoice Number": "Invoice Number",
135
135
  "QR Code": "QR Code",
136
+ "Issuer OIB": "Issuer OIB",
137
+ Operator: "Operator",
138
+ Verify: "Verify",
136
139
  "Fiscalized at": "Fiscalized at",
137
140
  "Business Premise": "Business Premise",
138
141
  "Electronic Device": "Electronic Device",
@@ -134,6 +134,9 @@ export default {
134
134
  ZKI: "ZKI",
135
135
  "Invoice Number": "Número de factura",
136
136
  "QR Code": "Código QR",
137
+ "Issuer OIB": "OIB del emisor",
138
+ Operator: "Operador",
139
+ Verify: "Verificar",
137
140
  "Fiscalized at": "Fiscalizado el",
138
141
  "Business Premise": "Local comercial",
139
142
  "Electronic Device": "Dispositivo electrónico",
@@ -133,6 +133,9 @@ export default {
133
133
  ZKI: "ZKI",
134
134
  "Invoice Number": "Numéro de facture",
135
135
  "QR Code": "Code QR",
136
+ "Issuer OIB": "OIB de l'émetteur",
137
+ Operator: "Opérateur",
138
+ Verify: "Vérifier",
136
139
  "Fiscalized at": "Fiscalisé le",
137
140
  "Business Premise": "Local commercial",
138
141
  "Electronic Device": "Appareil électronique",
@@ -135,6 +135,9 @@ export default {
135
135
  ZKI: "ZKI",
136
136
  "Invoice Number": "Broj računa",
137
137
  "QR Code": "QR kod",
138
+ "Issuer OIB": "OIB izdavatelja",
139
+ Operator: "Operater",
140
+ Verify: "Provjeri",
138
141
  "Fiscalized at": "Fiskalizirano dana",
139
142
  "Business Premise": "Poslovni prostor",
140
143
  "Electronic Device": "Elektronički uređaj",
@@ -135,6 +135,9 @@ export default {
135
135
  ZKI: "ZKI",
136
136
  "Invoice Number": "Numero fattura",
137
137
  "QR Code": "Codice QR",
138
+ "Issuer OIB": "OIB dell'emittente",
139
+ Operator: "Operatore",
140
+ Verify: "Verifica",
138
141
  "Fiscalized at": "Fiscalizzato il",
139
142
  "Business Premise": "Locale commerciale",
140
143
  "Electronic Device": "Dispositivo elettronico",
@@ -135,6 +135,9 @@ export default {
135
135
  ZKI: "ZKI",
136
136
  "Invoice Number": "Factuurnummer",
137
137
  "QR Code": "QR-code",
138
+ "Issuer OIB": "OIB van de uitgever",
139
+ Operator: "Operator",
140
+ Verify: "Verifiëren",
138
141
  "Fiscalized at": "Gefiscaliseerd op",
139
142
  "Business Premise": "Bedrijfsruimte",
140
143
  "Electronic Device": "Elektronisch apparaat",
@@ -133,6 +133,9 @@ export default {
133
133
  ZKI: "ZKI",
134
134
  "Invoice Number": "Numer faktury",
135
135
  "QR Code": "Kod QR",
136
+ "Issuer OIB": "OIB wystawcy",
137
+ Operator: "Operator",
138
+ Verify: "Zweryfikuj",
136
139
  "Fiscalized at": "Fiskalizowano dnia",
137
140
  "Business Premise": "Lokal użytkowy",
138
141
  "Electronic Device": "Urządzenie elektroniczne",
@@ -135,6 +135,9 @@ export default {
135
135
  ZKI: "ZKI",
136
136
  "Invoice Number": "Número da fatura",
137
137
  "QR Code": "Código QR",
138
+ "Issuer OIB": "OIB do emissor",
139
+ Operator: "Operador",
140
+ Verify: "Verificar",
138
141
  "Fiscalized at": "Fiscalizado em",
139
142
  "Business Premise": "Instalação comercial",
140
143
  "Electronic Device": "Dispositivo eletrónico",
@@ -135,6 +135,9 @@ export default {
135
135
  ZKI: "ZKI",
136
136
  "Invoice Number": "Številka računa",
137
137
  "QR Code": "QR koda",
138
+ "Issuer OIB": "OIB izdajatelja",
139
+ Operator: "Operater",
140
+ Verify: "Preveri",
138
141
  "Fiscalized at": "Fiskalizirano dne",
139
142
  "Business Premise": "Poslovni prostor",
140
143
  "Electronic Device": "Elektronska naprava",
@@ -45,6 +45,7 @@ export type FursSettingsFormSchema = z.infer<typeof fursSettingsFormSchema>;
45
45
 
46
46
  export type StepType = "settings" | "certificate" | "premises" | "enable";
47
47
  export type SectionType =
48
+ | "entity-info"
48
49
  | "operator"
49
50
  | "fiscalization"
50
51
  | "advanced"
@@ -154,19 +155,20 @@ export const FursSettingsForm: FC<FursSettingsFormProps> = ({
154
155
 
155
156
  // Step unlocking logic (new flow: settings -> certificate -> premises -> enable)
156
157
  // - Step 1 (Settings): Always accessible
157
- // - Step 2 (Certificate): Always accessible
158
+ // - Step 2 (Certificate): Requires entity tax number
158
159
  // - Step 3 (Premises): Requires valid certificate
159
160
  // - Step 4 (Enable): Requires certificate + premise + device
161
+ const hasEntityTaxNumber = !!entity.tax_number;
160
162
  const fursEnabled = fursSettings?.enabled || false;
161
- const canAccessCertificate = true; // Always accessible
162
- const canAccessPremises = hasCertificate && certificateValid;
163
- const canAccessEnable = certificateValid && hasPremises && hasPremiseWithDevice;
163
+ const canAccessCertificate = hasEntityTaxNumber;
164
+ const canAccessPremises = hasEntityTaxNumber && hasCertificate && certificateValid;
165
+ const canAccessEnable = hasEntityTaxNumber && certificateValid && hasPremises && hasPremiseWithDevice;
164
166
 
165
167
  const steps = [
166
168
  {
167
169
  id: "settings" as const,
168
170
  title: translate("General Settings"),
169
- complete: true, // Settings are always "complete" - just configuration
171
+ complete: hasEntityTaxNumber,
170
172
  unlocked: true,
171
173
  },
172
174
  {
@@ -272,8 +274,14 @@ export const FursSettingsForm: FC<FursSettingsFormProps> = ({
272
274
  let tooltipText = "";
273
275
 
274
276
  if (isLocked) {
275
- if (step.id === "premises") {
276
- tooltipText = translate("Upload and validate digital certificate first");
277
+ if (step.id === "certificate") {
278
+ tooltipText = translate("Set entity tax number in General Settings first");
279
+ } else if (step.id === "premises") {
280
+ if (!hasEntityTaxNumber) {
281
+ tooltipText = translate("Set entity tax number in General Settings first");
282
+ } else {
283
+ tooltipText = translate("Upload and validate digital certificate first");
284
+ }
277
285
  } else if (step.id === "enable") {
278
286
  if (!certificateValid) {
279
287
  tooltipText = translate("Upload and validate digital certificate first");
@@ -308,7 +308,7 @@ export function useUpdateUserFursSettings(
308
308
  ...options,
309
309
  mutationFn: async ({ entityId, data }) => {
310
310
  if (!sdk) throw new Error("SDK not initialized");
311
- return sdk.users.update(data, { entity_id: entityId });
311
+ return sdk.users.updateFursSettings(data, { entity_id: entityId });
312
312
  },
313
313
  onSuccess: (data, variables, context) => {
314
314
  // Invalidate current user query to refresh settings
@@ -150,6 +150,8 @@ export default {
150
150
  "Invoice Number": "Rechnungsnummer",
151
151
  Iteration: "Iteration",
152
152
  "QR Code": "QR-Code",
153
+ "Issuer Tax Number": "Steuernummer des Ausstellers",
154
+ Operator: "Bediener",
153
155
  "Fiscalized at": "Fiskalisiert am",
154
156
  "Enable Fiscalization": "Fiskalisierung aktivieren",
155
157
  "Turn on FURS fiscalization for invoices": "FURS-Fiskalisierung für Rechnungen einschalten",
@@ -147,6 +147,8 @@ export default {
147
147
  "Invoice Number": "Invoice Number",
148
148
  Iteration: "Iteration",
149
149
  "QR Code": "QR Code",
150
+ "Issuer Tax Number": "Issuer Tax Number",
151
+ Operator: "Operator",
150
152
  "Fiscalized at": "Fiscalized at",
151
153
  // New flow translations
152
154
  "Enable Fiscalization": "Enable Fiscalization",
@@ -194,4 +196,14 @@ export default {
194
196
  "Default operator info used when invoices are created via API without a logged-in user.",
195
197
  "Certificate uploaded successfully": "Certificate uploaded successfully",
196
198
  "Loading certificate details...": "Loading certificate details...",
199
+ // Entity info section
200
+ "Entity Information": "Entity Information",
201
+ "Required company details for FURS fiscalization": "Required company details for FURS fiscalization",
202
+ "Entity Tax Number": "Entity Tax Number",
203
+ "Your company's tax number (must match FURS certificate)": "Your company's tax number (must match FURS certificate)",
204
+ Address: "Address",
205
+ "Post Code": "Post Code",
206
+ "Save Entity Info": "Save Entity Info",
207
+ "Tax number is required for FURS fiscalization": "Tax number is required for FURS fiscalization",
208
+ "Set entity tax number in General Settings first": "Set entity tax number in General Settings first",
197
209
  } as const;
@@ -149,6 +149,8 @@ export default {
149
149
  "Invoice Number": "Número de factura",
150
150
  Iteration: "Iteración",
151
151
  "QR Code": "Código QR",
152
+ "Issuer Tax Number": "Número fiscal del emisor",
153
+ Operator: "Operador",
152
154
  "Fiscalized at": "Fiscalizado el",
153
155
  "Enable Fiscalization": "Activar fiscalización",
154
156
  "Turn on FURS fiscalization for invoices": "Active la fiscalización FURS para facturas",
@@ -149,6 +149,8 @@ export default {
149
149
  "Invoice Number": "Numéro de facture",
150
150
  Iteration: "Itération",
151
151
  "QR Code": "Code QR",
152
+ "Issuer Tax Number": "Numéro fiscal de l'émetteur",
153
+ Operator: "Opérateur",
152
154
  "Fiscalized at": "Fiscalisé le",
153
155
  "Enable Fiscalization": "Activer la fiscalisation",
154
156
  "Turn on FURS fiscalization for invoices": "Activez la fiscalisation FURS pour les factures",
@@ -148,6 +148,8 @@ export default {
148
148
  "Invoice Number": "Broj računa",
149
149
  Iteration: "Iteracija",
150
150
  "QR Code": "QR kod",
151
+ "Issuer Tax Number": "Porezni broj izdavatelja",
152
+ Operator: "Operater",
151
153
  "Fiscalized at": "Fiskalizirano dana",
152
154
  "Enable Fiscalization": "Omogući fiskalizaciju",
153
155
  "Turn on FURS fiscalization for invoices": "Uključite fiskalizaciju FURS za račune",
@@ -149,6 +149,8 @@ export default {
149
149
  "Invoice Number": "Numero fattura",
150
150
  Iteration: "Iterazione",
151
151
  "QR Code": "Codice QR",
152
+ "Issuer Tax Number": "Codice fiscale dell'emittente",
153
+ Operator: "Operatore",
152
154
  "Fiscalized at": "Fiscalizzato il",
153
155
  "Enable Fiscalization": "Abilita fiscalizzazione",
154
156
  "Turn on FURS fiscalization for invoices": "Attiva la fiscalizzazione FURS per le fatture",
@@ -148,6 +148,8 @@ export default {
148
148
  "Invoice Number": "Factuurnummer",
149
149
  Iteration: "Iteratie",
150
150
  "QR Code": "QR-code",
151
+ "Issuer Tax Number": "Belastingnummer van de uitgever",
152
+ Operator: "Operator",
151
153
  "Fiscalized at": "Gefiscaliseerd op",
152
154
  "Enable Fiscalization": "Fiscalisatie inschakelen",
153
155
  "Turn on FURS fiscalization for invoices": "Schakel FURS-fiscalisatie in voor facturen",
@@ -147,6 +147,8 @@ export default {
147
147
  "Invoice Number": "Numer faktury",
148
148
  Iteration: "Iteracja",
149
149
  "QR Code": "Kod QR",
150
+ "Issuer Tax Number": "Numer podatkowy wystawcy",
151
+ Operator: "Operator",
150
152
  "Fiscalized at": "Fiskalizowano dnia",
151
153
  "Enable Fiscalization": "Włącz fiskalizację",
152
154
  "Turn on FURS fiscalization for invoices": "Włącz fiskalizację FURS dla faktur",