@flowselections/floriday-voorraad 1.0.157 → 1.0.163

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) 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/dist-lib/server-hooks/guard.d.ts +9 -0
  247. package/dist-lib/server-hooks/guard.d.ts.map +1 -1
  248. package/dist-lib/server-hooks/guard.js +4 -3
  249. package/dist-lib/server-hooks/trade-item-photo.d.ts +12 -0
  250. package/dist-lib/server-hooks/trade-item-photo.d.ts.map +1 -1
  251. package/dist-lib/server-hooks/trade-item-photo.js +13 -12
  252. package/package.json +62 -2
  253. package/sql/AGENTS.md +2 -2
  254. package/sql/floriday-voorraad-schema.sql +181 -247
  255. package/dist-lib/components/TemplatePage.d.ts +0 -2
  256. package/dist-lib/components/TemplatePage.d.ts.map +0 -1
  257. package/dist-lib/components/TemplatePage.js +0 -4
  258. package/dist-lib/components/settings/VoorraadSettingsCard.d.ts +0 -2
  259. package/dist-lib/components/settings/VoorraadSettingsCard.d.ts.map +0 -1
  260. package/dist-lib/components/settings/VoorraadSettingsCard.js +0 -39
  261. package/dist-lib/components/voorraad/ConnectionBadge.d.ts +0 -6
  262. package/dist-lib/components/voorraad/ConnectionBadge.d.ts.map +0 -1
  263. package/dist-lib/components/voorraad/ConnectionBadge.js +0 -12
  264. package/dist-lib/components/voorraad/ConnectionPicker.d.ts +0 -8
  265. package/dist-lib/components/voorraad/ConnectionPicker.d.ts.map +0 -1
  266. package/dist-lib/components/voorraad/ConnectionPicker.js +0 -8
  267. package/dist-lib/components/voorraad/FloridayStatusBadge.d.ts +0 -4
  268. package/dist-lib/components/voorraad/FloridayStatusBadge.d.ts.map +0 -1
  269. package/dist-lib/components/voorraad/FloridayStatusBadge.js +0 -8
  270. package/dist-lib/components/voorraad/ModuleHealthCard.d.ts +0 -2
  271. package/dist-lib/components/voorraad/ModuleHealthCard.d.ts.map +0 -1
  272. package/dist-lib/components/voorraad/ModuleHealthCard.js +0 -40
  273. package/dist-lib/components/voorraad/VoorraadDashboard.d.ts +0 -10
  274. package/dist-lib/components/voorraad/VoorraadDashboard.d.ts.map +0 -1
  275. package/dist-lib/components/voorraad/VoorraadDashboard.js +0 -53
  276. package/dist-lib/lib/floriday-field-sources.d.ts +0 -18
  277. package/dist-lib/lib/floriday-field-sources.d.ts.map +0 -1
  278. package/dist-lib/lib/floriday-field-sources.js +0 -45
  279. package/dist-lib/lib/floriday-schema-to-zod.d.ts +0 -9
  280. package/dist-lib/lib/floriday-schema-to-zod.d.ts.map +0 -1
  281. package/dist-lib/lib/floriday-schema-to-zod.js +0 -53
  282. package/dist-lib/lib/merge-products.d.ts +0 -8
  283. package/dist-lib/lib/merge-products.d.ts.map +0 -1
  284. package/dist-lib/lib/merge-products.js +0 -17
  285. package/dist-lib/lib/module-health.functions.d.ts +0 -53497
  286. package/dist-lib/lib/module-health.functions.d.ts.map +0 -1
  287. package/dist-lib/lib/module-health.functions.js +0 -261
  288. package/dist-lib/lib/validationSchemas.d.ts +0 -15
  289. package/dist-lib/lib/validationSchemas.d.ts.map +0 -1
  290. package/dist-lib/lib/validationSchemas.js +0 -25
@@ -1,5 +1,5 @@
1
- -- @flowselections/floriday-voorraad 1.0.155 – volledig schema (idempotent, geen gegevens).
2
- -- Laatste migratie: 20261105084822_83a0e67a-a170-423b-a118-b20bb20eaa4a.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.
@@ -995,10 +995,6 @@ END $function$
995
995
  ;
996
996
  REVOKE ALL ON FUNCTION apply_stock_consumption(text,numeric,uuid,uuid,text,text) FROM PUBLIC;
997
997
  REVOKE ALL ON FUNCTION apply_stock_consumption(text,numeric,uuid,uuid,text,text) FROM anon;
998
- REVOKE EXECUTE ON FUNCTION apply_stock_consumption(text,numeric,uuid,uuid,text,text) FROM PUBLIC;
999
- GRANT EXECUTE ON FUNCTION apply_stock_consumption(text,numeric,uuid,uuid,text,text) TO authenticated;
1000
- GRANT EXECUTE ON FUNCTION apply_stock_consumption(text,numeric,uuid,uuid,text,text) TO service_role;
1001
- REVOKE EXECUTE ON FUNCTION apply_stock_consumption(text,numeric,uuid,uuid,text,text) FROM anon;
1002
998
  GRANT EXECUTE ON FUNCTION apply_stock_consumption(text,numeric,uuid,uuid,text,text) TO authenticated;
1003
999
  GRANT EXECUTE ON FUNCTION apply_stock_consumption(text,numeric,uuid,uuid,text,text) TO service_role;
1004
1000
  CREATE OR REPLACE FUNCTION public.apply_stock_reservation(p_trade_item_key text, p_qty numeric, p_order_id uuid, p_order_item_id uuid, p_source text, p_reason text)
@@ -1039,10 +1035,6 @@ END $function$
1039
1035
  ;
1040
1036
  REVOKE ALL ON FUNCTION apply_stock_reservation(text,numeric,uuid,uuid,text,text) FROM PUBLIC;
1041
1037
  REVOKE ALL ON FUNCTION apply_stock_reservation(text,numeric,uuid,uuid,text,text) FROM anon;
1042
- REVOKE EXECUTE ON FUNCTION apply_stock_reservation(text,numeric,uuid,uuid,text,text) FROM PUBLIC;
1043
- GRANT EXECUTE ON FUNCTION apply_stock_reservation(text,numeric,uuid,uuid,text,text) TO authenticated;
1044
- GRANT EXECUTE ON FUNCTION apply_stock_reservation(text,numeric,uuid,uuid,text,text) TO service_role;
1045
- REVOKE EXECUTE ON FUNCTION apply_stock_reservation(text,numeric,uuid,uuid,text,text) FROM anon;
1046
1038
  GRANT EXECUTE ON FUNCTION apply_stock_reservation(text,numeric,uuid,uuid,text,text) TO authenticated;
1047
1039
  GRANT EXECUTE ON FUNCTION apply_stock_reservation(text,numeric,uuid,uuid,text,text) TO service_role;
1048
1040
  CREATE OR REPLACE FUNCTION public.autolink_product_to_floriday(p_product_id uuid)
@@ -1099,10 +1091,6 @@ $function$
1099
1091
  ;
1100
1092
  REVOKE ALL ON FUNCTION autolink_product_to_floriday(uuid) FROM PUBLIC;
1101
1093
  REVOKE ALL ON FUNCTION autolink_product_to_floriday(uuid) FROM anon;
1102
- REVOKE EXECUTE ON FUNCTION autolink_product_to_floriday(uuid) FROM PUBLIC;
1103
- GRANT EXECUTE ON FUNCTION autolink_product_to_floriday(uuid) TO authenticated;
1104
- GRANT EXECUTE ON FUNCTION autolink_product_to_floriday(uuid) TO service_role;
1105
- REVOKE EXECUTE ON FUNCTION autolink_product_to_floriday(uuid) FROM anon;
1106
1094
  GRANT EXECUTE ON FUNCTION autolink_product_to_floriday(uuid) TO authenticated;
1107
1095
  GRANT EXECUTE ON FUNCTION autolink_product_to_floriday(uuid) TO service_role;
1108
1096
  CREATE OR REPLACE FUNCTION public.backfill_open_order_reservations()
@@ -1136,10 +1124,6 @@ END $function$
1136
1124
  ;
1137
1125
  REVOKE ALL ON FUNCTION backfill_open_order_reservations() FROM PUBLIC;
1138
1126
  REVOKE ALL ON FUNCTION backfill_open_order_reservations() FROM anon;
1139
- REVOKE EXECUTE ON FUNCTION backfill_open_order_reservations() FROM PUBLIC;
1140
- GRANT EXECUTE ON FUNCTION backfill_open_order_reservations() TO authenticated;
1141
- GRANT EXECUTE ON FUNCTION backfill_open_order_reservations() TO service_role;
1142
- REVOKE EXECUTE ON FUNCTION backfill_open_order_reservations() FROM anon;
1143
1127
  GRANT EXECUTE ON FUNCTION backfill_open_order_reservations() TO authenticated;
1144
1128
  GRANT EXECUTE ON FUNCTION backfill_open_order_reservations() TO service_role;
1145
1129
  CREATE OR REPLACE FUNCTION public.calculate_floriday_desired_stock(p_connection_id uuid, p_product_id uuid)
