@open-mercato/core 0.6.6-develop.6094.1.28b081ea16 → 0.6.6-develop.6121.1.5797a901b3
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/.turbo/turbo-build.log +1 -1
- package/dist/generated/entities/catalog_product/index.js +52 -0
- package/dist/generated/entities/catalog_product/index.js.map +2 -2
- package/dist/generated/entities/catalog_product_variant/index.js +4 -0
- package/dist/generated/entities/catalog_product_variant/index.js.map +2 -2
- package/dist/generated/entity-fields-registry.js +28 -0
- package/dist/generated/entity-fields-registry.js.map +2 -2
- package/dist/modules/catalog/api/products/route.js +103 -33
- package/dist/modules/catalog/api/products/route.js.map +2 -2
- package/dist/modules/catalog/api/variants/route.js +4 -0
- package/dist/modules/catalog/api/variants/route.js.map +2 -2
- package/dist/modules/catalog/backend/catalog/products/[id]/page.js +46 -2
- package/dist/modules/catalog/backend/catalog/products/[id]/page.js.map +2 -2
- package/dist/modules/catalog/backend/catalog/products/[productId]/variants/[variantId]/page.js +4 -0
- package/dist/modules/catalog/backend/catalog/products/[productId]/variants/[variantId]/page.js.map +2 -2
- package/dist/modules/catalog/backend/catalog/products/[productId]/variants/create/page.js +2 -0
- package/dist/modules/catalog/backend/catalog/products/[productId]/variants/create/page.js.map +2 -2
- package/dist/modules/catalog/backend/catalog/products/create/page.js +42 -2
- package/dist/modules/catalog/backend/catalog/products/create/page.js.map +2 -2
- package/dist/modules/catalog/commands/products.js +251 -14
- package/dist/modules/catalog/commands/products.js.map +2 -2
- package/dist/modules/catalog/commands/variants.js +72 -1
- package/dist/modules/catalog/commands/variants.js.map +2 -2
- package/dist/modules/catalog/components/products/ProductComplianceSection.js +500 -0
- package/dist/modules/catalog/components/products/ProductComplianceSection.js.map +7 -0
- package/dist/modules/catalog/components/products/VariantBuilder.js +39 -1
- package/dist/modules/catalog/components/products/VariantBuilder.js.map +2 -2
- package/dist/modules/catalog/components/products/productForm.js +164 -2
- package/dist/modules/catalog/components/products/productForm.js.map +2 -2
- package/dist/modules/catalog/components/products/variantForm.js +2 -0
- package/dist/modules/catalog/components/products/variantForm.js.map +2 -2
- package/dist/modules/catalog/data/entities.js +93 -0
- package/dist/modules/catalog/data/entities.js.map +2 -2
- package/dist/modules/catalog/data/types.js +28 -0
- package/dist/modules/catalog/data/types.js.map +2 -2
- package/dist/modules/catalog/data/validators.js +100 -5
- package/dist/modules/catalog/data/validators.js.map +2 -2
- package/dist/modules/catalog/lib/gtin.js +61 -0
- package/dist/modules/catalog/lib/gtin.js.map +7 -0
- package/dist/modules/catalog/migrations/Migration20260611090000.js +17 -0
- package/dist/modules/catalog/migrations/Migration20260611090000.js.map +7 -0
- package/dist/modules/catalog/translations.js +1 -1
- package/dist/modules/catalog/translations.js.map +2 -2
- package/dist/modules/configs/api/cache/route.js +60 -10
- package/dist/modules/configs/api/cache/route.js.map +3 -3
- package/dist/modules/configs/components/CachePanel.js +52 -29
- package/dist/modules/configs/components/CachePanel.js.map +2 -2
- package/dist/modules/currencies/api/currencies/options/route.js +18 -4
- package/dist/modules/currencies/api/currencies/options/route.js.map +2 -2
- package/dist/modules/currencies/services/rateFetchingService.js +35 -18
- package/dist/modules/currencies/services/rateFetchingService.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/page.js +16 -16
- package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/page.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js +1 -1
- package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js.map +2 -2
- package/dist/modules/customers/backend/calendar/page.js +10 -0
- package/dist/modules/customers/backend/calendar/page.js.map +7 -0
- package/dist/modules/customers/backend/calendar/page.meta.js +25 -0
- package/dist/modules/customers/backend/calendar/page.meta.js.map +7 -0
- package/dist/modules/customers/cli.js +1 -0
- package/dist/modules/customers/cli.js.map +2 -2
- package/dist/modules/customers/components/calendar/AgendaList.js +182 -0
- package/dist/modules/customers/components/calendar/AgendaList.js.map +7 -0
- package/dist/modules/customers/components/calendar/CalendarEventEditor.js +331 -0
- package/dist/modules/customers/components/calendar/CalendarEventEditor.js.map +7 -0
- package/dist/modules/customers/components/calendar/CalendarFooter.js +48 -0
- package/dist/modules/customers/components/calendar/CalendarFooter.js.map +7 -0
- package/dist/modules/customers/components/calendar/CalendarHeader.js +36 -0
- package/dist/modules/customers/components/calendar/CalendarHeader.js.map +7 -0
- package/dist/modules/customers/components/calendar/CalendarScreen.js +516 -0
- package/dist/modules/customers/components/calendar/CalendarScreen.js.map +7 -0
- package/dist/modules/customers/components/calendar/CalendarSettingsModal.js +163 -0
- package/dist/modules/customers/components/calendar/CalendarSettingsModal.js.map +7 -0
- package/dist/modules/customers/components/calendar/CalendarTabs.js +60 -0
- package/dist/modules/customers/components/calendar/CalendarTabs.js.map +7 -0
- package/dist/modules/customers/components/calendar/CalendarToolbar.js +262 -0
- package/dist/modules/customers/components/calendar/CalendarToolbar.js.map +7 -0
- package/dist/modules/customers/components/calendar/EventBlock.js +149 -0
- package/dist/modules/customers/components/calendar/EventBlock.js.map +7 -0
- package/dist/modules/customers/components/calendar/EventPeekPopover.js +72 -0
- package/dist/modules/customers/components/calendar/EventPeekPopover.js.map +7 -0
- package/dist/modules/customers/components/calendar/MonthGrid.js +214 -0
- package/dist/modules/customers/components/calendar/MonthGrid.js.map +7 -0
- package/dist/modules/customers/components/calendar/ShortcutsDialog.js +44 -0
- package/dist/modules/customers/components/calendar/ShortcutsDialog.js.map +7 -0
- package/dist/modules/customers/components/calendar/TimeGrid.js +410 -0
- package/dist/modules/customers/components/calendar/TimeGrid.js.map +7 -0
- package/dist/modules/customers/components/calendar/UpcomingCards.js +175 -0
- package/dist/modules/customers/components/calendar/UpcomingCards.js.map +7 -0
- package/dist/modules/customers/components/calendar/editor/CategoryField.js +75 -0
- package/dist/modules/customers/components/calendar/editor/CategoryField.js.map +7 -0
- package/dist/modules/customers/components/calendar/editor/LocationField.js +30 -0
- package/dist/modules/customers/components/calendar/editor/LocationField.js.map +7 -0
- package/dist/modules/customers/components/calendar/editor/PeopleField.js +135 -0
- package/dist/modules/customers/components/calendar/editor/PeopleField.js.map +7 -0
- package/dist/modules/customers/components/calendar/editor/RelatedToField.js +218 -0
- package/dist/modules/customers/components/calendar/editor/RelatedToField.js.map +7 -0
- package/dist/modules/customers/components/calendar/editor/RepeatField.js +119 -0
- package/dist/modules/customers/components/calendar/editor/RepeatField.js.map +7 -0
- package/dist/modules/customers/components/calendar/editor/ScheduleSection.js +83 -0
- package/dist/modules/customers/components/calendar/editor/ScheduleSection.js.map +7 -0
- package/dist/modules/customers/components/calendar/editor/SegmentGroup.js +44 -0
- package/dist/modules/customers/components/calendar/editor/SegmentGroup.js.map +7 -0
- package/dist/modules/customers/components/calendar/editor/hooks.js +132 -0
- package/dist/modules/customers/components/calendar/editor/hooks.js.map +7 -0
- package/dist/modules/customers/components/calendar/editor/inputs.js +160 -0
- package/dist/modules/customers/components/calendar/editor/inputs.js.map +7 -0
- package/dist/modules/customers/components/calendar/editor/lookups.js +107 -0
- package/dist/modules/customers/components/calendar/editor/lookups.js.map +7 -0
- package/dist/modules/customers/components/calendar/types.js +30 -0
- package/dist/modules/customers/components/calendar/types.js.map +7 -0
- package/dist/modules/customers/components/calendar/useCalendarItems.js +131 -0
- package/dist/modules/customers/components/calendar/useCalendarItems.js.map +7 -0
- package/dist/modules/customers/components/calendar/useCalendarPreferences.js +41 -0
- package/dist/modules/customers/components/calendar/useCalendarPreferences.js.map +7 -0
- package/dist/modules/customers/lib/calendar/categories.js +28 -0
- package/dist/modules/customers/lib/calendar/categories.js.map +7 -0
- package/dist/modules/customers/lib/calendar/conflicts.js +72 -0
- package/dist/modules/customers/lib/calendar/conflicts.js.map +7 -0
- package/dist/modules/customers/lib/calendar/editorPayload.js +271 -0
- package/dist/modules/customers/lib/calendar/editorPayload.js.map +7 -0
- package/dist/modules/customers/lib/calendar/grid.js +48 -0
- package/dist/modules/customers/lib/calendar/grid.js.map +7 -0
- package/dist/modules/customers/lib/calendar/layout.js +39 -0
- package/dist/modules/customers/lib/calendar/layout.js.map +7 -0
- package/dist/modules/customers/lib/calendar/mapItem.js +79 -0
- package/dist/modules/customers/lib/calendar/mapItem.js.map +7 -0
- package/dist/modules/customers/lib/calendar/preferences.js +71 -0
- package/dist/modules/customers/lib/calendar/preferences.js.map +7 -0
- package/dist/modules/customers/lib/calendar/range.js +46 -0
- package/dist/modules/customers/lib/calendar/range.js.map +7 -0
- package/dist/modules/customers/lib/calendar/recurrence.js +113 -0
- package/dist/modules/customers/lib/calendar/recurrence.js.map +7 -0
- package/dist/modules/dashboards/services/widgetDataService.js +5 -5
- package/dist/modules/dashboards/services/widgetDataService.js.map +2 -2
- package/dist/modules/dictionaries/api/[dictionaryId]/entries/[entryId]/route.js +61 -1
- package/dist/modules/dictionaries/api/[dictionaryId]/entries/[entryId]/route.js.map +2 -2
- package/dist/modules/dictionaries/api/[dictionaryId]/entries/route.js +33 -1
- package/dist/modules/dictionaries/api/[dictionaryId]/entries/route.js.map +2 -2
- package/dist/modules/dictionaries/api/[dictionaryId]/route.js +61 -1
- package/dist/modules/dictionaries/api/[dictionaryId]/route.js.map +2 -2
- package/dist/modules/dictionaries/api/route.js +33 -1
- package/dist/modules/dictionaries/api/route.js.map +2 -2
- package/dist/modules/feature_toggles/lib/queries.js +36 -52
- package/dist/modules/feature_toggles/lib/queries.js.map +2 -2
- package/dist/modules/perspectives/api/[tableId]/[perspectiveId]/route.js +32 -1
- package/dist/modules/perspectives/api/[tableId]/[perspectiveId]/route.js.map +2 -2
- package/dist/modules/perspectives/api/[tableId]/roles/[roleId]/route.js +32 -1
- package/dist/modules/perspectives/api/[tableId]/roles/[roleId]/route.js.map +2 -2
- package/dist/modules/perspectives/api/[tableId]/route.js +73 -2
- package/dist/modules/perspectives/api/[tableId]/route.js.map +2 -2
- package/dist/modules/perspectives/services/perspectiveService.js +5 -3
- package/dist/modules/perspectives/services/perspectiveService.js.map +2 -2
- package/dist/modules/planner/api/access.js +9 -0
- package/dist/modules/planner/api/access.js.map +2 -2
- package/dist/modules/planner/api/availability-date-specific.js +22 -1
- package/dist/modules/planner/api/availability-date-specific.js.map +2 -2
- package/dist/modules/planner/api/availability-weekly.js +22 -1
- package/dist/modules/planner/api/availability-weekly.js.map +2 -2
- package/dist/modules/resources/api/resources/tags/assign/route.js +39 -0
- package/dist/modules/resources/api/resources/tags/assign/route.js.map +2 -2
- package/dist/modules/resources/api/resources/tags/unassign/route.js +39 -0
- package/dist/modules/resources/api/resources/tags/unassign/route.js.map +2 -2
- package/dist/modules/sales/api/settings/document-numbers/route.js +33 -1
- package/dist/modules/sales/api/settings/document-numbers/route.js.map +2 -2
- package/dist/modules/sales/api/settings/order-editing/route.js +35 -3
- package/dist/modules/sales/api/settings/order-editing/route.js.map +2 -2
- package/dist/modules/staff/api/leave-requests/accept/route.js +41 -0
- package/dist/modules/staff/api/leave-requests/accept/route.js.map +2 -2
- package/dist/modules/staff/api/leave-requests/reject/route.js +41 -0
- package/dist/modules/staff/api/leave-requests/reject/route.js.map +2 -2
- package/dist/modules/staff/api/team-members/self/route.js +40 -0
- package/dist/modules/staff/api/team-members/self/route.js.map +2 -2
- package/dist/modules/staff/api/team-members/tags/assign/route.js +41 -0
- package/dist/modules/staff/api/team-members/tags/assign/route.js.map +2 -2
- package/dist/modules/staff/api/team-members/tags/unassign/route.js +41 -0
- package/dist/modules/staff/api/team-members/tags/unassign/route.js.map +2 -2
- package/dist/modules/translations/api/[entityType]/[entityId]/route.js +61 -1
- package/dist/modules/translations/api/[entityType]/[entityId]/route.js.map +2 -2
- package/dist/modules/translations/api/context.js +7 -0
- package/dist/modules/translations/api/context.js.map +2 -2
- package/dist/modules/translations/api/put/locales.js +33 -1
- package/dist/modules/translations/api/put/locales.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/visual-editor/page.js +6 -7
- package/dist/modules/workflows/backend/definitions/visual-editor/page.js.map +2 -2
- package/dist/modules/workflows/backend/instances/[id]/page.js.map +1 -1
- package/dist/modules/workflows/components/EdgeEditDialog.js.map +1 -1
- package/dist/modules/workflows/components/EdgeEditDialogCrudForm.js.map +1 -1
- package/dist/modules/workflows/components/NodeEditDialog.js.map +1 -1
- package/dist/modules/workflows/components/NodeEditDialogCrudForm.js.map +1 -1
- package/dist/modules/workflows/components/WorkflowGraph.js.map +1 -1
- package/dist/modules/workflows/components/WorkflowGraphImpl.js +17 -9
- package/dist/modules/workflows/components/WorkflowGraphImpl.js.map +2 -2
- package/dist/modules/workflows/components/mobile/MobileVisualEditor.js.map +1 -1
- package/dist/modules/workflows/frontend/checkout-demo/deriveCurrentStep.js +8 -0
- package/dist/modules/workflows/frontend/checkout-demo/deriveCurrentStep.js.map +7 -0
- package/dist/modules/workflows/frontend/checkout-demo/page.js +2 -20
- package/dist/modules/workflows/frontend/checkout-demo/page.js.map +2 -2
- package/dist/modules/workflows/lib/graph-utils.js +8 -0
- package/dist/modules/workflows/lib/graph-utils.js.map +2 -2
- package/generated/entities/catalog_product/index.ts +26 -0
- package/generated/entities/catalog_product_variant/index.ts +2 -0
- package/generated/entity-fields-registry.ts +28 -0
- package/package.json +7 -7
- package/src/modules/catalog/api/products/route.ts +123 -39
- package/src/modules/catalog/api/variants/route.ts +4 -0
- package/src/modules/catalog/backend/catalog/products/[id]/page.tsx +43 -0
- package/src/modules/catalog/backend/catalog/products/[productId]/variants/[variantId]/page.tsx +14 -0
- package/src/modules/catalog/backend/catalog/products/[productId]/variants/create/page.tsx +2 -0
- package/src/modules/catalog/backend/catalog/products/create/page.tsx +41 -0
- package/src/modules/catalog/commands/products.ts +307 -2
- package/src/modules/catalog/commands/variants.ts +90 -1
- package/src/modules/catalog/components/products/ProductComplianceSection.tsx +497 -0
- package/src/modules/catalog/components/products/VariantBuilder.tsx +43 -0
- package/src/modules/catalog/components/products/productForm.ts +262 -0
- package/src/modules/catalog/components/products/variantForm.ts +4 -0
- package/src/modules/catalog/data/entities.ts +97 -0
- package/src/modules/catalog/data/types.ts +36 -0
- package/src/modules/catalog/data/validators.ts +159 -3
- package/src/modules/catalog/i18n/de.json +64 -0
- package/src/modules/catalog/i18n/en.json +64 -0
- package/src/modules/catalog/i18n/es.json +64 -0
- package/src/modules/catalog/i18n/pl.json +64 -0
- package/src/modules/catalog/lib/gtin.ts +66 -0
- package/src/modules/catalog/migrations/.snapshot-open-mercato.json +457 -0
- package/src/modules/catalog/migrations/Migration20260611090000.ts +17 -0
- package/src/modules/catalog/translations.ts +1 -1
- package/src/modules/configs/api/cache/route.ts +72 -10
- package/src/modules/configs/components/CachePanel.tsx +59 -29
- package/src/modules/currencies/api/currencies/options/route.ts +22 -4
- package/src/modules/currencies/services/rateFetchingService.ts +63 -26
- package/src/modules/customer_accounts/backend/customer_accounts/users/[id]/page.tsx +18 -18
- package/src/modules/customer_accounts/backend/customer_accounts/users/page.tsx +1 -1
- package/src/modules/customer_accounts/i18n/de.json +1 -1
- package/src/modules/customer_accounts/i18n/en.json +1 -1
- package/src/modules/customer_accounts/i18n/es.json +1 -1
- package/src/modules/customer_accounts/i18n/pl.json +1 -1
- package/src/modules/customers/backend/calendar/page.meta.ts +23 -0
- package/src/modules/customers/backend/calendar/page.tsx +12 -0
- package/src/modules/customers/cli.ts +1 -0
- package/src/modules/customers/components/calendar/AgendaList.tsx +219 -0
- package/src/modules/customers/components/calendar/CalendarEventEditor.tsx +386 -0
- package/src/modules/customers/components/calendar/CalendarFooter.tsx +61 -0
- package/src/modules/customers/components/calendar/CalendarHeader.tsx +40 -0
- package/src/modules/customers/components/calendar/CalendarScreen.tsx +590 -0
- package/src/modules/customers/components/calendar/CalendarSettingsModal.tsx +207 -0
- package/src/modules/customers/components/calendar/CalendarTabs.tsx +63 -0
- package/src/modules/customers/components/calendar/CalendarToolbar.tsx +295 -0
- package/src/modules/customers/components/calendar/EventBlock.tsx +205 -0
- package/src/modules/customers/components/calendar/EventPeekPopover.tsx +100 -0
- package/src/modules/customers/components/calendar/MonthGrid.tsx +236 -0
- package/src/modules/customers/components/calendar/ShortcutsDialog.tsx +57 -0
- package/src/modules/customers/components/calendar/TimeGrid.tsx +510 -0
- package/src/modules/customers/components/calendar/UpcomingCards.tsx +220 -0
- package/src/modules/customers/components/calendar/editor/CategoryField.tsx +79 -0
- package/src/modules/customers/components/calendar/editor/LocationField.tsx +37 -0
- package/src/modules/customers/components/calendar/editor/PeopleField.tsx +148 -0
- package/src/modules/customers/components/calendar/editor/RelatedToField.tsx +242 -0
- package/src/modules/customers/components/calendar/editor/RepeatField.tsx +132 -0
- package/src/modules/customers/components/calendar/editor/ScheduleSection.tsx +110 -0
- package/src/modules/customers/components/calendar/editor/SegmentGroup.tsx +50 -0
- package/src/modules/customers/components/calendar/editor/hooks.ts +162 -0
- package/src/modules/customers/components/calendar/editor/inputs.tsx +158 -0
- package/src/modules/customers/components/calendar/editor/lookups.ts +160 -0
- package/src/modules/customers/components/calendar/types.ts +163 -0
- package/src/modules/customers/components/calendar/useCalendarItems.ts +162 -0
- package/src/modules/customers/components/calendar/useCalendarPreferences.ts +52 -0
- package/src/modules/customers/i18n/de.json +195 -0
- package/src/modules/customers/i18n/en.json +195 -0
- package/src/modules/customers/i18n/es.json +195 -0
- package/src/modules/customers/i18n/pl.json +195 -0
- package/src/modules/customers/lib/calendar/categories.ts +26 -0
- package/src/modules/customers/lib/calendar/conflicts.ts +117 -0
- package/src/modules/customers/lib/calendar/editorPayload.ts +388 -0
- package/src/modules/customers/lib/calendar/grid.ts +50 -0
- package/src/modules/customers/lib/calendar/layout.ts +47 -0
- package/src/modules/customers/lib/calendar/mapItem.ts +94 -0
- package/src/modules/customers/lib/calendar/preferences.ts +95 -0
- package/src/modules/customers/lib/calendar/range.ts +45 -0
- package/src/modules/customers/lib/calendar/recurrence.ts +137 -0
- package/src/modules/dashboards/services/widgetDataService.ts +8 -6
- package/src/modules/dictionaries/api/[dictionaryId]/entries/[entryId]/route.ts +61 -1
- package/src/modules/dictionaries/api/[dictionaryId]/entries/route.ts +33 -1
- package/src/modules/dictionaries/api/[dictionaryId]/route.ts +65 -1
- package/src/modules/dictionaries/api/route.ts +36 -1
- package/src/modules/feature_toggles/lib/queries.ts +41 -60
- package/src/modules/perspectives/api/[tableId]/[perspectiveId]/route.ts +34 -1
- package/src/modules/perspectives/api/[tableId]/roles/[roleId]/route.ts +34 -1
- package/src/modules/perspectives/api/[tableId]/route.ts +107 -32
- package/src/modules/perspectives/services/perspectiveService.ts +9 -5
- package/src/modules/planner/api/access.ts +9 -0
- package/src/modules/planner/api/availability-date-specific.ts +22 -1
- package/src/modules/planner/api/availability-weekly.ts +22 -1
- package/src/modules/resources/api/resources/tags/assign/route.ts +42 -0
- package/src/modules/resources/api/resources/tags/unassign/route.ts +42 -0
- package/src/modules/sales/api/settings/document-numbers/route.ts +35 -1
- package/src/modules/sales/api/settings/order-editing/route.ts +37 -3
- package/src/modules/staff/api/leave-requests/accept/route.ts +45 -0
- package/src/modules/staff/api/leave-requests/reject/route.ts +45 -0
- package/src/modules/staff/api/team-members/self/route.ts +43 -0
- package/src/modules/staff/api/team-members/tags/assign/route.ts +45 -0
- package/src/modules/staff/api/team-members/tags/unassign/route.ts +45 -0
- package/src/modules/translations/api/[entityType]/[entityId]/route.ts +65 -1
- package/src/modules/translations/api/context.ts +7 -0
- package/src/modules/translations/api/put/locales.ts +35 -1
- package/src/modules/workflows/backend/definitions/visual-editor/page.tsx +11 -9
- package/src/modules/workflows/backend/instances/[id]/page.tsx +1 -1
- package/src/modules/workflows/components/EdgeEditDialog.tsx +1 -1
- package/src/modules/workflows/components/EdgeEditDialogCrudForm.tsx +1 -1
- package/src/modules/workflows/components/NodeEditDialog.tsx +1 -1
- package/src/modules/workflows/components/NodeEditDialogCrudForm.tsx +1 -1
- package/src/modules/workflows/components/WorkflowGraph.tsx +2 -2
- package/src/modules/workflows/components/WorkflowGraphImpl.tsx +27 -13
- package/src/modules/workflows/components/mobile/MobileVisualEditor.tsx +3 -3
- package/src/modules/workflows/frontend/checkout-demo/deriveCurrentStep.ts +12 -0
- package/src/modules/workflows/frontend/checkout-demo/page.tsx +3 -23
- package/src/modules/workflows/lib/graph-utils.ts +21 -1
|
@@ -170,6 +170,51 @@
|
|
|
170
170
|
"catalog.pricing.list.title": "Preislisten",
|
|
171
171
|
"catalog.products.actions.create": "Erstellen",
|
|
172
172
|
"catalog.products.actions.refresh": "Aktualisieren",
|
|
173
|
+
"catalog.products.compliance.codes.description": "Klassifizierungscodes für KSeF/JPK-Rechnungen, Zollanmeldungen und Marktplatz-Feeds.",
|
|
174
|
+
"catalog.products.compliance.codes.title": "Klassifizierungscodes (PL/EU)",
|
|
175
|
+
"catalog.products.compliance.commercial.description": "Bestellmengenbeschränkungen und Verkauf nur auf Anfrage (B2B).",
|
|
176
|
+
"catalog.products.compliance.commercial.title": "Handelskonditionen",
|
|
177
|
+
"catalog.products.compliance.exciseCategories.alcohol": "Alkohol",
|
|
178
|
+
"catalog.products.compliance.exciseCategories.energy_drink": "Energydrink",
|
|
179
|
+
"catalog.products.compliance.exciseCategories.fuel": "Kraftstoff",
|
|
180
|
+
"catalog.products.compliance.exciseCategories.other": "Sonstiges",
|
|
181
|
+
"catalog.products.compliance.exciseCategories.tobacco": "Tabak",
|
|
182
|
+
"catalog.products.compliance.fields.ageMin": "Mindestalter der Käufer",
|
|
183
|
+
"catalog.products.compliance.fields.availableFrom": "Verfügbar ab",
|
|
184
|
+
"catalog.products.compliance.fields.availableUntil": "Verfügbar bis",
|
|
185
|
+
"catalog.products.compliance.fields.canonicalUrl": "Kanonische URL",
|
|
186
|
+
"catalog.products.compliance.fields.cn": "CN-Code (Kombinierte Nomenklatur)",
|
|
187
|
+
"catalog.products.compliance.fields.containsLithiumBattery": "Enthält Lithiumbatterie",
|
|
188
|
+
"catalog.products.compliance.fields.countryOfOrigin": "Ursprungsland (ISO-Code)",
|
|
189
|
+
"catalog.products.compliance.fields.endOfLifeAt": "Auslaufdatum (EOL)",
|
|
190
|
+
"catalog.products.compliance.fields.exciseCategory": "Verbrauchsteuerkategorie",
|
|
191
|
+
"catalog.products.compliance.fields.gtuCodes": "GTU-Codes (JPK_V7)",
|
|
192
|
+
"catalog.products.compliance.fields.hazmatClass": "Gefahrgutklasse (ADR)",
|
|
193
|
+
"catalog.products.compliance.fields.hazmatPackingGroup": "Verpackungsgruppe",
|
|
194
|
+
"catalog.products.compliance.fields.hs": "HS-Code (Zolltarif)",
|
|
195
|
+
"catalog.products.compliance.fields.isExciseGood": "Verbrauchsteuerpflichtige Ware",
|
|
196
|
+
"catalog.products.compliance.fields.isQuoteOnly": "Nur auf Anfrage (Preis auf Anfrage)",
|
|
197
|
+
"catalog.products.compliance.fields.launchAt": "Einführungsdatum",
|
|
198
|
+
"catalog.products.compliance.fields.maxOrderQty": "Maximale Bestellmenge",
|
|
199
|
+
"catalog.products.compliance.fields.minOrderQty": "Mindestbestellmenge",
|
|
200
|
+
"catalog.products.compliance.fields.orderQtyIncrement": "Mengenschritt",
|
|
201
|
+
"catalog.products.compliance.fields.pkwiu": "PKWiU-Code",
|
|
202
|
+
"catalog.products.compliance.fields.requiresPrescription": "Rezeptpflichtig",
|
|
203
|
+
"catalog.products.compliance.fields.requiresShipping": "Versand erforderlich",
|
|
204
|
+
"catalog.products.compliance.fields.seoDescription": "SEO-Beschreibung",
|
|
205
|
+
"catalog.products.compliance.fields.seoTitle": "SEO-Titel",
|
|
206
|
+
"catalog.products.compliance.fields.taxClassification": "Steuerklassifizierungscode",
|
|
207
|
+
"catalog.products.compliance.fields.unNumber": "UN-Nummer",
|
|
208
|
+
"catalog.products.compliance.logistics.description": "Einführungs- und Auslaufdaten, Verkaufsfenster und Versandanforderungen.",
|
|
209
|
+
"catalog.products.compliance.logistics.title": "Verfügbarkeit & Lebenszyklus",
|
|
210
|
+
"catalog.products.compliance.options.none": "Keine",
|
|
211
|
+
"catalog.products.compliance.placeholders.countryOfOrigin": "DE",
|
|
212
|
+
"catalog.products.compliance.placeholders.unNumber": "UN1234",
|
|
213
|
+
"catalog.products.compliance.safety.description": "Alters-, Verbrauchsteuer- und Gefahrgutattribute für Shop, POS und Versanddienstleister.",
|
|
214
|
+
"catalog.products.compliance.safety.title": "Beschränkungen & Sicherheit",
|
|
215
|
+
"catalog.products.compliance.seo.description": "Shop-Metadaten. Titel und Beschreibung sind pro Sprache übersetzbar.",
|
|
216
|
+
"catalog.products.compliance.seo.title": "SEO",
|
|
217
|
+
"catalog.products.compliance.title": "Compliance & Handel",
|
|
173
218
|
"catalog.products.create.actions.generateHandle": "Generieren",
|
|
174
219
|
"catalog.products.create.actions.useMarkdown": "Markdown verwenden",
|
|
175
220
|
"catalog.products.create.actions.usePlain": "Klartext verwenden",
|
|
@@ -531,11 +576,17 @@
|
|
|
531
576
|
"catalog.products.uom.sortOrder": "Sortierung",
|
|
532
577
|
"catalog.products.uom.title": "Maßeinheiten",
|
|
533
578
|
"catalog.products.uom.toBaseFactor": "Basisfaktor",
|
|
579
|
+
"catalog.products.validation.availabilityDateRange": "„Verfügbar bis“ darf nicht vor „Verfügbar ab“ liegen.",
|
|
534
580
|
"catalog.products.validation.baseUnitRequired": "Basiseinheit ist erforderlich, wenn eine Standard-Verkaufseinheit gesetzt ist.",
|
|
581
|
+
"catalog.products.validation.canonicalUrlInvalid": "Die kanonische URL muss mit http:// oder https:// beginnen.",
|
|
582
|
+
"catalog.products.validation.countryCodeInvalid": "Das Ursprungsland muss ein zweibuchstabiger ISO-Code sein.",
|
|
535
583
|
"catalog.products.validation.handleFormat": "Handle darf nur Kleinbuchstaben, Ziffern, Bindestriche oder Unterstriche enthalten.",
|
|
584
|
+
"catalog.products.validation.lifecycleDateRange": "Das Auslaufdatum darf nicht vor dem Einführungsdatum liegen.",
|
|
585
|
+
"catalog.products.validation.orderQtyRange": "Die maximale Bestellmenge darf nicht kleiner als die minimale sein.",
|
|
536
586
|
"catalog.products.validation.referenceUnitRequired": "Referenzeinheit ist erforderlich, wenn die Grundpreisanzeige aktiviert ist.",
|
|
537
587
|
"catalog.products.validation.skuFormat": "SKU darf Buchstaben, Zahlen, Bindestriche, Unterstriche oder Punkte enthalten.",
|
|
538
588
|
"catalog.products.validation.titleRequired": "Titel ist erforderlich.",
|
|
589
|
+
"catalog.products.validation.unNumberInvalid": "Die UN-Nummer muss aus vier Ziffern bestehen (z. B. UN1234).",
|
|
539
590
|
"catalog.products.variantMedia.defaultFallbackApplied": "Produktvorschaubild von Variante \"{name}\" übernommen.",
|
|
540
591
|
"catalog.products.variantMedia.editVariant": "Variante bearbeiten",
|
|
541
592
|
"catalog.products.variantMedia.empty": "Noch keine Variantenmedien hochgeladen.",
|
|
@@ -559,6 +610,7 @@
|
|
|
559
610
|
"catalog.stats.snapshotAt": "Stand: {time}",
|
|
560
611
|
"catalog.stats.tags": "Tags",
|
|
561
612
|
"catalog.stats.title": "Katalogübersicht",
|
|
613
|
+
"catalog.variants.errors.gtinExists": "Eine andere Variante verwendet diesen Identifikator bereits.",
|
|
562
614
|
"catalog.variants.errors.skuExists": "SKU wird bereits verwendet.",
|
|
563
615
|
"catalog.variants.form.actions.backToProduct": "Zurück zu Produktvarianten",
|
|
564
616
|
"catalog.variants.form.barcodeLabel": "Barcode",
|
|
@@ -585,7 +637,17 @@
|
|
|
585
637
|
"catalog.variants.form.errors.productMissing": "Produktkennung fehlt.",
|
|
586
638
|
"catalog.variants.form.errors.variantMissing": "Variantenkennung fehlt.",
|
|
587
639
|
"catalog.variants.form.general": "Allgemein",
|
|
640
|
+
"catalog.variants.form.gtinTypeHint": "Typisierte Barcodes werden validiert und bleiben pro Organisation eindeutig.",
|
|
641
|
+
"catalog.variants.form.gtinTypeLabel": "Identifikatortyp (GTIN)",
|
|
642
|
+
"catalog.variants.form.gtinTypeNone": "Ohne Typ",
|
|
643
|
+
"catalog.variants.form.gtinTypes.asin": "ASIN",
|
|
644
|
+
"catalog.variants.form.gtinTypes.ean13": "EAN-13",
|
|
645
|
+
"catalog.variants.form.gtinTypes.ean8": "EAN-8",
|
|
646
|
+
"catalog.variants.form.gtinTypes.isbn": "ISBN",
|
|
647
|
+
"catalog.variants.form.gtinTypes.mpn": "MPN",
|
|
648
|
+
"catalog.variants.form.gtinTypes.upc": "UPC-A",
|
|
588
649
|
"catalog.variants.form.height": "Höhe",
|
|
650
|
+
"catalog.variants.form.hsCodeLabel": "HS-Code (Zolltarif)",
|
|
589
651
|
"catalog.variants.form.isActiveHint": "Inaktive Varianten bleiben verborgen",
|
|
590
652
|
"catalog.variants.form.isActiveLabel": "Aktiv",
|
|
591
653
|
"catalog.variants.form.isDefaultHint": "Wird in Storefronts verwendet",
|
|
@@ -614,6 +676,8 @@
|
|
|
614
676
|
"catalog.variants.form.weightUnit": "Gewichtseinheit",
|
|
615
677
|
"catalog.variants.form.weightUnitPlaceholder": "kg",
|
|
616
678
|
"catalog.variants.form.width": "Breite",
|
|
679
|
+
"catalog.variants.validation.gtinBarcodeRequired": "Ein Barcode ist erforderlich, wenn ein Identifikatortyp gesetzt ist.",
|
|
680
|
+
"catalog.variants.validation.gtinChecksum": "Der Barcode passt nicht zum gewählten Identifikatortyp.",
|
|
617
681
|
"catalog.widgets.productSeo.groupDescription": "Optimiere Produkttitel und -beschreibungen vor der Veröffentlichung.",
|
|
618
682
|
"catalog.widgets.productSeo.groupLabel": "Produkt-SEO-Helfer",
|
|
619
683
|
"customers~catalog.errors.id_required": "Datensatzkennung ist erforderlich.",
|
|
@@ -170,6 +170,51 @@
|
|
|
170
170
|
"catalog.pricing.list.title": "Price Lists",
|
|
171
171
|
"catalog.products.actions.create": "Create",
|
|
172
172
|
"catalog.products.actions.refresh": "Refresh",
|
|
173
|
+
"catalog.products.compliance.codes.description": "Classification codes used by KSeF/JPK invoices, customs declarations, and marketplace feeds.",
|
|
174
|
+
"catalog.products.compliance.codes.title": "Compliance codes (PL/EU)",
|
|
175
|
+
"catalog.products.compliance.commercial.description": "Order quantity constraints and quote-only selling for B2B.",
|
|
176
|
+
"catalog.products.compliance.commercial.title": "Commercial terms",
|
|
177
|
+
"catalog.products.compliance.exciseCategories.alcohol": "Alcohol",
|
|
178
|
+
"catalog.products.compliance.exciseCategories.energy_drink": "Energy drink",
|
|
179
|
+
"catalog.products.compliance.exciseCategories.fuel": "Fuel",
|
|
180
|
+
"catalog.products.compliance.exciseCategories.other": "Other",
|
|
181
|
+
"catalog.products.compliance.exciseCategories.tobacco": "Tobacco",
|
|
182
|
+
"catalog.products.compliance.fields.ageMin": "Minimum buyer age",
|
|
183
|
+
"catalog.products.compliance.fields.availableFrom": "Available from",
|
|
184
|
+
"catalog.products.compliance.fields.availableUntil": "Available until",
|
|
185
|
+
"catalog.products.compliance.fields.canonicalUrl": "Canonical URL",
|
|
186
|
+
"catalog.products.compliance.fields.cn": "CN code (Combined Nomenclature)",
|
|
187
|
+
"catalog.products.compliance.fields.containsLithiumBattery": "Contains lithium battery",
|
|
188
|
+
"catalog.products.compliance.fields.countryOfOrigin": "Country of origin (ISO code)",
|
|
189
|
+
"catalog.products.compliance.fields.endOfLifeAt": "End of life",
|
|
190
|
+
"catalog.products.compliance.fields.exciseCategory": "Excise category",
|
|
191
|
+
"catalog.products.compliance.fields.gtuCodes": "GTU codes (JPK_V7)",
|
|
192
|
+
"catalog.products.compliance.fields.hazmatClass": "Hazmat class (ADR)",
|
|
193
|
+
"catalog.products.compliance.fields.hazmatPackingGroup": "Packing group",
|
|
194
|
+
"catalog.products.compliance.fields.hs": "HS code (customs tariff)",
|
|
195
|
+
"catalog.products.compliance.fields.isExciseGood": "Excise good",
|
|
196
|
+
"catalog.products.compliance.fields.isQuoteOnly": "Quote only (price on request)",
|
|
197
|
+
"catalog.products.compliance.fields.launchAt": "Launch date",
|
|
198
|
+
"catalog.products.compliance.fields.maxOrderQty": "Maximum order quantity",
|
|
199
|
+
"catalog.products.compliance.fields.minOrderQty": "Minimum order quantity",
|
|
200
|
+
"catalog.products.compliance.fields.orderQtyIncrement": "Quantity increment",
|
|
201
|
+
"catalog.products.compliance.fields.pkwiu": "PKWiU code",
|
|
202
|
+
"catalog.products.compliance.fields.requiresPrescription": "Requires prescription",
|
|
203
|
+
"catalog.products.compliance.fields.requiresShipping": "Requires shipping",
|
|
204
|
+
"catalog.products.compliance.fields.seoDescription": "SEO description",
|
|
205
|
+
"catalog.products.compliance.fields.seoTitle": "SEO title",
|
|
206
|
+
"catalog.products.compliance.fields.taxClassification": "Tax classification code",
|
|
207
|
+
"catalog.products.compliance.fields.unNumber": "UN number",
|
|
208
|
+
"catalog.products.compliance.logistics.description": "Launch, end-of-life, and selling windows plus shipping requirements.",
|
|
209
|
+
"catalog.products.compliance.logistics.title": "Availability & lifecycle",
|
|
210
|
+
"catalog.products.compliance.options.none": "None",
|
|
211
|
+
"catalog.products.compliance.placeholders.countryOfOrigin": "PL",
|
|
212
|
+
"catalog.products.compliance.placeholders.unNumber": "UN1234",
|
|
213
|
+
"catalog.products.compliance.safety.description": "Age, excise, and dangerous-goods attributes enforced by storefront, POS, and carriers.",
|
|
214
|
+
"catalog.products.compliance.safety.title": "Restrictions & safety",
|
|
215
|
+
"catalog.products.compliance.seo.description": "Storefront metadata. Title and description are translatable per locale.",
|
|
216
|
+
"catalog.products.compliance.seo.title": "SEO",
|
|
217
|
+
"catalog.products.compliance.title": "Compliance & commerce",
|
|
173
218
|
"catalog.products.create.actions.generateHandle": "Generate",
|
|
174
219
|
"catalog.products.create.actions.useMarkdown": "Use markdown",
|
|
175
220
|
"catalog.products.create.actions.usePlain": "Use plain text",
|
|
@@ -531,11 +576,17 @@
|
|
|
531
576
|
"catalog.products.uom.sortOrder": "Sort",
|
|
532
577
|
"catalog.products.uom.title": "Units of measure",
|
|
533
578
|
"catalog.products.uom.toBaseFactor": "To base factor",
|
|
579
|
+
"catalog.products.validation.availabilityDateRange": "Available until cannot be before available from.",
|
|
534
580
|
"catalog.products.validation.baseUnitRequired": "Base unit is required when a default sales unit is set.",
|
|
581
|
+
"catalog.products.validation.canonicalUrlInvalid": "Canonical URL must start with http:// or https://.",
|
|
582
|
+
"catalog.products.validation.countryCodeInvalid": "Country of origin must be a two-letter ISO code.",
|
|
535
583
|
"catalog.products.validation.handleFormat": "Handle must include lowercase letters, digits, hyphen, or underscore.",
|
|
584
|
+
"catalog.products.validation.lifecycleDateRange": "End of life cannot be before the launch date.",
|
|
585
|
+
"catalog.products.validation.orderQtyRange": "Maximum order quantity cannot be lower than the minimum.",
|
|
536
586
|
"catalog.products.validation.referenceUnitRequired": "Reference unit is required when unit price display is enabled.",
|
|
537
587
|
"catalog.products.validation.skuFormat": "SKU may include letters, numbers, hyphen, underscore, or period.",
|
|
538
588
|
"catalog.products.validation.titleRequired": "Title is required.",
|
|
589
|
+
"catalog.products.validation.unNumberInvalid": "UN number must be four digits (e.g. UN1234).",
|
|
539
590
|
"catalog.products.variantMedia.defaultFallbackApplied": "Product thumbnail set from variant \"{name}\".",
|
|
540
591
|
"catalog.products.variantMedia.editVariant": "Edit variant",
|
|
541
592
|
"catalog.products.variantMedia.empty": "No variant media uploaded yet.",
|
|
@@ -559,6 +610,7 @@
|
|
|
559
610
|
"catalog.stats.snapshotAt": "Snapshot at {time}",
|
|
560
611
|
"catalog.stats.tags": "Tags",
|
|
561
612
|
"catalog.stats.title": "Catalog overview",
|
|
613
|
+
"catalog.variants.errors.gtinExists": "Another variant already uses this identifier.",
|
|
562
614
|
"catalog.variants.errors.skuExists": "SKU already in use.",
|
|
563
615
|
"catalog.variants.form.actions.backToProduct": "Back to product variants",
|
|
564
616
|
"catalog.variants.form.barcodeLabel": "Barcode",
|
|
@@ -585,7 +637,17 @@
|
|
|
585
637
|
"catalog.variants.form.errors.productMissing": "Product identifier is missing.",
|
|
586
638
|
"catalog.variants.form.errors.variantMissing": "Variant identifier is missing.",
|
|
587
639
|
"catalog.variants.form.general": "General",
|
|
640
|
+
"catalog.variants.form.gtinTypeHint": "Typed barcodes are validated and kept unique per organization.",
|
|
641
|
+
"catalog.variants.form.gtinTypeLabel": "Identifier type (GTIN)",
|
|
642
|
+
"catalog.variants.form.gtinTypeNone": "Untyped",
|
|
643
|
+
"catalog.variants.form.gtinTypes.asin": "ASIN",
|
|
644
|
+
"catalog.variants.form.gtinTypes.ean13": "EAN-13",
|
|
645
|
+
"catalog.variants.form.gtinTypes.ean8": "EAN-8",
|
|
646
|
+
"catalog.variants.form.gtinTypes.isbn": "ISBN",
|
|
647
|
+
"catalog.variants.form.gtinTypes.mpn": "MPN",
|
|
648
|
+
"catalog.variants.form.gtinTypes.upc": "UPC-A",
|
|
588
649
|
"catalog.variants.form.height": "Height",
|
|
650
|
+
"catalog.variants.form.hsCodeLabel": "HS code (customs tariff)",
|
|
589
651
|
"catalog.variants.form.isActiveHint": "Inactive variants stay hidden",
|
|
590
652
|
"catalog.variants.form.isActiveLabel": "Active",
|
|
591
653
|
"catalog.variants.form.isDefaultHint": "Used in storefronts",
|
|
@@ -614,6 +676,8 @@
|
|
|
614
676
|
"catalog.variants.form.weightUnit": "Weight unit",
|
|
615
677
|
"catalog.variants.form.weightUnitPlaceholder": "kg",
|
|
616
678
|
"catalog.variants.form.width": "Width",
|
|
679
|
+
"catalog.variants.validation.gtinBarcodeRequired": "A barcode value is required when an identifier type is set.",
|
|
680
|
+
"catalog.variants.validation.gtinChecksum": "The barcode does not match the selected identifier type.",
|
|
617
681
|
"catalog.widgets.productSeo.groupDescription": "Optimize product titles and descriptions before publishing.",
|
|
618
682
|
"catalog.widgets.productSeo.groupLabel": "Product SEO Helper",
|
|
619
683
|
"customers~catalog.errors.id_required": "Record identifier is required.",
|
|
@@ -170,6 +170,51 @@
|
|
|
170
170
|
"catalog.pricing.list.title": "Listas de precios",
|
|
171
171
|
"catalog.products.actions.create": "Crear",
|
|
172
172
|
"catalog.products.actions.refresh": "Actualizar",
|
|
173
|
+
"catalog.products.compliance.codes.description": "Códigos de clasificación usados en facturas KSeF/JPK, declaraciones aduaneras y feeds de marketplaces.",
|
|
174
|
+
"catalog.products.compliance.codes.title": "Códigos de clasificación (PL/UE)",
|
|
175
|
+
"catalog.products.compliance.commercial.description": "Límites de cantidad de pedido y venta solo bajo presupuesto (B2B).",
|
|
176
|
+
"catalog.products.compliance.commercial.title": "Condiciones comerciales",
|
|
177
|
+
"catalog.products.compliance.exciseCategories.alcohol": "Alcohol",
|
|
178
|
+
"catalog.products.compliance.exciseCategories.energy_drink": "Bebida energética",
|
|
179
|
+
"catalog.products.compliance.exciseCategories.fuel": "Combustible",
|
|
180
|
+
"catalog.products.compliance.exciseCategories.other": "Otro",
|
|
181
|
+
"catalog.products.compliance.exciseCategories.tobacco": "Tabaco",
|
|
182
|
+
"catalog.products.compliance.fields.ageMin": "Edad mínima del comprador",
|
|
183
|
+
"catalog.products.compliance.fields.availableFrom": "Disponible desde",
|
|
184
|
+
"catalog.products.compliance.fields.availableUntil": "Disponible hasta",
|
|
185
|
+
"catalog.products.compliance.fields.canonicalUrl": "URL canónica",
|
|
186
|
+
"catalog.products.compliance.fields.cn": "Código NC (Nomenclatura Combinada)",
|
|
187
|
+
"catalog.products.compliance.fields.containsLithiumBattery": "Contiene batería de litio",
|
|
188
|
+
"catalog.products.compliance.fields.countryOfOrigin": "País de origen (código ISO)",
|
|
189
|
+
"catalog.products.compliance.fields.endOfLifeAt": "Fin de vida (EOL)",
|
|
190
|
+
"catalog.products.compliance.fields.exciseCategory": "Categoría de impuestos especiales",
|
|
191
|
+
"catalog.products.compliance.fields.gtuCodes": "Códigos GTU (JPK_V7)",
|
|
192
|
+
"catalog.products.compliance.fields.hazmatClass": "Clase de mercancías peligrosas (ADR)",
|
|
193
|
+
"catalog.products.compliance.fields.hazmatPackingGroup": "Grupo de embalaje",
|
|
194
|
+
"catalog.products.compliance.fields.hs": "Código HS (arancel aduanero)",
|
|
195
|
+
"catalog.products.compliance.fields.isExciseGood": "Producto con impuestos especiales",
|
|
196
|
+
"catalog.products.compliance.fields.isQuoteOnly": "Solo presupuesto (precio a consultar)",
|
|
197
|
+
"catalog.products.compliance.fields.launchAt": "Fecha de lanzamiento",
|
|
198
|
+
"catalog.products.compliance.fields.maxOrderQty": "Cantidad máxima de pedido",
|
|
199
|
+
"catalog.products.compliance.fields.minOrderQty": "Cantidad mínima de pedido",
|
|
200
|
+
"catalog.products.compliance.fields.orderQtyIncrement": "Incremento de cantidad",
|
|
201
|
+
"catalog.products.compliance.fields.pkwiu": "Código PKWiU",
|
|
202
|
+
"catalog.products.compliance.fields.requiresPrescription": "Requiere receta",
|
|
203
|
+
"catalog.products.compliance.fields.requiresShipping": "Requiere envío",
|
|
204
|
+
"catalog.products.compliance.fields.seoDescription": "Descripción SEO",
|
|
205
|
+
"catalog.products.compliance.fields.seoTitle": "Título SEO",
|
|
206
|
+
"catalog.products.compliance.fields.taxClassification": "Código de clasificación fiscal",
|
|
207
|
+
"catalog.products.compliance.fields.unNumber": "Número UN",
|
|
208
|
+
"catalog.products.compliance.logistics.description": "Fechas de lanzamiento y retirada, ventanas de venta y requisitos de envío.",
|
|
209
|
+
"catalog.products.compliance.logistics.title": "Disponibilidad y ciclo de vida",
|
|
210
|
+
"catalog.products.compliance.options.none": "Ninguna",
|
|
211
|
+
"catalog.products.compliance.placeholders.countryOfOrigin": "ES",
|
|
212
|
+
"catalog.products.compliance.placeholders.unNumber": "UN1234",
|
|
213
|
+
"catalog.products.compliance.safety.description": "Atributos de edad, impuestos especiales y mercancías peligrosas aplicados por tienda, TPV y transportistas.",
|
|
214
|
+
"catalog.products.compliance.safety.title": "Restricciones y seguridad",
|
|
215
|
+
"catalog.products.compliance.seo.description": "Metadatos de la tienda. El título y la descripción se traducen por idioma.",
|
|
216
|
+
"catalog.products.compliance.seo.title": "SEO",
|
|
217
|
+
"catalog.products.compliance.title": "Cumplimiento y comercio",
|
|
173
218
|
"catalog.products.create.actions.generateHandle": "Generar",
|
|
174
219
|
"catalog.products.create.actions.useMarkdown": "Usar markdown",
|
|
175
220
|
"catalog.products.create.actions.usePlain": "Usar texto plano",
|
|
@@ -531,11 +576,17 @@
|
|
|
531
576
|
"catalog.products.uom.sortOrder": "Orden",
|
|
532
577
|
"catalog.products.uom.title": "Unidades de medida",
|
|
533
578
|
"catalog.products.uom.toBaseFactor": "Factor base",
|
|
579
|
+
"catalog.products.validation.availabilityDateRange": "«Disponible hasta» no puede ser anterior a «Disponible desde».",
|
|
534
580
|
"catalog.products.validation.baseUnitRequired": "La unidad base es obligatoria cuando se establece una unidad de venta predeterminada.",
|
|
581
|
+
"catalog.products.validation.canonicalUrlInvalid": "La URL canónica debe comenzar con http:// o https://.",
|
|
582
|
+
"catalog.products.validation.countryCodeInvalid": "El país de origen debe ser un código ISO de dos letras.",
|
|
535
583
|
"catalog.products.validation.handleFormat": "El identificador solo puede contener letras minúsculas, dígitos, guiones o guiones bajos.",
|
|
584
|
+
"catalog.products.validation.lifecycleDateRange": "El fin de vida no puede ser anterior a la fecha de lanzamiento.",
|
|
585
|
+
"catalog.products.validation.orderQtyRange": "La cantidad máxima de pedido no puede ser menor que la mínima.",
|
|
536
586
|
"catalog.products.validation.referenceUnitRequired": "La unidad de referencia es obligatoria cuando la visualización del precio unitario está activada.",
|
|
537
587
|
"catalog.products.validation.skuFormat": "El SKU puede incluir letras, números, guión, guión bajo o punto.",
|
|
538
588
|
"catalog.products.validation.titleRequired": "El título es obligatorio.",
|
|
589
|
+
"catalog.products.validation.unNumberInvalid": "El número UN debe tener cuatro dígitos (p. ej., UN1234).",
|
|
539
590
|
"catalog.products.variantMedia.defaultFallbackApplied": "Miniatura del producto establecida desde la variante \"{name}\".",
|
|
540
591
|
"catalog.products.variantMedia.editVariant": "Editar variante",
|
|
541
592
|
"catalog.products.variantMedia.empty": "Todavía no se han subido medios de variantes.",
|
|
@@ -559,6 +610,7 @@
|
|
|
559
610
|
"catalog.stats.snapshotAt": "Captura en {time}",
|
|
560
611
|
"catalog.stats.tags": "Etiquetas",
|
|
561
612
|
"catalog.stats.title": "Resumen del catálogo",
|
|
613
|
+
"catalog.variants.errors.gtinExists": "Otra variante ya utiliza este identificador.",
|
|
562
614
|
"catalog.variants.errors.skuExists": "El SKU ya está en uso.",
|
|
563
615
|
"catalog.variants.form.actions.backToProduct": "Volver a variantes del producto",
|
|
564
616
|
"catalog.variants.form.barcodeLabel": "Código de barras",
|
|
@@ -585,7 +637,17 @@
|
|
|
585
637
|
"catalog.variants.form.errors.productMissing": "Falta el identificador del producto.",
|
|
586
638
|
"catalog.variants.form.errors.variantMissing": "Falta el identificador de la variante.",
|
|
587
639
|
"catalog.variants.form.general": "General",
|
|
640
|
+
"catalog.variants.form.gtinTypeHint": "Los códigos con tipo se validan y se mantienen únicos por organización.",
|
|
641
|
+
"catalog.variants.form.gtinTypeLabel": "Tipo de identificador (GTIN)",
|
|
642
|
+
"catalog.variants.form.gtinTypeNone": "Sin tipo",
|
|
643
|
+
"catalog.variants.form.gtinTypes.asin": "ASIN",
|
|
644
|
+
"catalog.variants.form.gtinTypes.ean13": "EAN-13",
|
|
645
|
+
"catalog.variants.form.gtinTypes.ean8": "EAN-8",
|
|
646
|
+
"catalog.variants.form.gtinTypes.isbn": "ISBN",
|
|
647
|
+
"catalog.variants.form.gtinTypes.mpn": "MPN",
|
|
648
|
+
"catalog.variants.form.gtinTypes.upc": "UPC-A",
|
|
588
649
|
"catalog.variants.form.height": "Alto",
|
|
650
|
+
"catalog.variants.form.hsCodeLabel": "Código HS (arancel aduanero)",
|
|
589
651
|
"catalog.variants.form.isActiveHint": "Las variantes inactivas permanecen ocultas",
|
|
590
652
|
"catalog.variants.form.isActiveLabel": "Activa",
|
|
591
653
|
"catalog.variants.form.isDefaultHint": "Usada en tiendas",
|
|
@@ -614,6 +676,8 @@
|
|
|
614
676
|
"catalog.variants.form.weightUnit": "Unidad de peso",
|
|
615
677
|
"catalog.variants.form.weightUnitPlaceholder": "kg",
|
|
616
678
|
"catalog.variants.form.width": "Ancho",
|
|
679
|
+
"catalog.variants.validation.gtinBarcodeRequired": "Se requiere un código de barras cuando se establece un tipo de identificador.",
|
|
680
|
+
"catalog.variants.validation.gtinChecksum": "El código de barras no coincide con el tipo de identificador seleccionado.",
|
|
617
681
|
"catalog.widgets.productSeo.groupDescription": "Optimiza los títulos y descripciones de los productos antes de publicar.",
|
|
618
682
|
"catalog.widgets.productSeo.groupLabel": "Asistente SEO del producto",
|
|
619
683
|
"customers~catalog.errors.id_required": "El identificador del registro es obligatorio.",
|
|
@@ -170,6 +170,51 @@
|
|
|
170
170
|
"catalog.pricing.list.title": "Cenniki",
|
|
171
171
|
"catalog.products.actions.create": "Utwórz",
|
|
172
172
|
"catalog.products.actions.refresh": "Odśwież",
|
|
173
|
+
"catalog.products.compliance.codes.description": "Kody klasyfikacyjne używane w fakturach KSeF/JPK, zgłoszeniach celnych i feedach marketplace.",
|
|
174
|
+
"catalog.products.compliance.codes.title": "Kody klasyfikacji (PL/UE)",
|
|
175
|
+
"catalog.products.compliance.commercial.description": "Ograniczenia ilości zamówienia i sprzedaż na zapytanie (B2B).",
|
|
176
|
+
"catalog.products.compliance.commercial.title": "Warunki handlowe",
|
|
177
|
+
"catalog.products.compliance.exciseCategories.alcohol": "Alkohol",
|
|
178
|
+
"catalog.products.compliance.exciseCategories.energy_drink": "Napój energetyczny",
|
|
179
|
+
"catalog.products.compliance.exciseCategories.fuel": "Paliwo",
|
|
180
|
+
"catalog.products.compliance.exciseCategories.other": "Inne",
|
|
181
|
+
"catalog.products.compliance.exciseCategories.tobacco": "Tytoń",
|
|
182
|
+
"catalog.products.compliance.fields.ageMin": "Minimalny wiek kupującego",
|
|
183
|
+
"catalog.products.compliance.fields.availableFrom": "Dostępny od",
|
|
184
|
+
"catalog.products.compliance.fields.availableUntil": "Dostępny do",
|
|
185
|
+
"catalog.products.compliance.fields.canonicalUrl": "Adres kanoniczny (canonical URL)",
|
|
186
|
+
"catalog.products.compliance.fields.cn": "Kod CN (Nomenklatura scalona)",
|
|
187
|
+
"catalog.products.compliance.fields.containsLithiumBattery": "Zawiera baterię litową",
|
|
188
|
+
"catalog.products.compliance.fields.countryOfOrigin": "Kraj pochodzenia (kod ISO)",
|
|
189
|
+
"catalog.products.compliance.fields.endOfLifeAt": "Koniec sprzedaży (EOL)",
|
|
190
|
+
"catalog.products.compliance.fields.exciseCategory": "Kategoria akcyzowa",
|
|
191
|
+
"catalog.products.compliance.fields.gtuCodes": "Kody GTU (JPK_V7)",
|
|
192
|
+
"catalog.products.compliance.fields.hazmatClass": "Klasa ADR (towary niebezpieczne)",
|
|
193
|
+
"catalog.products.compliance.fields.hazmatPackingGroup": "Grupa pakowania",
|
|
194
|
+
"catalog.products.compliance.fields.hs": "Kod HS (taryfa celna)",
|
|
195
|
+
"catalog.products.compliance.fields.isExciseGood": "Towar akcyzowy",
|
|
196
|
+
"catalog.products.compliance.fields.isQuoteOnly": "Tylko wycena (cena na zapytanie)",
|
|
197
|
+
"catalog.products.compliance.fields.launchAt": "Data wprowadzenia",
|
|
198
|
+
"catalog.products.compliance.fields.maxOrderQty": "Maksymalna ilość zamówienia",
|
|
199
|
+
"catalog.products.compliance.fields.minOrderQty": "Minimalna ilość zamówienia",
|
|
200
|
+
"catalog.products.compliance.fields.orderQtyIncrement": "Krok ilości",
|
|
201
|
+
"catalog.products.compliance.fields.pkwiu": "Kod PKWiU",
|
|
202
|
+
"catalog.products.compliance.fields.requiresPrescription": "Wymaga recepty",
|
|
203
|
+
"catalog.products.compliance.fields.requiresShipping": "Wymaga wysyłki",
|
|
204
|
+
"catalog.products.compliance.fields.seoDescription": "Opis SEO",
|
|
205
|
+
"catalog.products.compliance.fields.seoTitle": "Tytuł SEO",
|
|
206
|
+
"catalog.products.compliance.fields.taxClassification": "Kod klasyfikacji podatkowej",
|
|
207
|
+
"catalog.products.compliance.fields.unNumber": "Numer UN",
|
|
208
|
+
"catalog.products.compliance.logistics.description": "Daty wprowadzenia i wycofania, okna sprzedaży oraz wymagania wysyłkowe.",
|
|
209
|
+
"catalog.products.compliance.logistics.title": "Dostępność i cykl życia",
|
|
210
|
+
"catalog.products.compliance.options.none": "Brak",
|
|
211
|
+
"catalog.products.compliance.placeholders.countryOfOrigin": "PL",
|
|
212
|
+
"catalog.products.compliance.placeholders.unNumber": "UN1234",
|
|
213
|
+
"catalog.products.compliance.safety.description": "Atrybuty wiekowe, akcyzowe i towarów niebezpiecznych egzekwowane przez sklep, POS i przewoźników.",
|
|
214
|
+
"catalog.products.compliance.safety.title": "Ograniczenia i bezpieczeństwo",
|
|
215
|
+
"catalog.products.compliance.seo.description": "Metadane sklepu. Tytuł i opis są tłumaczone dla każdego języka.",
|
|
216
|
+
"catalog.products.compliance.seo.title": "SEO",
|
|
217
|
+
"catalog.products.compliance.title": "Zgodność i handel",
|
|
173
218
|
"catalog.products.create.actions.generateHandle": "Generuj",
|
|
174
219
|
"catalog.products.create.actions.useMarkdown": "Użyj markdown",
|
|
175
220
|
"catalog.products.create.actions.usePlain": "Użyj zwykłego tekstu",
|
|
@@ -531,11 +576,17 @@
|
|
|
531
576
|
"catalog.products.uom.sortOrder": "Kolejność",
|
|
532
577
|
"catalog.products.uom.title": "Jednostki miary",
|
|
533
578
|
"catalog.products.uom.toBaseFactor": "Współczynnik do bazowej",
|
|
579
|
+
"catalog.products.validation.availabilityDateRange": "Data „dostępny do” nie może być wcześniejsza niż „dostępny od”.",
|
|
534
580
|
"catalog.products.validation.baseUnitRequired": "Jednostka bazowa jest wymagana, gdy ustawiona jest domyślna jednostka sprzedaży.",
|
|
581
|
+
"catalog.products.validation.canonicalUrlInvalid": "Adres kanoniczny musi zaczynać się od http:// lub https://.",
|
|
582
|
+
"catalog.products.validation.countryCodeInvalid": "Kraj pochodzenia musi być dwuliterowym kodem ISO.",
|
|
535
583
|
"catalog.products.validation.handleFormat": "Identyfikator może zawierać tylko małe litery, cyfry, myślniki lub podkreślenia.",
|
|
584
|
+
"catalog.products.validation.lifecycleDateRange": "Koniec sprzedaży nie może być wcześniejszy niż data wprowadzenia.",
|
|
585
|
+
"catalog.products.validation.orderQtyRange": "Maksymalna ilość zamówienia nie może być mniejsza niż minimalna.",
|
|
536
586
|
"catalog.products.validation.referenceUnitRequired": "Jednostka referencyjna jest wymagana, gdy wyświetlanie ceny jednostkowej jest włączone.",
|
|
537
587
|
"catalog.products.validation.skuFormat": "SKU może zawierać litery, cyfry, myślnik, podkreślenie lub kropkę.",
|
|
538
588
|
"catalog.products.validation.titleRequired": "Tytuł jest wymagany.",
|
|
589
|
+
"catalog.products.validation.unNumberInvalid": "Numer UN musi składać się z czterech cyfr (np. UN1234).",
|
|
539
590
|
"catalog.products.variantMedia.defaultFallbackApplied": "Miniatura produktu ustawiona z wariantu \"{name}\".",
|
|
540
591
|
"catalog.products.variantMedia.editVariant": "Edytuj wariant",
|
|
541
592
|
"catalog.products.variantMedia.empty": "Nie dodano jeszcze mediów wariantów.",
|
|
@@ -559,6 +610,7 @@
|
|
|
559
610
|
"catalog.stats.snapshotAt": "Migawka o {time}",
|
|
560
611
|
"catalog.stats.tags": "Tagi",
|
|
561
612
|
"catalog.stats.title": "Przegląd katalogu",
|
|
613
|
+
"catalog.variants.errors.gtinExists": "Inny wariant używa już tego identyfikatora.",
|
|
562
614
|
"catalog.variants.errors.skuExists": "SKU jest już używany.",
|
|
563
615
|
"catalog.variants.form.actions.backToProduct": "Powrót do wariantów produktu",
|
|
564
616
|
"catalog.variants.form.barcodeLabel": "Kod kreskowy",
|
|
@@ -585,7 +637,17 @@
|
|
|
585
637
|
"catalog.variants.form.errors.productMissing": "Brak identyfikatora produktu.",
|
|
586
638
|
"catalog.variants.form.errors.variantMissing": "Brak identyfikatora wariantu.",
|
|
587
639
|
"catalog.variants.form.general": "Ogólne",
|
|
640
|
+
"catalog.variants.form.gtinTypeHint": "Kody z typem są walidowane i unikalne w ramach organizacji.",
|
|
641
|
+
"catalog.variants.form.gtinTypeLabel": "Typ identyfikatora (GTIN)",
|
|
642
|
+
"catalog.variants.form.gtinTypeNone": "Bez typu",
|
|
643
|
+
"catalog.variants.form.gtinTypes.asin": "ASIN",
|
|
644
|
+
"catalog.variants.form.gtinTypes.ean13": "EAN-13",
|
|
645
|
+
"catalog.variants.form.gtinTypes.ean8": "EAN-8",
|
|
646
|
+
"catalog.variants.form.gtinTypes.isbn": "ISBN",
|
|
647
|
+
"catalog.variants.form.gtinTypes.mpn": "MPN",
|
|
648
|
+
"catalog.variants.form.gtinTypes.upc": "UPC-A",
|
|
588
649
|
"catalog.variants.form.height": "Wysokość",
|
|
650
|
+
"catalog.variants.form.hsCodeLabel": "Kod HS (taryfa celna)",
|
|
589
651
|
"catalog.variants.form.isActiveHint": "Nieaktywne warianty pozostają ukryte",
|
|
590
652
|
"catalog.variants.form.isActiveLabel": "Aktywny",
|
|
591
653
|
"catalog.variants.form.isDefaultHint": "Używany w sklepach",
|
|
@@ -614,6 +676,8 @@
|
|
|
614
676
|
"catalog.variants.form.weightUnit": "Jednostka wagi",
|
|
615
677
|
"catalog.variants.form.weightUnitPlaceholder": "kg",
|
|
616
678
|
"catalog.variants.form.width": "Szerokość",
|
|
679
|
+
"catalog.variants.validation.gtinBarcodeRequired": "Kod kreskowy jest wymagany, gdy ustawiono typ identyfikatora.",
|
|
680
|
+
"catalog.variants.validation.gtinChecksum": "Kod kreskowy nie pasuje do wybranego typu identyfikatora.",
|
|
617
681
|
"catalog.widgets.productSeo.groupDescription": "Zoptymalizuj tytuły i opisy produktów przed publikacją.",
|
|
618
682
|
"catalog.widgets.productSeo.groupLabel": "Pomocnik SEO",
|
|
619
683
|
"customers~catalog.errors.id_required": "Identyfikator rekordu jest wymagany.",
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { CatalogGtinType } from '../data/types'
|
|
2
|
+
|
|
3
|
+
const DIGITS_ONLY = /^[0-9]+$/
|
|
4
|
+
const ASIN_PATTERN = /^[A-Z0-9]{10}$/
|
|
5
|
+
const ISBN10_PATTERN = /^[0-9]{9}[0-9X]$/
|
|
6
|
+
|
|
7
|
+
const GTIN_DIGIT_LENGTHS: Partial<Record<CatalogGtinType, number>> = {
|
|
8
|
+
ean13: 13,
|
|
9
|
+
ean8: 8,
|
|
10
|
+
upc: 12,
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const GTIN_MAX_LENGTH = 70
|
|
14
|
+
|
|
15
|
+
export function computeGs1CheckDigit(digitsWithoutCheck: string): number {
|
|
16
|
+
let sum = 0
|
|
17
|
+
let weight = 3
|
|
18
|
+
for (let index = digitsWithoutCheck.length - 1; index >= 0; index -= 1) {
|
|
19
|
+
sum += (digitsWithoutCheck.charCodeAt(index) - 48) * weight
|
|
20
|
+
weight = weight === 3 ? 1 : 3
|
|
21
|
+
}
|
|
22
|
+
return (10 - (sum % 10)) % 10
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function hasValidGs1CheckDigit(digits: string): boolean {
|
|
26
|
+
const body = digits.slice(0, -1)
|
|
27
|
+
const checkDigit = digits.charCodeAt(digits.length - 1) - 48
|
|
28
|
+
return computeGs1CheckDigit(body) === checkDigit
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function normalizeGtinValue(type: CatalogGtinType, raw: string): string {
|
|
32
|
+
const trimmed = raw.trim()
|
|
33
|
+
switch (type) {
|
|
34
|
+
case 'ean13':
|
|
35
|
+
case 'ean8':
|
|
36
|
+
case 'upc':
|
|
37
|
+
return trimmed.replace(/\s+/g, '')
|
|
38
|
+
case 'isbn':
|
|
39
|
+
return trimmed.replace(/[\s-]+/g, '').toUpperCase()
|
|
40
|
+
case 'asin':
|
|
41
|
+
return trimmed.toUpperCase()
|
|
42
|
+
case 'mpn':
|
|
43
|
+
return trimmed
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export function isValidGtin(type: CatalogGtinType, normalizedValue: string): boolean {
|
|
48
|
+
if (!normalizedValue.length || normalizedValue.length > GTIN_MAX_LENGTH) return false
|
|
49
|
+
const gs1Length = GTIN_DIGIT_LENGTHS[type]
|
|
50
|
+
if (gs1Length !== undefined) {
|
|
51
|
+
return (
|
|
52
|
+
normalizedValue.length === gs1Length &&
|
|
53
|
+
DIGITS_ONLY.test(normalizedValue) &&
|
|
54
|
+
hasValidGs1CheckDigit(normalizedValue)
|
|
55
|
+
)
|
|
56
|
+
}
|
|
57
|
+
if (type === 'isbn') {
|
|
58
|
+
if (normalizedValue.length === 10) return ISBN10_PATTERN.test(normalizedValue)
|
|
59
|
+
if (normalizedValue.length === 13) return DIGITS_ONLY.test(normalizedValue)
|
|
60
|
+
return false
|
|
61
|
+
}
|
|
62
|
+
if (type === 'asin') {
|
|
63
|
+
return ASIN_PATTERN.test(normalizedValue)
|
|
64
|
+
}
|
|
65
|
+
return true
|
|
66
|
+
}
|