@flowselections/floriday-voorraad 1.0.158 → 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.
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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowselections/floriday-voorraad",
3
- "version": "1.0.158",
3
+ "version": "1.0.163",
4
4
  "sideEffects": false,
5
5
  "type": "module",
6
6
  "main": "./dist-lib/index.js",
@@ -206,7 +206,40 @@
206
206
  "name": "voorraad-logistics-tasks-run",
207
207
  "kind": "http",
208
208
  "path": "/api/public/hooks/logistics-tasks-run",
209
- "schedule": "* * * * *"
209
+ "schedule": "* * * * *",
210
+ "replaces": [
211
+ "logistics-tasks-run"
212
+ ]
213
+ },
214
+ {
215
+ "name": "floriday-stock-queue-process",
216
+ "schedule": "* * * * *",
217
+ "kind": "sql",
218
+ "sql": "SELECT public.run_floriday_stock_queue_process();"
219
+ },
220
+ {
221
+ "name": "floriday-continuous-stock-sync",
222
+ "schedule": "* * * * *",
223
+ "kind": "sql",
224
+ "sql": "SELECT public.run_floriday_continuous_stock_sync();"
225
+ },
226
+ {
227
+ "name": "floriday-stock-queue-reset",
228
+ "schedule": "*/15 * * * *",
229
+ "kind": "sql",
230
+ "sql": "SELECT public.reset_stalled_floriday_stock_queue(true);"
231
+ },
232
+ {
233
+ "name": "floriday-stock-queue-cleanup",
234
+ "schedule": "17 3 * * *",
235
+ "kind": "sql",
236
+ "sql": "SELECT public.cleanup_floriday_stock_queue();"
237
+ },
238
+ {
239
+ "name": "voorraad-module-history-cleanup",
240
+ "schedule": "37 3 * * *",
241
+ "kind": "sql",
242
+ "sql": "SELECT public.cleanup_voorraad_module_history();"
210
243
  }
211
244
  ],
212
245
  "install": {
@@ -1,5 +1,5 @@
1
- -- @flowselections/floriday-voorraad 1.0.157 – volledig schema (idempotent, geen gegevens).
2
- -- Laatste migratie: 20261105135333_640ef1da-e3c7-4569-8060-2fd73ac2ca6c.sql
1
+ -- @flowselections/floriday-voorraad 1.0.162 – volledig schema (idempotent, geen gegevens).
2
+ -- Laatste migratie: 20261106160000_voorraad_crons_naar_dashboard.sql
3
3
  -- Gegenereerd uit de database met scripts/generate-voorraad-schema.py. Niet met de hand wijzigen.
4
4
  -- Volgorde 20. Ontbrekende tabellen van andere modules worden overgeslagen met een NOTICE; draai opnieuw na die module.
5
5
  -- De statuscontrole van floriday_continuous_stock_queue is van Voorraad en wordt hier opnieuw gemaakt.
@@ -5258,6 +5258,7 @@ $function$
5258
5258
  ;
5259
5259
  REVOKE ALL ON FUNCTION recompute_all_reserved_stock() FROM PUBLIC;
5260
5260
  REVOKE ALL ON FUNCTION recompute_all_reserved_stock() FROM anon;
5261
+ REVOKE EXECUTE ON FUNCTION recompute_all_reserved_stock() FROM anon;
5261
5262
  GRANT EXECUTE ON FUNCTION recompute_all_reserved_stock() TO authenticated;
5262
5263
  GRANT EXECUTE ON FUNCTION recompute_all_reserved_stock() TO service_role;
5263
5264
  CREATE OR REPLACE FUNCTION public.recompute_order_status(p_order_id uuid)
@@ -5440,6 +5441,7 @@ $function$
5440
5441
  ;
5441
5442
  REVOKE ALL ON FUNCTION recompute_reserved_stock(text) FROM PUBLIC;
5442
5443
  REVOKE ALL ON FUNCTION recompute_reserved_stock(text) FROM anon;
5444
+ REVOKE EXECUTE ON FUNCTION recompute_reserved_stock(text) FROM anon;
5443
5445
  GRANT EXECUTE ON FUNCTION recompute_reserved_stock(text) TO authenticated;
5444
5446
  GRANT EXECUTE ON FUNCTION recompute_reserved_stock(text) TO service_role;
5445
5447
  CREATE OR REPLACE FUNCTION public.requeue_skipped_stock_rows(p_status text, p_connection_id uuid, p_trade_item_id text DEFAULT NULL::text)
@@ -8128,7 +8130,8 @@ BEGIN
8128
8130
  'unit', p.unit, 'barcode', p.barcode),