@@ -1558,29 +1542,23 @@ $function$
1558
1542
  ;
1559
1543
  REVOKE ALL ON FUNCTION claim_floriday_stock_queue(integer,text) FROM PUBLIC;
1560
1544
  REVOKE ALL ON FUNCTION claim_floriday_stock_queue(integer,text) FROM anon;
1561
- REVOKE EXECUTE ON FUNCTION claim_floriday_stock_queue(integer,text) FROM PUBLIC;
1562
- GRANT EXECUTE ON FUNCTION claim_floriday_stock_queue(integer,text) TO authenticated;
1563
- GRANT EXECUTE ON FUNCTION claim_floriday_stock_queue(integer,text) TO service_role;
1564
- REVOKE EXECUTE ON FUNCTION claim_floriday_stock_queue(integer,text) FROM anon;
1565
1545
  GRANT EXECUTE ON FUNCTION claim_floriday_stock_queue(integer,text) TO authenticated;
1566
1546
  GRANT EXECUTE ON FUNCTION claim_floriday_stock_queue(integer,text) TO service_role;
1567
1547
  CREATE OR REPLACE FUNCTION public.cleanup_floriday_stock_queue()
1568
1548
  RETURNS void
1569
- LANGUAGE sql
1549
+ LANGUAGE plpgsql
1570
1550
  SECURITY DEFINER
1571
1551
  SET search_path TO 'public'
1572
1552
  AS $function$
1553
+ BEGIN
1554
+ PERFORM public.voorraad_vereis('server', 'cleanup_floriday_stock_queue');
1573
1555
  DELETE FROM public.floriday_continuous_stock_queue
1574
1556
  WHERE status IN ('sent', 'superseded')
1575
1557
  AND updated_at < now() - interval '30 days';
1576
- $function$
1558
+ END $function$
1577
1559
  ;
1578
1560
  REVOKE ALL ON FUNCTION cleanup_floriday_stock_queue() FROM PUBLIC;
1579
1561
  REVOKE ALL ON FUNCTION cleanup_floriday_stock_queue() FROM anon;
1580
- REVOKE EXECUTE ON FUNCTION cleanup_floriday_stock_queue() FROM PUBLIC;
1581
- GRANT EXECUTE ON FUNCTION cleanup_floriday_stock_queue() TO authenticated;
1582
- GRANT EXECUTE ON FUNCTION cleanup_floriday_stock_queue() TO service_role;
1583
- REVOKE EXECUTE ON FUNCTION cleanup_floriday_stock_queue() FROM anon;
1584
1562
  GRANT EXECUTE ON FUNCTION cleanup_floriday_stock_queue() TO authenticated;
1585
1563
  GRANT EXECUTE ON FUNCTION cleanup_floriday_stock_queue() TO service_role;
1586
1564
  CREATE OR REPLACE FUNCTION public.cleanup_voorraad_module_history()
@@ -1783,10 +1761,6 @@ $function$
1783
1761
  ;
1784
1762
  REVOKE ALL ON FUNCTION complete_floriday_stock_queue(uuid,boolean,text,boolean,text) FROM PUBLIC;
1785
1763
  REVOKE ALL ON FUNCTION complete_floriday_stock_queue(uuid,boolean,text,boolean,text) FROM anon;
1786
- REVOKE EXECUTE ON FUNCTION complete_floriday_stock_queue(uuid,boolean,text,boolean,text) FROM PUBLIC;
1787
- GRANT EXECUTE ON FUNCTION complete_floriday_stock_queue(uuid,boolean,text,boolean,text) TO authenticated;
1788
- GRANT EXECUTE ON FUNCTION complete_floriday_stock_queue(uuid,boolean,text,boolean,text) TO service_role;
1789
- REVOKE EXECUTE ON FUNCTION complete_floriday_stock_queue(uuid,boolean,text,boolean,text) FROM anon;
1790
1764
  GRANT EXECUTE ON FUNCTION complete_floriday_stock_queue(uuid,boolean,text,boolean,text) TO authenticated;
1791
1765
  GRANT EXECUTE ON FUNCTION complete_floriday_stock_queue(uuid,boolean,text,boolean,text) TO service_role;
1792
1766
  CREATE OR REPLACE FUNCTION public.complete_floriday_stock_queue_outcome(p_id uuid, p_outcome text, p_availability_sent boolean DEFAULT false, p_quantity_sent boolean DEFAULT false, p_error text DEFAULT NULL::text, p_attempt_id text DEFAULT NULL::text, p_permanent boolean DEFAULT false)
@@ -2615,7 +2589,6 @@ $function$
2615
2589
  ;
2616
2590
  REVOKE ALL ON FUNCTION ensure_trade_item_stock_row(text) FROM PUBLIC;
2617
2591
  REVOKE ALL ON FUNCTION ensure_trade_item_stock_row(text) FROM anon;
2618
- REVOKE EXECUTE ON FUNCTION ensure_trade_item_stock_row(text) FROM anon;
2619
2592
  GRANT EXECUTE ON FUNCTION ensure_trade_item_stock_row(text) TO authenticated;
2620
2593
  GRANT EXECUTE ON FUNCTION ensure_trade_item_stock_row(text) TO service_role;
2621
2594
  CREATE OR REPLACE FUNCTION public.ensure_trade_item_stock_row_key(p_key text)
@@ -2822,10 +2795,6 @@ END $function$
2822
2795
  ;
2823
2796
  REVOKE ALL ON FUNCTION find_trade_item_key(text,text,uuid) FROM PUBLIC;
2824
2797
  REVOKE ALL ON FUNCTION find_trade_item_key(text,text,uuid) FROM anon;
2825
- REVOKE EXECUTE ON FUNCTION find_trade_item_key(text,text,uuid) FROM PUBLIC;
2826
- GRANT EXECUTE ON FUNCTION find_trade_item_key(text,text,uuid) TO authenticated;
2827
- GRANT EXECUTE ON FUNCTION find_trade_item_key(text,text,uuid) TO service_role;
2828
- REVOKE EXECUTE ON FUNCTION find_trade_item_key(text,text,uuid) FROM anon;
2829
2798
  GRANT EXECUTE ON FUNCTION find_trade_item_key(text,text,uuid) TO authenticated;
2830
2799
  GRANT EXECUTE ON FUNCTION find_trade_item_key(text,text,uuid) TO service_role;
2831
2800
  CREATE OR REPLACE FUNCTION public.floriday_adopt_connection(p_old uuid, p_new uuid)
@@ -2879,7 +2848,6 @@ $function$
2879
2848
  ;
2880
2849
  REVOKE ALL ON FUNCTION floriday_adopt_connection(uuid,uuid) FROM PUBLIC;
2881
2850
  REVOKE ALL ON FUNCTION floriday_adopt_connection(uuid,uuid) FROM anon;
2882
- REVOKE EXECUTE ON FUNCTION floriday_adopt_connection(uuid,uuid) FROM anon;
2883
2851
  GRANT EXECUTE ON FUNCTION floriday_adopt_connection(uuid,uuid) TO authenticated;
2884
2852
  GRANT EXECUTE ON FUNCTION floriday_adopt_connection(uuid,uuid) TO service_role;
2885
2853
  CREATE OR REPLACE FUNCTION public.floriday_autoheal_connections()
@@ -2926,7 +2894,6 @@ $function$
2926
2894
  ;
2927
2895
  REVOKE ALL ON FUNCTION floriday_autoheal_connections() FROM PUBLIC;
2928
2896
  REVOKE ALL ON FUNCTION floriday_autoheal_connections() FROM anon;
2929
- REVOKE EXECUTE ON FUNCTION floriday_autoheal_connections() FROM anon;
2930
2897
  GRANT EXECUTE ON FUNCTION floriday_autoheal_connections() TO authenticated;
2931
2898
  GRANT EXECUTE ON FUNCTION floriday_autoheal_connections() TO service_role;
2932
2899
  CREATE OR REPLACE FUNCTION public.floriday_capture_stock_snapshot()
@@ -3876,7 +3843,6 @@ END; $function$
3876
3843
  ;
3877
3844
  REVOKE ALL ON FUNCTION floriday_relink_products(uuid) FROM PUBLIC;
3878
3845
  REVOKE ALL ON FUNCTION floriday_relink_products(uuid) FROM anon;
3879
- REVOKE EXECUTE ON FUNCTION floriday_relink_products(uuid) FROM anon;
3880
3846
  GRANT EXECUTE ON FUNCTION floriday_relink_products(uuid) TO authenticated;
3881
3847
  GRANT EXECUTE ON FUNCTION floriday_relink_products(uuid) TO service_role;
3882
3848
  CREATE OR REPLACE FUNCTION public.floriday_requeue_dead_letters(p_connection_id uuid DEFAULT NULL::uuid)
@@ -4274,86 +4240,73 @@ REVOKE ALL ON FUNCTION fust_types_duplicate_guard() FROM anon;
4274
4240
  GRANT EXECUTE ON FUNCTION fust_types_duplicate_guard() TO service_role;
4275
4241
  CREATE OR REPLACE FUNCTION public.get_active_floriday_context()
