@flowselections/floriday-voorraad 1.0.158 → 1.0.164

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (283) hide show
  1. package/dist-lib/components/fs-ui/ArtikelFoto.d.ts +9 -0
  2. package/dist-lib/components/fs-ui/ArtikelFoto.d.ts.map +1 -0
  3. package/dist-lib/components/fs-ui/ArtikelFoto.js +11 -0
  4. package/dist-lib/components/fs-ui/DataTable.d.ts +1 -1
  5. package/dist-lib/components/fs-ui/DataTable.d.ts.map +1 -1
  6. package/dist-lib/components/fs-ui/EmptyState.d.ts +1 -1
  7. package/dist-lib/components/fs-ui/EmptyState.d.ts.map +1 -1
  8. package/dist-lib/components/fs-ui/FilterChips.d.ts +1 -1
  9. package/dist-lib/components/fs-ui/FilterChips.d.ts.map +1 -1
  10. package/dist-lib/components/fs-ui/FilterPanel.d.ts +2 -2
  11. package/dist-lib/components/fs-ui/FilterPanel.d.ts.map +1 -1
  12. package/dist-lib/components/fs-ui/FiltersButton.d.ts +1 -1
  13. package/dist-lib/components/fs-ui/FiltersButton.d.ts.map +1 -1
  14. package/dist-lib/components/fs-ui/FustNaam.d.ts +7 -0
  15. package/dist-lib/components/fs-ui/FustNaam.d.ts.map +1 -0
  16. package/dist-lib/components/fs-ui/FustNaam.js +7 -0
  17. package/dist-lib/components/fs-ui/HeaderButton.d.ts +2 -2
  18. package/dist-lib/components/fs-ui/HeaderButton.d.ts.map +1 -1
  19. package/dist-lib/components/fs-ui/HoverTip.d.ts +1 -1
  20. package/dist-lib/components/fs-ui/HoverTip.d.ts.map +1 -1
  21. package/dist-lib/components/fs-ui/InlineAlert.d.ts +1 -1
  22. package/dist-lib/components/fs-ui/InlineAlert.d.ts.map +1 -1
  23. package/dist-lib/components/fs-ui/KpiRow.d.ts +1 -1
  24. package/dist-lib/components/fs-ui/KpiRow.d.ts.map +1 -1
  25. package/dist-lib/components/fs-ui/KpiTile.d.ts +1 -1
  26. package/dist-lib/components/fs-ui/KpiTile.d.ts.map +1 -1
  27. package/dist-lib/components/fs-ui/MobilePrimaryAction.d.ts +1 -1
  28. package/dist-lib/components/fs-ui/MobilePrimaryAction.d.ts.map +1 -1
  29. package/dist-lib/components/fs-ui/NoticeBar.d.ts +1 -1
  30. package/dist-lib/components/fs-ui/NoticeBar.d.ts.map +1 -1
  31. package/dist-lib/components/fs-ui/PageHeader.d.ts +1 -1
  32. package/dist-lib/components/fs-ui/PageHeader.d.ts.map +1 -1
  33. package/dist-lib/components/fs-ui/Pagination.d.ts +1 -1
  34. package/dist-lib/components/fs-ui/Pagination.d.ts.map +1 -1
  35. package/dist-lib/components/fs-ui/PillTabs.d.ts +1 -1
  36. package/dist-lib/components/fs-ui/PillTabs.d.ts.map +1 -1
  37. package/dist-lib/components/fs-ui/RowMenu.d.ts +1 -1
  38. package/dist-lib/components/fs-ui/RowMenu.d.ts.map +1 -1
  39. package/dist-lib/components/fs-ui/SearchInput.d.ts +1 -1
  40. package/dist-lib/components/fs-ui/SearchInput.d.ts.map +1 -1
  41. package/dist-lib/components/fs-ui/ShortcutHelp.d.ts +1 -1
  42. package/dist-lib/components/fs-ui/ShortcutHelp.d.ts.map +1 -1
  43. package/dist-lib/components/fs-ui/StatusIcon.d.ts +1 -1
  44. package/dist-lib/components/fs-ui/StatusIcon.d.ts.map +1 -1
  45. package/dist-lib/components/fs-ui/TableSkeleton.d.ts +1 -1
  46. package/dist-lib/components/fs-ui/TableSkeleton.d.ts.map +1 -1
  47. package/dist-lib/components/fs-ui/Toolbar.d.ts +1 -1
  48. package/dist-lib/components/fs-ui/Toolbar.d.ts.map +1 -1
  49. package/dist-lib/components/fs-ui/UpdatedAt.d.ts +1 -1
  50. package/dist-lib/components/fs-ui/UpdatedAt.d.ts.map +1 -1
  51. package/dist-lib/components/voorraad/AdditionalPackagingDialog.d.ts +1 -1
  52. package/dist-lib/components/voorraad/AdditionalPackagingDialog.d.ts.map +1 -1
  53. package/dist-lib/components/voorraad/ArtikelCompositionCard.d.ts +1 -1
  54. package/dist-lib/components/voorraad/ArtikelCompositionCard.d.ts.map +1 -1
  55. package/dist-lib/components/voorraad/ArtikelWizard.d.ts +1 -1
  56. package/dist-lib/components/voorraad/ArtikelWizard.d.ts.map +1 -1
  57. package/dist-lib/components/voorraad/ArtikelWizard.js +5 -4
  58. package/dist-lib/components/voorraad/CollapsibleText.d.ts +1 -1
  59. package/dist-lib/components/voorraad/CollapsibleText.d.ts.map +1 -1
  60. package/dist-lib/components/voorraad/EditArtikelPage.d.ts +1 -1
  61. package/dist-lib/components/voorraad/EditArtikelPage.d.ts.map +1 -1
  62. package/dist-lib/components/voorraad/ExcelExportButton.d.ts +1 -1
  63. package/dist-lib/components/voorraad/ExcelExportButton.d.ts.map +1 -1
  64. package/dist-lib/components/voorraad/FloridayConnectionNotice.d.ts +1 -1
  65. package/dist-lib/components/voorraad/FloridayConnectionNotice.d.ts.map +1 -1
  66. package/dist-lib/components/voorraad/FloridayInfoCard.d.ts +1 -1
  67. package/dist-lib/components/voorraad/FloridayInfoCard.d.ts.map +1 -1
  68. package/dist-lib/components/voorraad/FloridayLoadCarriers.d.ts +1 -1
  69. package/dist-lib/components/voorraad/FloridayLoadCarriers.d.ts.map +1 -1
  70. package/dist-lib/components/voorraad/FloridaySentCard.d.ts +1 -1
  71. package/dist-lib/components/voorraad/FloridaySentCard.d.ts.map +1 -1
  72. package/dist-lib/components/voorraad/FloridayTakeoverPanel.d.ts +2 -2
  73. package/dist-lib/components/voorraad/FloridayTakeoverPanel.d.ts.map +1 -1
  74. package/dist-lib/components/voorraad/FloridayTakeoverPanel.js +9 -2
  75. package/dist-lib/components/voorraad/FustAdministratie.d.ts +2 -2
  76. package/dist-lib/components/voorraad/FustAdministratie.d.ts.map +1 -1
  77. package/dist-lib/components/voorraad/FustAdministratie.js +2 -1
  78. package/dist-lib/components/voorraad/FustenPage.d.ts +1 -1
  79. package/dist-lib/components/voorraad/FustenPage.d.ts.map +1 -1
  80. package/dist-lib/components/voorraad/FustenPage.js +4 -2
  81. package/dist-lib/components/voorraad/InventorySettingsDrawer.d.ts +1 -1
  82. package/dist-lib/components/voorraad/InventorySettingsDrawer.d.ts.map +1 -1
  83. package/dist-lib/components/voorraad/InventoryStatusBadge.d.ts +1 -1
  84. package/dist-lib/components/voorraad/InventoryStatusBadge.d.ts.map +1 -1
  85. package/dist-lib/components/voorraad/KoppelingStatusPanel.d.ts +1 -1
  86. package/dist-lib/components/voorraad/KoppelingStatusPanel.d.ts.map +1 -1
  87. package/dist-lib/components/voorraad/NieuwArtikelPage.d.ts +1 -1
  88. package/dist-lib/components/voorraad/NieuwArtikelPage.d.ts.map +1 -1
  89. package/dist-lib/components/voorraad/NieuwArtikelPage.js +2 -1
  90. package/dist-lib/components/voorraad/OrderHistoryCard.d.ts +1 -1
  91. package/dist-lib/components/voorraad/OrderHistoryCard.d.ts.map +1 -1
  92. package/dist-lib/components/voorraad/PriceStatusBadge.d.ts +1 -1
  93. package/dist-lib/components/voorraad/PriceStatusBadge.d.ts.map +1 -1
  94. package/dist-lib/components/voorraad/ProductCustomFieldsCard.d.ts +1 -1
  95. package/dist-lib/components/voorraad/ProductCustomFieldsCard.d.ts.map +1 -1
  96. package/dist-lib/components/voorraad/ProductLinkCard.d.ts +1 -1
  97. package/dist-lib/components/voorraad/ProductLinkCard.d.ts.map +1 -1
  98. package/dist-lib/components/voorraad/ProductSalePriceField.d.ts +2 -2
  99. package/dist-lib/components/voorraad/ProductSalePriceField.d.ts.map +1 -1
  100. package/dist-lib/components/voorraad/ProductStructureCard.d.ts +2 -2
  101. package/dist-lib/components/voorraad/ProductStructureCard.d.ts.map +1 -1
  102. package/dist-lib/components/voorraad/PublicatiesPage.d.ts +1 -1
  103. package/dist-lib/components/voorraad/PublicatiesPage.d.ts.map +1 -1
  104. package/dist-lib/components/voorraad/PublishProgressCard.d.ts +1 -1
  105. package/dist-lib/components/voorraad/PublishProgressCard.d.ts.map +1 -1
  106. package/dist-lib/components/voorraad/PublishReadinessCard.d.ts +1 -1
  107. package/dist-lib/components/voorraad/PublishReadinessCard.d.ts.map +1 -1
  108. package/dist-lib/components/voorraad/Sneltoetsen.d.ts +2 -2
  109. package/dist-lib/components/voorraad/Sneltoetsen.d.ts.map +1 -1
  110. package/dist-lib/components/voorraad/StepSamenstelling.d.ts +1 -1
  111. package/dist-lib/components/voorraad/StepSamenstelling.d.ts.map +1 -1
  112. package/dist-lib/components/voorraad/StockBulkButtons.d.ts +1 -1
  113. package/dist-lib/components/voorraad/StockBulkButtons.d.ts.map +1 -1
  114. package/dist-lib/components/voorraad/StockHistoryChart.d.ts +1 -1
  115. package/dist-lib/components/voorraad/StockHistoryChart.d.ts.map +1 -1
  116. package/dist-lib/components/voorraad/StockMutationHistoryCard.d.ts +1 -1
  117. package/dist-lib/components/voorraad/StockMutationHistoryCard.d.ts.map +1 -1
  118. package/dist-lib/components/voorraad/StockPushMonitor.d.ts +1 -1
  119. package/dist-lib/components/voorraad/StockPushMonitor.d.ts.map +1 -1
  120. package/dist-lib/components/voorraad/StockSyncStatus.d.ts +1 -1
  121. package/dist-lib/components/voorraad/StockSyncStatus.d.ts.map +1 -1
  122. package/dist-lib/components/voorraad/SupplyReadScopeAlert.d.ts +1 -1
  123. package/dist-lib/components/voorraad/SupplyReadScopeAlert.d.ts.map +1 -1
  124. package/dist-lib/components/voorraad/TelmomentButton.d.ts +1 -1
  125. package/dist-lib/components/voorraad/TelmomentButton.d.ts.map +1 -1
  126. package/dist-lib/components/voorraad/TrayStickerCard.d.ts +1 -1
  127. package/dist-lib/components/voorraad/TrayStickerCard.d.ts.map +1 -1
  128. package/dist-lib/components/voorraad/ValidationOverviewTable.d.ts +1 -1
  129. package/dist-lib/components/voorraad/ValidationOverviewTable.d.ts.map +1 -1
  130. package/dist-lib/components/voorraad/ValidationPage.d.ts +1 -1
  131. package/dist-lib/components/voorraad/ValidationPage.d.ts.map +1 -1
  132. package/dist-lib/components/voorraad/VoorraadBeheerCard.d.ts +1 -1
  133. package/dist-lib/components/voorraad/VoorraadBeheerCard.d.ts.map +1 -1
  134. package/dist-lib/components/voorraad/VoorraadPage.d.ts +1 -1
  135. package/dist-lib/components/voorraad/VoorraadPage.d.ts.map +1 -1
  136. package/dist-lib/components/voorraad/VoorraadPagination.d.ts +1 -1
  137. package/dist-lib/components/voorraad/VoorraadPagination.d.ts.map +1 -1
  138. package/dist-lib/components/voorraad/VoorraadStockCard.d.ts +1 -1
  139. package/dist-lib/components/voorraad/VoorraadStockCard.d.ts.map +1 -1
  140. package/dist-lib/components/voorraad/VoorraadSturingCard.d.ts +1 -1
  141. package/dist-lib/components/voorraad/VoorraadSturingCard.d.ts.map +1 -1
  142. package/dist-lib/components/voorraad/VoorraadTable.d.ts +1 -1
  143. package/dist-lib/components/voorraad/VoorraadTable.d.ts.map +1 -1
  144. package/dist-lib/components/voorraad/VoorraadTable.js +6 -3
  145. package/dist-lib/components/voorraad/VoorraadVeldenCard.d.ts +1 -1
  146. package/dist-lib/components/voorraad/VoorraadVeldenCard.d.ts.map +1 -1
  147. package/dist-lib/components/voorraad/__tests__/count-stock-free.test.d.ts +2 -0
  148. package/dist-lib/components/voorraad/__tests__/count-stock-free.test.d.ts.map +1 -0
  149. package/dist-lib/components/voorraad/__tests__/count-stock-free.test.js +12 -0
  150. package/dist-lib/components/voorraad/artikel/ArtikelPagina.d.ts +1 -1
  151. package/dist-lib/components/voorraad/artikel/ArtikelPagina.d.ts.map +1 -1
  152. package/dist-lib/components/voorraad/artikel/ArtikelPagina.js +2 -1
  153. package/dist-lib/components/voorraad/artikel/TwijfelKiezen.d.ts +1 -1
  154. package/dist-lib/components/voorraad/artikel/TwijfelKiezen.d.ts.map +1 -1
  155. package/dist-lib/components/voorraad/lijst/ImporteerKnop.d.ts +1 -1
  156. package/dist-lib/components/voorraad/lijst/ImporteerKnop.d.ts.map +1 -1
  157. package/dist-lib/components/voorraad/lijst/LijstExportKnop.d.ts +1 -1
  158. package/dist-lib/components/voorraad/lijst/LijstExportKnop.d.ts.map +1 -1
  159. package/dist-lib/components/voorraad/lijst/SnelActieDialogen.d.ts +2 -2
  160. package/dist-lib/components/voorraad/lijst/SnelActieDialogen.d.ts.map +1 -1
  161. package/dist-lib/components/voorraad/lijst/VoorraadLijstTabel.d.ts +2 -2
  162. package/dist-lib/components/voorraad/lijst/VoorraadLijstTabel.d.ts.map +1 -1
  163. package/dist-lib/components/voorraad/lijst/VoorraadLijstTabel.js +3 -2
  164. package/dist-lib/hooks/useInventorySettings.d.ts.map +1 -1
  165. package/dist-lib/hooks/useInventorySettings.js +5 -3
  166. package/dist-lib/integrations/supabase/client.js +1 -1
  167. package/dist-lib/integrations/supabase/client.server.js +1 -1
  168. package/dist-lib/integrations/supabase/types.d.ts +724 -0
  169. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  170. package/dist-lib/lib/__tests__/article-code.test.d.ts +2 -0
  171. package/dist-lib/lib/__tests__/article-code.test.d.ts.map +1 -0
  172. package/dist-lib/lib/__tests__/article-code.test.js +11 -0
  173. package/dist-lib/lib/__tests__/erp-test-123.test.d.ts +2 -0
  174. package/dist-lib/lib/__tests__/erp-test-123.test.d.ts.map +1 -0
  175. package/dist-lib/lib/__tests__/erp-test-123.test.js +43 -0
  176. package/dist-lib/lib/__tests__/floricode-required-features.test.js +7 -3
  177. package/dist-lib/lib/__tests__/floriday-customer-offers.test.d.ts +2 -0
  178. package/dist-lib/lib/__tests__/floriday-customer-offers.test.d.ts.map +1 -0
  179. package/dist-lib/lib/__tests__/floriday-customer-offers.test.js +36 -0
  180. package/dist-lib/lib/__tests__/floriday-fetch-status.test.d.ts +2 -0
  181. package/dist-lib/lib/__tests__/floriday-fetch-status.test.d.ts.map +1 -0
  182. package/dist-lib/lib/__tests__/floriday-fetch-status.test.js +25 -0
  183. package/dist-lib/lib/__tests__/floriday-write-mode.test.d.ts +2 -0
  184. package/dist-lib/lib/__tests__/floriday-write-mode.test.d.ts.map +1 -0
  185. package/dist-lib/lib/__tests__/floriday-write-mode.test.js +40 -0
  186. package/dist-lib/lib/__tests__/fust-dimensions.test.d.ts +2 -0
  187. package/dist-lib/lib/__tests__/fust-dimensions.test.d.ts.map +1 -0
  188. package/dist-lib/lib/__tests__/fust-dimensions.test.js +27 -0
  189. package/dist-lib/lib/__tests__/load-carriers.test.d.ts +2 -0
  190. package/dist-lib/lib/__tests__/load-carriers.test.d.ts.map +1 -0
  191. package/dist-lib/lib/__tests__/load-carriers.test.js +15 -0
  192. package/dist-lib/lib/__tests__/mirror-products.test.d.ts +2 -0
  193. package/dist-lib/lib/__tests__/mirror-products.test.d.ts.map +1 -0
  194. package/dist-lib/lib/__tests__/mirror-products.test.js +13 -0
  195. package/dist-lib/lib/__tests__/product-packings.test.d.ts +2 -0
  196. package/dist-lib/lib/__tests__/product-packings.test.d.ts.map +1 -0
  197. package/dist-lib/lib/__tests__/product-packings.test.js +42 -0
  198. package/dist-lib/lib/__tests__/publish-114.test.d.ts +2 -0
  199. package/dist-lib/lib/__tests__/publish-114.test.d.ts.map +1 -0
  200. package/dist-lib/lib/__tests__/publish-114.test.js +31 -0
  201. package/dist-lib/lib/__tests__/publish-packing-block.test.d.ts +2 -0
  202. package/dist-lib/lib/__tests__/publish-packing-block.test.d.ts.map +1 -0
  203. package/dist-lib/lib/__tests__/publish-packing-block.test.js +14 -0
  204. package/dist-lib/lib/__tests__/release-130.test.d.ts +2 -0
  205. package/dist-lib/lib/__tests__/release-130.test.d.ts.map +1 -0
  206. package/dist-lib/lib/__tests__/release-130.test.js +103 -0
  207. package/dist-lib/lib/__tests__/release-134.test.d.ts +2 -0
  208. package/dist-lib/lib/__tests__/release-134.test.d.ts.map +1 -0
  209. package/dist-lib/lib/__tests__/release-134.test.js +50 -0
  210. package/dist-lib/lib/__tests__/release-136.test.d.ts +2 -0
  211. package/dist-lib/lib/__tests__/release-136.test.d.ts.map +1 -0
  212. package/dist-lib/lib/__tests__/release-136.test.js +36 -0
  213. package/dist-lib/lib/__tests__/release-140.test.d.ts +2 -0
  214. package/dist-lib/lib/__tests__/release-140.test.d.ts.map +1 -0
  215. package/dist-lib/lib/__tests__/release-140.test.js +42 -0
  216. package/dist-lib/lib/__tests__/request-guard.test.d.ts +2 -0
  217. package/dist-lib/lib/__tests__/request-guard.test.d.ts.map +1 -0
  218. package/dist-lib/lib/__tests__/request-guard.test.js +50 -0
  219. package/dist-lib/lib/__tests__/stock-save.test.d.ts +2 -0
  220. package/dist-lib/lib/__tests__/stock-save.test.d.ts.map +1 -0
  221. package/dist-lib/lib/__tests__/stock-save.test.js +35 -0
  222. package/dist-lib/lib/__tests__/stock-scope.test.d.ts +2 -0
  223. package/dist-lib/lib/__tests__/stock-scope.test.d.ts.map +1 -0
  224. package/dist-lib/lib/__tests__/stock-scope.test.js +44 -0
  225. package/dist-lib/lib/artikel-pagina.d.ts +1 -0
  226. package/dist-lib/lib/artikel-pagina.d.ts.map +1 -1
  227. package/dist-lib/lib/artikel-pagina.js +1 -1
  228. package/dist-lib/lib/floriday-takeover-core.d.ts +0 -13
  229. package/dist-lib/lib/floriday-takeover-core.d.ts.map +1 -1
  230. package/dist-lib/lib/floriday-takeover-core.js +10 -9
  231. package/dist-lib/lib/foto-reden.d.ts +26 -0
  232. package/dist-lib/lib/foto-reden.d.ts.map +1 -0
  233. package/dist-lib/lib/foto-reden.js +39 -0
  234. package/dist-lib/lib/fust-label.d.ts +3 -0
  235. package/dist-lib/lib/fust-label.d.ts.map +1 -0
  236. package/dist-lib/lib/fust-label.js +8 -0
  237. package/dist-lib/lib/fusten.d.ts.map +1 -1
  238. package/dist-lib/lib/fusten.js +12 -12
  239. package/dist-lib/lib/voorraad-lijst.d.ts +2 -0
  240. package/dist-lib/lib/voorraad-lijst.d.ts.map +1 -1
  241. package/dist-lib/server-hooks/__tests__/trade-item-photo.test.d.ts +2 -0
  242. package/dist-lib/server-hooks/__tests__/trade-item-photo.test.d.ts.map +1 -0
  243. package/dist-lib/server-hooks/__tests__/trade-item-photo.test.js +19 -0
  244. package/dist-lib/server-hooks/floriday-follow.d.ts.map +1 -1
  245. package/dist-lib/server-hooks/floriday-follow.js +5 -3
  246. package/package.json +35 -2
  247. package/sql/floriday-voorraad-schema.sql +44 -5
  248. package/dist-lib/components/TemplatePage.d.ts +0 -2
  249. package/dist-lib/components/TemplatePage.d.ts.map +0 -1
  250. package/dist-lib/components/TemplatePage.js +0 -4
  251. package/dist-lib/components/settings/VoorraadSettingsCard.d.ts +0 -2
  252. package/dist-lib/components/settings/VoorraadSettingsCard.d.ts.map +0 -1
  253. package/dist-lib/components/settings/VoorraadSettingsCard.js +0 -39
  254. package/dist-lib/components/voorraad/ConnectionBadge.d.ts +0 -6
  255. package/dist-lib/components/voorraad/ConnectionBadge.d.ts.map +0 -1
  256. package/dist-lib/components/voorraad/ConnectionBadge.js +0 -12
  257. package/dist-lib/components/voorraad/ConnectionPicker.d.ts +0 -8
  258. package/dist-lib/components/voorraad/ConnectionPicker.d.ts.map +0 -1
  259. package/dist-lib/components/voorraad/ConnectionPicker.js +0 -8
  260. package/dist-lib/components/voorraad/FloridayStatusBadge.d.ts +0 -4
  261. package/dist-lib/components/voorraad/FloridayStatusBadge.d.ts.map +0 -1
  262. package/dist-lib/components/voorraad/FloridayStatusBadge.js +0 -8
  263. package/dist-lib/components/voorraad/ModuleHealthCard.d.ts +0 -2
  264. package/dist-lib/components/voorraad/ModuleHealthCard.d.ts.map +0 -1
  265. package/dist-lib/components/voorraad/ModuleHealthCard.js +0 -40
  266. package/dist-lib/components/voorraad/VoorraadDashboard.d.ts +0 -10
  267. package/dist-lib/components/voorraad/VoorraadDashboard.d.ts.map +0 -1
  268. package/dist-lib/components/voorraad/VoorraadDashboard.js +0 -53
  269. package/dist-lib/lib/floriday-field-sources.d.ts +0 -18
  270. package/dist-lib/lib/floriday-field-sources.d.ts.map +0 -1
  271. package/dist-lib/lib/floriday-field-sources.js +0 -45
  272. package/dist-lib/lib/floriday-schema-to-zod.d.ts +0 -9
  273. package/dist-lib/lib/floriday-schema-to-zod.d.ts.map +0 -1
  274. package/dist-lib/lib/floriday-schema-to-zod.js +0 -53
  275. package/dist-lib/lib/merge-products.d.ts +0 -8
  276. package/dist-lib/lib/merge-products.d.ts.map +0 -1
  277. package/dist-lib/lib/merge-products.js +0 -17
  278. package/dist-lib/lib/module-health.functions.d.ts +0 -53497
  279. package/dist-lib/lib/module-health.functions.d.ts.map +0 -1
  280. package/dist-lib/lib/module-health.functions.js +0 -261
  281. package/dist-lib/lib/validationSchemas.d.ts +0 -15
  282. package/dist-lib/lib/validationSchemas.d.ts.map +0 -1
  283. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=release-140.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=request-guard.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stock-save.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stock-scope.test.d.ts.map
