@flowselections/floriday-voorraad 1.0.157 → 1.0.163
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/dist-lib/components/fs-ui/ArtikelFoto.d.ts +9 -0
- package/dist-lib/components/fs-ui/ArtikelFoto.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/ArtikelFoto.js +11 -0
- package/dist-lib/components/fs-ui/DataTable.d.ts +1 -1
- package/dist-lib/components/fs-ui/DataTable.d.ts.map +1 -1
- package/dist-lib/components/fs-ui/EmptyState.d.ts +1 -1
- package/dist-lib/components/fs-ui/EmptyState.d.ts.map +1 -1
- package/dist-lib/components/fs-ui/FilterChips.d.ts +1 -1
- package/dist-lib/components/fs-ui/FilterChips.d.ts.map +1 -1
- package/dist-lib/components/fs-ui/FilterPanel.d.ts +2 -2
- package/dist-lib/components/fs-ui/FilterPanel.d.ts.map +1 -1
- package/dist-lib/components/fs-ui/FiltersButton.d.ts +1 -1
- package/dist-lib/components/fs-ui/FiltersButton.d.ts.map +1 -1
- package/dist-lib/components/fs-ui/FustNaam.d.ts +7 -0
- package/dist-lib/components/fs-ui/FustNaam.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/FustNaam.js +7 -0
- package/dist-lib/components/fs-ui/HeaderButton.d.ts +2 -2
- package/dist-lib/components/fs-ui/HeaderButton.d.ts.map +1 -1
- package/dist-lib/components/fs-ui/HoverTip.d.ts +1 -1
- package/dist-lib/components/fs-ui/HoverTip.d.ts.map +1 -1
- package/dist-lib/components/fs-ui/InlineAlert.d.ts +1 -1
- package/dist-lib/components/fs-ui/InlineAlert.d.ts.map +1 -1
- package/dist-lib/components/fs-ui/KpiRow.d.ts +1 -1
- package/dist-lib/components/fs-ui/KpiRow.d.ts.map +1 -1
- package/dist-lib/components/fs-ui/KpiTile.d.ts +1 -1
- package/dist-lib/components/fs-ui/KpiTile.d.ts.map +1 -1
- package/dist-lib/components/fs-ui/MobilePrimaryAction.d.ts +1 -1
- package/dist-lib/components/fs-ui/MobilePrimaryAction.d.ts.map +1 -1
- package/dist-lib/components/fs-ui/NoticeBar.d.ts +1 -1
- package/dist-lib/components/fs-ui/NoticeBar.d.ts.map +1 -1
- package/dist-lib/components/fs-ui/PageHeader.d.ts +1 -1
- package/dist-lib/components/fs-ui/PageHeader.d.ts.map +1 -1
- package/dist-lib/components/fs-ui/Pagination.d.ts +1 -1
- package/dist-lib/components/fs-ui/Pagination.d.ts.map +1 -1
- package/dist-lib/components/fs-ui/PillTabs.d.ts +1 -1
- package/dist-lib/components/fs-ui/PillTabs.d.ts.map +1 -1
- package/dist-lib/components/fs-ui/RowMenu.d.ts +1 -1
- package/dist-lib/components/fs-ui/RowMenu.d.ts.map +1 -1
- package/dist-lib/components/fs-ui/SearchInput.d.ts +1 -1
- package/dist-lib/components/fs-ui/SearchInput.d.ts.map +1 -1
- package/dist-lib/components/fs-ui/ShortcutHelp.d.ts +1 -1
- package/dist-lib/components/fs-ui/ShortcutHelp.d.ts.map +1 -1
- package/dist-lib/components/fs-ui/StatusIcon.d.ts +1 -1
- package/dist-lib/components/fs-ui/StatusIcon.d.ts.map +1 -1
- package/dist-lib/components/fs-ui/TableSkeleton.d.ts +1 -1
- package/dist-lib/components/fs-ui/TableSkeleton.d.ts.map +1 -1
- package/dist-lib/components/fs-ui/Toolbar.d.ts +1 -1
- package/dist-lib/components/fs-ui/Toolbar.d.ts.map +1 -1
- package/dist-lib/components/fs-ui/UpdatedAt.d.ts +1 -1
- package/dist-lib/components/fs-ui/UpdatedAt.d.ts.map +1 -1
- package/dist-lib/components/voorraad/AdditionalPackagingDialog.d.ts +1 -1
- package/dist-lib/components/voorraad/AdditionalPackagingDialog.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ArtikelCompositionCard.d.ts +1 -1
- package/dist-lib/components/voorraad/ArtikelCompositionCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ArtikelWizard.d.ts +1 -1
- package/dist-lib/components/voorraad/ArtikelWizard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ArtikelWizard.js +5 -4
- package/dist-lib/components/voorraad/CollapsibleText.d.ts +1 -1
- package/dist-lib/components/voorraad/CollapsibleText.d.ts.map +1 -1
- package/dist-lib/components/voorraad/EditArtikelPage.d.ts +1 -1
- package/dist-lib/components/voorraad/EditArtikelPage.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ExcelExportButton.d.ts +1 -1
- package/dist-lib/components/voorraad/ExcelExportButton.d.ts.map +1 -1
- package/dist-lib/components/voorraad/FloridayConnectionNotice.d.ts +1 -1
- package/dist-lib/components/voorraad/FloridayConnectionNotice.d.ts.map +1 -1
- package/dist-lib/components/voorraad/FloridayInfoCard.d.ts +1 -1
- package/dist-lib/components/voorraad/FloridayInfoCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/FloridayLoadCarriers.d.ts +1 -1
- package/dist-lib/components/voorraad/FloridayLoadCarriers.d.ts.map +1 -1
- package/dist-lib/components/voorraad/FloridaySentCard.d.ts +1 -1
- package/dist-lib/components/voorraad/FloridaySentCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/FloridayTakeoverPanel.d.ts +2 -2
- package/dist-lib/components/voorraad/FloridayTakeoverPanel.d.ts.map +1 -1
- package/dist-lib/components/voorraad/FloridayTakeoverPanel.js +9 -2
- package/dist-lib/components/voorraad/FustAdministratie.d.ts +2 -2
- package/dist-lib/components/voorraad/FustAdministratie.d.ts.map +1 -1
- package/dist-lib/components/voorraad/FustAdministratie.js +2 -1
- package/dist-lib/components/voorraad/FustenPage.d.ts +1 -1
- package/dist-lib/components/voorraad/FustenPage.d.ts.map +1 -1
- package/dist-lib/components/voorraad/FustenPage.js +4 -2
- package/dist-lib/components/voorraad/InventorySettingsDrawer.d.ts +1 -1
- package/dist-lib/components/voorraad/InventorySettingsDrawer.d.ts.map +1 -1
- package/dist-lib/components/voorraad/InventoryStatusBadge.d.ts +1 -1
- package/dist-lib/components/voorraad/InventoryStatusBadge.d.ts.map +1 -1
- package/dist-lib/components/voorraad/KoppelingStatusPanel.d.ts +1 -1
- package/dist-lib/components/voorraad/KoppelingStatusPanel.d.ts.map +1 -1
- package/dist-lib/components/voorraad/NieuwArtikelPage.d.ts +1 -1
- package/dist-lib/components/voorraad/NieuwArtikelPage.d.ts.map +1 -1
- package/dist-lib/components/voorraad/NieuwArtikelPage.js +2 -1
- package/dist-lib/components/voorraad/OrderHistoryCard.d.ts +1 -1
- package/dist-lib/components/voorraad/OrderHistoryCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/PriceStatusBadge.d.ts +1 -1
- package/dist-lib/components/voorraad/PriceStatusBadge.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ProductCustomFieldsCard.d.ts +1 -1
- package/dist-lib/components/voorraad/ProductCustomFieldsCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ProductLinkCard.d.ts +1 -1
- package/dist-lib/components/voorraad/ProductLinkCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ProductSalePriceField.d.ts +2 -2
- package/dist-lib/components/voorraad/ProductSalePriceField.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ProductStructureCard.d.ts +2 -2
- package/dist-lib/components/voorraad/ProductStructureCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/PublicatiesPage.d.ts +1 -1
- package/dist-lib/components/voorraad/PublicatiesPage.d.ts.map +1 -1
- package/dist-lib/components/voorraad/PublishProgressCard.d.ts +1 -1
- package/dist-lib/components/voorraad/PublishProgressCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/PublishReadinessCard.d.ts +1 -1
- package/dist-lib/components/voorraad/PublishReadinessCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/Sneltoetsen.d.ts +2 -2
- package/dist-lib/components/voorraad/Sneltoetsen.d.ts.map +1 -1
- package/dist-lib/components/voorraad/StepSamenstelling.d.ts +1 -1
- package/dist-lib/components/voorraad/StepSamenstelling.d.ts.map +1 -1
- package/dist-lib/components/voorraad/StockBulkButtons.d.ts +1 -1
- package/dist-lib/components/voorraad/StockBulkButtons.d.ts.map +1 -1
- package/dist-lib/components/voorraad/StockHistoryChart.d.ts +1 -1
- package/dist-lib/components/voorraad/StockHistoryChart.d.ts.map +1 -1
- package/dist-lib/components/voorraad/StockMutationHistoryCard.d.ts +1 -1
- package/dist-lib/components/voorraad/StockMutationHistoryCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/StockPushMonitor.d.ts +1 -1
- package/dist-lib/components/voorraad/StockPushMonitor.d.ts.map +1 -1
- package/dist-lib/components/voorraad/StockSyncStatus.d.ts +1 -1
- package/dist-lib/components/voorraad/StockSyncStatus.d.ts.map +1 -1
- package/dist-lib/components/voorraad/SupplyReadScopeAlert.d.ts +1 -1
- package/dist-lib/components/voorraad/SupplyReadScopeAlert.d.ts.map +1 -1
- package/dist-lib/components/voorraad/TelmomentButton.d.ts +1 -1
- package/dist-lib/components/voorraad/TelmomentButton.d.ts.map +1 -1
- package/dist-lib/components/voorraad/TrayStickerCard.d.ts +1 -1
- package/dist-lib/components/voorraad/TrayStickerCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ValidationOverviewTable.d.ts +1 -1
- package/dist-lib/components/voorraad/ValidationOverviewTable.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ValidationPage.d.ts +1 -1
- package/dist-lib/components/voorraad/ValidationPage.d.ts.map +1 -1
- package/dist-lib/components/voorraad/VoorraadBeheerCard.d.ts +1 -1
- package/dist-lib/components/voorraad/VoorraadBeheerCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/VoorraadPage.d.ts +1 -1
- package/dist-lib/components/voorraad/VoorraadPage.d.ts.map +1 -1
- package/dist-lib/components/voorraad/VoorraadPagination.d.ts +1 -1
- package/dist-lib/components/voorraad/VoorraadPagination.d.ts.map +1 -1
- package/dist-lib/components/voorraad/VoorraadStockCard.d.ts +1 -1
- package/dist-lib/components/voorraad/VoorraadStockCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/VoorraadSturingCard.d.ts +1 -1
- package/dist-lib/components/voorraad/VoorraadSturingCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/VoorraadTable.d.ts +1 -1
- package/dist-lib/components/voorraad/VoorraadTable.d.ts.map +1 -1
- package/dist-lib/components/voorraad/VoorraadTable.js +6 -3
- package/dist-lib/components/voorraad/VoorraadVeldenCard.d.ts +1 -1
- package/dist-lib/components/voorraad/VoorraadVeldenCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/__tests__/count-stock-free.test.d.ts +2 -0
- package/dist-lib/components/voorraad/__tests__/count-stock-free.test.d.ts.map +1 -0
- package/dist-lib/components/voorraad/__tests__/count-stock-free.test.js +12 -0
- package/dist-lib/components/voorraad/artikel/ArtikelPagina.d.ts +1 -1
- package/dist-lib/components/voorraad/artikel/ArtikelPagina.d.ts.map +1 -1
- package/dist-lib/components/voorraad/artikel/ArtikelPagina.js +2 -1
- package/dist-lib/components/voorraad/artikel/TwijfelKiezen.d.ts +1 -1
- package/dist-lib/components/voorraad/artikel/TwijfelKiezen.d.ts.map +1 -1
- package/dist-lib/components/voorraad/lijst/ImporteerKnop.d.ts +1 -1
- package/dist-lib/components/voorraad/lijst/ImporteerKnop.d.ts.map +1 -1
- package/dist-lib/components/voorraad/lijst/LijstExportKnop.d.ts +1 -1
- package/dist-lib/components/voorraad/lijst/LijstExportKnop.d.ts.map +1 -1
- package/dist-lib/components/voorraad/lijst/SnelActieDialogen.d.ts +2 -2
- package/dist-lib/components/voorraad/lijst/SnelActieDialogen.d.ts.map +1 -1
- package/dist-lib/components/voorraad/lijst/VoorraadLijstTabel.d.ts +2 -2
- package/dist-lib/components/voorraad/lijst/VoorraadLijstTabel.d.ts.map +1 -1
- package/dist-lib/components/voorraad/lijst/VoorraadLijstTabel.js +3 -2
- package/dist-lib/hooks/useInventorySettings.d.ts.map +1 -1
- package/dist-lib/hooks/useInventorySettings.js +5 -3
- package/dist-lib/integrations/supabase/client.js +1 -1
- package/dist-lib/integrations/supabase/client.server.js +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +724 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/__tests__/article-code.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/article-code.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/article-code.test.js +11 -0
- package/dist-lib/lib/__tests__/erp-test-123.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/erp-test-123.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/erp-test-123.test.js +43 -0
- package/dist-lib/lib/__tests__/floricode-required-features.test.js +7 -3
- package/dist-lib/lib/__tests__/floriday-customer-offers.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/floriday-customer-offers.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/floriday-customer-offers.test.js +36 -0
- package/dist-lib/lib/__tests__/floriday-fetch-status.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/floriday-fetch-status.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/floriday-fetch-status.test.js +25 -0
- package/dist-lib/lib/__tests__/floriday-write-mode.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/floriday-write-mode.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/floriday-write-mode.test.js +40 -0
- package/dist-lib/lib/__tests__/fust-dimensions.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/fust-dimensions.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/fust-dimensions.test.js +27 -0
- package/dist-lib/lib/__tests__/load-carriers.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/load-carriers.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/load-carriers.test.js +15 -0
- package/dist-lib/lib/__tests__/mirror-products.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/mirror-products.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/mirror-products.test.js +13 -0
- package/dist-lib/lib/__tests__/product-packings.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/product-packings.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/product-packings.test.js +42 -0
- package/dist-lib/lib/__tests__/publish-114.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/publish-114.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/publish-114.test.js +31 -0
- package/dist-lib/lib/__tests__/publish-packing-block.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/publish-packing-block.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/publish-packing-block.test.js +14 -0
- package/dist-lib/lib/__tests__/release-130.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/release-130.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/release-130.test.js +103 -0
- package/dist-lib/lib/__tests__/release-134.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/release-134.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/release-134.test.js +50 -0
- package/dist-lib/lib/__tests__/release-136.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/release-136.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/release-136.test.js +36 -0
- package/dist-lib/lib/__tests__/release-140.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/release-140.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/release-140.test.js +42 -0
- package/dist-lib/lib/__tests__/request-guard.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/request-guard.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/request-guard.test.js +50 -0
- package/dist-lib/lib/__tests__/stock-save.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/stock-save.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/stock-save.test.js +35 -0
- package/dist-lib/lib/__tests__/stock-scope.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/stock-scope.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/stock-scope.test.js +44 -0
- package/dist-lib/lib/artikel-pagina.d.ts +1 -0
- package/dist-lib/lib/artikel-pagina.d.ts.map +1 -1
- package/dist-lib/lib/artikel-pagina.js +1 -1
- package/dist-lib/lib/floriday-takeover-core.d.ts +0 -13
- package/dist-lib/lib/floriday-takeover-core.d.ts.map +1 -1
- package/dist-lib/lib/floriday-takeover-core.js +10 -9
- package/dist-lib/lib/foto-reden.d.ts +26 -0
- package/dist-lib/lib/foto-reden.d.ts.map +1 -0
- package/dist-lib/lib/foto-reden.js +39 -0
- package/dist-lib/lib/fust-label.d.ts +3 -0
- package/dist-lib/lib/fust-label.d.ts.map +1 -0
- package/dist-lib/lib/fust-label.js +8 -0
- package/dist-lib/lib/fusten.d.ts.map +1 -1
- package/dist-lib/lib/fusten.js +12 -12
- package/dist-lib/lib/voorraad-lijst.d.ts +2 -0
- package/dist-lib/lib/voorraad-lijst.d.ts.map +1 -1
- package/dist-lib/server-hooks/__tests__/trade-item-photo.test.d.ts +2 -0
- package/dist-lib/server-hooks/__tests__/trade-item-photo.test.d.ts.map +1 -0
- package/dist-lib/server-hooks/__tests__/trade-item-photo.test.js +19 -0
- package/dist-lib/server-hooks/floriday-follow.d.ts.map +1 -1
- package/dist-lib/server-hooks/floriday-follow.js +5 -3
- package/dist-lib/server-hooks/guard.d.ts +9 -0
- package/dist-lib/server-hooks/guard.d.ts.map +1 -1
- package/dist-lib/server-hooks/guard.js +4 -3
- package/dist-lib/server-hooks/trade-item-photo.d.ts +12 -0
- package/dist-lib/server-hooks/trade-item-photo.d.ts.map +1 -1
- package/dist-lib/server-hooks/trade-item-photo.js +13 -12
- package/package.json +62 -2
- package/sql/AGENTS.md +2 -2
- package/sql/floriday-voorraad-schema.sql +181 -247
- package/dist-lib/components/TemplatePage.d.ts +0 -2
- package/dist-lib/components/TemplatePage.d.ts.map +0 -1
- package/dist-lib/components/TemplatePage.js +0 -4
- package/dist-lib/components/settings/VoorraadSettingsCard.d.ts +0 -2
- package/dist-lib/components/settings/VoorraadSettingsCard.d.ts.map +0 -1
- package/dist-lib/components/settings/VoorraadSettingsCard.js +0 -39
- package/dist-lib/components/voorraad/ConnectionBadge.d.ts +0 -6
- package/dist-lib/components/voorraad/ConnectionBadge.d.ts.map +0 -1
- package/dist-lib/components/voorraad/ConnectionBadge.js +0 -12
- package/dist-lib/components/voorraad/ConnectionPicker.d.ts +0 -8
- package/dist-lib/components/voorraad/ConnectionPicker.d.ts.map +0 -1
- package/dist-lib/components/voorraad/ConnectionPicker.js +0 -8
- package/dist-lib/components/voorraad/FloridayStatusBadge.d.ts +0 -4
- package/dist-lib/components/voorraad/FloridayStatusBadge.d.ts.map +0 -1
- package/dist-lib/components/voorraad/FloridayStatusBadge.js +0 -8
- package/dist-lib/components/voorraad/ModuleHealthCard.d.ts +0 -2
- package/dist-lib/components/voorraad/ModuleHealthCard.d.ts.map +0 -1
- package/dist-lib/components/voorraad/ModuleHealthCard.js +0 -40
- package/dist-lib/components/voorraad/VoorraadDashboard.d.ts +0 -10
- package/dist-lib/components/voorraad/VoorraadDashboard.d.ts.map +0 -1
- package/dist-lib/components/voorraad/VoorraadDashboard.js +0 -53
- package/dist-lib/lib/floriday-field-sources.d.ts +0 -18
- package/dist-lib/lib/floriday-field-sources.d.ts.map +0 -1
- package/dist-lib/lib/floriday-field-sources.js +0 -45
- package/dist-lib/lib/floriday-schema-to-zod.d.ts +0 -9
- package/dist-lib/lib/floriday-schema-to-zod.d.ts.map +0 -1
- package/dist-lib/lib/floriday-schema-to-zod.js +0 -53
- package/dist-lib/lib/merge-products.d.ts +0 -8
- package/dist-lib/lib/merge-products.d.ts.map +0 -1
- package/dist-lib/lib/merge-products.js +0 -17
- package/dist-lib/lib/module-health.functions.d.ts +0 -53497
- package/dist-lib/lib/module-health.functions.d.ts.map +0 -1
- package/dist-lib/lib/module-health.functions.js +0 -261
- package/dist-lib/lib/validationSchemas.d.ts +0 -15
- package/dist-lib/lib/validationSchemas.d.ts.map +0 -1
- package/dist-lib/lib/validationSchemas.js +0 -25
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { formSalePrice, publishOutcome, syncAfterPublish } from "../publish-status.js";
|
|
3
|
+
import { compareAfterUpdate, verifyDifferenceMessage } from "../publish-verify.js";
|
|
4
|
+
// Floriday wordt nagebootst: alleen teruggelezen artikelobjecten, geen verzending.
|
|
5
|
+
const floridayItem = (name) => ({ tradeItemName: name, vbnProductCode: 1234 });
|
|
6
|
+
describe("1.0.136 — prijs, dirty en controlestap", () => {
|
|
7
|
+
it("(1) sale_price 1,40 blijft staan, ook als trade_item_prices 1,25 is", () => {
|
|
8
|
+
const tradeItemPrice = 1.25; // wordt bewust niet doorgegeven
|
|
9
|
+
const price = formSalePrice(1.4, undefined);
|
|
10
|
+
expect(price).toBe(1.4);
|
|
11
|
+
expect(price).not.toBe(tradeItemPrice);
|
|
12
|
+
// Ook met een oude waarde in de lokale gegevens wint sale_price.
|
|
13
|
+
expect(formSalePrice("1.40", 1.25)).toBe(1.4);
|
|
14
|
+
});
|
|
15
|
+
it("(2) geslaagde wijziging: job geslaagd en artikel niet dirty", () => {
|
|
16
|
+
const diffs = compareAfterUpdate({ name: "TQA gewijzigd", vbnCode: 1234 }, floridayItem("TQA gewijzigd"));
|
|
17
|
+
expect(diffs).toEqual([]);
|
|
18
|
+
const status = publishOutcome([
|
|
19
|
+
{ step_key: "trade-item", status: "succeeded" },
|
|
20
|
+
{ step_key: "verify", status: "succeeded" },
|
|
21
|
+
]);
|
|
22
|
+
expect(status).toBe("succeeded");
|
|
23
|
+
expect(syncAfterPublish(status, null)).toEqual({ dirty: false, last_error: null });
|
|
24
|
+
});
|
|
25
|
+
it("(3) afwijkende naam: job mislukt met VERIFY_MISMATCH en artikel blijft dirty", () => {
|
|
26
|
+
const diffs = compareAfterUpdate({ name: "TQA gewijzigd", vbnCode: 1234 }, floridayItem("TQA oud"));
|
|
27
|
+
expect(diffs.map((d) => d.field)).toEqual(["name"]);
|
|
28
|
+
const msg = verifyDifferenceMessage(diffs);
|
|
29
|
+
const status = publishOutcome([
|
|
30
|
+
{ step_key: "trade-item", status: "succeeded" },
|
|
31
|
+
{ step_key: "verify", status: "failed", error_code: "VERIFY_MISMATCH" },
|
|
32
|
+
]);
|
|
33
|
+
expect(status).toBe("failed");
|
|
34
|
+
expect(syncAfterPublish(status, msg)).toEqual({ dirty: true, last_error: msg });
|
|
35
|
+
});
|
|
36
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-140.test.d.ts","sourceRoot":"","sources":["../../../src/lib/__tests__/release-140.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { opslaanMelding, valuesAfterSave, OPSLAAN_MISLUKT_TEKST } from "../stock-save.js";
|
|
4
|
+
import { dbFoutTekst } from "../db-error-message.js";
|
|
5
|
+
// @ts-expect-error plain ESM script
|
|
6
|
+
import { controleerSchema } from "../../../scripts/check-schema-version.mjs";
|
|
7
|
+
const saved = { physical_stock: 10, minimum_stock: 0, reserved_stock: 2, incoming_stock: 0, notes: null };
|
|
8
|
+
const entered = { ...saved, physical_stock: 100 };
|
|
9
|
+
describe("1.0.140 opslaan bij dichte poort", () => {
|
|
10
|
+
it("bevestigde opslag met dichte poort: 'Opgeslagen; er is niets naar Floriday gestuurd.'", () => {
|
|
11
|
+
const m = opslaanMelding({ opgeslagen: true, floriday_klaargezet_toegestaan: false }, true);
|
|
12
|
+
expect(m).toEqual({ ok: true, tekst: "Opgeslagen; er is niets naar Floriday gestuurd." });
|
|
13
|
+
});
|
|
14
|
+
it("teruggedraaide opslag (fout, geen antwoord) = mislukt en oude waarden terug", () => {
|
|
15
|
+
const m = opslaanMelding(null, true);
|
|
16
|
+
expect(m).toEqual({ ok: false, tekst: OPSLAAN_MISLUKT_TEKST });
|
|
17
|
+
expect(valuesAfterSave(m.ok, entered, saved).physical_stock).toBe(10);
|
|
18
|
+
});
|
|
19
|
+
it("antwoord zonder bevestiging telt niet als opgeslagen", () => {
|
|
20
|
+
expect(opslaanMelding({ opgeslagen: false }, true).ok).toBe(false);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
describe("1.0.140 databasefouten in gewone taal", () => {
|
|
24
|
+
it("ontbrekende controlewaarde wordt 'nog niet beschikbaar'", () => {
|
|
25
|
+
const t = dbFoutTekst({ code: "23514", message: 'new row for relation "stock_mutation_log" violates check constraint' }, "Afboeken");
|
|
26
|
+
expect(t).toBe("Afboeken is nog niet beschikbaar in deze omgeving, neem contact op met de beheerder.");
|
|
27
|
+
});
|
|
28
|
+
it("oude poortfout toont geen technische tekst", () => {
|
|
29
|
+
const t = dbFoutTekst({ message: "Uitgaand Floriday-verkeer (stock_publish) is uitgeschakeld" }, "Opslaan");
|
|
30
|
+
expect(t).not.toContain("stock_publish");
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe("1.0.140 schemacontrole", () => {
|
|
34
|
+
it("ouder schema blokkeert", () => {
|
|
35
|
+
expect(controleerSchema("-- @flowselections/floriday-voorraad 1.0.136 x", "1.0.140").length).toBeGreaterThan(0);
|
|
36
|
+
});
|
|
37
|
+
it("het meegeleverde schema hoort bij de versie in package.json", () => {
|
|
38
|
+
const versie = JSON.parse(readFileSync("package.json", "utf8")).version;
|
|
39
|
+
const sql = readFileSync("sql/floriday-voorraad-schema.sql", "utf8");
|
|
40
|
+
expect(controleerSchema(sql, versie)).toEqual([]);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-guard.test.d.ts","sourceRoot":"","sources":["../../../src/lib/__tests__/request-guard.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { createBundler, createRequestGuard } from "../request-guard.js";
|
|
3
|
+
describe("request guard", () => {
|
|
4
|
+
it("staat 30 aanvragen in 10 s toe en stopt de 31e", () => {
|
|
5
|
+
let t = 0;
|
|
6
|
+
const g = createRequestGuard(30, 10000, () => t);
|
|
7
|
+
const err = vi.spyOn(console, "error").mockImplementation(() => { });
|
|
8
|
+
for (let i = 0; i < 30; i++)
|
|
9
|
+
expect(g.allow("products")).toBe(true);
|
|
10
|
+
expect(g.allow("products")).toBe(false);
|
|
11
|
+
expect(g.trips()[0].table).toBe("products");
|
|
12
|
+
expect(g.allow("trade_item_stock")).toBe(true);
|
|
13
|
+
err.mockRestore();
|
|
14
|
+
});
|
|
15
|
+
it("telt alleen binnen het venster", () => {
|
|
16
|
+
let t = 0;
|
|
17
|
+
const g = createRequestGuard(30, 10000, () => t);
|
|
18
|
+
for (let i = 0; i < 30; i++)
|
|
19
|
+
g.allow("products");
|
|
20
|
+
t = 10001;
|
|
21
|
+
expect(g.allow("products")).toBe(true);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
describe("bundler", () => {
|
|
25
|
+
it("10 seintjes binnen 2 s geven 1 herlaadactie", () => {
|
|
26
|
+
vi.useFakeTimers();
|
|
27
|
+
const run = vi.fn();
|
|
28
|
+
const b = createBundler(run, 2000, { isHidden: () => false });
|
|
29
|
+
for (let i = 0; i < 10; i++)
|
|
30
|
+
b.trigger();
|
|
31
|
+
vi.advanceTimersByTime(1999);
|
|
32
|
+
expect(run).toHaveBeenCalledTimes(1);
|
|
33
|
+
vi.useRealTimers();
|
|
34
|
+
});
|
|
35
|
+
it("verborgen tabblad: 0 herlaadacties, bij terugkeren 1", () => {
|
|
36
|
+
vi.useFakeTimers();
|
|
37
|
+
let hidden = true;
|
|
38
|
+
const run = vi.fn();
|
|
39
|
+
const b = createBundler(run, 2000, { isHidden: () => hidden });
|
|
40
|
+
for (let i = 0; i < 5; i++)
|
|
41
|
+
b.trigger();
|
|
42
|
+
vi.advanceTimersByTime(10000);
|
|
43
|
+
expect(run).toHaveBeenCalledTimes(0);
|
|
44
|
+
hidden = false;
|
|
45
|
+
b.flushIfPending();
|
|
46
|
+
vi.advanceTimersByTime(0);
|
|
47
|
+
expect(run).toHaveBeenCalledTimes(1);
|
|
48
|
+
vi.useRealTimers();
|
|
49
|
+
});
|
|
50
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stock-save.test.d.ts","sourceRoot":"","sources":["../../../src/lib/__tests__/stock-save.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { afboekFout, floridayNaOpslaanTekst, valuesAfterSave } from "../stock-save.js";
|
|
3
|
+
const saved = { physical_stock: 40, minimum_stock: 5, reserved_stock: 12, incoming_stock: 0, notes: null };
|
|
4
|
+
describe("lokaal voorraad opslaan (1.0.138)", () => {
|
|
5
|
+
it("mislukte opslag zet de oude waarden terug (geen 'Beschikbaar: 100' zonder opslag)", () => {
|
|
6
|
+
const entered = { ...saved, physical_stock: 112 };
|
|
7
|
+
expect(valuesAfterSave(false, entered, saved).physical_stock).toBe(40);
|
|
8
|
+
});
|
|
9
|
+
it("gereserveerd komt na opslaan uit de opgeslagen rij, niet uit invoer", () => {
|
|
10
|
+
const entered = { ...saved, physical_stock: 100, reserved_stock: 0 };
|
|
11
|
+
const out = valuesAfterSave(true, entered, saved);
|
|
12
|
+
expect(out.physical_stock).toBe(100);
|
|
13
|
+
expect(out.reserved_stock).toBe(12);
|
|
14
|
+
});
|
|
15
|
+
it("Floriday-artikel bij dichte poort: lokaal opgeslagen, melding dat er niets naar Floriday gaat", () => {
|
|
16
|
+
expect(floridayNaOpslaanTekst(true, false)).toMatch(/niets naar Floriday/);
|
|
17
|
+
expect(floridayNaOpslaanTekst(true, null)).toMatch(/niets naar Floriday/);
|
|
18
|
+
expect(floridayNaOpslaanTekst(true, true)).toBeNull();
|
|
19
|
+
expect(floridayNaOpslaanTekst(false, false)).toBeNull();
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
describe("afboeken met verplichte reden", () => {
|
|
23
|
+
it("zonder reden geweigerd", () => {
|
|
24
|
+
expect(afboekFout(5, null, 40)).toBe("Kies een reden.");
|
|
25
|
+
expect(afboekFout(5, "zomaar", 40)).toBe("Kies een reden.");
|
|
26
|
+
});
|
|
27
|
+
it("met reden uit de vaste lijst toegestaan", () => {
|
|
28
|
+
for (const r of ["derving", "kapot", "eigen_gebruik", "overig"])
|
|
29
|
+
expect(afboekFout(5, r, 40)).toBeNull();
|
|
30
|
+
});
|
|
31
|
+
it("niet meer dan liggend, en groter dan 0", () => {
|
|
32
|
+
expect(afboekFout(41, "kapot", 40)).toMatch(/niet meer afboeken/);
|
|
33
|
+
expect(afboekFout(0, "kapot", 40)).toMatch(/groter dan 0/);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stock-scope.test.d.ts","sourceRoot":"","sources":["../../../src/lib/__tests__/stock-scope.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { buildScopedStockMap, connectionStatusOf, noConnectionText } from "../stock-scope.js";
|
|
3
|
+
const row = (connection_id, key, physical_stock) => ({
|
|
4
|
+
connection_id,
|
|
5
|
+
trade_item_key: key,
|
|
6
|
+
physical_stock,
|
|
7
|
+
});
|
|
8
|
+
describe("connectionStatusOf", () => {
|
|
9
|
+
it("lege RPC-uitkomst = geen koppeling", () => {
|
|
10
|
+
expect(connectionStatusOf({ loading: false, error: null, connectionId: null })).toBe("geen_koppeling");
|
|
11
|
+
});
|
|
12
|
+
it("RPC-fout = fout", () => {
|
|
13
|
+
expect(connectionStatusOf({ loading: false, error: "kapot", connectionId: null })).toBe("fout");
|
|
14
|
+
});
|
|
15
|
+
it("rij met id = actief", () => {
|
|
16
|
+
expect(connectionStatusOf({ loading: false, error: null, connectionId: "c1" })).toBe("actief");
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
describe("noConnectionText", () => {
|
|
20
|
+
it("noemt de omgeving alleen als die bekend is", () => {
|
|
21
|
+
expect(noConnectionText("live")).toContain("omgeving live");
|
|
22
|
+
expect(noConnectionText(null)).toContain("de gekozen omgeving");
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
describe("buildScopedStockMap", () => {
|
|
26
|
+
it("geen koppeling: eigen rij telt mee", () => {
|
|
27
|
+
const m = buildScopedStockMap([row(null, "product:a", 12)], null);
|
|
28
|
+
expect(m.get("product:a")?.physical_stock).toBe(12);
|
|
29
|
+
});
|
|
30
|
+
it("geen koppeling: rijen met een koppeling tellen niet", () => {
|
|
31
|
+
const m = buildScopedStockMap([row("c1", "product:a", 5), row("c2", "product:b", 7)], null);
|
|
32
|
+
expect(m.size).toBe(0);
|
|
33
|
+
});
|
|
34
|
+
it("koppeling + eigen rij: één regel, geen dubbele telling", () => {
|
|
35
|
+
const m = buildScopedStockMap([row(null, "product:a", 3), row("c1", "product:a", 9), row("c1", "product:b", 4), row(null, "product:c", 2)], "c1");
|
|
36
|
+
expect(m.size).toBe(3);
|
|
37
|
+
expect(m.get("product:a")?.physical_stock).toBe(9);
|
|
38
|
+
expect(m.get("product:c")?.physical_stock).toBe(2);
|
|
39
|
+
});
|
|
40
|
+
it("koppeling: rijen van een andere koppeling tellen niet", () => {
|
|
41
|
+
const m = buildScopedStockMap([row("c2", "product:a", 50)], "c1");
|
|
42
|
+
expect(m.size).toBe(0);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artikel-pagina.d.ts","sourceRoot":"","sources":["../../src/lib/artikel-pagina.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"artikel-pagina.d.ts","sourceRoot":"","sources":["../../src/lib/artikel-pagina.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,7 +65,7 @@ export function artikelTabs(d) {
|
|
|
65
65
|
}
|
|
66
66
|
export function alsLijstRij(d) {
|
|
67
67
|
return {
|
|
68
|
-
id: d.id, naam: d.naam, artikelnummer: d.artikelnummer, foto: d.foto, floriday_id: d.floriday_id,
|
|
68
|
+
id: d.id, naam: d.naam, artikelnummer: d.artikelnummer, foto: d.foto, foto_reden: d.foto_reden ?? null, floriday_id: d.floriday_id,
|
|
69
69
|
prijs: d.velden.sale_price === null ? null : Number(d.velden.sale_price),
|
|
70
70
|
eenheid: d.velden.unit ?? null, soort: d.soort, is_onderdeel: d.is_onderdeel,
|
|
71
71
|
liggend: d.liggend, gereserveerd: d.gereserveerd, minimum: d.minimum, inkomend: d.inkomend, vrij: d.vrij,
|
|
@@ -1,16 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Proefrapport "Overnemen uit Floriday". Leest alleen: niets wordt geschreven
|
|
3
|
-
* en niets gaat naar Floriday. Het daadwerkelijk overnemen gebeurt via de
|
|
4
|
-
* databasefunctie `floriday_takeover_apply` (één transactie, terug te draaien).
|
|
5
|
-
*
|
|
6
|
-
* Floriday (Suppliers API 2026v1), alleen lezen via de leesroute van de
|
|
7
|
-
* Floriday-authenticatiemodule:
|
|
8
|
-
* - GET /trade-items/base-supply?year&week → WeeklyBaseSupply { tradeItemId, numberOfPieces, isAvailable, basePricePerPiece { currency, value } }
|
|
9
|
-
* Daarnaast de lokaal bijgehouden Floriday-gegevens van deze koppeling:
|
|
10
|
-
* - trade items (TradeItemBase: tradeItemId, supplierArticleCode, articleGtin, vbnProductCode, tradeItemName)
|
|
11
|
-
* - doorlopende voorraad (GET /trade-items/{id}/continuous-stock, door de ophaaltaak bewaard)
|
|
12
|
-
* - catalogusprijzen en aanbodregels (supply lines), incl. klantspecifieke aanbiedingen (alleen tonen)
|
|
13
|
-
*/
|
|
14
1
|
import { type FetchState } from "./floriday-fetch-status.js";
|
|
15
2
|
export type TakeoverRow = {
|
|
16
3
|
tradeItemId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floriday-takeover-core.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-takeover-core.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"floriday-takeover-core.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-takeover-core.ts"],"names":[],"mappings":"AAcA,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGtE,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,WAAW,GAAG,UAAU,GAAG,MAAM,CAAC;IAC1C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE;QACL,UAAU,EAAE,OAAO,CAAC;QACpB,mBAAmB,EAAE,OAAO,GAAG,IAAI,CAAC;QACpC,MAAM,EAAE,OAAO,CAAC;QAChB,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;QACjF,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,cAAc,EAAE,iBAAiB,EAAE,CAAC;CACrC,CAAC;AAEF,YAAY,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAmBpE,4FAA4F;AAC5F,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE;;;;;;;;;oBAsErE,UAAU;uBAAiB,UAAU;wBAAkB,UAAU;;;GAgFnG"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* - doorlopende voorraad (GET /trade-items/{id}/continuous-stock, door de ophaaltaak bewaard)
|
|
12
12
|
* - catalogusprijzen en aanbodregels (supply lines), incl. klantspecifieke aanbiedingen (alleen tonen)
|
|
13
13
|
*/
|
|
14
|
+
import { alleRijen } from "./alle-rijen.js";
|
|
14
15
|
import { fetchState } from "./floriday-fetch-status.js";
|
|
15
16
|
import { customerOffersByTradeItem } from "./floriday-customer-offers.js";
|
|
16
17
|
function isoWeek(d) {
|
|
@@ -32,19 +33,19 @@ const norm = (v) => String(v ?? "").trim().toLowerCase();
|
|
|
32
33
|
export async function buildTakeoverPreview(admin, conn) {
|
|
33
34
|
const nowIso = new Date().toISOString();
|
|
34
35
|
const [items, products, stock, cont, catalog, lines, syncRows, offers, custs] = await Promise.all([
|
|
35
|
-
admin.from("floriday_trade_items_cache").select("floriday_id, data").eq("connection_id", conn.id).eq("is_deleted", false).
|
|
36
|
-
admin.from("products").select("id, product, barcode, article_number, floriday_trade_item_id, sale_price").
|
|
37
|
-
admin.from("trade_item_stock").select("trade_item_key, physical_stock").eq("connection_id", conn.id).
|
|
38
|
-
admin.from("floriday_continuous_stock_cache").select("trade_item_id, number_of_pieces").eq("connection_id", conn.id).
|
|
39
|
-
admin.from("floriday_catalog_prices_cache").select("trade_item_id, price, updated_at").eq("connection_id", conn.id).eq("is_deleted", false).or(`valid_to.is.null,valid_to.gte.${nowIso}`).order("updated_at", { ascending: false }).
|
|
40
|
-
admin.from("trade_item_supply_lines").select("trade_item_id, supply_type, price_per_piece, updated_at").eq("connection_id", conn.id).order("updated_at", { ascending: false }).
|
|
36
|
+
alleRijen((v, t) => admin.from("floriday_trade_items_cache").select("floriday_id, data").eq("connection_id", conn.id).eq("is_deleted", false).order("floriday_id").range(v, t)),
|
|
37
|
+
alleRijen((v, t) => admin.from("products").select("id, product, barcode, article_number, floriday_trade_item_id, sale_price").order("id").range(v, t)),
|
|
38
|
+
alleRijen((v, t) => admin.from("trade_item_stock").select("trade_item_key, physical_stock").eq("connection_id", conn.id).order("id").range(v, t)),
|
|
39
|
+
alleRijen((v, t) => admin.from("floriday_continuous_stock_cache").select("trade_item_id, number_of_pieces").eq("connection_id", conn.id).order("trade_item_id").range(v, t)),
|
|
40
|
+
alleRijen((v, t) => admin.from("floriday_catalog_prices_cache").select("trade_item_id, price, updated_at").eq("connection_id", conn.id).eq("is_deleted", false).or(`valid_to.is.null,valid_to.gte.${nowIso}`).order("updated_at", { ascending: false }).order("id").range(v, t)),
|
|
41
|
+
alleRijen((v, t) => admin.from("trade_item_supply_lines").select("trade_item_id, supply_type, price_per_piece, updated_at").eq("connection_id", conn.id).order("updated_at", { ascending: false }).order("id").range(v, t)),
|
|
41
42
|
admin.from("floriday_sync_state").select("entity_type, backfill_target_sequence, backfill_done_at, last_success_at").eq("connection_id", conn.id).in("entity_type", ["trade-items", "catalog-prices", "customer-offers"]),
|
|
42
|
-
admin.from("floriday_customer_offers_cache").select("floriday_id, data").eq("connection_id", conn.id).eq("is_deleted", false).
|
|
43
|
-
admin.from("floriday_customers_cache").select("organization_id, name").eq("connection_id", conn.id).
|
|
43
|
+
alleRijen((v, t) => admin.from("floriday_customer_offers_cache").select("floriday_id, data").eq("connection_id", conn.id).eq("is_deleted", false).order("floriday_id").range(v, t)),
|
|
44
|
+
alleRijen((v, t) => admin.from("floriday_customers_cache").select("organization_id, name").eq("connection_id", conn.id).order("organization_id").range(v, t)),
|
|
44
45
|
]);
|
|
45
46
|
for (const r of [items, products, stock, cont, catalog, lines, syncRows, offers, custs])
|
|
46
47
|
if (r.error)
|
|
47
|
-
throw new Error(r.error.message);
|
|
48
|
+
throw new Error(r.error.message ?? String(r.error));
|
|
48
49
|
// Weekaanbod: huidige en twee komende weken, live gelezen (1 per seconde).
|
|
49
50
|
const now = new Date();
|
|
50
51
|
const weeks = [0, 1, 2].map((i) => isoWeek(new Date(now.getTime() + i * 7 * 86400000)));
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Reden waarom een artikel geen foto heeft (zelfde sleutels als voorraad_foto_info in de database). */
|
|
2
|
+
export type FotoReden = "verstuurd" | "niet_gekoppeld" | "geen_floriday_foto";
|
|
3
|
+
export declare const FOTO_REDEN_TEKST: Record<FotoReden, string>;
|
|
4
|
+
export declare function fotoRedenTekst(reden: string | null | undefined): string;
|
|
5
|
+
type FloridayFoto = {
|
|
6
|
+
photoUrl?: unknown;
|
|
7
|
+
photos?: unknown;
|
|
8
|
+
} | null | undefined;
|
|
9
|
+
/** Eerste bruikbare foto uit de Floriday-kopie: photoUrl, anders de hoofdfoto, anders de eerste foto. */
|
|
10
|
+
export declare function floridayFotoUrl(data: FloridayFoto): string | null;
|
|
11
|
+
/** Floriday-id van een artikel: het Floriday-veld, anders de sleutel als die geen eigen "product:"-sleutel is. */
|
|
12
|
+
export declare function floridayIdVanArtikel(a: {
|
|
13
|
+
floriday_trade_item_id?: string | null;
|
|
14
|
+
trade_item_key?: string | null;
|
|
15
|
+
}): string | null;
|
|
16
|
+
/** Foto plus reden, met dezelfde volgorde als de database. */
|
|
17
|
+
export declare function fotoVanArtikel(a: {
|
|
18
|
+
image_url?: string | null;
|
|
19
|
+
floriday_trade_item_id?: string | null;
|
|
20
|
+
trade_item_key?: string | null;
|
|
21
|
+
}, floriday: FloridayFoto): {
|
|
22
|
+
foto: string | null;
|
|
23
|
+
reden: FotoReden | null;
|
|
24
|
+
};
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=foto-reden.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foto-reden.d.ts","sourceRoot":"","sources":["../../src/lib/foto-reden.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,gBAAgB,GAAG,oBAAoB,CAAC;AAE9E,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAItD,CAAC;AAEF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAEvE;AAED,KAAK,YAAY,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,CAAC;AAEhF,yGAAyG;AACzG,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAOjE;AAED,kHAAkH;AAClH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE;IAAE,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CAKjI;AAED,8DAA8D;AAC9D,wBAAgB,cAAc,CAC5B,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EACxG,QAAQ,EAAE,YAAY,GACrB;IAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;CAAE,CAOlD"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export const FOTO_REDEN_TEKST = {
|
|
2
|
+
verstuurd: "Foto wordt verstuurd",
|
|
3
|
+
niet_gekoppeld: "Niet gekoppeld aan Floriday",
|
|
4
|
+
geen_floriday_foto: "Nog geen foto in Floriday",
|
|
5
|
+
};
|
|
6
|
+
export function fotoRedenTekst(reden) {
|
|
7
|
+
return (reden && FOTO_REDEN_TEKST[reden]) || "Nog geen foto";
|
|
8
|
+
}
|
|
9
|
+
/** Eerste bruikbare foto uit de Floriday-kopie: photoUrl, anders de hoofdfoto, anders de eerste foto. */
|
|
10
|
+
export function floridayFotoUrl(data) {
|
|
11
|
+
if (!data)
|
|
12
|
+
return null;
|
|
13
|
+
if (typeof data.photoUrl === "string" && data.photoUrl.trim())
|
|
14
|
+
return data.photoUrl;
|
|
15
|
+
const lijst = Array.isArray(data.photos) ? data.photos : [];
|
|
16
|
+
const met = lijst.filter((p) => p && typeof p.url === "string" && p.url.trim());
|
|
17
|
+
const hoofd = met.find((p) => p.primary === true) ?? met[0];
|
|
18
|
+
return hoofd ? hoofd.url : null;
|
|
19
|
+
}
|
|
20
|
+
/** Floriday-id van een artikel: het Floriday-veld, anders de sleutel als die geen eigen "product:"-sleutel is. */
|
|
21
|
+
export function floridayIdVanArtikel(a) {
|
|
22
|
+
const fid = a.floriday_trade_item_id?.trim();
|
|
23
|
+
if (fid)
|
|
24
|
+
return fid;
|
|
25
|
+
const key = a.trade_item_key?.trim();
|
|
26
|
+
return key && !key.startsWith("product:") ? key : null;
|
|
27
|
+
}
|
|
28
|
+
/** Foto plus reden, met dezelfde volgorde als de database. */
|
|
29
|
+
export function fotoVanArtikel(a, floriday) {
|
|
30
|
+
const eigen = a.image_url?.trim() || null;
|
|
31
|
+
if (eigen && !eigen.startsWith("pending:"))
|
|
32
|
+
return { foto: eigen, reden: null };
|
|
33
|
+
const f = floridayFotoUrl(floriday);
|
|
34
|
+
if (f)
|
|
35
|
+
return { foto: f, reden: null };
|
|
36
|
+
if (eigen?.startsWith("pending:"))
|
|
37
|
+
return { foto: null, reden: "verstuurd" };
|
|
38
|
+
return { foto: null, reden: floridayIdVanArtikel(a) ? "geen_floriday_foto" : "niet_gekoppeld" };
|
|
39
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fust-label.d.ts","sourceRoot":"","sources":["../../src/lib/fust-label.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAK3G"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Eén formaat voor fusten, zoals bij de leverancier: "575 · Deense kist". */
|
|
2
|
+
export function fustLabel(code, naam) {
|
|
3
|
+
const c = code === null || code === undefined ? "" : String(code).trim();
|
|
4
|
+
const n = (naam ?? "").trim();
|
|
5
|
+
if (c && n && c !== n)
|
|
6
|
+
return `${c} · ${n}`;
|
|
7
|
+
return c || n;
|
|
8
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fusten.d.ts","sourceRoot":"","sources":["../../src/lib/fusten.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fusten.d.ts","sourceRoot":"","sources":["../../src/lib/fusten.ts"],"names":[],"mappings":"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"}
|
package/dist-lib/lib/fusten.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* - handmatige voorraadmutaties,
|
|
10
10
|
* - automatische afschrijving bij verkoop op basis van de belading.
|
|
11
11
|
*/
|
|
12
|
+
import { alleRijen } from "./alle-rijen.js";
|
|
12
13
|
import { supabase } from "../integrations/supabase/client.js";
|
|
13
14
|
/** Afmetingen als "L × B × H mm", of null wanneer onbekend. */
|
|
14
15
|
export function formatFustDimensions(f) {
|
|
@@ -59,10 +60,9 @@ function asRecord(v) {
|
|
|
59
60
|
*/
|
|
60
61
|
async function loadAllPackings(connectionId) {
|
|
61
62
|
const out = [];
|
|
62
|
-
const prodRes = await supabase
|
|
63
|
-
|
|
64
|
-
.
|
|
65
|
-
.limit(2000);
|
|
63
|
+
const prodRes = await alleRijen((van, tot) => supabase.from("products").select("id,trade_item_key,custom_fields").order("id").range(van, tot));
|
|
64
|
+
if (prodRes.error)
|
|
65
|
+
throw new Error(`Artikelen voor fusten laden mislukt: ${prodRes.error.message ?? prodRes.error}`);
|
|
66
66
|
for (const row of (prodRes.data ?? [])) {
|
|
67
67
|
const cf = asRecord(row.custom_fields);
|
|
68
68
|
// Beladingen kunnen in de payload staan, of (legacy) direct op custom_fields.
|
|
@@ -71,14 +71,14 @@ async function loadAllPackings(connectionId) {
|
|
|
71
71
|
out.push({ tradeItemKey: row.trade_item_key || `product:${row.id}`, packings });
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
|
-
|
|
75
|
-
.from("floriday_trade_items_cache")
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
.
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
74
|
+
const cacheRes = await alleRijen((van, tot) => {
|
|
75
|
+
let q = supabase.from("floriday_trade_items_cache").select("floriday_id,data").eq("is_deleted", false);
|
|
76
|
+
if (connectionId)
|
|
77
|
+
q = q.eq("connection_id", connectionId);
|
|
78
|
+
return q.order("connection_id").order("floriday_id").range(van, tot);
|
|
79
|
+
});
|
|
80
|
+
if (cacheRes.error)
|
|
81
|
+
throw new Error(`Floriday-artikelen voor fusten laden mislukt: ${cacheRes.error.message ?? cacheRes.error}`);
|
|
82
82
|
for (const row of (cacheRes.data ?? [])) {
|
|
83
83
|
const packings = packingsOf(row.data);
|
|
84
84
|
if (packings.length > 0)
|
|
@@ -11,6 +11,8 @@ export interface LijstRij {
|
|
|
11
11
|
naam: string;
|
|
12
12
|
artikelnummer: string | null;
|
|
13
13
|
foto: string | null;
|
|
14
|
+
/** Reden zonder foto: verstuurd | niet_gekoppeld | geen_floriday_foto. */
|
|
15
|
+
foto_reden?: string | null;
|
|
14
16
|
floriday_id: string | null;
|
|
15
17
|
prijs: number | null;
|
|
16
18
|
eenheid: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voorraad-lijst.d.ts","sourceRoot":"","sources":["../../src/lib/voorraad-lijst.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"voorraad-lijst.d.ts","sourceRoot":"","sources":["../../src/lib/voorraad-lijst.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trade-item-photo.test.d.ts","sourceRoot":"","sources":["../../../src/server-hooks/__tests__/trade-item-photo.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { checkImage } from "../trade-item-photo.js";
|
|
3
|
+
function png(w, h) {
|
|
4
|
+
const b = new Uint8Array(32);
|
|
5
|
+
b.set([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a], 0);
|
|
6
|
+
const dv = new DataView(b.buffer);
|
|
7
|
+
dv.setUint32(16, w);
|
|
8
|
+
dv.setUint32(20, h);
|
|
9
|
+
return b;
|
|
10
|
+
}
|
|
11
|
+
function jpg(w, h) {
|
|
12
|
+
return new Uint8Array([0xff, 0xd8, 0xff, 0xc0, 0x00, 0x11, 0x08, h >> 8, h & 255, w >> 8, w & 255, 3, 0, 0, 0, 0]);
|
|
13
|
+
}
|
|
14
|
+
describe("foto-controle op de server", () => {
|
|
15
|
+
it("accepteert jpg van 800x1200", () => expect(checkImage(jpg(800, 1200), 400000)).toBeNull());
|
|
16
|
+
it("weigert kleiner dan 640x640", () => expect(checkImage(png(639, 800), 1000)?.reason).toBe("image_too_small"));
|
|
17
|
+
it("weigert groter dan 5 MB", () => expect(checkImage(png(800, 800), 5 * 1024 * 1024 + 1)?.reason).toBe("image_too_large"));
|
|
18
|
+
it("weigert ander bestandstype", () => expect(checkImage(new TextEncoder().encode("GIF89a-----"), 100)?.reason).toBe("unsupported_type"));
|
|
19
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floriday-follow.d.ts","sourceRoot":"","sources":["../../src/server-hooks/floriday-follow.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"floriday-follow.d.ts","sourceRoot":"","sources":["../../src/server-hooks/floriday-follow.ts"],"names":[],"mappings":"AAsEA,4DAA4D;AAC5D,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAE9E"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Er gaat niets naar Floriday en er ontstaat geen wachtrijregel (wachtrijbewaking).
|
|
6
6
|
* Schakelaar: voorraad_hook_enabled.follow_floriday (standaard aan).
|
|
7
7
|
*/
|
|
8
|
+
import { alleRijen } from "../lib/alle-rijen.js";
|
|
8
9
|
import { runGuardedHook } from "./guard.js";
|
|
9
10
|
async function handle() {
|
|
10
11
|
const json = (b, status = 200) => new Response(JSON.stringify(b), { status, headers: { "Content-Type": "application/json" } });
|
|
@@ -12,14 +13,15 @@ async function handle() {
|
|
|
12
13
|
const admin = getAdminClient();
|
|
13
14
|
const { resolveActiveFloridayConnection } = await import("../lib/floriday-env.server.js");
|
|
14
15
|
const conn = await resolveActiveFloridayConnection(admin);
|
|
15
|
-
const { data: follow, error: fErr } = await admin
|
|
16
|
+
const { data: follow, error: fErr } = await alleRijen((van, tot) => admin
|
|
16
17
|
.from("floriday_inventory_settings")
|
|
17
18
|
.select("floriday_trade_item_id")
|
|
18
19
|
.eq("connection_id", conn.id)
|
|
19
20
|
.eq("erp_leading", false)
|
|
20
|
-
.
|
|
21
|
+
.order("id")
|
|
22
|
+
.range(van, tot));
|
|
21
23
|
if (fErr)
|
|
22
|
-
return json({ error: fErr.message }, 500);
|
|
24
|
+
return json({ error: fErr.message ?? String(fErr) }, 500);
|
|
23
25
|
const wanted = new Set((follow ?? []).map((r) => String(r.floriday_trade_item_id ?? "").toLowerCase()).filter(Boolean));
|
|
24
26
|
if (wanted.size === 0)
|
|
25
27
|
return json({ idle: true });
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deze verwerkers staan zonder expliciete instelling alleen aan zolang er
|
|
3
|
+
* minstens één ERP-leidend artikel is (erp_leading = true, of een artikel van
|
|
4
|
+
* vóór 1.0.84 met een andere modus dan Uit). Anders uit: een Shell die alles
|
|
5
|
+
* uit Floriday overneemt, verstuurt dan niets.
|
|
6
|
+
*/
|
|
7
|
+
export declare const DEFAULT_ON_IF_ERP_LEADING: Set<string>;
|
|
8
|
+
/** Standaard aan zonder voorwaarde (alleen lezen uit Floriday, verstuurt niets). */
|
|
9
|
+
export declare const DEFAULT_ON: Set<string>;
|
|
1
10
|
export declare function hookEnabled(name: string): Promise<boolean>;
|
|
2
11
|
export declare function runGuardedHook(request: Request, name: string, handle: (request: Request) => Promise<Response>, label: string): Promise<Response>;
|
|
3
12
|
//# sourceMappingURL=guard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/server-hooks/guard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/server-hooks/guard.ts"],"names":[],"mappings":"AAgBA;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,aAAuD,CAAC;AAE9F,oFAAoF;AACpF,eAAO,MAAM,UAAU,aAAmD,CAAC;AAsC3E,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAchE;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,EAC/C,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC,CAUnB"}
|