4276
4242
  RETURNS TABLE(connection_id uuid, user_id uuid)
4277
- LANGUAGE sql
4243
+ LANGUAGE plpgsql
4278
4244
  STABLE SECURITY DEFINER
4279
4245
  SET search_path TO 'public'
4280
4246
  AS $function$
4281
- SELECT ts.connection_id, ts.user_id
4247
+ BEGIN
4248
+ PERFORM public.voorraad_vereis('ingelogd', 'get_active_floriday_context');
4249
+ RETURN QUERY SELECT ts.connection_id, ts.user_id
4282
4250
  FROM public.trade_item_stock ts
4283
4251
  JOIN public.floriday_connections fc ON fc.id = ts.connection_id AND fc.is_active
4284
4252
  ORDER BY ts.created_at ASC
4285
4253
  LIMIT 1;
4286
- $function$
4254
+ END $function$
4287
4255
  ;
4288
4256
  REVOKE ALL ON FUNCTION get_active_floriday_context() FROM PUBLIC;
4289
4257
  REVOKE ALL ON FUNCTION get_active_floriday_context() FROM anon;
4290
- REVOKE EXECUTE ON FUNCTION get_active_floriday_context() FROM PUBLIC;
4291
- GRANT EXECUTE ON FUNCTION get_active_floriday_context() TO authenticated;
4292
- GRANT EXECUTE ON FUNCTION get_active_floriday_context() TO service_role;
4293
- REVOKE EXECUTE ON FUNCTION get_active_floriday_context() FROM anon;
4294
4258
  GRANT EXECUTE ON FUNCTION get_active_floriday_context() TO authenticated;
4295
4259
  GRANT EXECUTE ON FUNCTION get_active_floriday_context() TO service_role;
4296
4260
  CREATE OR REPLACE FUNCTION public.get_group_allocation_keys(p_product_id uuid)
4297
4261
  RETURNS TABLE(k text, ord integer)
4298
- LANGUAGE sql
4262
+ LANGUAGE plpgsql
4299
4263
  STABLE SECURITY DEFINER
4300
4264
  SET search_path TO 'public'
4301
- AS $function$
4302
- WITH grp AS (
4303
- SELECT pg.id AS group_id
4304
- FROM public.product_groups pg
4305
- WHERE pg.is_active = true
4306
- AND (pg.head_product_id = p_product_id OR pg.id = p_product_id)
4307
- ORDER BY pg.created_at ASC
4308
- LIMIT 1
4309
- )
4310
- SELECT public.resolve_group_member_stock_key(pgi.trade_item_id) AS k,
4311
- pgi.sort_order::int AS ord
4312
- FROM public.product_group_items pgi
4313
- JOIN grp ON grp.group_id = pgi.product_group_id
4314
- WHERE public.resolve_group_member_stock_key(pgi.trade_item_id) IS NOT NULL
4315
- ORDER BY pgi.sort_order ASC NULLS LAST, pgi.created_at ASC;
4316
- $function$
4265
+ AS $function$
4266
+ BEGIN
4267
+ PERFORM public.voorraad_vereis('ingelogd', 'get_group_allocation_keys');
4268
+ RETURN QUERY
4269
+ WITH grp AS (
4270
+ SELECT pg.id AS group_id FROM public.product_groups pg
4271
+ WHERE pg.is_active = true AND (pg.head_product_id = p_product_id OR pg.id = p_product_id)
4272
+ ORDER BY pg.created_at ASC LIMIT 1
4273
+ )
4274
+ SELECT public.resolve_group_member_stock_key(pgi.trade_item_id), pgi.sort_order::int
4275
+ FROM public.product_group_items pgi
4276
+ JOIN grp ON grp.group_id = pgi.product_group_id
4277
+ WHERE public.resolve_group_member_stock_key(pgi.trade_item_id) IS NOT NULL
4278
+ ORDER BY pgi.sort_order ASC NULLS LAST, pgi.created_at ASC;
4279
+ END $function$
4317
4280
  ;
4318
4281
  REVOKE ALL ON FUNCTION get_group_allocation_keys(uuid) FROM PUBLIC;
4319
4282
  REVOKE ALL ON FUNCTION get_group_allocation_keys(uuid) FROM anon;
4320
- REVOKE EXECUTE ON FUNCTION get_group_allocation_keys(uuid) FROM PUBLIC;
4321
- GRANT EXECUTE ON FUNCTION get_group_allocation_keys(uuid) TO authenticated;
4322
- GRANT EXECUTE ON FUNCTION get_group_allocation_keys(uuid) TO service_role;
4323
- REVOKE EXECUTE ON FUNCTION get_group_allocation_keys(uuid) FROM anon;
4324
4283
  GRANT EXECUTE ON FUNCTION get_group_allocation_keys(uuid) TO authenticated;
4325
4284
  GRANT EXECUTE ON FUNCTION get_group_allocation_keys(uuid) TO service_role;
4326
4285
  CREATE OR REPLACE FUNCTION public.get_group_head_key(p_group_id uuid)
4327
4286
  RETURNS text
4328
- LANGUAGE sql
4287
+ LANGUAGE plpgsql
4329
4288
  STABLE SECURITY DEFINER
4330
4289
  SET search_path TO 'public'
4331
- AS $function$
4332
- WITH top_member AS (
4333
- SELECT public.resolve_group_member_stock_key(pgi.trade_item_id) AS k
4334
- FROM public.product_group_items pgi
4335
- WHERE pgi.product_group_id = p_group_id
4336
- ORDER BY pgi.sort_order ASC NULLS LAST, pgi.created_at ASC
4337
- LIMIT 1
4338
- ), g AS (
4339
- SELECT head_product_id, head_trade_item_floriday_id
4340
- FROM public.product_groups
4341
- WHERE id = p_group_id AND is_active = true
4342
- LIMIT 1
4343
- )
4344
- SELECT COALESCE(
4345
- (SELECT k FROM top_member WHERE k IS NOT NULL AND k <> ''),
4346
- (SELECT head_trade_item_floriday_id FROM g WHERE head_trade_item_floriday_id IS NOT NULL AND head_trade_item_floriday_id <> ''),
4347
- (SELECT 'product:' || head_product_id::text FROM g WHERE head_product_id IS NOT NULL)
4348
- );
4349
- $function$
4290
+ AS $function$
4291
+ BEGIN
4292
+ PERFORM public.voorraad_vereis('ingelogd', 'get_group_head_key');
4293
+ RETURN (
4294
+ WITH top_member AS (
4295
+ SELECT public.resolve_group_member_stock_key(pgi.trade_item_id) AS k
4296
+ FROM public.product_group_items pgi WHERE pgi.product_group_id = p_group_id
4297
+ ORDER BY pgi.sort_order ASC NULLS LAST, pgi.created_at ASC LIMIT 1
4298
+ ), g AS (
4299
+ SELECT head_product_id, head_trade_item_floriday_id FROM public.product_groups
4300
+ WHERE id = p_group_id AND is_active = true LIMIT 1
4301
+ )
4302
+ SELECT COALESCE(
4303
+ (SELECT top_member.k FROM top_member WHERE top_member.k IS NOT NULL AND top_member.k <> ''),
4304
+ (SELECT head_trade_item_floriday_id FROM g WHERE head_trade_item_floriday_id IS NOT NULL AND head_trade_item_floriday_id <> ''),
4305
+ (SELECT 'product:' || head_product_id::text FROM g WHERE head_product_id IS NOT NULL)));
4306
+ END $function$
4350
4307
  ;
4351
4308
  REVOKE ALL ON FUNCTION get_group_head_key(uuid) FROM PUBLIC;
4352
4309
  REVOKE ALL ON FUNCTION get_group_head_key(uuid) FROM anon;
4353
- REVOKE EXECUTE ON FUNCTION get_group_head_key(uuid) FROM PUBLIC;
4354
- GRANT EXECUTE ON FUNCTION get_group_head_key(uuid) TO authenticated;
4355
- GRANT EXECUTE ON FUNCTION get_group_head_key(uuid) TO service_role;
4356
- REVOKE EXECUTE ON FUNCTION get_group_head_key(uuid) FROM anon;
4357
4310
  GRANT EXECUTE ON FUNCTION get_group_head_key(uuid) TO authenticated;
4358
4311
  GRANT EXECUTE ON FUNCTION get_group_head_key(uuid) TO service_role;
4359
4312
  CREATE OR REPLACE FUNCTION public.get_product_stock(p_product_id uuid)
@@ -4536,10 +4489,6 @@ $function$
4536
4489
  ;
4537
4490
  REVOKE ALL ON FUNCTION merge_products(uuid,uuid) FROM PUBLIC;
4538
4491
  REVOKE ALL ON FUNCTION merge_products(uuid,uuid) FROM anon;
4539
- REVOKE EXECUTE ON FUNCTION merge_products(uuid,uuid) FROM PUBLIC;
4540
- GRANT EXECUTE ON FUNCTION merge_products(uuid,uuid) TO authenticated;
4541
- GRANT EXECUTE ON FUNCTION merge_products(uuid,uuid) TO service_role;
4542
- REVOKE EXECUTE ON FUNCTION merge_products(uuid,uuid) FROM anon;
4543
4492
  GRANT EXECUTE ON FUNCTION merge_products(uuid,uuid) TO authenticated;