8129
8131
  'naam', COALESCE(NULLIF(btrim(p.product),''), NULLIF(p.custom_fields#>>'{floriday_payload,name}',''), '(naamloos)'),
8130
8132
  'artikelnummer', COALESCE(NULLIF(btrim(p.article_number),''), NULLIF(p.custom_fields#>>'{floriday_payload,articleCode}','')),
8131
- 'foto', COALESCE(NULLIF(p.image_url,''), NULLIF(p.custom_fields#>>'{floriday_payload,images,0,url}',''), NULLIF(p.custom_fields#>>'{floriday_payload,images,0,previewUrl}','')),
8133
+ 'foto', public.voorraad_foto_info(p.image_url, p.custom_fields, p.floriday_trade_item_id, p.trade_item_key)->>'foto',
8134
+ 'foto_reden', public.voorraad_foto_info(p.image_url, p.custom_fields, p.floriday_trade_item_id, p.trade_item_key)->>'reden',
8132
8135
  'floriday_id', NULLIF(btrim(COALESCE(p.floriday_trade_item_id,'')),''),
8133
8136
  'heeft_koppeling', v_conn IS NOT NULL,
8134
8137
  'soort', v_soort,
@@ -10243,6 +10246,41 @@ END $function$
10243
10246
  REVOKE ALL ON FUNCTION voorraad_floriday_volgt(uuid) FROM PUBLIC;
10244
10247
  REVOKE ALL ON FUNCTION voorraad_floriday_volgt(uuid) FROM anon;
10245
10248
  GRANT EXECUTE ON FUNCTION voorraad_floriday_volgt(uuid) TO service_role;
10249
+ CREATE OR REPLACE FUNCTION public.voorraad_foto_info(p_image_url text, p_custom_fields jsonb, p_floriday_trade_item_id text, p_trade_item_key text)
10250
+ RETURNS jsonb
10251
+ LANGUAGE sql
10252
+ STABLE
10253
+ SET search_path TO 'public'
10254
+ AS $function$
10255
+ WITH k AS (
10256
+ SELECT NULLIF(btrim(COALESCE(p_image_url,'')),'') AS eigen,
10257
+ COALESCE(NULLIF(p_custom_fields#>>'{floriday_payload,images,0,url}',''), NULLIF(p_custom_fields#>>'{floriday_payload,images,0,previewUrl}','')) AS payload,
10258
+ COALESCE(NULLIF(btrim(COALESCE(p_floriday_trade_item_id,'')),''),
10259
+ CASE WHEN COALESCE(p_trade_item_key,'') <> '' AND p_trade_item_key NOT LIKE 'product:%' THEN p_trade_item_key END) AS fid
10260
+ ), f AS (
10261
+ SELECT k.*, (
10262
+ SELECT COALESCE(NULLIF(c.data->>'photoUrl',''),
10263
+ (SELECT ph->>'url' FROM jsonb_array_elements(CASE WHEN jsonb_typeof(c.data->'photos')='array' THEN c.data->'photos' ELSE '[]'::jsonb END) WITH ORDINALITY e(ph, i)
10264
+ WHERE NULLIF(ph->>'url','') IS NOT NULL ORDER BY (ph->>'primary')::boolean IS TRUE DESC, i LIMIT 1))
10265
+ FROM public.floriday_trade_items_cache c
10266
+ WHERE k.fid IS NOT NULL AND c.floriday_id::text = k.fid AND c.is_deleted IS NOT TRUE
10267
+ ORDER BY c.fetched_at DESC NULLS LAST LIMIT 1) AS floriday
10268
+ FROM k
10269
+ )
10270
+ SELECT CASE
10271
+ WHEN eigen IS NOT NULL AND eigen NOT LIKE 'pending:%' THEN jsonb_build_object('foto', eigen, 'reden', NULL)
10272
+ WHEN payload IS NOT NULL AND payload NOT LIKE 'pending:%' THEN jsonb_build_object('foto', payload, 'reden', NULL)
10273
+ WHEN floriday IS NOT NULL THEN jsonb_build_object('foto', floriday, 'reden', NULL)
10274
+ WHEN COALESCE(eigen, payload, '') LIKE 'pending:%' THEN jsonb_build_object('foto', NULL, 'reden', 'verstuurd')
10275
+ WHEN fid IS NULL THEN jsonb_build_object('foto', NULL, 'reden', 'niet_gekoppeld')
10276
+ ELSE jsonb_build_object('foto', NULL, 'reden', 'geen_floriday_foto') END
10277
+ FROM f
10278
+ $function$
10279
+ ;
10280
+ REVOKE ALL ON FUNCTION voorraad_foto_info(text,jsonb,text,text) FROM PUBLIC;
10281
+ REVOKE ALL ON FUNCTION voorraad_foto_info(text,jsonb,text,text) FROM anon;
10282
+ GRANT EXECUTE ON FUNCTION voorraad_foto_info(text,jsonb,text,text) TO authenticated;
10283
+ GRANT EXECUTE ON FUNCTION voorraad_foto_info(text,jsonb,text,text) TO service_role;
10246
10284
  CREATE OR REPLACE FUNCTION public.voorraad_fust_bijhouden(p_fust_type_id uuid)
10247
10285
  RETURNS boolean
10248
10286
  LANGUAGE plpgsql
@@ -10712,7 +10750,7 @@ CREATE OR REPLACE FUNCTION public.voorraad_install_check()
10712
10750
  STABLE SECURITY DEFINER
10713
10751
  SET search_path TO 'public'
10714
10752
  AS $function$
10715
- DECLARE v_f text[] := ARRAY['voorraad_lijst_v2','voorraad_lijst_v2_rijen','voorraad_kpi','voorraad_validatie_pagina','voorraad_groep_volgorde_opslaan','voorraad_floriday_versieronde_geslaagd','voorraad_is_beheerder','voorraad_floriday_versieronde_volgende','voorraad_floriday_versieronde_portie','run_floriday_versieronde','voorraad_floriday_versieronde_inplannen','voorraad_floriday_versieronde_melding','voorraad_floriday_versieronde_status','voorraad_floriday_product_van','voorraad_floriday_vervallen_verwerken','voorraad_floriday_versies_vastleggen','voorraad_fust_historisch_vervallen','voorraad_correctie_1148','voorraad_instellingen_lezen','voorraad_twijfel_nieuw_artikel','voorraad_eigen_velden_opslaan','voorraad_traysticker_opslaan','voorraad_floriday_volgt','voorraad_artikel_archiveren','voorraad_orders_gearchiveerd','voorraad_twijfel_kiezen','voorraad_twijfel_lijst','voorraad_voorraad_instellingen_opslaan','voorraad_artikel_detail','voorraad_artikel_opslaan','voorraad_voorraad_corrigeren','voorraad_lijst','voorraad_floriday_artikelen_aanmaken','voorraad_floriday_artikelen_vangnet','voorraad_orderregel_trade_item','voorraad_orderregel_trade_item_bron','voorraad_correctie_1144','voorraad_telmoment_lijst','voorraad_telmoment_opslaan','voorraad_order_vertrokken_voor','voorraad_fust_startmoment_opslaan','voorraad_fust_startmoment_auto','voorraad_fust_instellingen_opslaan','voorraad_koppeling_check','voorraad_instellingen_opslaan','voorraad_ensure_defaults','voorraad_defaults_check','voorraad_defaults_versie','voorraad_canoniek_artikel','voorraad_canoniek_sleutel','voorraad_artikel_prijs','voorraad_dubbele_voorraadregels','voorraad_correctie_1131','voorraad_correctie_1132','voorraad_gateway_routes_check','voorraad_placeholder_code_reason','trg_products_placeholder_code','voorraad_fust_juist','voorraad_correctie_1121','voorraad_correctie_1121_regels','voorraad_correctie_1123','voorraad_correctie_1124','voorraad_load_carriers','voorraad_packing_from_floriday','voorraad_packing_missing','voorraad_correctie_1126','voorraad_correctie_1127','trg_voorraad_link_primary_packing','voorraad_order_geannuleerd','voorraad_article_vbn','voorraad_correctie_1112','voorraad_reverse_order_mutations','voorraad_withdraw_stock_row','voorraad_floriday_klaarzetten_toegestaan','voorraad_afboeken','voorraad_voorraad_opslaan','voorraad_correctie_1140','voorraad_overzicht_orderregel_koppeling','voorraad_orderregel_sleutel','ensure_voorraad_local_context','get_stock_context','voorraad_stock_context_status','voorraad_fcsq_local_guard','_floriday_queue_cleanup_batch','_migrate_rewrite_stock_key','_stock_import_caller','apply_fust_stock_mutation','apply_stock_consumption','apply_stock_reservation','autolink_product_to_floriday','backfill_open_order_reservations','calculate_floriday_desired_stock','calculate_structure_available','canonicalize_trade_item_stock_key','check_product_structure','claim_floriday_base_supply','claim_floriday_stock_queue','cleanup_floriday_stock_queue','cleanup_voorraad_module_history','complete_floriday_base_supply','complete_floriday_stock_queue','complete_floriday_stock_queue_outcome','consume_bom_for_production','consume_order_item','drain_inventory_recompute_queue','enqueue_floriday_continuous_stock','enqueue_floriday_continuous_stock_after_warehouse_preference','enqueue_structure_recompute','ensure_inventory_recompute_drain','ensure_trade_item_stock_row','ensure_trade_item_stock_row_key','fcsq_block_disabled','fcsq_fallback_supersede','fcsq_wake_base_supply','find_trade_item_key','floriday_adopt_connection','floriday_autoheal_connections','floriday_capture_stock_snapshot','floriday_cleanup_stock_queue_v2','floriday_compact_stock_snapshots','floriday_default_owner','floriday_desired_stock_regression_check','floriday_ensure_inventory_settings','floriday_erp_leading_preview','floriday_fill_publish_horizon','floriday_follow_apply','floriday_ingest_sales_orders','floriday_leading_summary','floriday_make_erp_leading','floriday_norm_offer_forms','floriday_orphan_settings_count','floriday_publish_horizon_weeks','floriday_queue_erp_guard','floriday_queue_first_positive','floriday_recompute_inventory','floriday_relink_products','floriday_requeue_dead_letters','floriday_settings_change_recompute','floriday_settings_change_recompute_stmt','floriday_stock_change_recompute','floriday_stock_queue_supersede','floriday_takeover_apply','floriday_takeover_fetch_state','floriday_takeover_store_forms','floriday_takeover_undo','fust_negative_stock_report','fust_types_duplicate_guard','get_active_floriday_context','get_group_allocation_keys','get_group_head_key','get_product_stock','get_product_structure_totals','get_product_structure_totals_batch','inventory_inline_budget_ok','merge_products','normalize_order_source','process_inventory_recompute_queue','produce_designed_product','product_active_group_id','product_id_from_ref','product_is_set','product_label','product_member_group_ids','product_own_available','product_packings_derive','product_packings_replace','product_packings_sync_from_floriday','product_primary_pieces','product_set_depth_above','product_set_depth_below','product_structure_ancestors','product_structure_max_depth','product_structure_path','product_tray_stickers_touch','product_type','promote_trade_item_key','recompute_all_reserved_stock','recompute_order_status','recompute_reserved_for_order','recompute_reserved_stock','requeue_skipped_stock_rows','reset_stalled_floriday_stock_queue','resolve_group_allocation','resolve_group_member_stock_key','resolve_product_id_for_item','resolve_stock_trade_item_key','reverse_production','run_floriday_base_supply_process','run_floriday_continuous_stock_sync','run_floriday_follow','run_floriday_stock_queue_process','run_floriday_stock_reconcile','run_logistics_tasks_dispatch','self_heal_floriday_links','set_module_runtime_config_updated_at','set_product_bom_tenant','set_product_stock','set_updated_at_order_fust_bookings','stock_import_cleanup','stock_import_create','stock_import_process_chunk','stock_import_stop','stock_import_undo_chunk','sync_order_item_fusten','sync_products_quantity_from_stock','touch_fust_types_updated_at','trade_item_drafts_readonly','trade_item_prices_touch_updated_at','trade_item_stock_duplicates','trg_cart_numbers_sync_order_status_fn','trg_cart_session_consume_fn','trg_check_product_structure','trg_floriday_cache_relink_fn','trg_floriday_trade_items_autolink_fn','trg_order_items_autolink_fn','trg_order_items_fusten','trg_order_items_reserve_fn','trg_orders_cancel_release_fn','trg_orders_consume_on_complete_fn','trg_orders_default_phase_fn','trg_orders_external_fulfilled_fn','trg_orders_recompute_reserved_fn','trg_pgi_assign_sort_order','trg_pgi_order_taken_check','trg_process_recompute_on_commit','trg_product_packings_derive_fn','trg_products_autolink_fn','trg_products_floriday_link_enqueue','trg_products_seed_stock_fn','trg_requeue_no_warehouse_cache','trg_requeue_no_warehouse_connection','trg_requeue_no_warehouse_item_pref','trg_requeue_skipped_no_price','trg_stock_structure_recompute_ins','trg_stock_structure_recompute_upd','trg_structure_change_recompute','trg_trade_item_drafts_autolink_fn','trg_trade_item_stock_auto_bom','trg_trade_item_stock_auto_bom_reverse','trg_trade_item_stock_log_change','trg_trade_item_stock_reserve_fn','trg_trade_item_stock_zero_watch','trg_trade_items_cache_autolink_fn','update_updated_at_column','voorraad_alert_floriday_not_updated','voorraad_can_write','voorraad_cleanup_old_rows','voorraad_consume_external_fulfilled','voorraad_correctie_1098','voorraad_correctie_status','voorraad_external_fulfilled_ids','voorraad_floriday_leads_key','voorraad_fust_dimensions','voorraad_hook_base_url','voorraad_hook_on','voorraad_hook_post','voorraad_hook_switch_jobs','voorraad_install_check','voorraad_is_server','voorraad_mark_floriday_sold_before_switch','voorraad_production_enabled','voorraad_schema_ddl','voorraad_touch_updated_at','voorraad_vereis','voorraad_week_is_past'];
10753
+ DECLARE v_f text[] := ARRAY['voorraad_foto_info','voorraad_lijst_v2','voorraad_lijst_v2_rijen','voorraad_kpi','voorraad_validatie_pagina','voorraad_groep_volgorde_opslaan','voorraad_floriday_versieronde_geslaagd','voorraad_is_beheerder','voorraad_floriday_versieronde_volgende','voorraad_floriday_versieronde_portie','run_floriday_versieronde','voorraad_floriday_versieronde_inplannen','voorraad_floriday_versieronde_melding','voorraad_floriday_versieronde_status','voorraad_floriday_product_van','voorraad_floriday_vervallen_verwerken','voorraad_floriday_versies_vastleggen','voorraad_fust_historisch_vervallen','voorraad_correctie_1148','voorraad_instellingen_lezen','voorraad_twijfel_nieuw_artikel','voorraad_eigen_velden_opslaan','voorraad_traysticker_opslaan','voorraad_floriday_volgt','voorraad_artikel_archiveren','voorraad_orders_gearchiveerd','voorraad_twijfel_kiezen','voorraad_twijfel_lijst','voorraad_voorraad_instellingen_opslaan','voorraad_artikel_detail','voorraad_artikel_opslaan','voorraad_voorraad_corrigeren','voorraad_lijst','voorraad_floriday_artikelen_aanmaken','voorraad_floriday_artikelen_vangnet','voorraad_orderregel_trade_item','voorraad_orderregel_trade_item_bron','voorraad_correctie_1144','voorraad_telmoment_lijst','voorraad_telmoment_opslaan','voorraad_order_vertrokken_voor','voorraad_fust_startmoment_opslaan','voorraad_fust_startmoment_auto','voorraad_fust_instellingen_opslaan','voorraad_koppeling_check','voorraad_instellingen_opslaan','voorraad_ensure_defaults','voorraad_defaults_check','voorraad_defaults_versie','voorraad_canoniek_artikel','voorraad_canoniek_sleutel','voorraad_artikel_prijs','voorraad_dubbele_voorraadregels','voorraad_correctie_1131','voorraad_correctie_1132','voorraad_gateway_routes_check','voorraad_placeholder_code_reason','trg_products_placeholder_code','voorraad_fust_juist','voorraad_correctie_1121','voorraad_correctie_1121_regels','voorraad_correctie_1123','voorraad_correctie_1124','voorraad_load_carriers','voorraad_packing_from_floriday','voorraad_packing_missing','voorraad_correctie_1126','voorraad_correctie_1127','trg_voorraad_link_primary_packing','voorraad_order_geannuleerd','voorraad_article_vbn','voorraad_correctie_1112','voorraad_reverse_order_mutations','voorraad_withdraw_stock_row','voorraad_floriday_klaarzetten_toegestaan','voorraad_afboeken','voorraad_voorraad_opslaan','voorraad_correctie_1140','voorraad_overzicht_orderregel_koppeling','voorraad_orderregel_sleutel','ensure_voorraad_local_context','get_stock_context','voorraad_stock_context_status','voorraad_fcsq_local_guard','_floriday_queue_cleanup_batch','_migrate_rewrite_stock_key','_stock_import_caller','apply_fust_stock_mutation','apply_stock_consumption','apply_stock_reservation','autolink_product_to_floriday','backfill_open_order_reservations','calculate_floriday_desired_stock','calculate_structure_available','canonicalize_trade_item_stock_key','check_product_structure','claim_floriday_base_supply','claim_floriday_stock_queue','cleanup_floriday_stock_queue','cleanup_voorraad_module_history','complete_floriday_base_supply','complete_floriday_stock_queue','complete_floriday_stock_queue_outcome','consume_bom_for_production','consume_order_item','drain_inventory_recompute_queue','enqueue_floriday_continuous_stock','enqueue_floriday_continuous_stock_after_warehouse_preference','enqueue_structure_recompute','ensure_inventory_recompute_drain','ensure_trade_item_stock_row','ensure_trade_item_stock_row_key','fcsq_block_disabled','fcsq_fallback_supersede','fcsq_wake_base_supply','find_trade_item_key','floriday_adopt_connection','floriday_autoheal_connections','floriday_capture_stock_snapshot','floriday_cleanup_stock_queue_v2','floriday_compact_stock_snapshots','floriday_default_owner','floriday_desired_stock_regression_check','floriday_ensure_inventory_settings','floriday_erp_leading_preview','floriday_fill_publish_horizon','floriday_follow_apply','floriday_ingest_sales_orders','floriday_leading_summary','floriday_make_erp_leading','floriday_norm_offer_forms','floriday_orphan_settings_count','floriday_publish_horizon_weeks','floriday_queue_erp_guard','floriday_queue_first_positive','floriday_recompute_inventory','floriday_relink_products','floriday_requeue_dead_letters','floriday_settings_change_recompute','floriday_settings_change_recompute_stmt','floriday_stock_change_recompute','floriday_stock_queue_supersede','floriday_takeover_apply','floriday_takeover_fetch_state','floriday_takeover_store_forms','floriday_takeover_undo','fust_negative_stock_report','fust_types_duplicate_guard','get_active_floriday_context','get_group_allocation_keys','get_group_head_key','get_product_stock','get_product_structure_totals','get_product_structure_totals_batch','inventory_inline_budget_ok','merge_products','normalize_order_source','process_inventory_recompute_queue','produce_designed_product','product_active_group_id','product_id_from_ref','product_is_set','product_label','product_member_group_ids','product_own_available','product_packings_derive','product_packings_replace','product_packings_sync_from_floriday','product_primary_pieces','product_set_depth_above','product_set_depth_below','product_structure_ancestors','product_structure_max_depth','product_structure_path','product_tray_stickers_touch','product_type','promote_trade_item_key','recompute_all_reserved_stock','recompute_order_status','recompute_reserved_for_order','recompute_reserved_stock','requeue_skipped_stock_rows','reset_stalled_floriday_stock_queue','resolve_group_allocation','resolve_group_member_stock_key','resolve_product_id_for_item','resolve_stock_trade_item_key','reverse_production','run_floriday_base_supply_process','run_floriday_continuous_stock_sync','run_floriday_follow','run_floriday_stock_queue_process','run_floriday_stock_reconcile','run_logistics_tasks_dispatch','self_heal_floriday_links','set_module_runtime_config_updated_at','set_product_bom_tenant','set_product_stock','set_updated_at_order_fust_bookings','stock_import_cleanup','stock_import_create','stock_import_process_chunk','stock_import_stop','stock_import_undo_chunk','sync_order_item_fusten','sync_products_quantity_from_stock','touch_fust_types_updated_at','trade_item_drafts_readonly','trade_item_prices_touch_updated_at','trade_item_stock_duplicates','trg_cart_numbers_sync_order_status_fn','trg_cart_session_consume_fn','trg_check_product_structure','trg_floriday_cache_relink_fn','trg_floriday_trade_items_autolink_fn','trg_order_items_autolink_fn','trg_order_items_fusten','trg_order_items_reserve_fn','trg_orders_cancel_release_fn','trg_orders_consume_on_complete_fn','trg_orders_default_phase_fn','trg_orders_external_fulfilled_fn','trg_orders_recompute_reserved_fn','trg_pgi_assign_sort_order','trg_pgi_order_taken_check','trg_process_recompute_on_commit','trg_product_packings_derive_fn','trg_products_autolink_fn','trg_products_floriday_link_enqueue','trg_products_seed_stock_fn','trg_requeue_no_warehouse_cache','trg_requeue_no_warehouse_connection','trg_requeue_no_warehouse_item_pref','trg_requeue_skipped_no_price','trg_stock_structure_recompute_ins','trg_stock_structure_recompute_upd','trg_structure_change_recompute','trg_trade_item_drafts_autolink_fn','trg_trade_item_stock_auto_bom','trg_trade_item_stock_auto_bom_reverse','trg_trade_item_stock_log_change','trg_trade_item_stock_reserve_fn','trg_trade_item_stock_zero_watch','trg_trade_items_cache_autolink_fn','update_updated_at_column','voorraad_alert_floriday_not_updated','voorraad_can_write','voorraad_cleanup_old_rows','voorraad_consume_external_fulfilled','voorraad_correctie_1098','voorraad_correctie_status','voorraad_external_fulfilled_ids','voorraad_floriday_leads_key','voorraad_fust_dimensions','voorraad_hook_base_url','voorraad_hook_on','voorraad_hook_post','voorraad_hook_switch_jobs','voorraad_install_check','voorraad_is_server','voorraad_mark_floriday_sold_before_switch','voorraad_production_enabled','voorraad_schema_ddl','voorraad_touch_updated_at','voorraad_vereis','voorraad_week_is_past'];
10716
10754
  v_t text[] := ARRAY['trg_voorraad_link_primary_packing@products','aa0_fcsq_local_context_guard@floriday_continuous_stock_queue','aa_fcsq_erp_leading_guard@floriday_continuous_stock_queue','aa_fis_norm_offer_forms@floriday_inventory_settings','aa_pgi_assign_sort_order@product_group_items','fcsq_block_disabled@floriday_continuous_stock_queue','fcsq_wake_base_supply_ins@floriday_continuous_stock_queue','fcsq_wake_base_supply_upd@floriday_continuous_stock_queue','fust_stock_mutations_apply@fust_stock_mutations','fust_types_duplicate_guard@fust_types','fust_types_touch@fust_types','product_packings_derive_trg@product_packings','product_packings_updated_at@product_packings','set_product_bom_tenant_trigger@product_bom_items','trade_item_prices_set_updated_at@trade_item_prices','trg_cart_numbers_sync_order_status@cart_numbers','trg_cart_session_consume@cart_control_sessions','trg_check_product_structure@product_bom_items','trg_check_product_structure@product_group_items','trg_check_product_structure@product_groups','trg_fcs_queue_updated_at@floriday_continuous_stock_queue','trg_fcsq_fallback_supersede@floriday_continuous_stock_queue','trg_fcsq_supersede@floriday_continuous_stock_queue','trg_floriday_cache_relink@floriday_trade_items_cache','trg_floriday_ensure_inventory_settings@products','trg_floriday_gate_stock_queue@floriday_continuous_stock_queue','trg_floriday_settings_change_recompute_ins@floriday_inventory_settings','trg_floriday_settings_change_recompute_upd@floriday_inventory_settings','trg_floriday_stock_change_recompute@trade_item_stock','trg_floriday_takeover_runs_updated_at@floriday_takeover_runs','trg_floriday_trade_items_autolink@floriday_trade_items_cache','trg_fust_types_requeue_blocked@fust_types','trg_module_runtime_config_updated_at@module_runtime_config','trg_order_fust_bookings_updated_at@order_fust_bookings','trg_order_items_autolink@order_items','trg_order_items_fusten_aiud@order_items','trg_order_items_reserve@order_items','trg_orders_cancel_release@orders','trg_orders_consume_on_complete@orders','trg_orders_default_phase@orders','trg_orders_external_fulfilled@orders','trg_orders_recompute_reserved@orders','trg_prevent_duplicate_product_draft@trade_item_drafts','trg_product_tray_stickers_touch@product_tray_stickers','trg_products_autolink@products','trg_products_floriday_link_enqueue@products','trg_products_seed_stock@products','trg_requeue_no_warehouse_cache@floriday_trade_items_cache','trg_requeue_no_warehouse_connection@floriday_connections','trg_requeue_no_warehouse_item_pref@trade_item_warehouse_preferences','trg_requeue_skipped_no_price@products','trg_stock_mutation_alert@stock_mutation_log','trg_stock_structure_recompute_ins@trade_item_stock','trg_stock_structure_recompute_upd@trade_item_stock','trg_structure_change_recompute@product_bom_items','trg_structure_change_recompute@product_group_items','trg_structure_change_recompute@product_groups','trg_sync_layer_stock_from_trade_stock@trade_item_stock','trg_sync_products_quantity_from_stock_del@trade_item_stock','trg_sync_products_quantity_from_stock_iu@trade_item_stock','trg_trade_item_drafts_autolink@trade_item_drafts','trg_trade_item_drafts_readonly@trade_item_drafts','trg_trade_item_stock_canonical_key@trade_item_stock','trg_trade_item_stock_publish@trade_item_stock','trg_trade_item_stock_reserve@trade_item_stock','trg_trade_item_stock_updated_at@trade_item_stock','trg_trade_item_stock_zero_watch@trade_item_stock','trg_trade_item_supply_lines_touch@trade_item_supply_lines','trg_trade_item_warehouse_preference_enqueue_stock@trade_item_warehouse_preferences','trg_trade_items_cache_autolink@floriday_trade_items_cache','trg_voorraad_buffer_state_updated_at@voorraad_buffer_state','trg_voorraad_event_log_updated_at@voorraad_logistics_event_log','update_trade_item_drafts_updated_at@trade_item_drafts','update_trade_item_warehouse_preferences_updated_at@trade_item_warehouse_preferences','update_voorraad_custom_fields_updated_at@voorraad_custom_fields','update_voorraad_publish_jobs_updated_at@voorraad_publish_jobs','update_voorraad_publish_learnings_updated_at@voorraad_publish_learnings','update_voorraad_publish_steps_updated_at@voorraad_publish_steps','voorraad_hook_switch_jobs@module_runtime_config','zz_fcsq_first_positive@floriday_continuous_stock_queue'];
10717
10755
  v_p text[] := ARRAY['Authenticated can add learnings@voorraad_publish_learnings','Authenticated can delete voorraad custom fields@voorraad_custom_fields','Authenticated can insert vbn required characteristics@floriday_vbn_required_characteristics','Authenticated can insert voorraad custom fields@voorraad_custom_fields','Authenticated can read continuous stock cache@floriday_continuous_stock_cache','Authenticated can read learnings@voorraad_publish_learnings','Authenticated can read vbn required characteristics@floriday_vbn_required_characteristics','Authenticated can read voorraad custom fields@voorraad_custom_fields','Authenticated can update learnings@voorraad_publish_learnings','Authenticated can update vbn required characteristics@floriday_vbn_required_characteristics','Authenticated can update voorraad custom fields@voorraad_custom_fields','Authenticated delete trade_item_warehouse_preferences@trade_item_warehouse_preferences','Authenticated insert trade_item_warehouse_preferences@trade_item_warehouse_preferences','Authenticated select trade_item_warehouse_preferences@trade_item_warehouse_preferences','Authenticated update trade_item_warehouse_preferences@trade_item_warehouse_preferences','Eigen momentopnamen lezen@inventory_stock_snapshots','Eigen voorraadinstellingen beheren@floriday_inventory_settings','Eigenaar leest importporties@stock_import_chunks','Eigenaar leest importregels@stock_import_rows','Fust mutations delete@fust_stock_mutations','Fust mutations insert@fust_stock_mutations','Fust mutations read@fust_stock_mutations','Fust mutations update@fust_stock_mutations','Fust types delete@fust_types','Fust types insert@fust_types','Fust types read@fust_types','Fust types update@fust_types','Ingelogde gebruikers kunnen bufferstatus lezen@voorraad_buffer_state','Ingelogde gebruikers kunnen de eventlog lezen@voorraad_logistics_event_log','Ingelogde gebruikers kunnen fustboekingen lezen@order_fust_bookings','Ingelogde gebruikers lezen drempels@inventory_recompute_limits','Ingelogd mag standaardstatus lezen@voorraad_defaults_state','Ingelogde gebruikers lezen opruimlogboek@structure_cleanup_log','Ingelogde gebruikers lezen opruimruns@floriday_queue_cleanup_runs','Ingelogden beheren traystickers@product_tray_stickers','Ingelogden lezen herberekenwachtrij@inventory_recompute_queue','Ingelogden lezen voorraadmeldingen@stock_integrity_alerts','Ingelogden markeren voorraadmeldingen als gezien@stock_integrity_alerts','Own queue rows select@floriday_continuous_stock_queue','Owner delete trade_item_drafts@trade_item_drafts','Owner insert trade_item_drafts@trade_item_drafts','Owner select trade_item_drafts@trade_item_drafts','Owner update trade_item_drafts@trade_item_drafts','Signed-in users read reconcile runs@floriday_reconcile_runs','Stock delete@trade_item_stock','Stock insert@trade_item_stock','Stock read@trade_item_stock','Stock update@trade_item_stock','Synchronisatieposities lezen@floriday_sync_cursors','Users can insert own publish attempts@voorraad_publish_attempts','Users can read own publish attempts@voorraad_publish_attempts','Users can read own stock mutations@stock_mutation_log','Users manage own import runs@stock_import_runs','Users manage own supply lines@trade_item_supply_lines','Users manage own trade item prices@trade_item_prices','Users manage their own publish jobs@voorraad_publish_jobs','Users manage their own publish steps@voorraad_publish_steps','Verwerkte orders lezen@floriday_sales_order_ingest','Voorraadschrijvers lezen overnameregels@floriday_takeover_items','Voorraadschrijvers lezen overnames@floriday_takeover_runs','authenticated can insert merge log@product_merge_log','authenticated can read merge log@product_merge_log','service role only@voorraad_media_upload_failures','product_packings_read@product_packings','product_packings_write@product_packings'];
10718
10756
  v_open text[] := ARRAY['voorraad_is_server','voorraad_vereis'];
@@ -11124,7 +11162,8 @@ BEGIN
11124
11162
  SELECT (SELECT t FROM tel), (SELECT count(*) FROM gefilterd),
11125
11163
  (SELECT COALESCE(jsonb_agg(jsonb_build_object(
11126
11164
  'id', pg.id, 'naam', pg.naam, 'artikelnummer', pg.artikelnummer,
11127
- 'foto', COALESCE(NULLIF(p.image_url,''), NULLIF(p.custom_fields#>>'{floriday_payload,images,0,url}',''), NULLIF(p.custom_fields#>>'{floriday_payload,images,0,previewUrl}','')),
11165
+ 'foto', public.voorraad_foto_info(p.image_url, p.custom_fields, p.floriday_trade_item_id, p.trade_item_key)->>'foto',
11166
+ 'foto_reden', public.voorraad_foto_info(p.image_url, p.custom_fields, p.floriday_trade_item_id, p.trade_item_key)->>'reden',
11128
11167
  'floriday_id', pg.floriday_id,
11129
11168
  'prijs', pg.prijs, 'eenheid', pg.eenheid, 'soort', pg.soort, 'is_onderdeel', pg.is_onderdeel,
11130
11169
  'liggend', pg.liggend, 'gereserveerd', pg.gereserveerd, 'minimum', pg.minimum, 'inkomend', pg.inkomend, 'vrij', pg.vrij,
@@ -1,2 +0,0 @@
1
- export declare function TemplatePage(): import("react/jsx-runtime").JSX.Element;
2
- //# sourceMappingURL=TemplatePage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TemplatePage.d.ts","sourceRoot":"","sources":["../../src/components/TemplatePage.tsx"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,4CAS3B"}
@@ -1,4 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export function TemplatePage() {
3
- return (_jsxs("div", { className: "p-6", children: [_jsx("h1", { className: "text-2xl font-semibold", children: "Module pagina" }), _jsx("p", { className: "text-muted-foreground mt-2", children: "Vervang dit component met de pagina's van jouw module." })] }));
4
- }
@@ -1,2 +0,0 @@
1
- export declare function VoorraadSettingsCard(): import("react/jsx-runtime").JSX.Element;
2
- //# sourceMappingURL=VoorraadSettingsCard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VoorraadSettingsCard.d.ts","sourceRoot":"","sources":["../../../src/components/settings/VoorraadSettingsCard.tsx"],"names":[],"mappings":"AAeA,wBAAgB,oBAAoB,4CA8DnC"}
@@ -1,39 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useState } from "react";
3
- import { Card, CardContent, CardDescription, CardHeader, CardTitle, Button, Input, Label, supabase, toast, } from "@flowselections/core";
4
- import { Package } from "lucide-react";
5
- export function VoorraadSettingsCard() {
6
- const [lowStockThreshold, setLowStockThreshold] = useState("");
7
- const [loading, setLoading] = useState(true);
8
- const [saving, setSaving] = useState(false);
9
- useEffect(() => {
10
- (async () => {
11
- try {
12
- const { data } = await supabase
13
- .from("inventory_settings")
14
- .select("*")
15
- .limit(1)
16
- .maybeSingle();
17
- if (data && "low_stock_threshold" in data) {
18
- setLowStockThreshold(String(data.low_stock_threshold ?? ""));
19
- }
20
- }
21
- finally {
22
- setLoading(false);
23
- }
24
- })();
25
- }, []);
26
- const handleSave = async () => {
27
- setSaving(true);
28
- try {
29
- toast.success("Instellingen opgeslagen");
30
- }
31
- catch {
32
- toast.error("Fout bij het opslaan");
33
- }
34
- finally {
35
- setSaving(false);
36
- }
37
- };
38
- return (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Package, { className: "h-5 w-5 text-primary" }), _jsx(CardTitle, { children: "Voorraad Instellingen" })] }), _jsx(CardDescription, { children: "Beheer drempelwaarden en standaarden voor de voorraad module" })] }), _jsxs(CardContent, { className: "space-y-4", children: [_jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "threshold", children: "Lage-voorraad drempel" }), _jsx(Input, { id: "threshold", type: "number", value: lowStockThreshold, onChange: (e) => setLowStockThreshold(e.target.value), placeholder: "bv. 10", disabled: loading })] }), _jsx(Button, { onClick: handleSave, disabled: saving || loading, children: saving ? "Opslaan..." : "Opslaan" })] })] }));
39
- }
@@ -1,6 +0,0 @@
1
- import type { FloridayActiveConnection } from "../../lib/floriday-client.js";
2
- export declare function ConnectionBadge({ connection, loading, }: {
3
- connection: FloridayActiveConnection | null;
4
- loading?: boolean;
5
- }): import("react/jsx-runtime").JSX.Element;
6
- //# sourceMappingURL=ConnectionBadge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConnectionBadge.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/ConnectionBadge.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAE1E,wBAAgB,eAAe,CAAC,EAC9B,UAAU,EACV,OAAO,GACR,EAAE;IACD,UAAU,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,2CAqBA"}
@@ -1,12 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Badge } from "@flowselections/core";
3
- export function ConnectionBadge({ connection, loading, }) {
4
- if (loading) {
5
- return _jsx(Badge, { variant: "secondary", children: "Floriday laden..." });
6
- }
7
- if (!connection) {
8
- return (_jsx(Badge, { variant: "destructive", children: "Geen actieve Floriday-connectie" }));
9
- }
10
- const env = connection.active_environment || connection.environment;
11
- return (_jsxs(Badge, { variant: "secondary", className: "gap-1.5", children: [_jsx("span", { className: "font-medium", children: "Floriday" }), _jsx("span", { className: "opacity-60", children: "\u00B7" }), _jsx("span", { className: "uppercase tracking-wide text-[10px]", children: env }), _jsx("span", { className: "opacity-60", children: "\u00B7" }), _jsx("span", { children: connection.organization_name || connection.label })] }));
12
- }
@@ -1,8 +0,0 @@
1
- import type { FloridayConnection } from "../../lib/floriday-client.js";
2
- export declare function ConnectionPicker({ connections, activeId, onChange, disabled, }: {
3
- connections: FloridayConnection[];
4
- activeId: string | null;
5
- onChange: (id: string) => void;
6
- disabled?: boolean;
7
- }): import("react/jsx-runtime").JSX.Element;
8
- //# sourceMappingURL=ConnectionPicker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConnectionPicker.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/ConnectionPicker.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,wBAAgB,gBAAgB,CAAC,EAC/B,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,2CAsBA"}
@@ -1,8 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@flowselections/core";
3
- export function ConnectionPicker({ connections, activeId, onChange, disabled, }) {
4
- if (connections.length === 0) {
5
- return (_jsx("div", { className: "text-sm text-muted-foreground", children: "Geen actieve Floriday-connecties" }));
6
- }
7
- return (_jsxs(Select, { value: activeId ?? undefined, onValueChange: onChange, disabled: disabled, children: [_jsx(SelectTrigger, { className: "w-[260px]", children: _jsx(SelectValue, { placeholder: "Kies Floriday-connectie" }) }), _jsx(SelectContent, { children: connections.map((c) => (_jsx(SelectItem, { value: c.id, children: c.organization_name || c.label }, c.id))) })] }));
8
- }
@@ -1,4 +0,0 @@
1
- export declare function FloridayStatusBadge({ active }: {
2
- active: boolean | undefined;
3
- }): import("react/jsx-runtime").JSX.Element;
4
- //# sourceMappingURL=FloridayStatusBadge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FloridayStatusBadge.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/FloridayStatusBadge.tsx"],"names":[],"mappings":"AAEA,wBAAgB,mBAAmB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,2CAa9E"}
@@ -1,8 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Badge } from "@flowselections/core";
3
- export function FloridayStatusBadge({ active }) {
4
- if (active) {
5
- return (_jsx(Badge, { className: "bg-emerald-500/15 text-emerald-700 border-emerald-500/30", children: "Actief op Floriday" }));
6
- }
7
- return (_jsx(Badge, { className: "bg-slate-500/15 text-slate-700 border-slate-500/30", children: "Niet actief op Floriday" }));
8
- }
@@ -1,2 +0,0 @@
1
- export declare function ModuleHealthCard(): import("react/jsx-runtime").JSX.Element;
2
- //# sourceMappingURL=ModuleHealthCard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ModuleHealthCard.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/ModuleHealthCard.tsx"],"names":[],"mappings":"AAqBA,wBAAgB,gBAAgB,4CA8D/B"}
@@ -1,40 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /**
3
- * Statuskaart in de instellingen: laat in gewone taal zien of de module in
4
- * déze omgeving volledig werkt, en biedt één knop om vastgelopen
5
- * voorraadwijzigingen weer op gang te helpen.
6
- */
7
- import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
8
- import { useServerFn } from "@tanstack/react-start";
9
- import { AlertTriangle, CheckCircle2, RotateCw, XCircle } from "lucide-react";
10
- import { toast } from "sonner";
11
- import { getModuleHealth, recoverStockQueue, } from "../../lib/module-health.functions.js";
12
- function StatusIcon({ status }) {
13
- if (status === "ok")
14
- return _jsx(CheckCircle2, { className: "mt-0.5 h-4 w-4 shrink-0 text-emerald-600" });
15
- if (status === "warn")
16
- return _jsx(AlertTriangle, { className: "mt-0.5 h-4 w-4 shrink-0 text-amber-600" });
17
- return _jsx(XCircle, { className: "mt-0.5 h-4 w-4 shrink-0 text-destructive" });
18
- }
19
- export function ModuleHealthCard() {
20
- const fetchHealth = useServerFn(getModuleHealth);
21
- const recover = useServerFn(recoverStockQueue);
22
- const queryClient = useQueryClient();
23
- const { data, isLoading } = useQuery({
24
- queryKey: ["module-health"],
25
- queryFn: () => fetchHealth({}),
26
- refetchInterval: 60000,
27
- });
28
- const mutation = useMutation({
29
- mutationFn: () => recover({}),
30
- onSuccess: (res) => {
31
- toast.success(res?.restored
32
- ? `${res.restored} voorraadwijziging${res.restored === 1 ? "" : "en"} opnieuw ingepland.`
33
- : "Er stond niets vast.");
34
- void queryClient.invalidateQueries({ queryKey: ["module-health"] });
35
- void queryClient.invalidateQueries({ queryKey: ["stock-sync-health"] });
36
- },
37
- onError: (e) => toast.error(e?.message ?? "Herstellen is niet gelukt."),
38
- });
39
- return (_jsxs("section", { className: "rounded-lg border border-border bg-card p-4", children: [_jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsxs("div", { children: [_jsx("h3", { className: "text-base font-semibold text-foreground", children: "Status van de voorraadmodule" }), _jsx("p", { className: "text-sm text-muted-foreground", children: "Controleert de koppeling, de achtergrondtaken en de synchronisatie naar Floriday." })] }), _jsxs("button", { type: "button", className: "inline-flex shrink-0 items-center rounded-md border border-border px-2.5 py-1.5 text-xs font-medium text-foreground hover:bg-muted disabled:opacity-50", disabled: mutation.isPending, onClick: () => mutation.mutate(), children: [_jsx(RotateCw, { className: `mr-1.5 h-3.5 w-3.5 ${mutation.isPending ? "animate-spin" : ""}` }), "Vastgelopen taken hervatten"] })] }), _jsxs("ul", { className: "mt-4 space-y-2.5", children: [isLoading && _jsx("li", { className: "text-sm text-muted-foreground", children: "Bezig met controleren\u2026" }), data?.checks.map((check) => (_jsxs("li", { className: "flex items-start gap-2 text-sm", children: [_jsx(StatusIcon, { status: check.status }), _jsxs("div", { className: "min-w-0", children: [_jsxs("span", { className: "font-medium text-foreground", children: [check.label, ": "] }), _jsx("span", { className: "text-muted-foreground break-words", children: check.detail }), check.hint && (_jsx("p", { className: "mt-0.5 text-xs text-muted-foreground/80 break-words", children: check.hint }))] })] }, check.id)))] })] }));
40
- }
@@ -1,10 +0,0 @@
1
- import type { TradeItem } from "../../lib/floriday-client.js";
2
- /**
3
- * Producten zijn altijd volwaardig. De dashboard-statistieken tonen alleen of ze op
4
- * Floriday actief zijn — geen concept-status meer.
5
- */
6
- export declare function VoorraadDashboard({ items, connectionId, }: {
7
- items: TradeItem[];
8
- connectionId: string | null;
9
- }): import("react/jsx-runtime").JSX.Element;
10
- //# sourceMappingURL=VoorraadDashboard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VoorraadDashboard.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/VoorraadDashboard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AA4B3D;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,YAAY,GACb,EAAE;IACD,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,2CA0DA"}
@@ -1,53 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Link } from "@tanstack/react-router";
3
- import { Card } from "@flowselections/core";
4
- import { validateDraftForPublish } from "../../lib/floriday-import-validator.js";
5
- function Stat({ label, value, tone = "default", }) {
6
- const toneCls = tone === "danger"
7
- ? "text-destructive"
8
- : tone === "warn"
9
- ? "text-amber-600"
10
- : tone === "good"
11
- ? "text-emerald-600"
12
- : "text-foreground";
13
- return (_jsxs("div", { children: [_jsx("div", { className: "text-xs text-muted-foreground", children: label }), _jsx("div", { className: `text-2xl font-semibold tabular-nums ${toneCls}`, children: value })] }));
14
- }
15
- /**
16
- * Producten zijn altijd volwaardig. De dashboard-statistieken tonen alleen of ze op
17
- * Floriday actief zijn — geen concept-status meer.
18
- */
19
- export function VoorraadDashboard({ items, connectionId, }) {
20
- const total = items.length;
21
- const active = items.filter((i) => i.floridayActive).length;
22
- const inactive = total - active;
23
- const missingFields = items.filter((i) => {
24
- if (i.floridayActive)
25
- return false;
26
- const payload = i.raw?.custom_fields?.floriday_payload ??
27
- i.raw?.floriday_payload ??
28
- i.raw?.data ??
29
- {};
30
- return !validateDraftForPublish(payload).ok;
31
- }).length;
32
- // Nieuw sinds laatste import
33
- let lastImport = null;
34
- try {
35
- if (connectionId) {
36
- const s = localStorage.getItem(`voorraad_last_import_${connectionId}`);
37
- if (s)
38
- lastImport = new Date(s);
39
- }
40
- }
41
- catch {
42
- /* ignore */
43
- }
44
- const newSinceImport = lastImport
45
- ? items.filter((i) => {
46
- const raw = i.raw;
47
- const src = raw?.source ?? raw?.data?.source;
48
- const created = raw?.created_at ? new Date(raw.created_at) : null;
49
- return src === "excel_import" && created && created >= lastImport;
50
- }).length
51
- : 0;
52
- return (_jsxs(Card, { className: "p-4", children: [_jsxs("div", { className: "flex items-start justify-between gap-3 mb-3", children: [_jsxs("div", { children: [_jsx("div", { className: "text-sm font-medium", children: "Voorraad-overzicht" }), _jsx("div", { className: "text-xs text-muted-foreground", children: "Alle producten zijn volwaardig; alleen de Floriday-activatie verschilt." })] }), _jsx(Link, { to: "/voorraad/validatie", className: "text-xs text-primary hover:underline", children: "Producten zonder Floriday-activatie \u2192" })] }), _jsxs("div", { className: "grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-4", children: [_jsx(Stat, { label: "Producten", value: total }), _jsx(Stat, { label: "Actief op Floriday", value: active, tone: "good" }), _jsx(Stat, { label: "Niet actief op Floriday", value: inactive }), _jsx(Stat, { label: "Ontbrekende Floriday-velden", value: missingFields, tone: "warn" }), _jsx(Stat, { label: "Nieuw sinds import", value: newSinceImport })] })] }));
53
- }
@@ -1,18 +0,0 @@
1
- /**
2
- * Mapping van Floriday-veldnamen naar hun waarde-bron.
3
- *
4
- * - CODE_LIST_BY_FIELD: veld met vaste enum-waardes uit /gateway/code-list.
5
- * - REF_ENTITY_BY_FIELD: veld dat verwijst naar een rij in een stamdata-cache,
6
- * te lezen via /gateway/cached-list. Waarden zijn kebab-case Floriday-
7
- * resources (GatewayEntity) — NIET de Supabase-tabelnaam.
8
- * - REF_TABLE_BY_FIELD: identieke mapping naar de Supabase-cache-tabelnaam,
9
- * uitsluitend voor directe `supabase.from(...)` reads in deze module.
10
- */
11
- import { type GatewayEntity } from "./floriday-gateway-entities.js";
12
- export declare const CODE_LIST_BY_FIELD: Record<string, string>;
13
- export declare const REF_ENTITY_BY_FIELD: Record<string, GatewayEntity>;
14
- export declare const REF_TABLE_BY_FIELD: Record<string, string>;
15
- export declare function codeListFor(field: string): string | undefined;
16
- export declare function refEntityFor(field: string): GatewayEntity | undefined;
17
- export declare function refTableFor(field: string): string | undefined;
18
- //# sourceMappingURL=floriday-field-sources.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"floriday-field-sources.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-field-sources.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEnF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAUrD,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAM7D,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMrD,CAAC;AAEF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE7D;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAErE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE7D"}
@@ -1,45 +0,0 @@
1
- /**
2
- * Mapping van Floriday-veldnamen naar hun waarde-bron.
3
- *
4
- * - CODE_LIST_BY_FIELD: veld met vaste enum-waardes uit /gateway/code-list.
5
- * - REF_ENTITY_BY_FIELD: veld dat verwijst naar een rij in een stamdata-cache,
6
- * te lezen via /gateway/cached-list. Waarden zijn kebab-case Floriday-
7
- * resources (GatewayEntity) — NIET de Supabase-tabelnaam.
8
- * - REF_TABLE_BY_FIELD: identieke mapping naar de Supabase-cache-tabelnaam,
9
- * uitsluitend voor directe `supabase.from(...)` reads in deze module.
10
- */
11
- import { GATEWAY_ENTITIES } from "./floriday-gateway-entities.js";
12
- export const CODE_LIST_BY_FIELD = {
13
- currency: "Currency",
14
- salesUnit: "SalesUnit",
15
- auctionLocation: "AuctionLocation",
16
- supplyType: "SupplyType",
17
- loadCarrierType: "SupplyLoadCarrierType",
18
- packingType: "PackingType",
19
- qualityMark: "QualityMark",
20
- country: "Country",
21
- countryOfOrigin: "Country",
22
- };
23
- export const REF_ENTITY_BY_FIELD = {
24
- packingId: GATEWAY_ENTITIES.packings,
25
- warehouseId: GATEWAY_ENTITIES.warehouses,
26
- deliveryLocationId: GATEWAY_ENTITIES.deliveryLocations,
27
- priceGroupId: GATEWAY_ENTITIES.priceGroups,
28
- collectionId: GATEWAY_ENTITIES.collections,
29
- };
30
- export const REF_TABLE_BY_FIELD = {
31
- packingId: "floriday_packings_cache",
32
- warehouseId: "floriday_warehouses_cache",
33
- deliveryLocationId: "floriday_delivery_locations_cache",
34
- priceGroupId: "floriday_price_groups_cache",
35
- collectionId: "floriday_collections_cache",
36
- };
37
- export function codeListFor(field) {
38
- return CODE_LIST_BY_FIELD[field];
39
- }
40
- export function refEntityFor(field) {
41
- return REF_ENTITY_BY_FIELD[field];
42
- }
43
- export function refTableFor(field) {
44
- return REF_TABLE_BY_FIELD[field];
45
- }
@@ -1,9 +0,0 @@
1
- /**
2
- * Bouwt een Zod-schema op basis van de fields[]-projectie van /gateway/schema.
3
- * Wordt gebruikt voor snelle client-side UX-feedback. De gateway valideert
4
- * altijd nogmaals server-side (validateEnums + Floriday zelf).
5
- */
6
- import { z, type ZodTypeAny } from "zod";
7
- import type { FloridaySchemaField } from "../hooks/useFloriday.js";
8
- export declare function buildZodFromFields(fields: FloridaySchemaField[]): z.ZodObject<Record<string, ZodTypeAny>>;
9
- //# sourceMappingURL=floriday-schema-to-zod.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"floriday-schema-to-zod.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-schema-to-zod.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAmChE,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,mBAAmB,EAAE,GAC5B,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAIzC"}
@@ -1,53 +0,0 @@
1
- /**
2
- * Bouwt een Zod-schema op basis van de fields[]-projectie van /gateway/schema.
3
- * Wordt gebruikt voor snelle client-side UX-feedback. De gateway valideert
4
- * altijd nogmaals server-side (validateEnums + Floriday zelf).
5
- */
6
- import { z } from "zod";
7
- function fieldToZod(f) {
8
- let schema;
9
- if (f.enum && f.enum.length > 0) {
10
- schema = z.enum(f.enum);
11
- }
12
- else if (f.type === "number" || f.type === "integer") {
13
- let n = z.number();
14
- if (typeof f.minimum === "number")
15
- n = n.min(f.minimum);
16
- if (typeof f.maximum === "number")
17
- n = n.max(f.maximum);
18
- if (f.type === "integer")
19
- n = n.int();
20
- schema = n;
21
- }
22
- else if (f.type === "boolean") {
23
- schema = z.boolean();
24
- }
25
- else if (f.type === "array") {
26
- schema = z.array(z.any());
27
- }
28
- else {
29
- let s = z.string();
30
- if (typeof f.minLength === "number")
31
- s = s.min(f.minLength);
32
- if (typeof f.maxLength === "number")
33
- s = s.max(f.maxLength);
34
- if (f.pattern) {
35
- try {
36
- s = s.regex(new RegExp(f.pattern));
37
- }
38
- catch {
39
- // ongeldige pattern uit schema → negeren
40
- }
41
- }
42
- schema = s;
43
- }
44
- if (!f.required)
45
- schema = schema.optional().nullable();
46
- return schema;
47
- }
48
- export function buildZodFromFields(fields) {
49
- const shape = {};
50
- for (const f of fields)
51
- shape[f.name] = fieldToZod(f);
52
- return z.object(shape);
53
- }
@@ -1,8 +0,0 @@
1
- /**
2
- * Voegt twee producten samen: alle voorraad, samenstellingen en orderregels
3
- * van `loserProductId` verhuizen naar `canonicalProductId`. Daarna wordt de
4
- * loser-rij verwijderd. Roept de `merge_products`-SQL-functie aan; audit-log
5
- * wordt automatisch bijgehouden in `product_merge_log`.
6
- */
7
- export declare function mergeProducts(canonicalProductId: string, loserProductId: string): Promise<void>;
8
- //# sourceMappingURL=merge-products.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-products.d.ts","sourceRoot":"","sources":["../../src/lib/merge-products.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,kBAAkB,EAAE,MAAM,EAC1B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CAOf"}