@@ -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
+ });
@@ -12,6 +12,7 @@ export interface ArtikelDetail {
12
12
  naam: string;
13
13
  artikelnummer: string | null;
14
14
  foto: string | null;
15
+ foto_reden?: string | null;
15
16
  floriday_id: string | null;
16
17
  heeft_koppeling: boolean;
17
18
  soort: "NORMAL" | "SET" | "GROUP";
@@ -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":"AAAA;;;;;;;;;;;;GAYG;AACH,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"}
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).limit(5000),
36
- admin.from("products").select("id, product, barcode, article_number, floriday_trade_item_id, sale_price").limit(10000),
37
- admin.from("trade_item_stock").select("trade_item_key, physical_stock").eq("connection_id", conn.id).limit(20000),
38
- admin.from("floriday_continuous_stock_cache").select("trade_item_id, number_of_pieces").eq("connection_id", conn.id).limit(5000),
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 }).limit(20000),
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 }).limit(20000),
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).limit(5000),
43
- admin.from("floriday_customers_cache").select("organization_id, name").eq("connection_id", conn.id).limit(10000),
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,3 @@
1
+ /** Eén formaat voor fusten, zoals bij de leverancier: "575 · Deense kist". */
2
+ export declare function fustLabel(code: string | number | null | undefined, naam: string | null | undefined): string;
3
+ //# sourceMappingURL=fust-label.d.ts.map
@@ -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":"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"}
1
+ {"version":3,"file":"fusten.d.ts","sourceRoot":"","sources":["../../src/lib/fusten.ts"],"names":[],"mappings":"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"}
@@ -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
- .from("products")
64
- .select("id,trade_item_key,custom_fields")
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
- let cacheQ = supabase
75
- .from("floriday_trade_items_cache")
76
- .select("floriday_id,data")
77
- .eq("is_deleted", false)
78
- .limit(2000);
79
- if (connectionId)
80
- cacheQ = cacheQ.eq("connection_id", connectionId);
81
- const cacheRes = await cacheQ;
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=trade-item-photo.test.d.ts.map
@@ -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":"AAkEA,4DAA4D;AAC5D,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAE9E"}
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
- .limit(10000);
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 });