4544
4493
  GRANT EXECUTE ON FUNCTION merge_products(uuid,uuid) TO service_role;
4545
4494
  CREATE OR REPLACE FUNCTION public.normalize_order_source(p_src text)
@@ -5101,10 +5050,6 @@ END $function$
5101
5050
  ;
5102
5051
  REVOKE ALL ON FUNCTION promote_trade_item_key(text,text) FROM PUBLIC;
5103
5052
  REVOKE ALL ON FUNCTION promote_trade_item_key(text,text) FROM anon;
5104
- REVOKE EXECUTE ON FUNCTION promote_trade_item_key(text,text) FROM PUBLIC;
5105
- GRANT EXECUTE ON FUNCTION promote_trade_item_key(text,text) TO authenticated;
5106
- GRANT EXECUTE ON FUNCTION promote_trade_item_key(text,text) TO service_role;
5107
- REVOKE EXECUTE ON FUNCTION promote_trade_item_key(text,text) FROM anon;
5108
5053
  GRANT EXECUTE ON FUNCTION promote_trade_item_key(text,text) TO authenticated;
5109
5054
  GRANT EXECUTE ON FUNCTION promote_trade_item_key(text,text) TO service_role;
5110
5055
  CREATE OR REPLACE FUNCTION public.recompute_all_reserved_stock()
@@ -5313,9 +5258,6 @@ $function$
5313
5258
  ;
5314
5259
  REVOKE ALL ON FUNCTION recompute_all_reserved_stock() FROM PUBLIC;
5315
5260
  REVOKE ALL ON FUNCTION recompute_all_reserved_stock() FROM anon;
5316
- REVOKE EXECUTE ON FUNCTION recompute_all_reserved_stock() FROM PUBLIC;
5317
- GRANT EXECUTE ON FUNCTION recompute_all_reserved_stock() TO authenticated;
5318
- GRANT EXECUTE ON FUNCTION recompute_all_reserved_stock() TO service_role;
5319
5261
  REVOKE EXECUTE ON FUNCTION recompute_all_reserved_stock() FROM anon;
5320
5262
  GRANT EXECUTE ON FUNCTION recompute_all_reserved_stock() TO authenticated;
5321
5263
  GRANT EXECUTE ON FUNCTION recompute_all_reserved_stock() TO service_role;
@@ -5372,10 +5314,6 @@ $function$
5372
5314
  ;
5373
5315
  REVOKE ALL ON FUNCTION recompute_order_status(uuid) FROM PUBLIC;
5374
5316
  REVOKE ALL ON FUNCTION recompute_order_status(uuid) FROM anon;
5375
- REVOKE EXECUTE ON FUNCTION recompute_order_status(uuid) FROM PUBLIC;
5376
- GRANT EXECUTE ON FUNCTION recompute_order_status(uuid) TO authenticated;
5377
- GRANT EXECUTE ON FUNCTION recompute_order_status(uuid) TO service_role;
5378
- REVOKE EXECUTE ON FUNCTION recompute_order_status(uuid) FROM anon;
5379
5317
  GRANT EXECUTE ON FUNCTION recompute_order_status(uuid) TO authenticated;
5380
5318
  GRANT EXECUTE ON FUNCTION recompute_order_status(uuid) TO service_role;
5381
5319
  CREATE OR REPLACE FUNCTION public.recompute_reserved_for_order(p_order_id uuid)
@@ -5398,10 +5336,6 @@ END $function$
5398
5336
  ;
5399
5337
  REVOKE ALL ON FUNCTION recompute_reserved_for_order(uuid) FROM PUBLIC;
5400
5338
  REVOKE ALL ON FUNCTION recompute_reserved_for_order(uuid) FROM anon;
5401
- REVOKE EXECUTE ON FUNCTION recompute_reserved_for_order(uuid) FROM PUBLIC;
5402
- GRANT EXECUTE ON FUNCTION recompute_reserved_for_order(uuid) TO authenticated;
5403
- GRANT EXECUTE ON FUNCTION recompute_reserved_for_order(uuid) TO service_role;
5404
- REVOKE EXECUTE ON FUNCTION recompute_reserved_for_order(uuid) FROM anon;
5405
5339
  GRANT EXECUTE ON FUNCTION recompute_reserved_for_order(uuid) TO authenticated;
5406
5340
  GRANT EXECUTE ON FUNCTION recompute_reserved_for_order(uuid) TO service_role;
5407
5341
  CREATE OR REPLACE FUNCTION public.recompute_reserved_stock(p_trade_item_key text)
@@ -5507,9 +5441,6 @@ $function$
5507
5441
  ;
5508
5442
  REVOKE ALL ON FUNCTION recompute_reserved_stock(text) FROM PUBLIC;
5509
5443
  REVOKE ALL ON FUNCTION recompute_reserved_stock(text) FROM anon;
5510
- REVOKE EXECUTE ON FUNCTION recompute_reserved_stock(text) FROM PUBLIC;
5511
- GRANT EXECUTE ON FUNCTION recompute_reserved_stock(text) TO authenticated;
5512
- GRANT EXECUTE ON FUNCTION recompute_reserved_stock(text) TO service_role;
5513
5444
  REVOKE EXECUTE ON FUNCTION recompute_reserved_stock(text) FROM anon;
5514
5445
  GRANT EXECUTE ON FUNCTION recompute_reserved_stock(text) TO authenticated;
5515
5446
  GRANT EXECUTE ON FUNCTION recompute_reserved_stock(text) TO service_role;
@@ -5647,57 +5578,36 @@ $function$
5647
5578
  ;
5648
5579
  REVOKE ALL ON FUNCTION resolve_group_allocation(uuid,integer) FROM PUBLIC;
5649
5580
  REVOKE ALL ON FUNCTION resolve_group_allocation(uuid,integer) FROM anon;
5650
- REVOKE EXECUTE ON FUNCTION resolve_group_allocation(uuid,integer) FROM PUBLIC;
5651
- GRANT EXECUTE ON FUNCTION resolve_group_allocation(uuid,integer) TO authenticated;
5652
- GRANT EXECUTE ON FUNCTION resolve_group_allocation(uuid,integer) TO service_role;
5653
- REVOKE EXECUTE ON FUNCTION resolve_group_allocation(uuid,integer) FROM anon;
5654
5581
  GRANT EXECUTE ON FUNCTION resolve_group_allocation(uuid,integer) TO authenticated;
5655
5582
  GRANT EXECUTE ON FUNCTION resolve_group_allocation(uuid,integer) TO service_role;
5656
5583
  CREATE OR REPLACE FUNCTION public.resolve_group_member_stock_key(p_trade_item_id text)
5657
5584
  RETURNS text
5658
- LANGUAGE sql
5585
+ LANGUAGE plpgsql
5659
5586
  STABLE SECURITY DEFINER
5660
5587
  SET search_path TO 'public'
5661
5588
  AS $function$
5662
- SELECT CASE
5589
+ BEGIN
5590
+ PERFORM public.voorraad_vereis('ingelogd', 'resolve_group_member_stock_key');
5591
+ RETURN (SELECT CASE
5663
5592
  WHEN p_trade_item_id IS NULL OR btrim(p_trade_item_id) = '' THEN NULL
5664
5593
  WHEN p_trade_item_id LIKE 'draft:%' OR p_trade_item_id LIKE 'group:%' THEN p_trade_item_id
5665
5594
  WHEN p_trade_item_id LIKE 'product:%' THEN COALESCE(
5666
- (
5667
- SELECT COALESCE(
5668
- NULLIF(btrim(COALESCE(p.floriday_trade_item_id, '')), ''),
5669
- NULLIF(btrim(COALESCE(p.trade_item_key, '')), ''),
5670
- p.id::text
5671
- )
5672
- FROM public.products p
5673
- WHERE p.id::text = substring(p_trade_item_id from 9)
5674
- LIMIT 1
5675
- ),
5676
- p_trade_item_id
5677
- )
5595
+ (SELECT COALESCE(NULLIF(btrim(COALESCE(p.floriday_trade_item_id, '')), ''),
5596
+ NULLIF(btrim(COALESCE(p.trade_item_key, '')), ''), p.id::text)
5597
+ FROM public.products p WHERE p.id::text = substring(p_trade_item_id from 9) LIMIT 1),
5598
+ p_trade_item_id)
5678
5599
  WHEN EXISTS (SELECT 1 FROM public.products p WHERE p.id::text = p_trade_item_id) THEN (
5679
- SELECT COALESCE(
5680
- NULLIF(btrim(COALESCE(p.floriday_trade_item_id, '')), ''),
5681
- NULLIF(btrim(COALESCE(p.trade_item_key, '')), ''),
5682
- p.id::text
5683
- )
5684
- FROM public.products p
5685
- WHERE p.id::text = p_trade_item_id
5686
- LIMIT 1
5687
- )
5688
- WHEN EXISTS (
5689
- SELECT 1 FROM public.trade_item_drafts d WHERE d.id::text = p_trade_item_id
5690
- ) THEN 'draft:' || p_trade_item_id
5691
- WHEN EXISTS (
5692
- SELECT 1 FROM public.trade_item_stock s WHERE s.trade_item_key = 'draft:' || p_trade_item_id
5693
- ) THEN 'draft:' || p_trade_item_id
5600
+ SELECT COALESCE(NULLIF(btrim(COALESCE(p.floriday_trade_item_id, '')), ''),
5601
+ NULLIF(btrim(COALESCE(p.trade_item_key, '')), ''), p.id::text)
5602
+ FROM public.products p WHERE p.id::text = p_trade_item_id LIMIT 1)
5603
+ WHEN EXISTS (SELECT 1 FROM public.trade_item_drafts d WHERE d.id::text = p_trade_item_id) THEN 'draft:' || p_trade_item_id
5604
+ WHEN EXISTS (SELECT 1 FROM public.trade_item_stock s WHERE s.trade_item_key = 'draft:' || p_trade_item_id) THEN 'draft:' || p_trade_item_id
5694
5605
  ELSE p_trade_item_id
