@spaceinvoices/react-ui 0.1.1
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.
- package/LICENSE +21 -0
- package/README.md +340 -0
- package/cli/dist/index.js +922 -0
- package/package.json +87 -0
- package/registry.json +600 -0
- package/spaceinvoices.schema.json +47 -0
- package/src/app.tsx +25 -0
- package/src/common/autocomplete.tsx +135 -0
- package/src/components/activities/activity-timeline.tsx +160 -0
- package/src/components/activities/index.ts +1 -0
- package/src/components/activities/locales/de.ts +30 -0
- package/src/components/activities/locales/sl.ts +30 -0
- package/src/components/advance-invoices/advance-invoices.hooks.ts +75 -0
- package/src/components/advance-invoices/create/create-advance-invoice-form.tsx +702 -0
- package/src/components/advance-invoices/create/locales/de.ts +29 -0
- package/src/components/advance-invoices/create/locales/sl.ts +25 -0
- package/src/components/advance-invoices/create/prepare-advance-invoice-submission.ts +74 -0
- package/src/components/advance-invoices/index.ts +5 -0
- package/src/components/advance-invoices/list/index.ts +3 -0
- package/src/components/advance-invoices/list/list-row-actions.tsx +119 -0
- package/src/components/advance-invoices/list/list-table.tsx +178 -0
- package/src/components/advance-invoices/list/locales/de.ts +32 -0
- package/src/components/advance-invoices/list/locales/sl.ts +32 -0
- package/src/components/advance-invoices/list/use-advance-invoice-download.ts +63 -0
- package/src/components/button-loader.tsx +11 -0
- package/src/components/combobox.tsx +96 -0
- package/src/components/company-registry/company-registry-autocomplete.tsx +151 -0
- package/src/components/company-registry/company-registry.hooks.ts +67 -0
- package/src/components/company-registry/index.ts +7 -0
- package/src/components/credit-notes/create/create-credit-note-form.tsx +332 -0
- package/src/components/credit-notes/create/index.ts +1 -0
- package/src/components/credit-notes/create/locales/de.ts +69 -0
- package/src/components/credit-notes/create/locales/sl.ts +67 -0
- package/src/components/credit-notes/credit-notes.hooks.ts +22 -0
- package/src/components/credit-notes/index.ts +10 -0
- package/src/components/credit-notes/list/index.ts +3 -0
- package/src/components/credit-notes/list/list-row-actions.tsx +116 -0
- package/src/components/credit-notes/list/list-table.tsx +183 -0
- package/src/components/credit-notes/list/locales/de.ts +33 -0
- package/src/components/credit-notes/list/locales/sl.ts +33 -0
- package/src/components/credit-notes/list/use-credit-note-download.ts +65 -0
- package/src/components/customers/create-customer-form/create-customer-form.tsx +134 -0
- package/src/components/customers/create-customer-form/locales/de.ts +20 -0
- package/src/components/customers/create-customer-form/locales/sl.ts +20 -0
- package/src/components/customers/customer-autocomplete.tsx +173 -0
- package/src/components/customers/customer-combobox.tsx +130 -0
- package/src/components/customers/customer-list-table/customer-list-row-actions.tsx +48 -0
- package/src/components/customers/customer-list-table/customer-list-table.tsx +124 -0
- package/src/components/customers/customer-list-table/index.ts +2 -0
- package/src/components/customers/customer-list-table/locales/de.ts +16 -0
- package/src/components/customers/customer-list-table/locales/sl.ts +16 -0
- package/src/components/customers/customers.hooks.test.ts +348 -0
- package/src/components/customers/customers.hooks.ts +57 -0
- package/src/components/customers/index.ts +5 -0
- package/src/components/dashboard/chart-empty-state.tsx +29 -0
- package/src/components/dashboard/collection-rate-card/collection-rate-card.tsx +80 -0
- package/src/components/dashboard/collection-rate-card/index.ts +4 -0
- package/src/components/dashboard/collection-rate-card/locales/sl.ts +3 -0
- package/src/components/dashboard/collection-rate-card/use-collection-rate.ts +74 -0
- package/src/components/dashboard/index.ts +54 -0
- package/src/components/dashboard/invoice-status-chart/index.ts +4 -0
- package/src/components/dashboard/invoice-status-chart/invoice-status-chart.tsx +130 -0
- package/src/components/dashboard/invoice-status-chart/locales/sl.ts +9 -0
- package/src/components/dashboard/invoice-status-chart/use-invoice-status.ts +105 -0
- package/src/components/dashboard/loading-card.tsx +19 -0
- package/src/components/dashboard/payment-methods-chart/index.ts +4 -0
- package/src/components/dashboard/payment-methods-chart/locales/sl.ts +12 -0
- package/src/components/dashboard/payment-methods-chart/payment-methods-chart.tsx +152 -0
- package/src/components/dashboard/payment-methods-chart/use-payment-methods.ts +50 -0
- package/src/components/dashboard/payment-trend-chart/index.ts +4 -0
- package/src/components/dashboard/payment-trend-chart/locales/sl.ts +5 -0
- package/src/components/dashboard/payment-trend-chart/payment-trend-chart.tsx +137 -0
- package/src/components/dashboard/payment-trend-chart/use-payment-trend.ts +92 -0
- package/src/components/dashboard/revenue-card.tsx +49 -0
- package/src/components/dashboard/revenue-trend-chart/index.ts +4 -0
- package/src/components/dashboard/revenue-trend-chart/locales/sl.ts +5 -0
- package/src/components/dashboard/revenue-trend-chart/revenue-trend-chart.tsx +137 -0
- package/src/components/dashboard/revenue-trend-chart/use-revenue-trend.ts +93 -0
- package/src/components/dashboard/shared/index.ts +5 -0
- package/src/components/dashboard/shared/use-revenue-data.ts +160 -0
- package/src/components/dashboard/shared/use-stats-counts.ts +89 -0
- package/src/components/dashboard/shared/use-stats-query.ts +38 -0
- package/src/components/dashboard/stat-card.tsx +41 -0
- package/src/components/dashboard/tax-collected-card/index.ts +2 -0
- package/src/components/dashboard/tax-collected-card/tax-collected-card.tsx +77 -0
- package/src/components/dashboard/tax-collected-card/use-tax-collected.ts +145 -0
- package/src/components/dashboard/top-customers-chart/index.ts +4 -0
- package/src/components/dashboard/top-customers-chart/locales/sl.ts +5 -0
- package/src/components/dashboard/top-customers-chart/top-customers-chart.tsx +130 -0
- package/src/components/dashboard/top-customers-chart/use-top-customers.ts +72 -0
- package/src/components/documents/create/document-add-item-form.tsx +379 -0
- package/src/components/documents/create/document-add-item-tax-rate-field.tsx +120 -0
- package/src/components/documents/create/document-details-section.tsx +597 -0
- package/src/components/documents/create/document-items-section.tsx +133 -0
- package/src/components/documents/create/document-recipient-section.tsx +101 -0
- package/src/components/documents/create/form-types.ts +36 -0
- package/src/components/documents/create/index.ts +9 -0
- package/src/components/documents/create/live-preview.tsx +235 -0
- package/src/components/documents/create/mark-as-paid-section.tsx +82 -0
- package/src/components/documents/create/prepare-document-submission.test.ts +132 -0
- package/src/components/documents/create/prepare-document-submission.ts +187 -0
- package/src/components/documents/create/prepare-preview-data.test.ts +155 -0
- package/src/components/documents/create/prepare-preview-data.ts +16 -0
- package/src/components/documents/create/smart-code-insert-button.tsx +139 -0
- package/src/components/documents/create/use-document-customer-form.ts +161 -0
- package/src/components/documents/document-preview.tsx +13 -0
- package/src/components/documents/documents.hooks.ts +146 -0
- package/src/components/documents/index.ts +23 -0
- package/src/components/documents/shared/document-preview-display.tsx +172 -0
- package/src/components/documents/shared/index.ts +3 -0
- package/src/components/documents/shared/scaled-document-preview.tsx +70 -0
- package/src/components/documents/shared/use-a4-scaling.ts +62 -0
- package/src/components/documents/types.ts +61 -0
- package/src/components/documents/view/document-actions-bar.tsx +328 -0
- package/src/components/documents/view/document-details-card.tsx +179 -0
- package/src/components/documents/view/document-payments-list.tsx +256 -0
- package/src/components/documents/view/index.ts +4 -0
- package/src/components/documents/view/locales/de.ts +85 -0
- package/src/components/documents/view/locales/sl.ts +84 -0
- package/src/components/documents/view/use-document-download.ts +125 -0
- package/src/components/entities/create-entity-form.tsx +105 -0
- package/src/components/entities/entities.hooks.ts +50 -0
- package/src/components/entities/entity-settings-form/email-template-variables-info.tsx +103 -0
- package/src/components/entities/entity-settings-form/entity-settings-form.tsx +1326 -0
- package/src/components/entities/entity-settings-form/image-upload-with-crop.tsx +222 -0
- package/src/components/entities/entity-settings-form/index.ts +2 -0
- package/src/components/entities/entity-settings-form/input-with-preview.tsx +190 -0
- package/src/components/entities/entity-settings-form/locales/de.ts +192 -0
- package/src/components/entities/entity-settings-form/locales/sl.ts +188 -0
- package/src/components/entities/furs-settings-form/furs-settings-form.tsx +410 -0
- package/src/components/entities/furs-settings-form/furs-settings.hooks.ts +320 -0
- package/src/components/entities/furs-settings-form/index.ts +3 -0
- package/src/components/entities/furs-settings-form/locales/de.ts +233 -0
- package/src/components/entities/furs-settings-form/locales/en.ts +194 -0
- package/src/components/entities/furs-settings-form/locales/sl.ts +196 -0
- package/src/components/entities/furs-settings-form/sections/certificate-settings-section.tsx +242 -0
- package/src/components/entities/furs-settings-form/sections/enable-fiscalization-section.tsx +139 -0
- package/src/components/entities/furs-settings-form/sections/general-settings-section.tsx +252 -0
- package/src/components/entities/furs-settings-form/sections/premises-management-section.tsx +370 -0
- package/src/components/entities/furs-settings-form/sections/register-premise-dialog.tsx +420 -0
- package/src/components/entities/keys.ts +2 -0
- package/src/components/entities/settings/branding-settings-form.tsx +274 -0
- package/src/components/entities/settings/company-settings-form.tsx +256 -0
- package/src/components/entities/settings/defaults-settings-form.tsx +501 -0
- package/src/components/entities/settings/email-settings-form.tsx +288 -0
- package/src/components/entities/settings/eslog-settings-form.tsx +113 -0
- package/src/components/entities/settings/index.ts +8 -0
- package/src/components/entities/settings/number-format-settings-form.tsx +244 -0
- package/src/components/entities/settings/pdf-template-selector/demo-invoice-data.ts +164 -0
- package/src/components/entities/settings/pdf-template-selector/index.ts +2 -0
- package/src/components/entities/settings/pdf-template-selector/locales/de.ts +18 -0
- package/src/components/entities/settings/pdf-template-selector/locales/sl.ts +18 -0
- package/src/components/entities/settings/pdf-template-selector/pdf-template-cards.tsx +49 -0
- package/src/components/entities/settings/settings-footer.tsx +16 -0
- package/src/components/entities/settings/tax-rules-settings-form.tsx +346 -0
- package/src/components/estimates/create/create-estimate-form.tsx +384 -0
- package/src/components/estimates/create/locales/de.ts +64 -0
- package/src/components/estimates/create/locales/sl.ts +63 -0
- package/src/components/estimates/create/prepare-estimate-submission.ts +39 -0
- package/src/components/estimates/create/use-estimate-customer-form.ts +5 -0
- package/src/components/estimates/estimates.hooks.ts +15 -0
- package/src/components/estimates/index.ts +6 -0
- package/src/components/estimates/list/index.ts +3 -0
- package/src/components/estimates/list/list-row-actions.tsx +103 -0
- package/src/components/estimates/list/list-table.tsx +171 -0
- package/src/components/estimates/list/locales/de.ts +26 -0
- package/src/components/estimates/list/locales/sl.ts +26 -0
- package/src/components/estimates/list/use-estimate-download.ts +63 -0
- package/src/components/export/document-export-form.tsx +288 -0
- package/src/components/export/index.ts +2 -0
- package/src/components/form/form-input.tsx +89 -0
- package/src/components/form/index.ts +1 -0
- package/src/components/invoices/create/create-invoice-form.tsx +852 -0
- package/src/components/invoices/create/eslog-validation.test.ts +242 -0
- package/src/components/invoices/create/eslog-validation.ts +208 -0
- package/src/components/invoices/create/locales/de.ts +118 -0
- package/src/components/invoices/create/locales/sl.ts +114 -0
- package/src/components/invoices/create/prepare-invoice-submission.test.ts +777 -0
- package/src/components/invoices/create/prepare-invoice-submission.ts +79 -0
- package/src/components/invoices/create/use-invoice-customer-form.ts +5 -0
- package/src/components/invoices/index.ts +9 -0
- package/src/components/invoices/invoices-furs.hooks.ts +28 -0
- package/src/components/invoices/invoices.hooks.ts +110 -0
- package/src/components/invoices/list/index.ts +3 -0
- package/src/components/invoices/list/list-row-actions.tsx +132 -0
- package/src/components/invoices/list/list-table.tsx +165 -0
- package/src/components/invoices/list/locales/de.ts +33 -0
- package/src/components/invoices/list/locales/sl.ts +33 -0
- package/src/components/invoices/list/use-invoice-download.ts +62 -0
- package/src/components/invoices/send-email-dialog/index.ts +1 -0
- package/src/components/invoices/send-email-dialog/locales/de.ts +18 -0
- package/src/components/invoices/send-email-dialog/locales/sl.ts +17 -0
- package/src/components/invoices/send-email-dialog/send-email-dialog.tsx +289 -0
- package/src/components/invoices/send-email-dialog.tsx +2 -0
- package/src/components/invoices/shared/index.ts +2 -0
- package/src/components/invoices/shared/scaled-document-preview.tsx +32 -0
- package/src/components/invoices/shared/use-a4-scaling.tsx +39 -0
- package/src/components/invoices/view/eslog-info-display.tsx +160 -0
- package/src/components/invoices/view/furs-info-display.tsx +213 -0
- package/src/components/items/create-item-form/create-item-form.tsx +155 -0
- package/src/components/items/create-item-form/locales/de.ts +14 -0
- package/src/components/items/create-item-form/locales/en.ts +9 -0
- package/src/components/items/create-item-form/locales/sl.ts +14 -0
- package/src/components/items/item-combobox.tsx +147 -0
- package/src/components/items/item-list-table/item-list-header.tsx +33 -0
- package/src/components/items/item-list-table/item-list-row-actions.tsx +48 -0
- package/src/components/items/item-list-table/item-list-row.tsx +32 -0
- package/src/components/items/item-list-table/item-list-table.tsx +76 -0
- package/src/components/items/item-list-table/locales/de.ts +10 -0
- package/src/components/items/item-list-table/locales/en.ts +10 -0
- package/src/components/items/item-list-table/locales/sl.ts +10 -0
- package/src/components/items/items.hooks.ts +63 -0
- package/src/components/loading-spinner.tsx +24 -0
- package/src/components/payments/create-payment-form/create-payment-form.tsx +222 -0
- package/src/components/payments/create-payment-form/locales/de.ts +20 -0
- package/src/components/payments/create-payment-form/locales/sl.ts +20 -0
- package/src/components/payments/edit-payment-form/edit-payment-form.tsx +230 -0
- package/src/components/payments/edit-payment-form/index.ts +1 -0
- package/src/components/payments/edit-payment-form/locales/de.ts +20 -0
- package/src/components/payments/edit-payment-form/locales/sl.ts +20 -0
- package/src/components/payments/index.ts +4 -0
- package/src/components/payments/list/index.ts +2 -0
- package/src/components/payments/list/list-row-actions.tsx +98 -0
- package/src/components/payments/list/list-table.tsx +186 -0
- package/src/components/payments/list/locales/de.ts +19 -0
- package/src/components/payments/list/locales/sl.ts +19 -0
- package/src/components/payments/payments.hooks.ts +15 -0
- package/src/components/request-logs/index.ts +3 -0
- package/src/components/request-logs/request-log-detail.tsx +242 -0
- package/src/components/request-logs/request-log-list-table.tsx +266 -0
- package/src/components/request-logs/request-logs-page.tsx +10 -0
- package/src/components/table/README.md +410 -0
- package/src/components/table/data-table.tsx +251 -0
- package/src/components/table/date-cell.tsx +35 -0
- package/src/components/table/filter-bar.tsx +114 -0
- package/src/components/table/filter-panel.tsx +407 -0
- package/src/components/table/hooks/use-table-fetch.ts +17 -0
- package/src/components/table/hooks/use-table-query.ts +36 -0
- package/src/components/table/hooks/use-table-state.ts +293 -0
- package/src/components/table/index.ts +35 -0
- package/src/components/table/search-input.tsx +85 -0
- package/src/components/table/sortable-header.tsx +56 -0
- package/src/components/table/table-empty-state.tsx +40 -0
- package/src/components/table/table-no-results.tsx +41 -0
- package/src/components/table/table-pagination.tsx +42 -0
- package/src/components/table/table-skeleton.tsx +54 -0
- package/src/components/table/types.ts +136 -0
- package/src/components/tax-reports/index.ts +1 -0
- package/src/components/tax-reports/kir-export-form.tsx +172 -0
- package/src/components/taxes/create-tax-form/create-tax-form.tsx +112 -0
- package/src/components/taxes/create-tax-form/locales/de.ts +8 -0
- package/src/components/taxes/create-tax-form/locales/en.ts +7 -0
- package/src/components/taxes/create-tax-form/locales/sl.ts +8 -0
- package/src/components/taxes/tax-list-table/locales/de.ts +11 -0
- package/src/components/taxes/tax-list-table/locales/en.ts +10 -0
- package/src/components/taxes/tax-list-table/locales/sl.ts +11 -0
- package/src/components/taxes/tax-list-table/tax-list-header.tsx +29 -0
- package/src/components/taxes/tax-list-table/tax-list-row-actions.tsx +43 -0
- package/src/components/taxes/tax-list-table/tax-list-row.tsx +46 -0
- package/src/components/taxes/tax-list-table/tax-list-table.tsx +59 -0
- package/src/components/taxes/taxes.hooks.ts +35 -0
- package/src/components/ui/alert-dialog.tsx +61 -0
- package/src/components/ui/alert.tsx +72 -0
- package/src/components/ui/badge.tsx +48 -0
- package/src/components/ui/breadcrumb.tsx +132 -0
- package/src/components/ui/button.tsx +61 -0
- package/src/components/ui/calendar.tsx +213 -0
- package/src/components/ui/card.tsx +94 -0
- package/src/components/ui/chart.tsx +380 -0
- package/src/components/ui/checkbox.tsx +27 -0
- package/src/components/ui/collapsible.tsx +56 -0
- package/src/components/ui/command.tsx +187 -0
- package/src/components/ui/dialog.tsx +187 -0
- package/src/components/ui/drawer.tsx +123 -0
- package/src/components/ui/dropdown-menu.tsx +291 -0
- package/src/components/ui/form.tsx +166 -0
- package/src/components/ui/input-group.tsx +149 -0
- package/src/components/ui/input.tsx +20 -0
- package/src/components/ui/label.tsx +18 -0
- package/src/components/ui/loading-spinner.tsx +16 -0
- package/src/components/ui/popover.tsx +108 -0
- package/src/components/ui/radio-group.tsx +37 -0
- package/src/components/ui/select.tsx +200 -0
- package/src/components/ui/separator.tsx +23 -0
- package/src/components/ui/sheet.tsx +145 -0
- package/src/components/ui/sidebar.tsx +771 -0
- package/src/components/ui/skeleton.tsx +13 -0
- package/src/components/ui/sonner.tsx +60 -0
- package/src/components/ui/spinner.tsx +10 -0
- package/src/components/ui/sticky-form-footer.tsx +55 -0
- package/src/components/ui/switch.tsx +30 -0
- package/src/components/ui/table.tsx +101 -0
- package/src/components/ui/tabs.tsx +80 -0
- package/src/components/ui/textarea.tsx +18 -0
- package/src/components/ui/tooltip.tsx +89 -0
- package/src/components/wl-subscription/index.ts +2 -0
- package/src/components/wl-subscription/locked-feature.tsx +173 -0
- package/src/components/wl-subscription/upgrade-modal.tsx +209 -0
- package/src/frontend.tsx +28 -0
- package/src/generate-schemas.ts +265 -0
- package/src/generated/schemas/advanceinvoice.ts +177 -0
- package/src/generated/schemas/creditnote.ts +187 -0
- package/src/generated/schemas/customer.ts +29 -0
- package/src/generated/schemas/entity.ts +252 -0
- package/src/generated/schemas/estimate.ts +159 -0
- package/src/generated/schemas/furssettings.ts +25 -0
- package/src/generated/schemas/index.ts +24 -0
- package/src/generated/schemas/invoice.ts +167 -0
- package/src/generated/schemas/item.ts +38 -0
- package/src/generated/schemas/payment.ts +44 -0
- package/src/generated/schemas/previewadvanceinvoice_body.ts +354 -0
- package/src/generated/schemas/previewestimate_body.ts +309 -0
- package/src/generated/schemas/registerfursmovablepremise_body.ts +22 -0
- package/src/generated/schemas/registerfursrealestatepremise_body.ts +32 -0
- package/src/generated/schemas/renderdocument_body.ts +594 -0
- package/src/generated/schemas/sendemail_body.ts +26 -0
- package/src/generated/schemas/startpdfexport_body.ts +20 -0
- package/src/generated/schemas/tax.ts +48 -0
- package/src/generated/schemas/uploadfile_body.ts +23 -0
- package/src/generated/schemas/uploadfurscertificate_body.ts +20 -0
- package/src/generated/schemas/userfurssettings.ts +19 -0
- package/src/hooks/create-resource-hooks.test.ts +483 -0
- package/src/hooks/create-resource-hooks.ts +300 -0
- package/src/hooks/use-debounce.ts +12 -0
- package/src/hooks/use-duplicate-document.ts +185 -0
- package/src/hooks/use-media-query.tsx +19 -0
- package/src/hooks/use-mobile.ts +39 -0
- package/src/hooks/use-next-document-number.ts +57 -0
- package/src/hooks/use-resource-mutation.ts +118 -0
- package/src/hooks/use-vies-check.ts +130 -0
- package/src/index.css +11 -0
- package/src/index.html +13 -0
- package/src/index.tsx +12 -0
- package/src/lib/auth.ts +4 -0
- package/src/lib/browser-cookies.ts +70 -0
- package/src/lib/constants.ts +287 -0
- package/src/lib/cookies.ts +36 -0
- package/src/lib/schemas/advance-invoice.ts +43 -0
- package/src/lib/schemas/credit-note.ts +32 -0
- package/src/lib/schemas/estimate.ts +31 -0
- package/src/lib/schemas/index.ts +18 -0
- package/src/lib/schemas/invoice.ts +43 -0
- package/src/lib/schemas/shared.ts +79 -0
- package/src/lib/translation.ts +38 -0
- package/src/lib/utils.ts +6 -0
- package/src/providers/entities-context.tsx +41 -0
- package/src/providers/entities-provider.tsx +201 -0
- package/src/providers/form-footer-context.tsx +72 -0
- package/src/providers/sdk-provider.tsx +164 -0
- package/src/providers/white-label-provider.tsx +91 -0
- package/src/providers/wl-subscription-provider.tsx +277 -0
- package/src/utils/string-helpers.ts +111 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
"FURS is for Slovenian Entities": "FURS is for Slovenian Entities",
|
|
3
|
+
"FURS fiscalization is only available for entities with country code SI":
|
|
4
|
+
"FURS fiscalization is only available for entities with country code SI",
|
|
5
|
+
"Test Mode (Sandbox)": "Test Mode (Sandbox)",
|
|
6
|
+
"This entity is in test mode. FURS invoices will be sent to the test/demo environment. No real fiscalization will occur.":
|
|
7
|
+
"This entity is in test mode. FURS invoices will be sent to the test/demo environment. No real fiscalization will occur.",
|
|
8
|
+
"General Settings": "General Settings",
|
|
9
|
+
Certificate: "Certificate",
|
|
10
|
+
"Business Premises": "Business Premises",
|
|
11
|
+
"Enable FURS fiscalization in General Settings first": "Enable FURS fiscalization in General Settings first",
|
|
12
|
+
"Upload and validate digital certificate first": "Upload and validate digital certificate first",
|
|
13
|
+
"Certificate Required": "Certificate Required",
|
|
14
|
+
"You must upload a digital certificate before you can fiscalize invoices":
|
|
15
|
+
"You must upload a digital certificate before you can fiscalize invoices",
|
|
16
|
+
"Business Premise Required": "Business Premise Required",
|
|
17
|
+
"Register at least one business premise before fiscalizing invoices":
|
|
18
|
+
"Register at least one business premise before fiscalizing invoices",
|
|
19
|
+
"Configure FURS fiscalization behavior": "Configure FURS fiscalization behavior",
|
|
20
|
+
"Configure how FURS fiscalization works for your entity. Enable fiscalization, choose your numbering strategy, and set operator information.":
|
|
21
|
+
"Configure how FURS fiscalization works for your entity. Enable fiscalization, choose your numbering strategy, and set operator information.",
|
|
22
|
+
"Enable FURS Fiscalization": "Enable FURS Fiscalization",
|
|
23
|
+
"Automatically fiscalize invoices with FURS (Financial Administration of Slovenia)":
|
|
24
|
+
"Automatically fiscalize invoices with FURS (Financial Administration of Slovenia)",
|
|
25
|
+
"Numbering Strategy": "Numbering Strategy",
|
|
26
|
+
"Choose how invoice numbers are assigned across your business premises":
|
|
27
|
+
"Choose how invoice numbers are assigned across your business premises",
|
|
28
|
+
"Device-Level (B) - Separate sequences per electronic device":
|
|
29
|
+
"Device-Level (B) - Separate sequences per electronic device",
|
|
30
|
+
"Centralized (C) - Sequential numbers across all premises":
|
|
31
|
+
"Centralized (C) - Sequential numbers across all premises",
|
|
32
|
+
Centralized: "Centralized",
|
|
33
|
+
"Per Device": "Per Device",
|
|
34
|
+
Recommended: "Recommended",
|
|
35
|
+
"One sequence across all premises. Simpler to manage and track.":
|
|
36
|
+
"One sequence across all premises. Simpler to manage and track.",
|
|
37
|
+
"Separate sequence per electronic device. For complex multi-location setups.":
|
|
38
|
+
"Separate sequence per electronic device. For complex multi-location setups.",
|
|
39
|
+
"Operator Information": "Operator Information",
|
|
40
|
+
"Configure default operator for API usage": "Configure default operator for API usage",
|
|
41
|
+
"Operator Tax Number": "Operator Tax Number",
|
|
42
|
+
"Tax number of the operator for API key usage (optional)": "Tax number of the operator for API key usage (optional)",
|
|
43
|
+
"Operator Label": "Operator Label",
|
|
44
|
+
"Descriptive label for the operator (optional)": "Descriptive label for the operator (optional)",
|
|
45
|
+
"Digital Certificate": "Digital Certificate",
|
|
46
|
+
"Upload your FURS digital certificate": "Upload your FURS digital certificate",
|
|
47
|
+
"Your certificate is required to digitally sign all fiscalized invoices. The certificate must be obtained from the Slovenian Financial Administration (FURS).":
|
|
48
|
+
"Your certificate is required to digitally sign all fiscalized invoices. The certificate must be obtained from the Slovenian Financial Administration (FURS).",
|
|
49
|
+
"Once uploaded, your certificate will be validated and you'll be able to register business premises and start fiscalizing invoices.":
|
|
50
|
+
"Once uploaded, your certificate will be validated and you'll be able to register business premises and start fiscalizing invoices.",
|
|
51
|
+
"Invalid file type. Please upload a .p12 or .pfx certificate file.":
|
|
52
|
+
"Invalid file type. Please upload a .p12 or .pfx certificate file.",
|
|
53
|
+
"Please select a certificate file and enter the passphrase":
|
|
54
|
+
"Please select a certificate file and enter the passphrase",
|
|
55
|
+
Valid: "Valid",
|
|
56
|
+
"Expiring Soon": "Expiring Soon",
|
|
57
|
+
Expired: "Expired",
|
|
58
|
+
Missing: "Missing",
|
|
59
|
+
Expires: "Expires",
|
|
60
|
+
Issuer: "Issuer",
|
|
61
|
+
Subject: "Subject",
|
|
62
|
+
"Change Certificate": "Change Certificate",
|
|
63
|
+
"P12/PFX Certificate File": "P12/PFX Certificate File",
|
|
64
|
+
Selected: "Selected",
|
|
65
|
+
"Certificate Passphrase": "Certificate Passphrase",
|
|
66
|
+
"Enter certificate passphrase": "Enter certificate passphrase",
|
|
67
|
+
"Upload Certificate": "Upload Certificate",
|
|
68
|
+
"Upload New Certificate": "Upload New Certificate",
|
|
69
|
+
"Register your business premises with FURS": "Register your business premises with FURS",
|
|
70
|
+
"Each premise must be registered with FURS before you can issue fiscalized invoices from that location. You can register both real estate premises (physical locations) and movable premises (vehicles, market stalls, etc.).":
|
|
71
|
+
"Each premise must be registered with FURS before you can issue fiscalized invoices from that location. You can register both real estate premises (physical locations) and movable premises (vehicles, market stalls, etc.).",
|
|
72
|
+
"After registering a premise, you must manually add at least one electronic device (cash register, POS terminal) for that premise. Click on a premise to manage its devices.":
|
|
73
|
+
"After registering a premise, you must manually add at least one electronic device (cash register, POS terminal) for that premise. Click on a premise to manage its devices.",
|
|
74
|
+
"Add Real Estate": "Add Real Estate",
|
|
75
|
+
"Add Movable": "Add Movable",
|
|
76
|
+
"No premises registered yet": "No premises registered yet",
|
|
77
|
+
Active: "Active",
|
|
78
|
+
Closed: "Closed",
|
|
79
|
+
"Real Estate": "Real Estate",
|
|
80
|
+
Movable: "Movable",
|
|
81
|
+
"Close Premise": "Close Premise",
|
|
82
|
+
"Are you sure you want to close this premise? This action cannot be undone.":
|
|
83
|
+
"Are you sure you want to close this premise? This action cannot be undone.",
|
|
84
|
+
"Test Environment": "Test Environment",
|
|
85
|
+
Production: "Production",
|
|
86
|
+
Vehicle: "Vehicle",
|
|
87
|
+
"Object at Market": "Object at Market",
|
|
88
|
+
Other: "Other",
|
|
89
|
+
Device: "Device",
|
|
90
|
+
Devices: "Devices",
|
|
91
|
+
Unnamed: "Unnamed",
|
|
92
|
+
"No devices registered. Add at least one device to fiscalize invoices.":
|
|
93
|
+
"No devices registered. Add at least one device to fiscalize invoices.",
|
|
94
|
+
Created: "Created",
|
|
95
|
+
"Add Electronic Device": "Add Electronic Device",
|
|
96
|
+
"Register an electronic device (cash register, POS terminal) for this business premise.":
|
|
97
|
+
"Register an electronic device (cash register, POS terminal) for this business premise.",
|
|
98
|
+
"Device Name": "Device Name",
|
|
99
|
+
E1: "E1",
|
|
100
|
+
"Enter a unique name for this device (e.g., E1, E2, POS1, DEVICE1)":
|
|
101
|
+
"Enter a unique name for this device (e.g., E1, E2, POS1, DEVICE1)",
|
|
102
|
+
Cancel: "Cancel",
|
|
103
|
+
"Register Device": "Register Device",
|
|
104
|
+
"Registering...": "Registering...",
|
|
105
|
+
"Register Real Estate Premise": "Register Real Estate Premise",
|
|
106
|
+
"Register Movable Premise": "Register Movable Premise",
|
|
107
|
+
"Register a new business premise with FURS. After registration, you'll need to manually add at least one electronic device for this premise.":
|
|
108
|
+
"Register a new business premise with FURS. After registration, you'll need to manually add at least one electronic device for this premise.",
|
|
109
|
+
"Premise Name": "Premise Name",
|
|
110
|
+
"Unique identifier for this premise (e.g., P1, P2)": "Unique identifier for this premise (e.g., P1, P2)",
|
|
111
|
+
"Cadastral Number": "Cadastral Number",
|
|
112
|
+
"Required by FURS (must be numeric)": "Required by FURS (must be numeric)",
|
|
113
|
+
"Building Number": "Building Number",
|
|
114
|
+
"Building Section": "Building Section",
|
|
115
|
+
"Must be numeric (optional)": "Must be numeric (optional)",
|
|
116
|
+
Community: "Community",
|
|
117
|
+
"Slovenian administrative community (občina) name": "Slovenian administrative community (občina) name",
|
|
118
|
+
Street: "Street",
|
|
119
|
+
"House Number": "House Number",
|
|
120
|
+
Additional: "Additional",
|
|
121
|
+
City: "City",
|
|
122
|
+
"Postal Code": "Postal Code",
|
|
123
|
+
"Choose how invoice numbers are generated": "Choose how invoice numbers are generated",
|
|
124
|
+
"Strategy B (Device-level)": "Strategy B (Device-level)",
|
|
125
|
+
"Strategy C (Centralized)": "Strategy C (Centralized)",
|
|
126
|
+
"Premise Type": "Premise Type",
|
|
127
|
+
"Type of movable business premise": "Type of movable business premise",
|
|
128
|
+
"A - Vehicle": "A - Vehicle",
|
|
129
|
+
"B - Object at Market/Fair": "B - Object at Market/Fair",
|
|
130
|
+
"C - Other Movable": "C - Other Movable",
|
|
131
|
+
"Register Premise": "Register Premise",
|
|
132
|
+
"Save Settings": "Save Settings",
|
|
133
|
+
"Saving...": "Saving...",
|
|
134
|
+
"Loading...": "Loading...",
|
|
135
|
+
"FURS Fiscalization": "FURS Fiscalization",
|
|
136
|
+
"Slovenian tax authority fiscalization details": "Slovenian tax authority fiscalization details",
|
|
137
|
+
Fiscalized: "Fiscalized",
|
|
138
|
+
Pending: "Pending",
|
|
139
|
+
Failed: "Failed",
|
|
140
|
+
"Fiscalization Error": "Fiscalization Error",
|
|
141
|
+
Cancelled: "Cancelled",
|
|
142
|
+
ZOI: "ZOI",
|
|
143
|
+
EOR: "EOR",
|
|
144
|
+
"Cancellation EOR": "Cancellation EOR",
|
|
145
|
+
"Electronic Device": "Electronic Device",
|
|
146
|
+
"Invoice Number": "Invoice Number",
|
|
147
|
+
Iteration: "Iteration",
|
|
148
|
+
"QR Code": "QR Code",
|
|
149
|
+
"Fiscalized at": "Fiscalized at",
|
|
150
|
+
// New flow translations
|
|
151
|
+
"Enable Fiscalization": "Enable Fiscalization",
|
|
152
|
+
"Turn on FURS fiscalization for invoices": "Turn on FURS fiscalization for invoices",
|
|
153
|
+
"Setup Checklist": "Setup Checklist",
|
|
154
|
+
"Valid certificate uploaded": "Valid certificate uploaded",
|
|
155
|
+
"At least one business premise registered": "At least one business premise registered",
|
|
156
|
+
"At least one electronic device registered": "At least one electronic device registered",
|
|
157
|
+
"Cannot Enable Fiscalization": "Cannot Enable Fiscalization",
|
|
158
|
+
"Complete all prerequisites above before enabling FURS fiscalization.":
|
|
159
|
+
"Complete all prerequisites above before enabling FURS fiscalization.",
|
|
160
|
+
"Once enabled, all new invoices will be automatically fiscalized with FURS":
|
|
161
|
+
"Once enabled, all new invoices will be automatically fiscalized with FURS",
|
|
162
|
+
"Warning: Disabling fiscalization will prevent new invoices from being fiscalized.":
|
|
163
|
+
"Warning: Disabling fiscalization will prevent new invoices from being fiscalized.",
|
|
164
|
+
"Register at least one business premise first": "Register at least one business premise first",
|
|
165
|
+
"Register at least one electronic device first": "Register at least one electronic device first",
|
|
166
|
+
"Activate FURS fiscalization for your invoices": "Activate FURS fiscalization for your invoices",
|
|
167
|
+
"Once enabled, all new invoices will be automatically sent to FURS for fiscalization. Make sure you have completed all the setup steps before enabling.":
|
|
168
|
+
"Once enabled, all new invoices will be automatically sent to FURS for fiscalization. Make sure you have completed all the setup steps before enabling.",
|
|
169
|
+
"You can disable fiscalization at any time, but note that invoices issued while disabled will not be fiscalized.":
|
|
170
|
+
"You can disable fiscalization at any time, but note that invoices issued while disabled will not be fiscalized.",
|
|
171
|
+
"You must upload a digital certificate before you can register business premises":
|
|
172
|
+
"You must upload a digital certificate before you can register business premises",
|
|
173
|
+
// User FURS settings
|
|
174
|
+
"Your Operator Settings": "Your Operator Settings",
|
|
175
|
+
"Your personal operator info for FURS invoices": "Your personal operator info for FURS invoices",
|
|
176
|
+
"Save Operator Settings": "Save Operator Settings",
|
|
177
|
+
"Your tax number for FURS fiscalization": "Your tax number for FURS fiscalization",
|
|
178
|
+
"Your name or identifier for FURS invoices": "Your name or identifier for FURS invoices",
|
|
179
|
+
"Your Name": "Your Name",
|
|
180
|
+
"Fiscalization Settings": "Fiscalization Settings",
|
|
181
|
+
"Advanced Settings": "Advanced Settings",
|
|
182
|
+
"API Default Operator": "API Default Operator",
|
|
183
|
+
"Default operator settings for API key usage (when no user context)":
|
|
184
|
+
"Default operator settings for API key usage (when no user context)",
|
|
185
|
+
"Tax number for API key usage (optional)": "Tax number for API key usage (optional)",
|
|
186
|
+
"Operator label for API key usage (optional)": "Operator label for API key usage (optional)",
|
|
187
|
+
// Updated help text
|
|
188
|
+
"Your personal tax number and label that appear on FURS invoices you issue. Each user can have their own operator info.":
|
|
189
|
+
"Your personal tax number and label that appear on FURS invoices you issue. Each user can have their own operator info.",
|
|
190
|
+
"Choose the numbering strategy for your invoices. Device-level creates separate sequences per device, centralized uses one sequence across all premises.":
|
|
191
|
+
"Choose the numbering strategy for your invoices. Device-level creates separate sequences per device, centralized uses one sequence across all premises.",
|
|
192
|
+
"Default operator info used when invoices are created via API without a logged-in user.":
|
|
193
|
+
"Default operator info used when invoices are created via API without a logged-in user.",
|
|
194
|
+
} as const;
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
"FURS is for Slovenian Entities": "FURS je samo za slovenska podjetja",
|
|
3
|
+
"FURS fiscalization is only available for entities with country code SI":
|
|
4
|
+
"Fiskalizacija FURS je na voljo samo za podjetja z državo SI (Slovenija)",
|
|
5
|
+
"Test Mode (Sandbox)": "Testni način (Sandbox)",
|
|
6
|
+
"This entity is in test mode. FURS invoices will be sent to the test/demo environment. No real fiscalization will occur.":
|
|
7
|
+
"To podjetje je v testnem načinu. FURS računi bodo poslani v testno/demo okolje. Prava fiskalizacija se ne bo izvedla.",
|
|
8
|
+
"General Settings": "Splošne nastavitve",
|
|
9
|
+
Certificate: "Certifikat",
|
|
10
|
+
"Business Premises": "Poslovni prostori",
|
|
11
|
+
"Business Premise": "Poslovni prostor",
|
|
12
|
+
"Enable FURS fiscalization in General Settings first": "Najprej omogočite fiskalizacijo FURS v splošnih nastavitvah",
|
|
13
|
+
"Upload and validate digital certificate first": "Najprej naložite in potrdite digitalni certifikat",
|
|
14
|
+
"Certificate Required": "Certifikat je obvezen",
|
|
15
|
+
"You must upload a digital certificate before you can fiscalize invoices":
|
|
16
|
+
"Naložiti morate digitalni certifikat, preden lahko fiskalizirate račune",
|
|
17
|
+
"Business Premise Required": "Obvezna registracija prostora",
|
|
18
|
+
"Register at least one business premise before fiscalizing invoices":
|
|
19
|
+
"Registrirajte vsaj en poslovni prostor, preden fiskalizirate račune",
|
|
20
|
+
"Configure FURS fiscalization behavior": "Konfigurirajte obnašanje fiskalizacije FURS",
|
|
21
|
+
"Configure how FURS fiscalization works for your entity. Enable fiscalization, choose your numbering strategy, and set operator information.":
|
|
22
|
+
"Konfigurirajte, kako deluje fiskalizacija FURS za vaše podjetje. Omogočite fiskalizacijo, izberite strategijo številčenja in nastavite informacije o operaterju.",
|
|
23
|
+
"Enable FURS Fiscalization": "Omogoči fiskalizacijo FURS",
|
|
24
|
+
"Automatically fiscalize invoices with FURS (Financial Administration of Slovenia)":
|
|
25
|
+
"Samodejno fiskaliziraj račune z FURS (Finančna uprava Republike Slovenije)",
|
|
26
|
+
"Numbering Strategy": "Strategija številčenja",
|
|
27
|
+
"Choose how invoice numbers are assigned across your business premises":
|
|
28
|
+
"Izberite način dodeljevanja številk računov v vaših poslovnih prostorih",
|
|
29
|
+
"Device-Level (B) - Separate sequences per electronic device":
|
|
30
|
+
"Na ravni naprave (B) - Ločene sekvence za vsako elektronsko napravo",
|
|
31
|
+
"Centralized (C) - Sequential numbers across all premises":
|
|
32
|
+
"Centralizirano (C) - Zaporedne številke preko vseh prostorov",
|
|
33
|
+
Centralized: "Centralizirano",
|
|
34
|
+
"Per Device": "Po napravi",
|
|
35
|
+
Recommended: "Priporočeno",
|
|
36
|
+
"One sequence across all premises. Simpler to manage and track.":
|
|
37
|
+
"Ena sekvenca za vse prostore. Enostavnejše za upravljanje in sledenje.",
|
|
38
|
+
"Separate sequence per electronic device. For complex multi-location setups.":
|
|
39
|
+
"Ločena sekvenca za vsako napravo. Za kompleksne nastavitve z več lokacijami.",
|
|
40
|
+
"Operator Information": "Informacije o operaterju",
|
|
41
|
+
"Configure default operator for API usage": "Konfigurirajte privzetega operaterja za uporabo API-ja",
|
|
42
|
+
"Operator Tax Number": "Davčna številka operaterja",
|
|
43
|
+
"Tax number of the operator for API key usage (optional)":
|
|
44
|
+
"Davčna številka operaterja za uporabo z API ključem (opcijsko)",
|
|
45
|
+
"Operator Label": "Oznaka operaterja",
|
|
46
|
+
"Descriptive label for the operator (optional)": "Opisna oznaka za operaterja (opcijsko)",
|
|
47
|
+
"Digital Certificate": "Digitalni certifikat",
|
|
48
|
+
"Upload your FURS digital certificate": "Naložite svoj digitalni certifikat FURS",
|
|
49
|
+
"Your certificate is required to digitally sign all fiscalized invoices. The certificate must be obtained from the Slovenian Financial Administration (FURS).":
|
|
50
|
+
"Vaš certifikat je potreben za digitalno podpisovanje vseh fiskaliziranih računov. Certifikat morate pridobiti pri Finančni upravi Republike Slovenije (FURS).",
|
|
51
|
+
"Once uploaded, your certificate will be validated and you'll be able to register business premises and start fiscalizing invoices.":
|
|
52
|
+
"Po nalaganju bo vaš certifikat potrjen in lahko boste registrirali poslovne prostore ter začeli fiskalizirati račune.",
|
|
53
|
+
"Invalid file type. Please upload a .p12 or .pfx certificate file.":
|
|
54
|
+
"Neveljavna vrsta datoteke. Prosimo, naložite datoteko certifikata .p12 ali .pfx.",
|
|
55
|
+
"Please select a certificate file and enter the passphrase":
|
|
56
|
+
"Prosimo, izberite datoteko certifikata in vnesite geslo",
|
|
57
|
+
Valid: "Veljaven",
|
|
58
|
+
"Expiring Soon": "Kmalu poteče",
|
|
59
|
+
Expired: "Potekel",
|
|
60
|
+
Missing: "Manjka",
|
|
61
|
+
Expires: "Poteče",
|
|
62
|
+
Issuer: "Izdajatelj",
|
|
63
|
+
Subject: "Subjekt",
|
|
64
|
+
"Change Certificate": "Spremeni certifikat",
|
|
65
|
+
"P12/PFX Certificate File": "Datoteka certifikata P12/PFX",
|
|
66
|
+
Selected: "Izbrano",
|
|
67
|
+
"Certificate Passphrase": "Geslo certifikata",
|
|
68
|
+
"Enter certificate passphrase": "Vnesite geslo certifikata",
|
|
69
|
+
"Upload Certificate": "Naloži certifikat",
|
|
70
|
+
"Upload New Certificate": "Naloži nov certifikat",
|
|
71
|
+
"Register your business premises with FURS": "Registrirajte svoje poslovne prostore pri FURS",
|
|
72
|
+
"Each premise must be registered with FURS before you can issue fiscalized invoices from that location. You can register both real estate premises (physical locations) and movable premises (vehicles, market stalls, etc.).":
|
|
73
|
+
"Vsak prostor mora biti registriran pri FURS, preden lahko s te lokacije izdajate fiskalizirane račune. Registrirate lahko tako nepremične prostore (fizične lokacije) kot premične prostore (vozila, stojnice na tržnici itd.).",
|
|
74
|
+
"After registering a premise, you must manually add at least one electronic device (cash register, POS terminal) for that premise. Click on a premise to manage its devices.":
|
|
75
|
+
"Po registraciji prostora morate ročno dodati vsaj eno elektronsko napravo (blagajno, POS terminal) za ta prostor. Kliknite na prostor za upravljanje njegovih naprav.",
|
|
76
|
+
"Add Real Estate": "Dodaj nepremičnino",
|
|
77
|
+
"Add Movable": "Dodaj premičnino",
|
|
78
|
+
"No premises registered yet": "Še ni registriranih prostorov",
|
|
79
|
+
Active: "Aktiven",
|
|
80
|
+
Closed: "Zaprt",
|
|
81
|
+
"Real Estate": "Nepremičnina",
|
|
82
|
+
Movable: "Premična enota",
|
|
83
|
+
"Close Premise": "Zapri prostor",
|
|
84
|
+
"Are you sure you want to close this premise? This action cannot be undone.":
|
|
85
|
+
"Ali ste prepričani, da želite zapreti ta prostor? Tega dejanja ni mogoče razveljaviti.",
|
|
86
|
+
"Test Environment": "Testno okolje",
|
|
87
|
+
Production: "Produkcija",
|
|
88
|
+
Vehicle: "Vozilo",
|
|
89
|
+
"Object at Market": "Objekt na tržnici",
|
|
90
|
+
Other: "Drugo",
|
|
91
|
+
Device: "Naprava",
|
|
92
|
+
Devices: "Naprave",
|
|
93
|
+
Unnamed: "Neimenovana",
|
|
94
|
+
"No devices registered. Add at least one device to fiscalize invoices.":
|
|
95
|
+
"Ni registriranih naprav. Dodajte vsaj eno napravo za fiskalizacijo računov.",
|
|
96
|
+
Created: "Ustvarjeno",
|
|
97
|
+
"Add Electronic Device": "Dodaj elektronsko napravo",
|
|
98
|
+
"Register an electronic device (cash register, POS terminal) for this business premise.":
|
|
99
|
+
"Registrirajte elektronsko napravo (blagajno, POS terminal) za ta poslovni prostor.",
|
|
100
|
+
"Device Name": "Ime naprave",
|
|
101
|
+
E1: "E1",
|
|
102
|
+
"Enter a unique name for this device (e.g., E1, E2, POS1, DEVICE1)":
|
|
103
|
+
"Vnesite edinstveno ime za to napravo (npr. E1, E2, POS1, BLAGAJNA1)",
|
|
104
|
+
Cancel: "Prekliči",
|
|
105
|
+
"Register Device": "Registriraj napravo",
|
|
106
|
+
"Registering...": "Registracija...",
|
|
107
|
+
"Register Real Estate Premise": "Registriraj nepremični prostor",
|
|
108
|
+
"Register Movable Premise": "Registriraj premični prostor",
|
|
109
|
+
"Register a new business premise with FURS. After registration, you'll need to manually add at least one electronic device for this premise.":
|
|
110
|
+
"Registrirajte nov poslovni prostor pri FURS. Po registraciji boste morali ročno dodati vsaj eno elektronsko napravo za ta prostor.",
|
|
111
|
+
"Premise Name": "Ime prostora",
|
|
112
|
+
"Unique identifier for this premise (e.g., P1, P2)": "Edinstven identifikator za ta prostor (npr. P1, P2)",
|
|
113
|
+
"Cadastral Number": "Katastrska občina",
|
|
114
|
+
"Required by FURS (must be numeric)": "Obvezno za FURS (mora biti številka)",
|
|
115
|
+
"Building Number": "Številka stavbe",
|
|
116
|
+
"Building Section": "Del stavbe",
|
|
117
|
+
"Must be numeric (optional)": "Mora biti številka (opcijsko)",
|
|
118
|
+
Community: "Občina",
|
|
119
|
+
"Slovenian administrative community (občina) name": "Ime slovenske upravne občine",
|
|
120
|
+
Street: "Ulica",
|
|
121
|
+
"House Number": "Hišna številka",
|
|
122
|
+
Additional: "Dodatek k h.št.",
|
|
123
|
+
City: "Naselje",
|
|
124
|
+
"Postal Code": "Poštna številka",
|
|
125
|
+
"Choose how invoice numbers are generated": "Izberite način generiranja številk računov",
|
|
126
|
+
"Strategy B (Device-level)": "Strategija B (Na ravni naprave)",
|
|
127
|
+
"Strategy C (Centralized)": "Strategija C (Centralizirano)",
|
|
128
|
+
"Premise Type": "Vrsta prostora",
|
|
129
|
+
"Type of movable business premise": "Vrsta premičnega poslovnega prostora",
|
|
130
|
+
"A - Vehicle": "A - Vozilo",
|
|
131
|
+
"B - Object at Market/Fair": "B - Objekt na tržnici/sejmu",
|
|
132
|
+
"C - Other Movable": "C - Drugo premično",
|
|
133
|
+
"Register Premise": "Registriraj prostor",
|
|
134
|
+
"Save Settings": "Shrani nastavitve",
|
|
135
|
+
"Saving...": "Shranjevanje...",
|
|
136
|
+
"Loading...": "Nalaganje...",
|
|
137
|
+
"FURS Fiscalization": "FURS Fiskalisacija",
|
|
138
|
+
"Slovenian tax authority fiscalization details": "Podrobnosti fiskalizacije pri Finančni upravi RS",
|
|
139
|
+
Fiscalized: "Fiskalizirano",
|
|
140
|
+
Pending: "V teku",
|
|
141
|
+
Failed: "Neuspešno",
|
|
142
|
+
"Fiscalization Error": "Napaka pri fiskalizaciji",
|
|
143
|
+
Cancelled: "Preklicano",
|
|
144
|
+
ZOI: "ZOI",
|
|
145
|
+
EOR: "EOR",
|
|
146
|
+
"Cancellation EOR": "EOR preklica",
|
|
147
|
+
"Electronic Device": "Elektronska naprava",
|
|
148
|
+
"Invoice Number": "Številka računa",
|
|
149
|
+
Iteration: "Iteracija",
|
|
150
|
+
"QR Code": "QR koda",
|
|
151
|
+
"Fiscalized at": "Fiskalizirano dne",
|
|
152
|
+
// New flow translations
|
|
153
|
+
"Enable Fiscalization": "Omogoči fiskalizacijo",
|
|
154
|
+
"Turn on FURS fiscalization for invoices": "Vklopite fiskalizacijo FURS za račune",
|
|
155
|
+
"Setup Checklist": "Kontrolni seznam nastavitev",
|
|
156
|
+
"Valid certificate uploaded": "Veljaven certifikat naložen",
|
|
157
|
+
"At least one business premise registered": "Vsaj en poslovni prostor registriran",
|
|
158
|
+
"At least one electronic device registered": "Vsaj ena elektronska naprava registrirana",
|
|
159
|
+
"Cannot Enable Fiscalization": "Fiskalizacije ni mogoče omogočiti",
|
|
160
|
+
"Complete all prerequisites above before enabling FURS fiscalization.":
|
|
161
|
+
"Izpolnite vse zgornje pogoje, preden omogočite fiskalizacijo FURS.",
|
|
162
|
+
"Once enabled, all new invoices will be automatically fiscalized with FURS":
|
|
163
|
+
"Po omogočenju bodo vsi novi računi samodejno fiskalizirani pri FURS",
|
|
164
|
+
"Warning: Disabling fiscalization will prevent new invoices from being fiscalized.":
|
|
165
|
+
"Opozorilo: Onemogočenje fiskalizacije bo preprečilo fiskalizacijo novih računov.",
|
|
166
|
+
"Register at least one business premise first": "Najprej registrirajte vsaj en poslovni prostor",
|
|
167
|
+
"Register at least one electronic device first": "Najprej registrirajte vsaj eno elektronsko napravo",
|
|
168
|
+
"Activate FURS fiscalization for your invoices": "Aktivirajte fiskalizacijo FURS za vaše račune",
|
|
169
|
+
"Once enabled, all new invoices will be automatically sent to FURS for fiscalization. Make sure you have completed all the setup steps before enabling.":
|
|
170
|
+
"Po omogočenju bodo vsi novi računi samodejno poslani FURS za fiskalizacijo. Prepričajte se, da ste pred omogočenjem dokončali vse korake nastavitve.",
|
|
171
|
+
"You can disable fiscalization at any time, but note that invoices issued while disabled will not be fiscalized.":
|
|
172
|
+
"Fiskalizacijo lahko kadarkoli onemogočite, vendar vedite, da računi, izdani med onemogočenjem, ne bodo fiskalizirani.",
|
|
173
|
+
"You must upload a digital certificate before you can register business premises":
|
|
174
|
+
"Naložiti morate digitalni certifikat, preden lahko registrirate poslovne prostore",
|
|
175
|
+
// User FURS settings
|
|
176
|
+
"Your Operator Settings": "Vaše nastavitve operaterja",
|
|
177
|
+
"Your personal operator info for FURS invoices": "Vaši osebni podatki operaterja za FURS račune",
|
|
178
|
+
"Save Operator Settings": "Shrani nastavitve operaterja",
|
|
179
|
+
"Your tax number for FURS fiscalization": "Vaša davčna številka za fiskalizacijo FURS",
|
|
180
|
+
"Your name or identifier for FURS invoices": "Vaše ime ali identifikator za FURS račune",
|
|
181
|
+
"Your Name": "Vaše ime",
|
|
182
|
+
"Fiscalization Settings": "Nastavitve fiskalizacije",
|
|
183
|
+
"Advanced Settings": "Napredne nastavitve",
|
|
184
|
+
"API Default Operator": "Privzeti operater za API",
|
|
185
|
+
"Default operator settings for API key usage (when no user context)":
|
|
186
|
+
"Privzete nastavitve operaterja za uporabo API ključa (ko ni uporabniškega konteksta)",
|
|
187
|
+
"Tax number for API key usage (optional)": "Davčna številka za uporabo API ključa (opcijsko)",
|
|
188
|
+
"Operator label for API key usage (optional)": "Oznaka operaterja za uporabo API ključa (opcijsko)",
|
|
189
|
+
// Updated help text
|
|
190
|
+
"Your personal tax number and label that appear on FURS invoices you issue. Each user can have their own operator info.":
|
|
191
|
+
"Vaša osebna davčna številka in oznaka, ki se pojavita na FURS računih, ki jih izdajate. Vsak uporabnik ima lahko svoje podatke operaterja.",
|
|
192
|
+
"Choose the numbering strategy for your invoices. Device-level creates separate sequences per device, centralized uses one sequence across all premises.":
|
|
193
|
+
"Izberite strategijo številčenja za vaše račune. Na ravni naprave ustvari ločene sekvence za vsako napravo, centralizirano pa uporablja eno sekvenco preko vseh prostorov.",
|
|
194
|
+
"Default operator info used when invoices are created via API without a logged-in user.":
|
|
195
|
+
"Privzeti podatki operaterja, ki se uporabljajo, ko so računi ustvarjeni preko API-ja brez prijavljenega uporabnika.",
|
|
196
|
+
} as const;
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import type { Entity, GetFursSettings200Response } from "@spaceinvoices/js-sdk";
|
|
2
|
+
import { AlertCircle, CheckCircle2, ShieldCheck, Upload, XCircle } from "lucide-react";
|
|
3
|
+
import { type FC, type ReactNode, useEffect, useState } from "react";
|
|
4
|
+
import { Alert, AlertDescription, AlertTitle } from "@/ui/components/ui/alert";
|
|
5
|
+
import { Button } from "@/ui/components/ui/button";
|
|
6
|
+
import { Input } from "@/ui/components/ui/input";
|
|
7
|
+
import { Label } from "@/ui/components/ui/label";
|
|
8
|
+
import { cn } from "@/ui/lib/utils";
|
|
9
|
+
import { useUploadFursCertificate } from "../furs-settings.hooks";
|
|
10
|
+
import type { SectionType } from "../furs-settings-form";
|
|
11
|
+
|
|
12
|
+
interface CertificateSettingsSectionProps {
|
|
13
|
+
entity: Entity;
|
|
14
|
+
fursSettings?: GetFursSettings200Response;
|
|
15
|
+
t: (key: string) => string;
|
|
16
|
+
onSuccess?: () => void;
|
|
17
|
+
onError?: (error: unknown) => void;
|
|
18
|
+
wrapSection?: (section: SectionType, content: ReactNode) => ReactNode;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const CertificateSettingsSection: FC<CertificateSettingsSectionProps> = ({
|
|
22
|
+
entity,
|
|
23
|
+
fursSettings,
|
|
24
|
+
t,
|
|
25
|
+
onSuccess,
|
|
26
|
+
onError,
|
|
27
|
+
wrapSection,
|
|
28
|
+
}) => {
|
|
29
|
+
const wrap = (section: SectionType, content: ReactNode) => (wrapSection ? wrapSection(section, content) : content);
|
|
30
|
+
const [certificateFile, setCertificateFile] = useState<File | null>(null);
|
|
31
|
+
const [passphrase, setPassphrase] = useState("");
|
|
32
|
+
const [showUploadForm, setShowUploadForm] = useState(false);
|
|
33
|
+
|
|
34
|
+
const hasCertificate = fursSettings?.has_certificate || false;
|
|
35
|
+
|
|
36
|
+
// Initialize form visibility based on whether certificate exists
|
|
37
|
+
// If certificate already exists on mount, hide the upload form
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
if (fursSettings && hasCertificate) {
|
|
40
|
+
setShowUploadForm(false);
|
|
41
|
+
}
|
|
42
|
+
}, [fursSettings, hasCertificate]);
|
|
43
|
+
|
|
44
|
+
const { mutate: uploadCertificate, isPending } = useUploadFursCertificate({
|
|
45
|
+
onSuccess: () => {
|
|
46
|
+
setCertificateFile(null);
|
|
47
|
+
setPassphrase("");
|
|
48
|
+
setShowUploadForm(false); // Hide form after successful upload
|
|
49
|
+
onSuccess?.();
|
|
50
|
+
},
|
|
51
|
+
onError: (error) => {
|
|
52
|
+
onError?.(error);
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
57
|
+
const file = e.target.files?.[0];
|
|
58
|
+
if (file) {
|
|
59
|
+
// Validate file extension (P12/PFX)
|
|
60
|
+
const validExtensions = [".p12", ".pfx"];
|
|
61
|
+
const fileExtension = file.name.toLowerCase().substring(file.name.lastIndexOf("."));
|
|
62
|
+
|
|
63
|
+
if (!validExtensions.includes(fileExtension)) {
|
|
64
|
+
onError?.(new Error(t("Invalid file type. Please upload a .p12 or .pfx certificate file.")));
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
setCertificateFile(file);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const handleUpload = () => {
|
|
73
|
+
if (!certificateFile || !passphrase) {
|
|
74
|
+
onError?.(new Error(t("Please select a certificate file and enter the passphrase")));
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
uploadCertificate({
|
|
79
|
+
entityId: entity.id,
|
|
80
|
+
file: certificateFile,
|
|
81
|
+
passphrase: passphrase.trim(), // Trim whitespace just in case
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const certificateStatus = fursSettings?.certificate_status || "missing";
|
|
86
|
+
|
|
87
|
+
// Show upload form if: no certificate exists OR user clicked "Change Certificate"
|
|
88
|
+
const shouldShowUploadForm = !hasCertificate || showUploadForm;
|
|
89
|
+
|
|
90
|
+
// Status display configuration with dark mode support
|
|
91
|
+
const statusConfig = {
|
|
92
|
+
valid: {
|
|
93
|
+
icon: CheckCircle2,
|
|
94
|
+
variant: "default" as const,
|
|
95
|
+
iconColor: "text-green-600 dark:text-green-400",
|
|
96
|
+
label: t("Valid"),
|
|
97
|
+
},
|
|
98
|
+
expiring_soon: {
|
|
99
|
+
icon: AlertCircle,
|
|
100
|
+
variant: "default" as const,
|
|
101
|
+
iconColor: "text-yellow-600 dark:text-yellow-400",
|
|
102
|
+
label: t("Expiring Soon"),
|
|
103
|
+
},
|
|
104
|
+
expired: {
|
|
105
|
+
icon: XCircle,
|
|
106
|
+
variant: "destructive" as const,
|
|
107
|
+
iconColor: "text-red-600 dark:text-red-400",
|
|
108
|
+
label: t("Expired"),
|
|
109
|
+
},
|
|
110
|
+
missing: {
|
|
111
|
+
icon: AlertCircle,
|
|
112
|
+
variant: "default" as const,
|
|
113
|
+
iconColor: "text-muted-foreground",
|
|
114
|
+
label: t("Missing"),
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
const currentStatus = statusConfig[certificateStatus];
|
|
119
|
+
const StatusIcon = currentStatus.icon;
|
|
120
|
+
|
|
121
|
+
const certificateContent = (
|
|
122
|
+
<div className="space-y-4">
|
|
123
|
+
<div className="flex items-center gap-3">
|
|
124
|
+
<div className="flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10">
|
|
125
|
+
<ShieldCheck className="h-5 w-5 text-primary" />
|
|
126
|
+
</div>
|
|
127
|
+
<div>
|
|
128
|
+
<h3 className="font-semibold text-lg">{t("Digital Certificate")}</h3>
|
|
129
|
+
<p className="text-muted-foreground text-sm">{t("Upload your FURS digital certificate")}</p>
|
|
130
|
+
</div>
|
|
131
|
+
</div>
|
|
132
|
+
|
|
133
|
+
<div className="space-y-6">
|
|
134
|
+
{/* Certificate Status - Show when certificate exists */}
|
|
135
|
+
{hasCertificate && (
|
|
136
|
+
<div className="space-y-4">
|
|
137
|
+
<Alert variant={currentStatus.variant}>
|
|
138
|
+
<StatusIcon className={cn("h-4 w-4", currentStatus.iconColor)} />
|
|
139
|
+
<AlertTitle>Certificate Status: {currentStatus.label}</AlertTitle>
|
|
140
|
+
<AlertDescription className="space-y-2">
|
|
141
|
+
{fursSettings?.certificate_expiry && (
|
|
142
|
+
<div className="text-sm">
|
|
143
|
+
{t("Expires")}: {new Date(fursSettings.certificate_expiry).toLocaleDateString()}
|
|
144
|
+
</div>
|
|
145
|
+
)}
|
|
146
|
+
{(fursSettings as any)?.certificate_issuer && (
|
|
147
|
+
<div className="text-muted-foreground text-sm">
|
|
148
|
+
{t("Issuer")}: {(fursSettings as any).certificate_issuer}
|
|
149
|
+
</div>
|
|
150
|
+
)}
|
|
151
|
+
{(fursSettings as any)?.certificate_subject && (
|
|
152
|
+
<div className="text-muted-foreground text-sm">
|
|
153
|
+
{t("Subject")}: {(fursSettings as any).certificate_subject}
|
|
154
|
+
</div>
|
|
155
|
+
)}
|
|
156
|
+
</AlertDescription>
|
|
157
|
+
</Alert>
|
|
158
|
+
|
|
159
|
+
{/* Change Certificate Button */}
|
|
160
|
+
{!showUploadForm && (
|
|
161
|
+
<Button
|
|
162
|
+
type="button"
|
|
163
|
+
variant="outline"
|
|
164
|
+
onClick={() => setShowUploadForm(true)}
|
|
165
|
+
className="w-full cursor-pointer"
|
|
166
|
+
>
|
|
167
|
+
<Upload className="mr-2 h-4 w-4" />
|
|
168
|
+
{t("Change Certificate")}
|
|
169
|
+
</Button>
|
|
170
|
+
)}
|
|
171
|
+
</div>
|
|
172
|
+
)}
|
|
173
|
+
|
|
174
|
+
{/* Upload Form - Show when no certificate OR user clicked "Change Certificate" */}
|
|
175
|
+
{shouldShowUploadForm && (
|
|
176
|
+
<div className="space-y-4">
|
|
177
|
+
<div className="space-y-2">
|
|
178
|
+
<Label htmlFor="certificate-file">{t("P12/PFX Certificate File")}</Label>
|
|
179
|
+
<div className="flex items-center gap-3">
|
|
180
|
+
<Input
|
|
181
|
+
id="certificate-file"
|
|
182
|
+
type="file"
|
|
183
|
+
accept=".p12,.pfx"
|
|
184
|
+
onChange={handleFileChange}
|
|
185
|
+
disabled={isPending}
|
|
186
|
+
className="flex-1"
|
|
187
|
+
/>
|
|
188
|
+
{certificateFile && <CheckCircle2 className="h-5 w-5 text-green-500" />}
|
|
189
|
+
</div>
|
|
190
|
+
{certificateFile && (
|
|
191
|
+
<p className="text-muted-foreground text-sm">
|
|
192
|
+
{t("Selected")}: {certificateFile.name}
|
|
193
|
+
</p>
|
|
194
|
+
)}
|
|
195
|
+
</div>
|
|
196
|
+
|
|
197
|
+
<div className="space-y-2">
|
|
198
|
+
<Label htmlFor="passphrase">{t("Certificate Passphrase")}</Label>
|
|
199
|
+
<Input
|
|
200
|
+
id="passphrase"
|
|
201
|
+
type="password"
|
|
202
|
+
value={passphrase}
|
|
203
|
+
onChange={(e) => setPassphrase(e.target.value)}
|
|
204
|
+
disabled={isPending}
|
|
205
|
+
placeholder={t("Enter certificate passphrase")}
|
|
206
|
+
/>
|
|
207
|
+
</div>
|
|
208
|
+
|
|
209
|
+
<div className="flex gap-3">
|
|
210
|
+
{hasCertificate && showUploadForm && (
|
|
211
|
+
<Button
|
|
212
|
+
type="button"
|
|
213
|
+
variant="outline"
|
|
214
|
+
onClick={() => {
|
|
215
|
+
setShowUploadForm(false);
|
|
216
|
+
setCertificateFile(null);
|
|
217
|
+
setPassphrase("");
|
|
218
|
+
}}
|
|
219
|
+
disabled={isPending}
|
|
220
|
+
className="flex-1 cursor-pointer"
|
|
221
|
+
>
|
|
222
|
+
{t("Cancel")}
|
|
223
|
+
</Button>
|
|
224
|
+
)}
|
|
225
|
+
<Button
|
|
226
|
+
type="button"
|
|
227
|
+
onClick={handleUpload}
|
|
228
|
+
disabled={!certificateFile || !passphrase || isPending}
|
|
229
|
+
className={cn(hasCertificate && showUploadForm ? "flex-1" : "w-full", "cursor-pointer")}
|
|
230
|
+
>
|
|
231
|
+
<Upload className="mr-2 h-4 w-4" />
|
|
232
|
+
{isPending ? t("Loading...") : hasCertificate ? t("Upload New Certificate") : t("Upload Certificate")}
|
|
233
|
+
</Button>
|
|
234
|
+
</div>
|
|
235
|
+
</div>
|
|
236
|
+
)}
|
|
237
|
+
</div>
|
|
238
|
+
</div>
|
|
239
|
+
);
|
|
240
|
+
|
|
241
|
+
return <>{wrap("certificate-upload", certificateContent)}</>;
|
|
242
|
+
};
|