@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,320 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FURS Settings Hooks
|
|
3
|
+
* TanStack Query hooks for FURS settings management
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type {
|
|
7
|
+
FursBusinessPremise,
|
|
8
|
+
GetFursCertificate200,
|
|
9
|
+
GetFursSettings200,
|
|
10
|
+
RegisterFursMovablePremiseBody,
|
|
11
|
+
RegisterFursRealEstatePremiseBody,
|
|
12
|
+
UpdateFursSettingsBody,
|
|
13
|
+
UpdateUserFursSettingsBody,
|
|
14
|
+
User,
|
|
15
|
+
} from "@spaceinvoices/js-sdk";
|
|
16
|
+
import {
|
|
17
|
+
type UseMutationOptions,
|
|
18
|
+
type UseQueryOptions,
|
|
19
|
+
useMutation,
|
|
20
|
+
useQuery,
|
|
21
|
+
useQueryClient,
|
|
22
|
+
} from "@tanstack/react-query";
|
|
23
|
+
import { useMemo } from "react";
|
|
24
|
+
import { useSDK } from "../../../providers/sdk-provider";
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Query Keys
|
|
28
|
+
*/
|
|
29
|
+
export const fursQueryKeys = {
|
|
30
|
+
settings: (entityId: string) => ["furs", "settings", entityId] as const,
|
|
31
|
+
premises: (entityId: string) => ["furs", "premises", entityId] as const,
|
|
32
|
+
premise: (premiseId: string) => ["furs", "premise", premiseId] as const,
|
|
33
|
+
devices: (premiseId: string) => ["furs", "devices", premiseId] as const,
|
|
34
|
+
currentUser: () => ["user", "me"] as const,
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Hook: Get FURS settings
|
|
39
|
+
*/
|
|
40
|
+
export function useFursSettings(
|
|
41
|
+
entityId: string,
|
|
42
|
+
options?: Omit<UseQueryOptions<GetFursSettings200>, "queryKey" | "queryFn">,
|
|
43
|
+
) {
|
|
44
|
+
const { sdk } = useSDK();
|
|
45
|
+
|
|
46
|
+
return useQuery({
|
|
47
|
+
queryKey: fursQueryKeys.settings(entityId),
|
|
48
|
+
queryFn: async () => {
|
|
49
|
+
if (!sdk) throw new Error("SDK not initialized");
|
|
50
|
+
if (!entityId) throw new Error("Entity ID required");
|
|
51
|
+
return (sdk.fursSettings as any).get({ entity_id: entityId });
|
|
52
|
+
},
|
|
53
|
+
enabled: !!sdk && !!entityId,
|
|
54
|
+
staleTime: 0, // Always fetch fresh data
|
|
55
|
+
...options,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Hook: Update FURS settings
|
|
61
|
+
*/
|
|
62
|
+
export function useUpdateFursSettings(
|
|
63
|
+
options?: UseMutationOptions<GetFursSettings200, Error, { entityId: string; data: UpdateFursSettingsBody }>,
|
|
64
|
+
) {
|
|
65
|
+
const { sdk } = useSDK();
|
|
66
|
+
const queryClient = useQueryClient();
|
|
67
|
+
|
|
68
|
+
return useMutation({
|
|
69
|
+
...options,
|
|
70
|
+
mutationFn: async ({ entityId, data }) => {
|
|
71
|
+
if (!sdk) throw new Error("SDK not initialized");
|
|
72
|
+
return (sdk.fursSettings as any).update(data, { entity_id: entityId });
|
|
73
|
+
},
|
|
74
|
+
onSuccess: (data, variables, context) => {
|
|
75
|
+
// Invalidate settings query
|
|
76
|
+
queryClient.invalidateQueries({
|
|
77
|
+
queryKey: fursQueryKeys.settings(variables.entityId),
|
|
78
|
+
});
|
|
79
|
+
// Call the original onSuccess if provided
|
|
80
|
+
if (options?.onSuccess) {
|
|
81
|
+
(options.onSuccess as (d: any, v: any, c: any) => void)(data, variables, context);
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Hook: Upload FURS certificate
|
|
89
|
+
*/
|
|
90
|
+
export function useUploadFursCertificate(
|
|
91
|
+
options?: UseMutationOptions<GetFursCertificate200, Error, { entityId: string; file: Blob; passphrase: string }>,
|
|
92
|
+
) {
|
|
93
|
+
const { sdk } = useSDK();
|
|
94
|
+
const queryClient = useQueryClient();
|
|
95
|
+
|
|
96
|
+
return useMutation({
|
|
97
|
+
...options,
|
|
98
|
+
mutationFn: async ({ entityId, file, passphrase }) => {
|
|
99
|
+
if (!sdk) throw new Error("SDK not initialized");
|
|
100
|
+
return (sdk.fursSettings as any).uploadCertificate(file, passphrase, { entity_id: entityId });
|
|
101
|
+
},
|
|
102
|
+
onSuccess: (data, variables, context) => {
|
|
103
|
+
// Invalidate settings query to refresh certificate status
|
|
104
|
+
queryClient.invalidateQueries({
|
|
105
|
+
queryKey: fursQueryKeys.settings(variables.entityId),
|
|
106
|
+
});
|
|
107
|
+
// Call the original onSuccess if provided
|
|
108
|
+
if (options?.onSuccess) {
|
|
109
|
+
(options.onSuccess as (d: any, v: any, c: any) => void)(data, variables, context);
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Hook: List business premises
|
|
117
|
+
*/
|
|
118
|
+
export function useFursPremises(
|
|
119
|
+
entityId: string,
|
|
120
|
+
options?: Omit<UseQueryOptions<FursBusinessPremise[]>, "queryKey" | "queryFn">,
|
|
121
|
+
) {
|
|
122
|
+
const { sdk } = useSDK();
|
|
123
|
+
|
|
124
|
+
return useQuery({
|
|
125
|
+
queryKey: fursQueryKeys.premises(entityId),
|
|
126
|
+
queryFn: async () => {
|
|
127
|
+
if (!sdk) throw new Error("SDK not initialized");
|
|
128
|
+
return (sdk.fursFiscalization as any).listPremises({ entity_id: entityId });
|
|
129
|
+
},
|
|
130
|
+
enabled: !!sdk,
|
|
131
|
+
staleTime: 0, // Always fetch fresh data to reflect device changes
|
|
132
|
+
...options,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Hook: Register real estate premise
|
|
138
|
+
*/
|
|
139
|
+
export function useRegisterRealEstatePremise(
|
|
140
|
+
options?: UseMutationOptions<any, Error, { entityId: string; data: RegisterFursRealEstatePremiseBody }>,
|
|
141
|
+
) {
|
|
142
|
+
const { sdk } = useSDK();
|
|
143
|
+
const queryClient = useQueryClient();
|
|
144
|
+
|
|
145
|
+
return useMutation({
|
|
146
|
+
...options,
|
|
147
|
+
mutationFn: async ({ entityId, data }) => {
|
|
148
|
+
if (!sdk) throw new Error("SDK not initialized");
|
|
149
|
+
return (sdk.fursFiscalization as any).registerRealEstatePremise(data, { entity_id: entityId });
|
|
150
|
+
},
|
|
151
|
+
onSuccess: (data, variables, context) => {
|
|
152
|
+
// Invalidate premises list
|
|
153
|
+
queryClient.invalidateQueries({
|
|
154
|
+
queryKey: fursQueryKeys.premises(variables.entityId),
|
|
155
|
+
});
|
|
156
|
+
// Call the original onSuccess if provided
|
|
157
|
+
if (options?.onSuccess) {
|
|
158
|
+
(options.onSuccess as (d: any, v: any, c: any) => void)(data, variables, context);
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Hook: Register movable premise
|
|
166
|
+
*/
|
|
167
|
+
export function useRegisterMovablePremise(
|
|
168
|
+
options?: UseMutationOptions<any, Error, { entityId: string; data: RegisterFursMovablePremiseBody }>,
|
|
169
|
+
) {
|
|
170
|
+
const { sdk } = useSDK();
|
|
171
|
+
const queryClient = useQueryClient();
|
|
172
|
+
|
|
173
|
+
return useMutation({
|
|
174
|
+
...options,
|
|
175
|
+
mutationFn: async ({ entityId, data }) => {
|
|
176
|
+
if (!sdk) throw new Error("SDK not initialized");
|
|
177
|
+
return (sdk.fursFiscalization as any).registerMovablePremise(data, { entity_id: entityId });
|
|
178
|
+
},
|
|
179
|
+
onSuccess: (data, variables, context) => {
|
|
180
|
+
// Invalidate premises list
|
|
181
|
+
queryClient.invalidateQueries({
|
|
182
|
+
queryKey: fursQueryKeys.premises(variables.entityId),
|
|
183
|
+
});
|
|
184
|
+
// Call the original onSuccess if provided
|
|
185
|
+
if (options?.onSuccess) {
|
|
186
|
+
(options.onSuccess as (d: any, v: any, c: any) => void)(data, variables, context);
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Hook: Close premise
|
|
194
|
+
*/
|
|
195
|
+
export function useClosePremise(options?: UseMutationOptions<any, Error, { entityId: string; premiseId: string }>) {
|
|
196
|
+
const { sdk } = useSDK();
|
|
197
|
+
const queryClient = useQueryClient();
|
|
198
|
+
|
|
199
|
+
return useMutation({
|
|
200
|
+
...options,
|
|
201
|
+
mutationFn: async ({ entityId, premiseId }) => {
|
|
202
|
+
if (!sdk) throw new Error("SDK not initialized");
|
|
203
|
+
return (sdk.fursFiscalization as any).closePremise(premiseId, { entity_id: entityId });
|
|
204
|
+
},
|
|
205
|
+
onSuccess: (data, variables, context) => {
|
|
206
|
+
// Invalidate premises list
|
|
207
|
+
queryClient.invalidateQueries({
|
|
208
|
+
queryKey: fursQueryKeys.premises(variables.entityId),
|
|
209
|
+
});
|
|
210
|
+
// Call the original onSuccess if provided
|
|
211
|
+
if (options?.onSuccess) {
|
|
212
|
+
(options.onSuccess as (d: any, v: any, c: any) => void)(data, variables, context);
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Hook: Register electronic device
|
|
220
|
+
*/
|
|
221
|
+
export function useRegisterElectronicDevice(
|
|
222
|
+
options?: UseMutationOptions<any, Error, { entityId: string; premiseId: string; deviceName: string }>,
|
|
223
|
+
) {
|
|
224
|
+
const { sdk } = useSDK();
|
|
225
|
+
const queryClient = useQueryClient();
|
|
226
|
+
|
|
227
|
+
return useMutation({
|
|
228
|
+
...options,
|
|
229
|
+
mutationFn: async ({ entityId, premiseId, deviceName }) => {
|
|
230
|
+
if (!sdk) throw new Error("SDK not initialized");
|
|
231
|
+
return (sdk.fursFiscalization as any).registerDevice(premiseId, { name: deviceName }, { entity_id: entityId });
|
|
232
|
+
},
|
|
233
|
+
onSuccess: (data, variables, context) => {
|
|
234
|
+
// Invalidate premises list to refresh devices
|
|
235
|
+
queryClient.invalidateQueries({
|
|
236
|
+
queryKey: fursQueryKeys.premises(variables.entityId),
|
|
237
|
+
});
|
|
238
|
+
// Invalidate devices list for this premise
|
|
239
|
+
queryClient.invalidateQueries({
|
|
240
|
+
queryKey: fursQueryKeys.devices(variables.premiseId),
|
|
241
|
+
});
|
|
242
|
+
// Call the original onSuccess if provided
|
|
243
|
+
if (options?.onSuccess) {
|
|
244
|
+
(options.onSuccess as (d: any, v: any, c: any) => void)(data, variables, context);
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* User FURS settings type (stored in user.settings as furs_<entity_id>)
|
|
252
|
+
*/
|
|
253
|
+
export interface UserFursSettings {
|
|
254
|
+
operator_tax_number?: string;
|
|
255
|
+
operator_label?: string;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Hook: Get current user
|
|
260
|
+
*/
|
|
261
|
+
export function useCurrentUser(options?: Omit<UseQueryOptions<User>, "queryKey" | "queryFn">) {
|
|
262
|
+
const { sdk } = useSDK();
|
|
263
|
+
|
|
264
|
+
return useQuery({
|
|
265
|
+
queryKey: fursQueryKeys.currentUser(),
|
|
266
|
+
queryFn: async () => {
|
|
267
|
+
if (!sdk) throw new Error("SDK not initialized");
|
|
268
|
+
return sdk.users.getMe();
|
|
269
|
+
},
|
|
270
|
+
enabled: !!sdk,
|
|
271
|
+
staleTime: 1000 * 60 * 5, // 5 minutes - user data doesn't change often
|
|
272
|
+
...options,
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Hook: Get user FURS settings for a specific entity
|
|
278
|
+
* Extracts FURS settings from user.settings using the furs_<entity_id> key
|
|
279
|
+
*/
|
|
280
|
+
export function useUserFursSettings(entityId: string) {
|
|
281
|
+
const { data: user, isLoading, error, ...rest } = useCurrentUser();
|
|
282
|
+
|
|
283
|
+
const userFursSettings = useMemo<UserFursSettings | null>(() => {
|
|
284
|
+
if (!user?.settings) return null;
|
|
285
|
+
const key = `furs_${entityId}`;
|
|
286
|
+
const settings = (user.settings as Record<string, unknown>)[key];
|
|
287
|
+
if (!settings || typeof settings !== "object") return null;
|
|
288
|
+
return settings as UserFursSettings;
|
|
289
|
+
}, [user?.settings, entityId]);
|
|
290
|
+
|
|
291
|
+
return { data: userFursSettings, user, isLoading, error, ...rest };
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Hook: Update user FURS settings for a specific entity
|
|
296
|
+
*/
|
|
297
|
+
export function useUpdateUserFursSettings(
|
|
298
|
+
options?: UseMutationOptions<User, Error, { entityId: string; data: UpdateUserFursSettingsBody }>,
|
|
299
|
+
) {
|
|
300
|
+
const { sdk } = useSDK();
|
|
301
|
+
const queryClient = useQueryClient();
|
|
302
|
+
|
|
303
|
+
return useMutation({
|
|
304
|
+
...options,
|
|
305
|
+
mutationFn: async ({ entityId, data }) => {
|
|
306
|
+
if (!sdk) throw new Error("SDK not initialized");
|
|
307
|
+
return (sdk.users as any).updateFursSettings(data, { entity_id: entityId });
|
|
308
|
+
},
|
|
309
|
+
onSuccess: (data, variables, context) => {
|
|
310
|
+
// Invalidate current user query to refresh settings
|
|
311
|
+
queryClient.invalidateQueries({
|
|
312
|
+
queryKey: fursQueryKeys.currentUser(),
|
|
313
|
+
});
|
|
314
|
+
// Call the original onSuccess if provided
|
|
315
|
+
if (options?.onSuccess) {
|
|
316
|
+
(options.onSuccess as (d: any, v: any, c: any) => void)(data, variables, context);
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
});
|
|
320
|
+
}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
"Automatically fiscalize invoices with FURS (Financial Administration of Slovenia)":
|
|
3
|
+
"Rechnungen automatisch mit FURS (Finanzverwaltung Sloweniens) fiskalisieren",
|
|
4
|
+
"Business Premises": "Geschäftsräume",
|
|
5
|
+
"Business Premise": "Geschäftsraum",
|
|
6
|
+
Cancel: "Abbrechen",
|
|
7
|
+
"Centralized (C) - Sequential numbers across all premises":
|
|
8
|
+
"Zentralisiert (C) - Fortlaufende Nummern über alle Räume",
|
|
9
|
+
Certificate: "Zertifikat",
|
|
10
|
+
"Choose File": "Datei wählen",
|
|
11
|
+
"Choose how invoice numbers are assigned across your business premises":
|
|
12
|
+
"Wählen Sie, wie Rechnungsnummern in Ihren Geschäftsräumen vergeben werden",
|
|
13
|
+
"Configure FURS (Slovenia) fiscalization for this entity":
|
|
14
|
+
"FURS (Slowenien) Fiskalisierung für diese Entität konfigurieren",
|
|
15
|
+
"Configure FURS fiscalization behavior": "FURS-Fiskalisierungsverhalten konfigurieren",
|
|
16
|
+
"Device-Level (B) - Separate sequences per electronic device":
|
|
17
|
+
"Gerätebene (B) - Separate Sequenzen pro elektronischem Gerät",
|
|
18
|
+
"Digital Certificate": "Digitales Zertifikat",
|
|
19
|
+
"Enable FURS Fiscalization": "FURS-Fiskalisierung aktivieren",
|
|
20
|
+
"Enter passphrase": "Passwort eingeben",
|
|
21
|
+
"Expired on": "Abgelaufen am",
|
|
22
|
+
"Expires soon on": "Läuft bald ab am",
|
|
23
|
+
"FURS Fiscalization Settings": "FURS-Fiskalisierungseinstellungen",
|
|
24
|
+
"FURS fiscalization is only available for entities with country code SI (Slovenia)":
|
|
25
|
+
"FURS-Fiskalisierung ist nur für Entitäten mit Ländercode SI (Slowenien) verfügbar",
|
|
26
|
+
"FURS is for Slovenian Entities": "FURS ist nur für slowenische Entitäten",
|
|
27
|
+
"FURS requires a digital certificate for fiscalization": "FURS erfordert ein digitales Zertifikat zur Fiskalisierung",
|
|
28
|
+
"General Settings": "Allgemeine Einstellungen",
|
|
29
|
+
"Invoice Number Pattern (Optional)": "Rechnungsnummernmuster (Optional)",
|
|
30
|
+
"Manage Premises & Devices": "Räume & Geräte verwalten",
|
|
31
|
+
"Manage registered premises and electronic devices": "Registrierte Räume und elektronische Geräte verwalten",
|
|
32
|
+
"Notification Email": "Benachrichtigungs-E-Mail",
|
|
33
|
+
"Numbering Strategy": "Nummerierungsstrategie",
|
|
34
|
+
"Premise Registration Required": "Raumregistrierung erforderlich",
|
|
35
|
+
"Receive alerts about certificate expiry and fiscalization issues":
|
|
36
|
+
"Erhalten Sie Benachrichtigungen über Zertifikatsablauf und Fiskalisierungsprobleme",
|
|
37
|
+
"Regex pattern to extract invoice number from full document number. First capture group will be used.":
|
|
38
|
+
"Regex-Muster zur Extraktion der Rechnungsnummer aus der vollständigen Dokumentnummer. Die erste Erfassungsgruppe wird verwendet.",
|
|
39
|
+
"Register First Premise": "Ersten Raum registrieren",
|
|
40
|
+
"Register at least one business premise before fiscalizing invoices":
|
|
41
|
+
"Registrieren Sie mindestens einen Geschäftsraum, bevor Sie Rechnungen fiskalisieren",
|
|
42
|
+
"Save Settings": "Einstellungen speichern",
|
|
43
|
+
"Saving...": "Wird gespeichert...",
|
|
44
|
+
"Select your .p12 or .pfx certificate file": "Wählen Sie Ihre .p12- oder .pfx-Zertifikatsdatei",
|
|
45
|
+
"Valid until": "Gültig bis",
|
|
46
|
+
"Will be encrypted before storage": "Wird vor der Speicherung verschlüsselt",
|
|
47
|
+
"You must register at least one business premise before fiscalizing invoices":
|
|
48
|
+
"Sie müssen mindestens einen Geschäftsraum registrieren, bevor Sie Rechnungen fiskalisieren können",
|
|
49
|
+
"You must upload a digital certificate before you can fiscalize invoices":
|
|
50
|
+
"Sie müssen ein digitales Zertifikat hochladen, bevor Sie Rechnungen fiskalisieren können",
|
|
51
|
+
"premise registered": "Raum registriert",
|
|
52
|
+
"premises registered": "Räume registriert",
|
|
53
|
+
"FURS Setup": "FURS-Einrichtung",
|
|
54
|
+
"Enable FURS to automatically fiscalize your invoices with the Slovenian tax authority. Choose centralized numbering for unified invoice sequences, or device-level for separate sequences per register.":
|
|
55
|
+
"Aktivieren Sie FURS, um Ihre Rechnungen automatisch bei der slowenischen Steuerbehörde zu fiskalisieren. Wählen Sie zentralisierte Nummerierung für einheitliche Rechnungssequenzen oder Gerätebene für separate Sequenzen pro Kasse.",
|
|
56
|
+
"Certificate Security": "Zertifikatssicherheit",
|
|
57
|
+
"Your digital certificate is used to sign all fiscalized invoices. The passphrase is encrypted before storage and never leaves your server. Certificates typically expire annually.":
|
|
58
|
+
"Ihr digitales Zertifikat wird zum Signieren aller fiskalisierten Rechnungen verwendet. Das Passwort wird vor der Speicherung verschlüsselt und verlässt niemals Ihren Server. Zertifikate laufen normalerweise jährlich ab.",
|
|
59
|
+
"About Premises": "Über Geschäftsräume",
|
|
60
|
+
"Business premises represent physical locations or movable units where you issue invoices. Each premise must be registered with FURS before you can fiscalize invoices from that location.":
|
|
61
|
+
"Geschäftsräume repräsentieren physische Standorte oder bewegliche Einheiten, an denen Sie Rechnungen ausstellen. Jeder Raum muss bei FURS registriert werden, bevor Sie Rechnungen von diesem Standort fiskalisieren können.",
|
|
62
|
+
"Operator Tax Number": "Steuernummer des Betreibers",
|
|
63
|
+
"Tax number of the operator for API key usage (optional)":
|
|
64
|
+
"Steuernummer des Betreibers für API-Schlüssel-Nutzung (optional)",
|
|
65
|
+
"Operator Label": "Betreiber-Bezeichnung",
|
|
66
|
+
"Descriptive label for the operator (optional)": "Beschreibende Bezeichnung für den Betreiber (optional)",
|
|
67
|
+
"Upload Failed": "Upload fehlgeschlagen",
|
|
68
|
+
"Please select a certificate file and enter the passphrase":
|
|
69
|
+
"Bitte wählen Sie eine Zertifikatsdatei und geben Sie das Passwort ein",
|
|
70
|
+
Selected: "Ausgewählt",
|
|
71
|
+
"Upload Certificate": "Zertifikat hochladen",
|
|
72
|
+
"Uploading...": "Wird hochgeladen...",
|
|
73
|
+
Error: "Fehler",
|
|
74
|
+
"Loading premises...": "Räume werden geladen...",
|
|
75
|
+
"Real Estate": "Immobilie",
|
|
76
|
+
Movable: "Bewegliche Einheit",
|
|
77
|
+
devices: "Geräte",
|
|
78
|
+
"Add Another Premise": "Weiteren Raum hinzufügen",
|
|
79
|
+
"Test Mode (Sandbox)": "Testmodus (Sandbox)",
|
|
80
|
+
"This entity is in test mode. FURS invoices will be sent to the test/demo environment. No real fiscalization will occur.":
|
|
81
|
+
"Diese Entität befindet sich im Testmodus. FURS-Rechnungen werden an die Test-/Demo-Umgebung gesendet. Es erfolgt keine echte Fiskalisierung.",
|
|
82
|
+
"Enable FURS fiscalization in General Settings first":
|
|
83
|
+
"Aktivieren Sie zuerst die FURS-Fiskalisierung in den Allgemeinen Einstellungen",
|
|
84
|
+
"Upload and validate digital certificate first":
|
|
85
|
+
"Laden Sie zuerst ein digitales Zertifikat hoch und validieren Sie es",
|
|
86
|
+
"Certificate Required": "Zertifikat erforderlich",
|
|
87
|
+
"Business Premise Required": "Raumregistrierung erforderlich",
|
|
88
|
+
"Configure how FURS fiscalization works for your entity. Enable fiscalization, choose your numbering strategy, and set operator information.":
|
|
89
|
+
"Konfigurieren Sie, wie die FURS-Fiskalisierung für Ihre Entität funktioniert. Aktivieren Sie die Fiskalisierung, wählen Sie Ihre Nummerierungsstrategie und legen Sie Betreiberinformationen fest.",
|
|
90
|
+
"Operator Information": "Betreiberinformationen",
|
|
91
|
+
"Configure default operator for API usage": "Konfigurieren Sie den Standardbetreiber für die API-Nutzung",
|
|
92
|
+
"Once uploaded, your certificate will be validated and you'll be able to register business premises and start fiscalizing invoices.":
|
|
93
|
+
"Nach dem Hochladen wird Ihr Zertifikat validiert und Sie können Geschäftsräume registrieren und mit der Fiskalisierung von Rechnungen beginnen.",
|
|
94
|
+
"Invalid file type. Please upload a .p12 or .pfx certificate file.":
|
|
95
|
+
"Ungültiger Dateityp. Bitte laden Sie eine .p12- oder .pfx-Zertifikatsdatei hoch.",
|
|
96
|
+
Valid: "Gültig",
|
|
97
|
+
"Expiring Soon": "Läuft bald ab",
|
|
98
|
+
Expired: "Abgelaufen",
|
|
99
|
+
Missing: "Fehlt",
|
|
100
|
+
Expires: "Läuft ab",
|
|
101
|
+
Issuer: "Aussteller",
|
|
102
|
+
Subject: "Subjekt",
|
|
103
|
+
"Change Certificate": "Zertifikat ändern",
|
|
104
|
+
"P12/PFX Certificate File": "P12/PFX-Zertifikatsdatei",
|
|
105
|
+
"Certificate Passphrase": "Zertifikatspasswort",
|
|
106
|
+
"Enter certificate passphrase": "Zertifikatspasswort eingeben",
|
|
107
|
+
"Upload New Certificate": "Neues Zertifikat hochladen",
|
|
108
|
+
"Register your business premises with FURS": "Registrieren Sie Ihre Geschäftsräume bei FURS",
|
|
109
|
+
"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.).":
|
|
110
|
+
"Jeder Raum muss bei FURS registriert werden, bevor Sie Rechnungen von diesem Standort fiskalisieren können. Sie können sowohl Immobilien (physische Standorte) als auch bewegliche Einheiten (Fahrzeuge, Marktstände usw.) registrieren.",
|
|
111
|
+
"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.":
|
|
112
|
+
"Nach der Registrierung eines Raums müssen Sie manuell mindestens ein elektronisches Gerät (Kasse, POS-Terminal) für diesen Raum hinzufügen. Klicken Sie auf einen Raum, um dessen Geräte zu verwalten.",
|
|
113
|
+
"Add Real Estate": "Immobilie hinzufügen",
|
|
114
|
+
"Add Movable": "Bewegliche Einheit hinzufügen",
|
|
115
|
+
"No premises registered yet": "Noch keine Räume registriert",
|
|
116
|
+
Active: "Aktiv",
|
|
117
|
+
Closed: "Geschlossen",
|
|
118
|
+
"Close Premise": "Raum schließen",
|
|
119
|
+
"Are you sure you want to close this premise? This action cannot be undone.":
|
|
120
|
+
"Sind Sie sicher, dass Sie diesen Raum schließen möchten? Diese Aktion kann nicht rückgängig gemacht werden.",
|
|
121
|
+
"Test Environment": "Testumgebung",
|
|
122
|
+
Production: "Produktion",
|
|
123
|
+
Vehicle: "Fahrzeug",
|
|
124
|
+
"Object at Market": "Objekt am Markt",
|
|
125
|
+
Other: "Sonstiges",
|
|
126
|
+
Device: "Gerät",
|
|
127
|
+
Devices: "Geräte",
|
|
128
|
+
Unnamed: "Unbenannt",
|
|
129
|
+
"No devices registered. Add at least one device to fiscalize invoices.":
|
|
130
|
+
"Keine Geräte registriert. Fügen Sie mindestens ein Gerät zur Fiskalisierung von Rechnungen hinzu.",
|
|
131
|
+
Created: "Erstellt",
|
|
132
|
+
"Add Electronic Device": "Elektronisches Gerät hinzufügen",
|
|
133
|
+
"Register an electronic device (cash register, POS terminal) for this business premise.":
|
|
134
|
+
"Registrieren Sie ein elektronisches Gerät (Kasse, POS-Terminal) für diesen Geschäftsraum.",
|
|
135
|
+
"Device Name": "Gerätename",
|
|
136
|
+
E1: "E1",
|
|
137
|
+
"Enter a unique name for this device (e.g., E1, E2, POS1, DEVICE1)":
|
|
138
|
+
"Geben Sie einen eindeutigen Namen für dieses Gerät ein (z.B. E1, E2, POS1, DEVICE1)",
|
|
139
|
+
"Register Device": "Gerät registrieren",
|
|
140
|
+
"Registering...": "Wird registriert...",
|
|
141
|
+
"Register Real Estate Premise": "Immobilie registrieren",
|
|
142
|
+
"Register Movable Premise": "Bewegliche Einheit registrieren",
|
|
143
|
+
"Register a new business premise with FURS. After registration, you'll need to manually add at least one electronic device for this premise.":
|
|
144
|
+
"Registrieren Sie einen neuen Geschäftsraum bei FURS. Nach der Registrierung müssen Sie manuell mindestens ein elektronisches Gerät für diesen Raum hinzufügen.",
|
|
145
|
+
"Premise Name": "Raumname",
|
|
146
|
+
"Unique identifier for this premise (e.g., P1, P2)": "Eindeutiger Bezeichner für diesen Raum (z.B. P1, P2)",
|
|
147
|
+
"Cadastral Number": "Katasternummer",
|
|
148
|
+
"Required by FURS (must be numeric)": "Erforderlich für FURS (muss numerisch sein)",
|
|
149
|
+
"Building Number": "Gebäudenummer",
|
|
150
|
+
"Building Section": "Gebäudeabschnitt",
|
|
151
|
+
"Must be numeric (optional)": "Muss numerisch sein (optional)",
|
|
152
|
+
Community: "Gemeinde",
|
|
153
|
+
"Slovenian administrative community (občina) name": "Name der slowenischen Verwaltungsgemeinde (občina)",
|
|
154
|
+
Street: "Straße",
|
|
155
|
+
"House Number": "Hausnummer",
|
|
156
|
+
Additional: "Zusatz",
|
|
157
|
+
City: "Stadt",
|
|
158
|
+
"Postal Code": "Postleitzahl",
|
|
159
|
+
"Premise Type": "Raumtyp",
|
|
160
|
+
"Type of movable business premise": "Art des beweglichen Geschäftsraums",
|
|
161
|
+
"A - Vehicle": "A - Fahrzeug",
|
|
162
|
+
"B - Object at Market/Fair": "B - Objekt am Markt/Messe",
|
|
163
|
+
"C - Other Movable": "C - Sonstiges beweglich",
|
|
164
|
+
"Register Premise": "Raum registrieren",
|
|
165
|
+
"FURS Fiscalization": "FURS Fiskalisierung",
|
|
166
|
+
"Slovenian tax authority fiscalization details": "Details zur Fiskalisierung bei der slowenischen Steuerbehörde",
|
|
167
|
+
Fiscalized: "Fiskalisiert",
|
|
168
|
+
Pending: "Ausstehend",
|
|
169
|
+
Failed: "Fehlgeschlagen",
|
|
170
|
+
"Fiscalization Error": "Fiskalisierungsfehler",
|
|
171
|
+
Cancelled: "Storniert",
|
|
172
|
+
ZOI: "ZOI",
|
|
173
|
+
EOR: "EOR",
|
|
174
|
+
"Cancellation EOR": "Stornierungs-EOR",
|
|
175
|
+
"Electronic Device": "Elektronisches Gerät",
|
|
176
|
+
"Invoice Number": "Rechnungsnummer",
|
|
177
|
+
Iteration: "Iteration",
|
|
178
|
+
"QR Code": "QR-Code",
|
|
179
|
+
"Fiscalized at": "Fiskalisiert am",
|
|
180
|
+
// New flow translations
|
|
181
|
+
"Enable Fiscalization": "Fiskalisierung aktivieren",
|
|
182
|
+
"Turn on FURS fiscalization for invoices": "FURS-Fiskalisierung für Rechnungen einschalten",
|
|
183
|
+
"Setup Checklist": "Einrichtungs-Checkliste",
|
|
184
|
+
"Valid certificate uploaded": "Gültiges Zertifikat hochgeladen",
|
|
185
|
+
"At least one business premise registered": "Mindestens ein Geschäftsraum registriert",
|
|
186
|
+
"At least one electronic device registered": "Mindestens ein elektronisches Gerät registriert",
|
|
187
|
+
"Cannot Enable Fiscalization": "Fiskalisierung kann nicht aktiviert werden",
|
|
188
|
+
"Complete all prerequisites above before enabling FURS fiscalization.":
|
|
189
|
+
"Erfüllen Sie alle oben genannten Voraussetzungen, bevor Sie die FURS-Fiskalisierung aktivieren.",
|
|
190
|
+
"Once enabled, all new invoices will be automatically fiscalized with FURS":
|
|
191
|
+
"Nach der Aktivierung werden alle neuen Rechnungen automatisch mit FURS fiskalisiert",
|
|
192
|
+
"Warning: Disabling fiscalization will prevent new invoices from being fiscalized.":
|
|
193
|
+
"Warnung: Die Deaktivierung der Fiskalisierung verhindert, dass neue Rechnungen fiskalisiert werden.",
|
|
194
|
+
"Register at least one business premise first": "Registrieren Sie zuerst mindestens einen Geschäftsraum",
|
|
195
|
+
"Register at least one electronic device first": "Registrieren Sie zuerst mindestens ein elektronisches Gerät",
|
|
196
|
+
"Activate FURS fiscalization for your invoices": "Aktivieren Sie die FURS-Fiskalisierung für Ihre Rechnungen",
|
|
197
|
+
"Once enabled, all new invoices will be automatically sent to FURS for fiscalization. Make sure you have completed all the setup steps before enabling.":
|
|
198
|
+
"Nach der Aktivierung werden alle neuen Rechnungen automatisch zur Fiskalisierung an FURS gesendet. Stellen Sie sicher, dass Sie alle Einrichtungsschritte abgeschlossen haben, bevor Sie aktivieren.",
|
|
199
|
+
"You can disable fiscalization at any time, but note that invoices issued while disabled will not be fiscalized.":
|
|
200
|
+
"Sie können die Fiskalisierung jederzeit deaktivieren, beachten Sie jedoch, dass Rechnungen, die während der Deaktivierung ausgestellt werden, nicht fiskalisiert werden.",
|
|
201
|
+
"You must upload a digital certificate before you can register business premises":
|
|
202
|
+
"Sie müssen ein digitales Zertifikat hochladen, bevor Sie Geschäftsräume registrieren können",
|
|
203
|
+
"Loading...": "Wird geladen...",
|
|
204
|
+
"FURS fiscalization is only available for entities with country code SI":
|
|
205
|
+
"FURS-Fiskalisierung ist nur für Entitäten mit Ländercode SI verfügbar",
|
|
206
|
+
"Upload your FURS digital certificate": "Laden Sie Ihr FURS-Digitalzertifikat hoch",
|
|
207
|
+
"Your certificate is required to digitally sign all fiscalized invoices. The certificate must be obtained from the Slovenian Financial Administration (FURS).":
|
|
208
|
+
"Ihr Zertifikat wird benötigt, um alle fiskalisierten Rechnungen digital zu signieren. Das Zertifikat muss von der slowenischen Finanzverwaltung (FURS) bezogen werden.",
|
|
209
|
+
"Choose how invoice numbers are generated": "Wählen Sie, wie Rechnungsnummern generiert werden",
|
|
210
|
+
"Strategy B (Device-level)": "Strategie B (Gerätebene)",
|
|
211
|
+
"Strategy C (Centralized)": "Strategie C (Zentralisiert)",
|
|
212
|
+
// User FURS settings
|
|
213
|
+
"Your Operator Settings": "Ihre Betreibereinstellungen",
|
|
214
|
+
"Your personal operator info for FURS invoices": "Ihre persönlichen Betreiberinformationen für FURS-Rechnungen",
|
|
215
|
+
"Save Operator Settings": "Betreibereinstellungen speichern",
|
|
216
|
+
"Your tax number for FURS fiscalization": "Ihre Steuernummer für FURS-Fiskalisierung",
|
|
217
|
+
"Your name or identifier for FURS invoices": "Ihr Name oder Bezeichner für FURS-Rechnungen",
|
|
218
|
+
"Your Name": "Ihr Name",
|
|
219
|
+
"Fiscalization Settings": "Fiskalisierungseinstellungen",
|
|
220
|
+
"Advanced Settings": "Erweiterte Einstellungen",
|
|
221
|
+
"API Default Operator": "API-Standardbetreiber",
|
|
222
|
+
"Default operator settings for API key usage (when no user context)":
|
|
223
|
+
"Standardbetreibereinstellungen für API-Schlüssel-Nutzung (ohne Benutzerkontext)",
|
|
224
|
+
"Tax number for API key usage (optional)": "Steuernummer für API-Schlüssel-Nutzung (optional)",
|
|
225
|
+
"Operator label for API key usage (optional)": "Betreiber-Bezeichnung für API-Schlüssel-Nutzung (optional)",
|
|
226
|
+
// Updated help text
|
|
227
|
+
"Your personal tax number and label that appear on FURS invoices you issue. Each user can have their own operator info.":
|
|
228
|
+
"Ihre persönliche Steuernummer und Bezeichnung, die auf den von Ihnen ausgestellten FURS-Rechnungen erscheinen. Jeder Benutzer kann seine eigenen Betreiberinformationen haben.",
|
|
229
|
+
"Choose the numbering strategy for your invoices. Device-level creates separate sequences per device, centralized uses one sequence across all premises.":
|
|
230
|
+
"Wählen Sie die Nummerierungsstrategie für Ihre Rechnungen. Gerätebene erstellt separate Sequenzen pro Gerät, zentralisiert verwendet eine Sequenz über alle Räume.",
|
|
231
|
+
"Default operator info used when invoices are created via API without a logged-in user.":
|
|
232
|
+
"Standard-Betreiberinformationen, die verwendet werden, wenn Rechnungen über die API ohne angemeldeten Benutzer erstellt werden.",
|
|
233
|
+
} as const;
|