5695
- END;
5696
- $function$
5606
+ END);
5607
+ END $function$
5697
5608
  ;
5698
5609
  REVOKE ALL ON FUNCTION resolve_group_member_stock_key(text) FROM PUBLIC;
5699
5610
  REVOKE ALL ON FUNCTION resolve_group_member_stock_key(text) FROM anon;
5700
- REVOKE EXECUTE ON FUNCTION resolve_group_member_stock_key(text) FROM anon;
5701
5611
  GRANT EXECUTE ON FUNCTION resolve_group_member_stock_key(text) TO authenticated;
5702
5612
  GRANT EXECUTE ON FUNCTION resolve_group_member_stock_key(text) TO service_role;
5703
5613
  CREATE OR REPLACE FUNCTION public.resolve_product_id_for_item(p_product_name text)
@@ -5718,37 +5628,25 @@ END $function$
5718
5628
  ;
5719
5629
  REVOKE ALL ON FUNCTION resolve_product_id_for_item(text) FROM PUBLIC;
5720
5630
  REVOKE ALL ON FUNCTION resolve_product_id_for_item(text) FROM anon;
5721
- REVOKE EXECUTE ON FUNCTION resolve_product_id_for_item(text) FROM PUBLIC;
5722
- GRANT EXECUTE ON FUNCTION resolve_product_id_for_item(text) TO authenticated;
5723
- GRANT EXECUTE ON FUNCTION resolve_product_id_for_item(text) TO service_role;
5724
- REVOKE EXECUTE ON FUNCTION resolve_product_id_for_item(text) FROM anon;
5725
5631
  GRANT EXECUTE ON FUNCTION resolve_product_id_for_item(text) TO authenticated;
5726
5632
  GRANT EXECUTE ON FUNCTION resolve_product_id_for_item(text) TO service_role;
5727
5633
  CREATE OR REPLACE FUNCTION public.resolve_stock_trade_item_key(p_product_id uuid)
5728
5634
  RETURNS text
5729
- LANGUAGE sql
5635
+ LANGUAGE plpgsql
5730
5636
  STABLE SECURITY DEFINER
5731
5637
  SET search_path TO 'public'
5732
- AS $function$
5733
- SELECT COALESCE(
5734
- (
5735
- SELECT hp.trade_item_key
5736
- FROM public.product_groups pg
5737
- JOIN public.products hp ON hp.id = pg.head_product_id
5738
- WHERE pg.id = p_product_id
5739
- AND pg.is_active = true
5740
- LIMIT 1
5741
- ),
5742
- (SELECT trade_item_key FROM public.products WHERE id = p_product_id)
5743
- );
5744
- $function$
5638
+ AS $function$
5639
+ BEGIN
5640
+ PERFORM public.voorraad_vereis('ingelogd', 'resolve_stock_trade_item_key');
5641
+ RETURN COALESCE(
5642
+ (SELECT hp.trade_item_key FROM public.product_groups pg
5643
+ JOIN public.products hp ON hp.id = pg.head_product_id
5644
+ WHERE pg.id = p_product_id AND pg.is_active = true LIMIT 1),
5645
+ (SELECT trade_item_key FROM public.products WHERE id = p_product_id));
5646
+ END $function$
5745
5647
  ;
5746
5648
  REVOKE ALL ON FUNCTION resolve_stock_trade_item_key(uuid) FROM PUBLIC;
5747
5649
  REVOKE ALL ON FUNCTION resolve_stock_trade_item_key(uuid) FROM anon;
5748
- REVOKE EXECUTE ON FUNCTION resolve_stock_trade_item_key(uuid) FROM PUBLIC;
5749
- GRANT EXECUTE ON FUNCTION resolve_stock_trade_item_key(uuid) TO authenticated;
5750
- GRANT EXECUTE ON FUNCTION resolve_stock_trade_item_key(uuid) TO service_role;
5751
- REVOKE EXECUTE ON FUNCTION resolve_stock_trade_item_key(uuid) FROM anon;
5752
5650
  GRANT EXECUTE ON FUNCTION resolve_stock_trade_item_key(uuid) TO authenticated;
5753
5651
  GRANT EXECUTE ON FUNCTION resolve_stock_trade_item_key(uuid) TO service_role;
5754
5652
  CREATE OR REPLACE FUNCTION public.reverse_production(p_parent_key text, p_quantity numeric, p_user_id uuid DEFAULT NULL::uuid, p_connection_id uuid DEFAULT NULL::uuid, p_reason text DEFAULT NULL::text)
@@ -5929,10 +5827,6 @@ END $function$
5929
5827
  ;
5930
5828
  REVOKE ALL ON FUNCTION run_floriday_continuous_stock_sync() FROM PUBLIC;
5931
5829
  REVOKE ALL ON FUNCTION run_floriday_continuous_stock_sync() FROM anon;
5932
- REVOKE EXECUTE ON FUNCTION run_floriday_continuous_stock_sync() FROM PUBLIC;
5933
- GRANT EXECUTE ON FUNCTION run_floriday_continuous_stock_sync() TO authenticated;
5934
- GRANT EXECUTE ON FUNCTION run_floriday_continuous_stock_sync() TO service_role;
5935
- REVOKE EXECUTE ON FUNCTION run_floriday_continuous_stock_sync() FROM anon;
5936
5830
  GRANT EXECUTE ON FUNCTION run_floriday_continuous_stock_sync() TO authenticated;
5937
5831
  GRANT EXECUTE ON FUNCTION run_floriday_continuous_stock_sync() TO service_role;
5938
5832
  CREATE OR REPLACE FUNCTION public.run_floriday_follow()
@@ -6035,10 +5929,6 @@ END $function$
6035
5929
  ;
6036
5930
  REVOKE ALL ON FUNCTION run_logistics_tasks_dispatch() FROM PUBLIC;
6037
5931
  REVOKE ALL ON FUNCTION run_logistics_tasks_dispatch() FROM anon;
6038
- REVOKE EXECUTE ON FUNCTION run_logistics_tasks_dispatch() FROM PUBLIC;
6039
- GRANT EXECUTE ON FUNCTION run_logistics_tasks_dispatch() TO authenticated;
6040
- GRANT EXECUTE ON FUNCTION run_logistics_tasks_dispatch() TO service_role;
6041
- REVOKE EXECUTE ON FUNCTION run_logistics_tasks_dispatch() FROM anon;
6042
5932
  GRANT EXECUTE ON FUNCTION run_logistics_tasks_dispatch() TO authenticated;
6043
5933
  GRANT EXECUTE ON FUNCTION run_logistics_tasks_dispatch() TO service_role;
6044
5934
  CREATE OR REPLACE FUNCTION public.self_heal_floriday_links()
@@ -6100,10 +5990,6 @@ END $function$
6100
5990
  ;
6101
5991
  REVOKE ALL ON FUNCTION self_heal_floriday_links() FROM PUBLIC;
6102
5992
  REVOKE ALL ON FUNCTION self_heal_floriday_links() FROM anon;
6103
- REVOKE EXECUTE ON FUNCTION self_heal_floriday_links() FROM PUBLIC;
6104
- GRANT EXECUTE ON FUNCTION self_heal_floriday_links() TO authenticated;
6105
- GRANT EXECUTE ON FUNCTION self_heal_floriday_links() TO service_role;
6106
- REVOKE EXECUTE ON FUNCTION self_heal_floriday_links() FROM anon;
6107
5993
  GRANT EXECUTE ON FUNCTION self_heal_floriday_links() TO authenticated;
6108
5994
  GRANT EXECUTE ON FUNCTION self_heal_floriday_links() TO service_role;
6109
5995
  CREATE OR REPLACE FUNCTION public.set_module_runtime_config_updated_at()
@@ -6212,10 +6098,6 @@ END; $function$
6212
6098
  ;
6213
6099
  REVOKE ALL ON FUNCTION set_product_stock(uuid,numeric,numeric,numeric,text,text) FROM PUBLIC;
6214
6100
  REVOKE ALL ON FUNCTION set_product_stock(uuid,numeric,numeric,numeric,text,text) FROM anon;
6215
- REVOKE EXECUTE ON FUNCTION set_product_stock(uuid,numeric,numeric,numeric,text,text) FROM PUBLIC;
6216
- GRANT EXECUTE ON FUNCTION set_product_stock(uuid,numeric,numeric,numeric,text,text) TO authenticated;
6217
- GRANT EXECUTE ON FUNCTION set_product_stock(uuid,numeric,numeric,numeric,text,text) TO service_role;
6218
- REVOKE EXECUTE ON FUNCTION set_product_stock(uuid,numeric,numeric,numeric,text,text) FROM anon;
6219
6101
  GRANT EXECUTE ON FUNCTION set_product_stock(uuid,numeric,numeric,numeric,text,text) TO authenticated;
6220
6102
  GRANT EXECUTE ON FUNCTION set_product_stock(uuid,numeric,numeric,numeric,text,text) TO service_role;
6221
6103
  CREATE OR REPLACE FUNCTION public.set_updated_at_order_fust_bookings()
@@ -6736,29 +6618,25 @@ GRANT EXECUTE ON FUNCTION trade_item_prices_touch_updated_at() TO authenticated;
6736
6618
  GRANT EXECUTE ON FUNCTION trade_item_prices_touch_updated_at() TO service_role;
6737
6619
  CREATE OR REPLACE FUNCTION public.trade_item_stock_duplicates()
6738
6620
  RETURNS TABLE(product_id uuid, product_name text, keys text[], row_count integer)
6739
- LANGUAGE sql
6621
+ LANGUAGE plpgsql
6740
6622
  STABLE SECURITY DEFINER
6741
6623
  SET search_path TO 'public'
6742
6624
  AS $function$
6743
- SELECT p.id,
6744
- p.product,
6745
- array_agg(ts.trade_item_key ORDER BY ts.trade_item_key),
6746
- count(*)::int
6747
- FROM public.products p
6748
- JOIN public.trade_item_stock ts
6749
- ON ts.trade_item_key = p.id::text
6750
- OR ts.trade_item_key = 'product:' || p.id::text
6751
- OR (p.floriday_trade_item_id IS NOT NULL AND ts.trade_item_key = p.floriday_trade_item_id)
6752
- GROUP BY p.id, p.product
6625
+ BEGIN
6626
+ PERFORM public.voorraad_vereis('ingelogd', 'trade_item_stock_duplicates');
6627
+ RETURN QUERY
6628
+ SELECT p.id, p.product, array_agg(ts.trade_item_key ORDER BY ts.trade_item_key), count(*)::int
6629
+ FROM public.products p
6630
+ JOIN public.trade_item_stock ts
6631
+ ON ts.trade_item_key = p.id::text
6632
+ OR ts.trade_item_key = 'product:' || p.id::text
6633
+ OR (p.floriday_trade_item_id IS NOT NULL AND ts.trade_item_key = p.floriday_trade_item_id)
6634
+ GROUP BY p.id, p.product
6753
6635
  HAVING count(*) > 1;
6754
- $function$
6636
+ END $function$
6755
6637
  ;
6756
6638
  REVOKE ALL ON FUNCTION trade_item_stock_duplicates() FROM PUBLIC;
6757
6639
  REVOKE ALL ON FUNCTION trade_item_stock_duplicates() FROM anon;
6758
- REVOKE EXECUTE ON FUNCTION trade_item_stock_duplicates() FROM PUBLIC;
6759
- GRANT EXECUTE ON FUNCTION trade_item_stock_duplicates() TO authenticated;
6760
- GRANT EXECUTE ON FUNCTION trade_item_stock_duplicates() TO service_role;
6761
- REVOKE EXECUTE ON FUNCTION trade_item_stock_duplicates() FROM anon;
6762
6640
  GRANT EXECUTE ON FUNCTION trade_item_stock_duplicates() TO authenticated;
6763
6641
  GRANT EXECUTE ON FUNCTION trade_item_stock_duplicates() TO service_role;
6764
6642
  CREATE OR REPLACE FUNCTION public.trg_cart_numbers_sync_order_status_fn()
@@ -8045,10 +7923,6 @@ END $function$
8045
7923
  ;
8046
7924
  REVOKE ALL ON FUNCTION voorraad_afboeken(uuid,text,numeric,text,text) FROM PUBLIC;
8047
7925
  REVOKE ALL ON FUNCTION voorraad_afboeken(uuid,text,numeric,text,text) FROM anon;
8048
- REVOKE EXECUTE ON FUNCTION voorraad_afboeken(uuid,text,numeric,text,text) FROM PUBLIC;
8049
- GRANT EXECUTE ON FUNCTION voorraad_afboeken(uuid,text,numeric,text,text) TO authenticated;
8050
- GRANT EXECUTE ON FUNCTION voorraad_afboeken(uuid,text,numeric,text,text) TO service_role;
8051
- REVOKE EXECUTE ON FUNCTION voorraad_afboeken(uuid,text,numeric,text,text) FROM anon;
8052
7926
  GRANT EXECUTE ON FUNCTION voorraad_afboeken(uuid,text,numeric,text,text) TO authenticated;
8053
7927
  GRANT EXECUTE ON FUNCTION voorraad_afboeken(uuid,text,numeric,text,text) TO service_role;
8054
7928
  CREATE OR REPLACE FUNCTION public.voorraad_alert_floriday_not_updated(p_key text, p_qty numeric, p_order_id uuid, p_order_item_id uuid)
@@ -8256,7 +8130,8 @@ BEGIN
8256
8130
  'unit', p.unit, 'barcode', p.barcode),
8257
8131
  'naam', COALESCE(NULLIF(btrim(p.product),''), NULLIF(p.custom_fields#>>'{floriday_payload,name}',''), '(naamloos)'),
8258
8132
  'artikelnummer', COALESCE(NULLIF(btrim(p.article_number),''), NULLIF(p.custom_fields#>>'{floriday_payload,articleCode}','')),
8259
- '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',
8260
8135
  'floriday_id', NULLIF(btrim(COALESCE(p.floriday_trade_item_id,'')),''),
8261
8136
  'heeft_koppeling', v_conn IS NOT NULL,
8262
8137
  'soort', v_soort,
@@ -9306,10 +9181,6 @@ END $function$
9306
9181
  ;
9307
9182
  REVOKE ALL ON FUNCTION voorraad_correctie_1136(boolean) FROM PUBLIC;
9308
9183
  REVOKE ALL ON FUNCTION voorraad_correctie_1136(boolean) FROM anon;
9309
- REVOKE EXECUTE ON FUNCTION voorraad_correctie_1136(boolean) FROM PUBLIC;
9310
- GRANT EXECUTE ON FUNCTION voorraad_correctie_1136(boolean) TO authenticated;
9311
- GRANT EXECUTE ON FUNCTION voorraad_correctie_1136(boolean) TO service_role;
9312
- REVOKE EXECUTE ON FUNCTION voorraad_correctie_1136(boolean) FROM anon;
9313
9184
  GRANT EXECUTE ON FUNCTION voorraad_correctie_1136(boolean) TO authenticated;
9314
9185
  GRANT EXECUTE ON FUNCTION voorraad_correctie_1136(boolean) TO service_role;
9315
9186
  CREATE OR REPLACE FUNCTION public.voorraad_correctie_1140(p_uitvoeren boolean DEFAULT false)
@@ -9524,7 +9395,7 @@ CREATE OR REPLACE FUNCTION public.voorraad_defaults_versie()
9524
9395
  LANGUAGE sql
9525
9396
  IMMUTABLE
9526
9397
  SET search_path TO 'public'
9527
- AS $function$ SELECT 3 $function$
9398
+ AS $function$ SELECT 4 $function$
9528
9399
  ;
9529
9400
  REVOKE ALL ON FUNCTION voorraad_defaults_versie() FROM PUBLIC;
9530
9401
  REVOKE ALL ON FUNCTION voorraad_defaults_versie() FROM anon;
@@ -9610,7 +9481,7 @@ DECLARE
9610
9481
  v_ph text[] := ARRAY['artikelcode','artikelnummer','naam','name','code','article code','articlecode','test','-','x','nvt','n.v.t.','tbd','todo'];
9611
9482
  v_lc jsonb := '[{"code":"AUCTION_TROLLEY","naam":"Stapelwagen","volgorde":1},{"code":"DANISH_TROLLEY","naam":"Deense container","volgorde":2},{"code":"EURO_TROLLEY","naam":"Euro-rolcontainer","volgorde":3},{"code":"PALLET","naam":"Pallet","volgorde":4},{"code":"EURO_PALLET","naam":"Euro-pallet","volgorde":5},{"code":"NONE","naam":"Geen ladingdrager","volgorde":6}]';
9612
9483
  v_vervallen text[] := ARRAY[]::text[];
9613
- n_ph int := 0; n_lc_nieuw int := 0; n_lc_bij int := 0; n_lc_uit int := 0; n_lim int := 0; n_inst int := 0; n_fust int := 0;
9484
+ n_ph int := 0; n_lc_nieuw int := 0; n_lc_bij int := 0; n_lc_uit int := 0; n_lim int := 0; n_inst int := 0; n_fust int := 0; n_sch int := 0;
9614
9485
  v_idx text := 'bestaat'; v_job text := 'bestaat'; v_res jsonb; v_job_ok boolean;
9615
9486
  BEGIN
9616
9487
  PERFORM public.voorraad_vereis('ingelogd', 'voorraad_ensure_defaults');
@@ -9623,6 +9494,7 @@ BEGIN
9623
9494
  AND EXISTS (SELECT 1 FROM public.voorraad_load_carrier_types)
9624
9495
  AND EXISTS (SELECT 1 FROM public.voorraad_instellingen WHERE id)
9625
9496
  AND NOT EXISTS (SELECT 1 FROM public.fust_types WHERE saldo_bijhouden IS NULL)
9497
+ AND (SELECT count(*) FROM public.module_runtime_config WHERE key LIKE 'voorraad_hook_enabled.%') >= 7
9626
9498
  AND v_job_ok THEN
9627
9499
  RETURN jsonb_build_object('ok', true, 'versie', v_versie, 'overgeslagen', true);
9628
9500
  END IF;
@@ -9654,6 +9526,21 @@ BEGIN
9654
9526
  UPDATE public.fust_types SET saldo_bijhouden = NOT COALESCE(vbn_code IN (999, 800), false) WHERE saldo_bijhouden IS NULL;
9655
9527
  GET DIAGNOSTICS n_fust = ROW_COUNT;
9656
9528
 
9529
+ -- Schakelaars van de verwerkers: alleen aanmaken als ze ontbreken, nooit overschrijven.
9530
+ -- 'standaard' = dezelfde regel als zonder rij (aan zolang er een ERP-leidend artikel is).
9531
+ PERFORM set_config('voorraad.schakelaar_defaults', 'aan', true);
9532
+ INSERT INTO public.module_runtime_config(key, value) VALUES
9533
+ ('voorraad_hook_enabled.follow_floriday', 'true'),
9534
+ ('voorraad_hook_enabled.floriday_versies', 'true'),
9535
+ ('voorraad_hook_enabled.floriday_base_supply', 'standaard'),
9536
+ ('voorraad_hook_enabled.logistics_tasks', 'standaard'),
9537
+ ('voorraad_hook_enabled.stock_reconcile', 'false'),
9538
+ ('voorraad_hook_enabled.continuous_stock', 'false'),
9539
+ ('voorraad_hook_enabled.continuous_stock_pull', 'false')
9540
+ ON CONFLICT (key) DO NOTHING;
9541
+ GET DIAGNOSTICS n_sch = ROW_COUNT;
9542
+ PERFORM set_config('voorraad.schakelaar_defaults', '', true);
9543
+
9657
9544
  -- Unieke index op het Floriday-id; overslaan (en melden in de installatiecontrole) bij dubbelen.
9658
9545
  IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'products_floriday_trade_item_id_uniek') THEN
9659
9546
  IF jsonb_array_length(public.voorraad_floriday_dubbele_ids()) = 0 THEN
@@ -9677,7 +9564,7 @@ BEGIN
9677
9564
 
9678
9565
  v_res := jsonb_build_object('plaatshoudercodes_toegevoegd', n_ph, 'ladingdragers_toegevoegd', n_lc_nieuw,
9679
9566
  'ladingdragers_bijgewerkt', n_lc_bij, 'ladingdragers_niet_actief', n_lc_uit, 'herberekenlimieten_aangemaakt', n_lim,
9680
- 'instellingen_aangemaakt', n_inst, 'fustsoorten_saldo_ingevuld', n_fust, 'unieke_index', v_idx, 'uurlijkse_controle', v_job);
9567
+ 'instellingen_aangemaakt', n_inst, 'fustsoorten_saldo_ingevuld', n_fust, 'unieke_index', v_idx, 'uurlijkse_controle', v_job, 'schakelaars_aangemaakt', n_sch);
9681
9568
  INSERT INTO public.voorraad_defaults_state(id, versie, toegepast_at, resultaat) VALUES (true, v_versie, now(), v_res)
9682
9569
  ON CONFLICT (id) DO UPDATE SET versie = EXCLUDED.versie, toegepast_at = EXCLUDED.toegepast_at, resultaat = EXCLUDED.resultaat;
9683
9570
  RETURN jsonb_build_object('ok', true, 'versie', v_versie, 'overgeslagen', false) || v_res;
@@ -9954,15 +9841,17 @@ REVOKE ALL ON FUNCTION voorraad_floriday_artikelen_vangnet() FROM anon;
9954
9841
  GRANT EXECUTE ON FUNCTION voorraad_floriday_artikelen_vangnet() TO service_role;
9955
9842
  CREATE OR REPLACE FUNCTION public.voorraad_floriday_dubbele_ids()
9956
9843
  RETURNS jsonb
9957
- LANGUAGE sql
9844
+ LANGUAGE plpgsql
9958
9845
  STABLE SECURITY DEFINER
9959
9846
  SET search_path TO 'public'
9960
9847
  AS $function$
9961
- SELECT COALESCE(jsonb_agg(jsonb_build_object('floriday_id', k, 'artikelen', ids) ORDER BY k), '[]'::jsonb)
9848
+ BEGIN
9849
+ PERFORM public.voorraad_vereis('ingelogd', 'voorraad_floriday_dubbele_ids');
9850
+ RETURN (SELECT COALESCE(jsonb_agg(jsonb_build_object('floriday_id', k, 'artikelen', ids) ORDER BY k), '[]'::jsonb)
9962
9851
  FROM (SELECT lower(btrim(floriday_trade_item_id)) k, jsonb_agg(id ORDER BY id) ids
9963
9852
  FROM public.products WHERE NULLIF(btrim(COALESCE(floriday_trade_item_id,'')),'') IS NOT NULL
9964
- GROUP BY 1 HAVING count(*) > 1) d
9965
- $function$
9853
+ GROUP BY 1 HAVING count(*) > 1) d);
9854
+ END $function$
9966
9855
  ;
9967
9856
  REVOKE ALL ON FUNCTION voorraad_floriday_dubbele_ids() FROM PUBLIC;
9968
9857
  REVOKE ALL ON FUNCTION voorraad_floriday_dubbele_ids() FROM anon;
@@ -9987,10 +9876,6 @@ END $function$
9987
9876
  ;
9988
9877
  REVOKE ALL ON FUNCTION voorraad_floriday_klaarzetten_toegestaan() FROM PUBLIC;
9989
9878
  REVOKE ALL ON FUNCTION voorraad_floriday_klaarzetten_toegestaan() FROM anon;
9990
- REVOKE EXECUTE ON FUNCTION voorraad_floriday_klaarzetten_toegestaan() FROM PUBLIC;
9991
- GRANT EXECUTE ON FUNCTION voorraad_floriday_klaarzetten_toegestaan() TO authenticated;
9992
- GRANT EXECUTE ON FUNCTION voorraad_floriday_klaarzetten_toegestaan() TO service_role;
9993
- REVOKE EXECUTE ON FUNCTION voorraad_floriday_klaarzetten_toegestaan() FROM anon;
9994
9879
  GRANT EXECUTE ON FUNCTION voorraad_floriday_klaarzetten_toegestaan() TO authenticated;
9995
9880
  GRANT EXECUTE ON FUNCTION voorraad_floriday_klaarzetten_toegestaan() TO service_role;
9996
9881
  CREATE OR REPLACE FUNCTION public.voorraad_floriday_leads_key(p_key text)
@@ -10361,15 +10246,52 @@ END $function$
10361
10246
  REVOKE ALL ON FUNCTION voorraad_floriday_volgt(uuid) FROM PUBLIC;
10362
10247
  REVOKE ALL ON FUNCTION voorraad_floriday_volgt(uuid) FROM anon;
10363
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;
10364
10284
  CREATE OR REPLACE FUNCTION public.voorraad_fust_bijhouden(p_fust_type_id uuid)
10365
10285
  RETURNS boolean
10366
- LANGUAGE sql
10286
+ LANGUAGE plpgsql
10367
10287
  STABLE SECURITY DEFINER
10368
10288
  SET search_path TO 'public'
10369
10289
  AS $function$
10370
- SELECT COALESCE(f.saldo_bijhouden, NOT COALESCE(f.vbn_code IN (999, 800), false))
10371
- FROM public.fust_types f WHERE f.id = p_fust_type_id
10372
- $function$
10290
+ BEGIN
10291
+ PERFORM public.voorraad_vereis('ingelogd', 'voorraad_fust_bijhouden');
10292
+ RETURN (SELECT COALESCE(f.saldo_bijhouden, NOT COALESCE(f.vbn_code IN (999, 800), false))
10293
+ FROM public.fust_types f WHERE f.id = p_fust_type_id);
10294
+ END $function$
10373
10295
  ;
10374
10296
  REVOKE ALL ON FUNCTION voorraad_fust_bijhouden(uuid) FROM PUBLIC;
10375
10297
  REVOKE ALL ON FUNCTION voorraad_fust_bijhouden(uuid) FROM anon;
@@ -10602,14 +10524,16 @@ GRANT EXECUTE ON FUNCTION voorraad_fust_startmoment_opslaan(uuid,timestamp with
10602
10524
  GRANT EXECUTE ON FUNCTION voorraad_fust_startmoment_opslaan(uuid,timestamp with time zone,integer,jsonb,text) TO service_role;
10603
10525
  CREATE OR REPLACE FUNCTION public.voorraad_fust_startmoment_van(p_fust_type_id uuid)
10604
10526
  RETURNS timestamp with time zone
10605
- LANGUAGE sql
10527
+ LANGUAGE plpgsql
10606
10528
  STABLE SECURITY DEFINER
10607
10529
  SET search_path TO 'public'
10608
10530
  AS $function$
10609
- SELECT COALESCE(
10531
+ BEGIN
10532
+ PERFORM public.voorraad_vereis('ingelogd', 'voorraad_fust_startmoment_van');
10533
+ RETURN COALESCE(
10610
10534
  (SELECT s.moment FROM public.fust_startmoment s WHERE s.fust_type_id = public.voorraad_active_fust_id(NULL, p_fust_type_id)),
10611
- (SELECT s.moment FROM public.fust_startmoment s WHERE s.fust_type_id IS NULL))
10612
- $function$
10535
+ (SELECT s.moment FROM public.fust_startmoment s WHERE s.fust_type_id IS NULL));
10536
+ END $function$
10613
10537
  ;
10614
10538
  REVOKE ALL ON FUNCTION voorraad_fust_startmoment_van(uuid) FROM PUBLIC;
10615
10539
  REVOKE ALL ON FUNCTION voorraad_fust_startmoment_van(uuid) FROM anon;
@@ -10617,13 +10541,15 @@ GRANT EXECUTE ON FUNCTION voorraad_fust_startmoment_van(uuid) TO authenticated;
10617
10541
  GRANT EXECUTE ON FUNCTION voorraad_fust_startmoment_van(uuid) TO service_role;
10618
10542
  CREATE OR REPLACE FUNCTION public.voorraad_fust_voor_startmoment(p_fust_type_id uuid, p_lever date)
10619
10543
  RETURNS boolean
10620
- LANGUAGE sql
10544
+ LANGUAGE plpgsql
10621
10545
  STABLE SECURITY DEFINER
10622
10546
  SET search_path TO 'public'
10623
10547
  AS $function$
10624
- SELECT p_fust_type_id IS NOT NULL AND p_lever IS NOT NULL
10625
- AND COALESCE(p_lever < (public.voorraad_fust_startmoment_van(p_fust_type_id) AT TIME ZONE 'Europe/Amsterdam')::date, false)
10626
- $function$
10548
+ BEGIN
10549
+ PERFORM public.voorraad_vereis('ingelogd', 'voorraad_fust_voor_startmoment');
10550
+ RETURN p_fust_type_id IS NOT NULL AND p_lever IS NOT NULL
10551
+ AND COALESCE(p_lever < (public.voorraad_fust_startmoment_van(p_fust_type_id) AT TIME ZONE 'Europe/Amsterdam')::date, false);
10552
+ END $function$
10627
10553
  ;
10628
10554
  REVOKE ALL ON FUNCTION voorraad_fust_voor_startmoment(uuid,date) FROM PUBLIC;
10629
10555
  REVOKE ALL ON FUNCTION voorraad_fust_voor_startmoment(uuid,date) FROM anon;
@@ -10739,14 +10665,23 @@ REVOKE ALL ON FUNCTION voorraad_hook_base_url() FROM anon;
10739
10665
  GRANT EXECUTE ON FUNCTION voorraad_hook_base_url() TO service_role;
10740
10666
  CREATE OR REPLACE FUNCTION public.voorraad_hook_on(p_name text)
10741
10667
  RETURNS boolean
10742
- LANGUAGE sql
10668
+ LANGUAGE plpgsql
10743
10669
  STABLE SECURITY DEFINER
10744
10670
  SET search_path TO 'public'
10745
10671
  AS $function$
10746
- SELECT COALESCE((SELECT lower(trim(value)) = 'true' FROM public.module_runtime_config
10747
- WHERE key = 'voorraad_hook_enabled.' || p_name),
10748
- p_name IN ('floriday_base_supply','logistics_tasks','follow_floriday'));
10749
- $function$
10672
+ DECLARE v text;
10673
+ BEGIN
10674
+ PERFORM public.voorraad_vereis('server', 'voorraad_hook_on');
10675
+ -- Zelfde regel als src/server-hooks/guard.ts (hookEnabled).
10676
+ SELECT lower(trim(value)) INTO v FROM public.module_runtime_config WHERE key = 'voorraad_hook_enabled.' || p_name;
10677
+ IF v IS NOT NULL AND v <> 'standaard' THEN RETURN v = 'true'; END IF;
10678
+ IF p_name IN ('follow_floriday', 'floriday_versies') THEN RETURN true; END IF;
10679
+ IF p_name IN ('floriday_base_supply', 'logistics_tasks') THEN
10680
+ RETURN EXISTS (SELECT 1 FROM public.floriday_inventory_settings WHERE erp_leading = true)
10681
+ OR EXISTS (SELECT 1 FROM public.floriday_inventory_settings WHERE erp_leading IS NULL AND stock_mode <> 'DISABLED');
10682
+ END IF;
10683
+ RETURN false;
10684
+ END $function$
10750
10685
  ;
10751
10686
  REVOKE ALL ON FUNCTION voorraad_hook_on(text) FROM PUBLIC;
10752
10687
  REVOKE ALL ON FUNCTION voorraad_hook_on(text) FROM anon;
@@ -10781,6 +10716,8 @@ CREATE OR REPLACE FUNCTION public.voorraad_hook_switch_jobs()
10781
10716
  SET search_path TO 'public'
10782
10717
  AS $function$
10783
10718
  BEGIN
10719
+ -- Vastleggen van standaardschakelaars verandert niets aan bestaande taken.
10720
+ IF TG_OP = 'INSERT' AND current_setting('voorraad.schakelaar_defaults', true) = 'aan' THEN RETURN NEW; END IF;
10784
10721
  IF NEW.key IN ('voorraad_hook_enabled.continuous_stock','voorraad_hook_enabled.continuous_stock_pull') THEN
10785
10722
  IF public.voorraad_hook_on('continuous_stock') OR public.voorraad_hook_on('continuous_stock_pull') THEN
10786
10723
  IF NOT EXISTS (SELECT 1 FROM cron.job WHERE jobname = 'floriday-continuous-stock-sync') THEN
@@ -10813,7 +10750,7 @@ CREATE OR REPLACE FUNCTION public.voorraad_install_check()
10813
10750
  STABLE SECURITY DEFINER
10814
10751
  SET search_path TO 'public'
10815
10752
  AS $function$
10816
- 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'];
10817
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'];
10818
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'];
10819
10756
  v_open text[] := ARRAY['voorraad_is_server','voorraad_vereis'];
@@ -11225,7 +11162,8 @@ BEGIN
11225
11162
  SELECT (SELECT t FROM tel), (SELECT count(*) FROM gefilterd),
11226
11163
  (SELECT COALESCE(jsonb_agg(jsonb_build_object(
11227
11164
  'id', pg.id, 'naam', pg.naam, 'artikelnummer', pg.artikelnummer,
11228
- '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',
11229
11167
  'floriday_id', pg.floriday_id,
11230
11168
  'prijs', pg.prijs, 'eenheid', pg.eenheid, 'soort', pg.soort, 'is_onderdeel', pg.is_onderdeel,
11231
11169
  'liggend', pg.liggend, 'gereserveerd', pg.gereserveerd, 'minimum', pg.minimum, 'inkomend', pg.inkomend, 'vrij', pg.vrij,
@@ -11584,10 +11522,6 @@ END $function$
11584
11522
  ;
11585
11523
  REVOKE ALL ON FUNCTION voorraad_overzicht_orderregel_koppeling(integer) FROM PUBLIC;
11586
11524
  REVOKE ALL ON FUNCTION voorraad_overzicht_orderregel_koppeling(integer) FROM anon;
11587
- REVOKE EXECUTE ON FUNCTION voorraad_overzicht_orderregel_koppeling(integer) FROM PUBLIC;
11588
- GRANT EXECUTE ON FUNCTION voorraad_overzicht_orderregel_koppeling(integer) TO authenticated;
11589
- GRANT EXECUTE ON FUNCTION voorraad_overzicht_orderregel_koppeling(integer) TO service_role;
11590
- REVOKE EXECUTE ON FUNCTION voorraad_overzicht_orderregel_koppeling(integer) FROM anon;
11591
11525
  GRANT EXECUTE ON FUNCTION voorraad_overzicht_orderregel_koppeling(integer) TO authenticated;
11592
11526
  GRANT EXECUTE ON FUNCTION voorraad_overzicht_orderregel_koppeling(integer) TO service_role;
11593
11527
  CREATE OR REPLACE FUNCTION public.voorraad_packing_from_floriday(p_product_id uuid, p_uitvoeren boolean)