@flowselections/floriday-voorraad 1.0.157 → 1.0.158
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-lib/server-hooks/guard.d.ts +9 -0
- package/dist-lib/server-hooks/guard.d.ts.map +1 -1
- package/dist-lib/server-hooks/guard.js +4 -3
- package/dist-lib/server-hooks/trade-item-photo.d.ts +12 -0
- package/dist-lib/server-hooks/trade-item-photo.d.ts.map +1 -1
- package/dist-lib/server-hooks/trade-item-photo.js +13 -12
- package/package.json +29 -2
- package/sql/AGENTS.md +2 -2
- package/sql/floriday-voorraad-schema.sql +141 -246
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deze verwerkers staan zonder expliciete instelling alleen aan zolang er
|
|
3
|
+
* minstens één ERP-leidend artikel is (erp_leading = true, of een artikel van
|
|
4
|
+
* vóór 1.0.84 met een andere modus dan Uit). Anders uit: een Shell die alles
|
|
5
|
+
* uit Floriday overneemt, verstuurt dan niets.
|
|
6
|
+
*/
|
|
7
|
+
export declare const DEFAULT_ON_IF_ERP_LEADING: Set<string>;
|
|
8
|
+
/** Standaard aan zonder voorwaarde (alleen lezen uit Floriday, verstuurt niets). */
|
|
9
|
+
export declare const DEFAULT_ON: Set<string>;
|
|
1
10
|
export declare function hookEnabled(name: string): Promise<boolean>;
|
|
2
11
|
export declare function runGuardedHook(request: Request, name: string, handle: (request: Request) => Promise<Response>, label: string): Promise<Response>;
|
|
3
12
|
//# sourceMappingURL=guard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/server-hooks/guard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/server-hooks/guard.ts"],"names":[],"mappings":"AAgBA;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,aAAuD,CAAC;AAE9F,oFAAoF;AACpF,eAAO,MAAM,UAAU,aAAmD,CAAC;AAsC3E,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAchE;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,EAC/C,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC,CAUnB"}
|
|
@@ -19,9 +19,9 @@ const CORS = {
|
|
|
19
19
|
* vóór 1.0.84 met een andere modus dan Uit). Anders uit: een Shell die alles
|
|
20
20
|
* uit Floriday overneemt, verstuurt dan niets.
|
|
21
21
|
*/
|
|
22
|
-
const DEFAULT_ON_IF_ERP_LEADING = new Set(["floriday_base_supply", "logistics_tasks"]);
|
|
22
|
+
export const DEFAULT_ON_IF_ERP_LEADING = new Set(["floriday_base_supply", "logistics_tasks"]);
|
|
23
23
|
/** Standaard aan zonder voorwaarde (alleen lezen uit Floriday, verstuurt niets). */
|
|
24
|
-
const DEFAULT_ON = new Set(["follow_floriday", "floriday_versies"]);
|
|
24
|
+
export const DEFAULT_ON = new Set(["follow_floriday", "floriday_versies"]);
|
|
25
25
|
async function hasErpLeadingArticle(admin) {
|
|
26
26
|
const lead = await admin
|
|
27
27
|
.from("floriday_inventory_settings")
|
|
@@ -64,7 +64,8 @@ export async function hookEnabled(name) {
|
|
|
64
64
|
.select("value")
|
|
65
65
|
.eq("key", `voorraad_hook_enabled.${name}`)
|
|
66
66
|
.maybeSingle();
|
|
67
|
-
|
|
67
|
+
// 'standaard' (vastgelegd door voorraad_ensure_defaults) = dezelfde regel als geen rij.
|
|
68
|
+
if (!data || String(data.value).trim().toLowerCase() === "standaard") {
|
|
68
69
|
if (DEFAULT_ON.has(name))
|
|
69
70
|
return true;
|
|
70
71
|
return DEFAULT_ON_IF_ERP_LEADING.has(name) && (await hasErpLeadingArticle(admin));
|
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Upload-handler voor artikelfoto's (losse app én Shell via flowselections.serverRoutes).
|
|
3
|
+
* Alleen ingelogde gebruikers van deze database (sessie-bearer); de gateway-
|
|
4
|
+
* sleutel blijft server-side. Server-only.
|
|
5
|
+
*
|
|
6
|
+
* Flow (§14.11):
|
|
7
|
+
* 1. Browser POSTet multipart/form-data met `file` en optioneel `tradeItemId`.
|
|
8
|
+
* 2. Wij verifiëren de Supabase-bearer en bepalen de actieve koppeling zelf.
|
|
9
|
+
* 3. We sturen de RAW bytes door naar /api/public/gateway/media-upload —
|
|
10
|
+
* géén base64-inflatie, géén formData-rebuild. HMAC zit in
|
|
11
|
+
* gatewayMediaUpload (server-only secret).
|
|
12
|
+
*/
|
|
1
13
|
type UploadReason = "image_too_small" | "image_too_large" | "unsupported_type" | "invalid_payload" | "network" | "not_logged_in" | "not_connected" | "config_missing" | "unknown";
|
|
2
14
|
/** Breedte/hoogte uit PNG-IHDR of JPEG-SOF-marker. */
|
|
3
15
|
export declare function imageSize(b: Uint8Array): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trade-item-photo.d.ts","sourceRoot":"","sources":["../../src/server-hooks/trade-item-photo.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"trade-item-photo.d.ts","sourceRoot":"","sources":["../../src/server-hooks/trade-item-photo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,KAAK,YAAY,GACb,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,GACjB,SAAS,GACT,eAAe,GACf,eAAe,GACf,gBAAgB,GAChB,SAAS,CAAC;AAgFd,sDAAsD;AACtD,wBAAgB,SAAS,CAAC,CAAC,EAAE,UAAU,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAmBxE;AAKD,wBAAgB,UAAU,CACxB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,GACX;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CASjD;AAMD,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CA+P9E"}
|
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
* géén base64-inflatie, géén formData-rebuild. HMAC zit in
|
|
11
11
|
* gatewayMediaUpload (server-only secret).
|
|
12
12
|
*/
|
|
13
|
-
import { createClient } from "@supabase/supabase-js";
|
|
14
13
|
function json(body, status = 200) {
|
|
15
14
|
return new Response(JSON.stringify(body), {
|
|
16
15
|
status,
|
|
@@ -134,10 +133,16 @@ export async function handleTradeItemPhoto(request) {
|
|
|
134
133
|
if (request.method !== "POST")
|
|
135
134
|
return json({ error: "Method not allowed" }, 405);
|
|
136
135
|
try {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
136
|
+
// C1: geen eigen client met de publishable key. Sessie server-side
|
|
137
|
+
// controleren met de service-role-client (getUser), pas daarna verder.
|
|
138
|
+
let supabase;
|
|
139
|
+
try {
|
|
140
|
+
const { getAdminClient } = await import("../lib/supabase-admin.server.js");
|
|
141
|
+
supabase = getAdminClient();
|
|
142
|
+
}
|
|
143
|
+
catch (e) {
|
|
144
|
+
console.error("[trade-item-photo] serverconfiguratie ontbreekt", e);
|
|
145
|
+
return plainFail("config_missing", 500, "SUPABASE_URL/SUPABASE_SERVICE_ROLE_KEY ontbreekt op de server");
|
|
141
146
|
}
|
|
142
147
|
// --- 1. Bearer-validatie -------------------------------------------------
|
|
143
148
|
const authHeader = request.headers.get("authorization");
|
|
@@ -148,12 +153,8 @@ export async function handleTradeItemPhoto(request) {
|
|
|
148
153
|
const token = authHeader.slice("Bearer ".length).trim();
|
|
149
154
|
if (!token)
|
|
150
155
|
return plainFail("not_logged_in", 401, "Unauthorized: leeg token");
|
|
151
|
-
const
|
|
152
|
-
|
|
153
|
-
auth: { storage: undefined, persistSession: false, autoRefreshToken: false },
|
|
154
|
-
});
|
|
155
|
-
const { data: claimsData, error: claimsErr } = await supabase.auth.getClaims(token);
|
|
156
|
-
if (claimsErr || !claimsData?.claims?.sub) {
|
|
156
|
+
const { data: userData, error: userErr } = await supabase.auth.getUser(token);
|
|
157
|
+
if (userErr || !userData?.user?.id) {
|
|
157
158
|
return plainFail("not_logged_in", 401, "Unauthorized: token ongeldig");
|
|
158
159
|
}
|
|
159
160
|
// --- 2. Multipart body ---------------------------------------------------
|
|
@@ -218,7 +219,7 @@ export async function handleTradeItemPhoto(request) {
|
|
|
218
219
|
// ZONDER versie-prefix — die moet dus in het pad zelf zitten.
|
|
219
220
|
const path = "/suppliers-api-2026v1/media";
|
|
220
221
|
const requestTimestamp = Date.now();
|
|
221
|
-
const clientUserId =
|
|
222
|
+
const clientUserId = userData.user.id;
|
|
222
223
|
const reportFailure = async (info) => {
|
|
223
224
|
// (a) push naar Auth-module diagnostics-endpoint
|
|
224
225
|
try {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flowselections/floriday-voorraad",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.158",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist-lib/index.js",
|
|
@@ -185,6 +185,33 @@
|
|
|
185
185
|
"OPTIONS"
|
|
186
186
|
]
|
|
187
187
|
}
|
|
188
|
-
]
|
|
188
|
+
],
|
|
189
|
+
"crons": [
|
|
190
|
+
{
|
|
191
|
+
"name": "voorraad-floriday-base-supply",
|
|
192
|
+
"kind": "http",
|
|
193
|
+
"path": "/api/public/hooks/floriday-base-supply",
|
|
194
|
+
"schedule": "* * * * *"
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"name": "voorraad-floriday-follow",
|
|
198
|
+
"kind": "http",
|
|
199
|
+
"path": "/api/public/hooks/floriday-follow",
|
|
200
|
+
"replaces": [
|
|
201
|
+
"floriday-follow-hourly"
|
|
202
|
+
],
|
|
203
|
+
"schedule": "23 * * * *"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"name": "voorraad-logistics-tasks-run",
|
|
207
|
+
"kind": "http",
|
|
208
|
+
"path": "/api/public/hooks/logistics-tasks-run",
|
|
209
|
+
"schedule": "* * * * *"
|
|
210
|
+
}
|
|
211
|
+
],
|
|
212
|
+
"install": {
|
|
213
|
+
"ensureDefaults": "voorraad_ensure_defaults",
|
|
214
|
+
"installCheck": "voorraad_install_check"
|
|
215
|
+
}
|
|
189
216
|
}
|
|
190
217
|
}
|
package/sql/AGENTS.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
- `sql/floriday-voorraad-schema.sql` must name the newest `supabase/migrations` file in its "Laatste migratie" header and contain the required objects; `scripts/check-schema-version.mjs` (prepublishOnly + test) blocks publishing otherwise; the header version is informational and never higher than package.json, because 1.0.139 shipped a stale schema and the dashboard bumps versions without schema changes.
|
|
10
10
|
- Default data only via `voorraad_ensure_defaults()` (system data upserted by code keeping `naam_aangepast`, retired codes set inactive; customer settings only inserted when missing, with column defaults equal to reader fallbacks); bump `voorraad_defaults_versie()` on every list change, because new shells get the schema without data and the fast exit compares that version.
|
|
11
11
|
- Load carrier → Engine code only via the Engine's `logistics_ladingdrager_resolve`; no own mapping list or fallback, because two lists drift.
|
|
12
|
-
- Floriday trade items become own articles only via `voorraad_floriday_artikelen_aanmaken` (match GTIN → article code → name; ambiguity goes to `voorraad_koppel_twijfel`, never guessed; reuses the existing stock row keyed by the Floriday id); the cache trigger only enqueues
|
|
12
|
+
- Floriday trade items become own articles only via `voorraad_floriday_artikelen_aanmaken` (match GTIN → article code → name; ambiguity goes to `voorraad_koppel_twijfel`, never guessed; reuses the existing stock row keyed by the Floriday id); the cache trigger only enqueues, because inline creation slowed Floriday-auth syncs.
|
|
13
13
|
- Floriday order lines resolve their article only from source metadata (`voorraad_orderregel_trade_item`, sales order id → trade item), overriding name matches; existing empty lines only via `voorraad_correctie_1144` (unambiguous, not shipped/cancelled/processed, batched), because name matches linked the wrong article.
|
|
14
14
|
- Fust balance counts only bookings from the start moment (`fust_startmoment`, global or per fust) plus the opening count; earlier bookings stay visible but outside the balance, and an automatic start moment is set only when none exists and `fust_stock_mutations` is empty, because existing shells must choose their own start.
|
|
15
15
|
- The stock list reads only `voorraad_lijst` (search/filter/sort/count/page on the server, max 500 per page, archived rows only under filter `gearchiveerd`); quick stock changes from the list go through `voorraad_voorraad_corrigeren` (delta + reason, row-locked), because client-side merging hit silent 1,000-row limits and absolute saves could overwrite concurrent order consumption.
|
|
@@ -17,4 +17,4 @@
|
|
|
17
17
|
- A price change re-queues Floriday stock rows only when `voorraad_floriday_volgt(product)` (ERP leading and mode not DISABLED), because local-steered articles must never gain queue rows.
|
|
18
18
|
- Custom fields and tray sticker save only via `voorraad_eigen_velden_opslaan` / `voorraad_traysticker_opslaan` (compare against the state at opening), because direct table writes overwrote concurrent edits.
|
|
19
19
|
- Replaced/expired Floriday trade item versions are recorded only by `voorraad_floriday_versies_vastleggen` (server-only, from a complete error-free per-id read round, blocked above the max share with a message, source recorded); they never become visible articles (alias to the successor or an archived article with stock mode off), and historic shipped lines of such versions never get recalculated fust (`voorraad_fust_historisch_vervallen`), because old versions doubled the catalogue and re-linking history must not book anything.
|
|
20
|
-
- New visible articles from Floriday are created only after a successful version round for that connection (`voorraad_floriday_versieronde_geslaagd`); rounds run only automatically (
|
|
20
|
+
- New visible articles from Floriday are created only after a successful version round for that connection (`voorraad_floriday_versieronde_geslaagd`); rounds run only automatically (portions via `_volgende`/`_portie`), an item failing 3 consecutive rounds is set aside as unknown (never marked, never created), and only a whole failed round produces a user notice, because users must never need a manual step and one bad item must not block forever.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
-- @flowselections/floriday-voorraad 1.0.
|
|
2
|
-
-- Laatste migratie:
|
|
1
|
+
-- @flowselections/floriday-voorraad 1.0.157 – volledig schema (idempotent, geen gegevens).
|
|
2
|
+
-- Laatste migratie: 20261105135333_640ef1da-e3c7-4569-8060-2fd73ac2ca6c.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
|
|
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
|
|
4243
|
+
LANGUAGE plpgsql
|
|
4278
4244
|
STABLE SECURITY DEFINER
|
|
4279
4245
|
SET search_path TO 'public'
|
|
4280
4246
|
AS $function$
|
|
4281
|
-
|
|
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
|
|
4262
|
+
LANGUAGE plpgsql
|
|
4299
4263
|
STABLE SECURITY DEFINER
|
|
4300
4264
|
SET search_path TO 'public'
|
|
4301
|
-
AS $function$
|
|
4302
|
-
|
|
4303
|
-
|
|
4304
|
-
|
|
4305
|
-
|
|
4306
|
-
|
|
4307
|
-
|
|
4308
|
-
|
|
4309
|
-
)
|
|
4310
|
-
SELECT public.resolve_group_member_stock_key(pgi.trade_item_id)
|
|
4311
|
-
|
|
4312
|
-
|
|
4313
|
-
|
|
4314
|
-
|
|
4315
|
-
|
|
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
|
|
4287
|
+
LANGUAGE plpgsql
|
|
4329
4288
|
STABLE SECURITY DEFINER
|
|
4330
4289
|
SET search_path TO 'public'
|
|
4331
|
-
AS $function$
|
|
4332
|
-
|
|
4333
|
-
|
|
4334
|
-
|
|
4335
|
-
|
|
4336
|
-
|
|
4337
|
-
|
|
4338
|
-
|
|
4339
|
-
|
|
4340
|
-
FROM public.product_groups
|
|
4341
|
-
|
|
4342
|
-
|
|
4343
|
-
|
|
4344
|
-
|
|
4345
|
-
(SELECT
|
|
4346
|
-
(SELECT
|
|
4347
|
-
|
|
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,10 +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
|
-
REVOKE EXECUTE ON FUNCTION recompute_all_reserved_stock() FROM anon;
|
|
5320
5261
|
GRANT EXECUTE ON FUNCTION recompute_all_reserved_stock() TO authenticated;
|
|
5321
5262
|
GRANT EXECUTE ON FUNCTION recompute_all_reserved_stock() TO service_role;
|
|
5322
5263
|
CREATE OR REPLACE FUNCTION public.recompute_order_status(p_order_id uuid)
|
|
@@ -5372,10 +5313,6 @@ $function$
|
|
|
5372
5313
|
;
|
|
5373
5314
|
REVOKE ALL ON FUNCTION recompute_order_status(uuid) FROM PUBLIC;
|
|
5374
5315
|
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
5316
|
GRANT EXECUTE ON FUNCTION recompute_order_status(uuid) TO authenticated;
|
|
5380
5317
|
GRANT EXECUTE ON FUNCTION recompute_order_status(uuid) TO service_role;
|
|
5381
5318
|
CREATE OR REPLACE FUNCTION public.recompute_reserved_for_order(p_order_id uuid)
|
|
@@ -5398,10 +5335,6 @@ END $function$
|
|
|
5398
5335
|
;
|
|
5399
5336
|
REVOKE ALL ON FUNCTION recompute_reserved_for_order(uuid) FROM PUBLIC;
|
|
5400
5337
|
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
5338
|
GRANT EXECUTE ON FUNCTION recompute_reserved_for_order(uuid) TO authenticated;
|
|
5406
5339
|
GRANT EXECUTE ON FUNCTION recompute_reserved_for_order(uuid) TO service_role;
|
|
5407
5340
|
CREATE OR REPLACE FUNCTION public.recompute_reserved_stock(p_trade_item_key text)
|
|
@@ -5507,10 +5440,6 @@ $function$
|
|
|
5507
5440
|
;
|
|
5508
5441
|
REVOKE ALL ON FUNCTION recompute_reserved_stock(text) FROM PUBLIC;
|
|
5509
5442
|
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
|
-
REVOKE EXECUTE ON FUNCTION recompute_reserved_stock(text) FROM anon;
|
|
5514
5443
|
GRANT EXECUTE ON FUNCTION recompute_reserved_stock(text) TO authenticated;
|
|
5515
5444
|
GRANT EXECUTE ON FUNCTION recompute_reserved_stock(text) TO service_role;
|
|
5516
5445
|
CREATE OR REPLACE FUNCTION public.requeue_skipped_stock_rows(p_status text, p_connection_id uuid, p_trade_item_id text DEFAULT NULL::text)
|
|
@@ -5647,57 +5576,36 @@ $function$
|
|
|
5647
5576
|
;
|
|
5648
5577
|
REVOKE ALL ON FUNCTION resolve_group_allocation(uuid,integer) FROM PUBLIC;
|
|
5649
5578
|
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
5579
|
GRANT EXECUTE ON FUNCTION resolve_group_allocation(uuid,integer) TO authenticated;
|
|
5655
5580
|
GRANT EXECUTE ON FUNCTION resolve_group_allocation(uuid,integer) TO service_role;
|
|
5656
5581
|
CREATE OR REPLACE FUNCTION public.resolve_group_member_stock_key(p_trade_item_id text)
|
|
5657
5582
|
RETURNS text
|
|
5658
|
-
LANGUAGE
|
|
5583
|
+
LANGUAGE plpgsql
|
|
5659
5584
|
STABLE SECURITY DEFINER
|
|
5660
5585
|
SET search_path TO 'public'
|
|
5661
5586
|
AS $function$
|
|
5662
|
-
|
|
5587
|
+
BEGIN
|
|
5588
|
+
PERFORM public.voorraad_vereis('ingelogd', 'resolve_group_member_stock_key');
|
|
5589
|
+
RETURN (SELECT CASE
|
|
5663
5590
|
WHEN p_trade_item_id IS NULL OR btrim(p_trade_item_id) = '' THEN NULL
|
|
5664
5591
|
WHEN p_trade_item_id LIKE 'draft:%' OR p_trade_item_id LIKE 'group:%' THEN p_trade_item_id
|
|
5665
5592
|
WHEN p_trade_item_id LIKE 'product:%' THEN COALESCE(
|
|
5666
|
-
(
|
|
5667
|
-
|
|
5668
|
-
|
|
5669
|
-
|
|
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
|
-
)
|
|
5593
|
+
(SELECT COALESCE(NULLIF(btrim(COALESCE(p.floriday_trade_item_id, '')), ''),
|
|
5594
|
+
NULLIF(btrim(COALESCE(p.trade_item_key, '')), ''), p.id::text)
|
|
5595
|
+
FROM public.products p WHERE p.id::text = substring(p_trade_item_id from 9) LIMIT 1),
|
|
5596
|
+
p_trade_item_id)
|
|
5678
5597
|
WHEN EXISTS (SELECT 1 FROM public.products p WHERE p.id::text = p_trade_item_id) THEN (
|
|
5679
|
-
SELECT COALESCE(
|
|
5680
|
-
|
|
5681
|
-
|
|
5682
|
-
|
|
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
|
|
5598
|
+
SELECT COALESCE(NULLIF(btrim(COALESCE(p.floriday_trade_item_id, '')), ''),
|
|
5599
|
+
NULLIF(btrim(COALESCE(p.trade_item_key, '')), ''), p.id::text)
|
|
5600
|
+
FROM public.products p WHERE p.id::text = p_trade_item_id LIMIT 1)
|
|
5601
|
+
WHEN EXISTS (SELECT 1 FROM public.trade_item_drafts d WHERE d.id::text = p_trade_item_id) THEN 'draft:' || p_trade_item_id
|
|
5602
|
+
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
5603
|
ELSE p_trade_item_id
|
|
5695
|
-
END;
|
|
5696
|
-
$function$
|
|
5604
|
+
END);
|
|
5605
|
+
END $function$
|
|
5697
5606
|
;
|
|
5698
5607
|
REVOKE ALL ON FUNCTION resolve_group_member_stock_key(text) FROM PUBLIC;
|
|
5699
5608
|
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
5609
|
GRANT EXECUTE ON FUNCTION resolve_group_member_stock_key(text) TO authenticated;
|
|
5702
5610
|
GRANT EXECUTE ON FUNCTION resolve_group_member_stock_key(text) TO service_role;
|
|
5703
5611
|
CREATE OR REPLACE FUNCTION public.resolve_product_id_for_item(p_product_name text)
|
|
@@ -5718,37 +5626,25 @@ END $function$
|
|
|
5718
5626
|
;
|
|
5719
5627
|
REVOKE ALL ON FUNCTION resolve_product_id_for_item(text) FROM PUBLIC;
|
|
5720
5628
|
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
5629
|
GRANT EXECUTE ON FUNCTION resolve_product_id_for_item(text) TO authenticated;
|
|
5726
5630
|
GRANT EXECUTE ON FUNCTION resolve_product_id_for_item(text) TO service_role;
|
|
5727
5631
|
CREATE OR REPLACE FUNCTION public.resolve_stock_trade_item_key(p_product_id uuid)
|
|
5728
5632
|
RETURNS text
|
|
5729
|
-
LANGUAGE
|
|
5633
|
+
LANGUAGE plpgsql
|
|
5730
5634
|
STABLE SECURITY DEFINER
|
|
5731
5635
|
SET search_path TO 'public'
|
|
5732
|
-
AS $function$
|
|
5733
|
-
|
|
5734
|
-
|
|
5735
|
-
|
|
5736
|
-
|
|
5737
|
-
|
|
5738
|
-
WHERE pg.id = p_product_id
|
|
5739
|
-
|
|
5740
|
-
|
|
5741
|
-
),
|
|
5742
|
-
(SELECT trade_item_key FROM public.products WHERE id = p_product_id)
|
|
5743
|
-
);
|
|
5744
|
-
$function$
|
|
5636
|
+
AS $function$
|
|
5637
|
+
BEGIN
|
|
5638
|
+
PERFORM public.voorraad_vereis('ingelogd', 'resolve_stock_trade_item_key');
|
|
5639
|
+
RETURN COALESCE(
|
|
5640
|
+
(SELECT hp.trade_item_key FROM public.product_groups pg
|
|
5641
|
+
JOIN public.products hp ON hp.id = pg.head_product_id
|
|
5642
|
+
WHERE pg.id = p_product_id AND pg.is_active = true LIMIT 1),
|
|
5643
|
+
(SELECT trade_item_key FROM public.products WHERE id = p_product_id));
|
|
5644
|
+
END $function$
|
|
5745
5645
|
;
|
|
5746
5646
|
REVOKE ALL ON FUNCTION resolve_stock_trade_item_key(uuid) FROM PUBLIC;
|
|
5747
5647
|
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
5648
|
GRANT EXECUTE ON FUNCTION resolve_stock_trade_item_key(uuid) TO authenticated;
|
|
5753
5649
|
GRANT EXECUTE ON FUNCTION resolve_stock_trade_item_key(uuid) TO service_role;
|
|
5754
5650
|
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 +5825,6 @@ END $function$
|
|
|
5929
5825
|
;
|
|
5930
5826
|
REVOKE ALL ON FUNCTION run_floriday_continuous_stock_sync() FROM PUBLIC;
|
|
5931
5827
|
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
5828
|
GRANT EXECUTE ON FUNCTION run_floriday_continuous_stock_sync() TO authenticated;
|
|
5937
5829
|
GRANT EXECUTE ON FUNCTION run_floriday_continuous_stock_sync() TO service_role;
|
|
5938
5830
|
CREATE OR REPLACE FUNCTION public.run_floriday_follow()
|
|
@@ -6035,10 +5927,6 @@ END $function$
|
|
|
6035
5927
|
;
|
|
6036
5928
|
REVOKE ALL ON FUNCTION run_logistics_tasks_dispatch() FROM PUBLIC;
|
|
6037
5929
|
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
5930
|
GRANT EXECUTE ON FUNCTION run_logistics_tasks_dispatch() TO authenticated;
|
|
6043
5931
|
GRANT EXECUTE ON FUNCTION run_logistics_tasks_dispatch() TO service_role;
|
|
6044
5932
|
CREATE OR REPLACE FUNCTION public.self_heal_floriday_links()
|
|
@@ -6100,10 +5988,6 @@ END $function$
|
|
|
6100
5988
|
;
|
|
6101
5989
|
REVOKE ALL ON FUNCTION self_heal_floriday_links() FROM PUBLIC;
|
|
6102
5990
|
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
5991
|
GRANT EXECUTE ON FUNCTION self_heal_floriday_links() TO authenticated;
|
|
6108
5992
|
GRANT EXECUTE ON FUNCTION self_heal_floriday_links() TO service_role;
|
|
6109
5993
|
CREATE OR REPLACE FUNCTION public.set_module_runtime_config_updated_at()
|
|
@@ -6212,10 +6096,6 @@ END; $function$
|
|
|
6212
6096
|
;
|
|
6213
6097
|
REVOKE ALL ON FUNCTION set_product_stock(uuid,numeric,numeric,numeric,text,text) FROM PUBLIC;
|
|
6214
6098
|
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
6099
|
GRANT EXECUTE ON FUNCTION set_product_stock(uuid,numeric,numeric,numeric,text,text) TO authenticated;
|
|
6220
6100
|
GRANT EXECUTE ON FUNCTION set_product_stock(uuid,numeric,numeric,numeric,text,text) TO service_role;
|
|
6221
6101
|
CREATE OR REPLACE FUNCTION public.set_updated_at_order_fust_bookings()
|
|
@@ -6736,29 +6616,25 @@ GRANT EXECUTE ON FUNCTION trade_item_prices_touch_updated_at() TO authenticated;
|
|
|
6736
6616
|
GRANT EXECUTE ON FUNCTION trade_item_prices_touch_updated_at() TO service_role;
|
|
6737
6617
|
CREATE OR REPLACE FUNCTION public.trade_item_stock_duplicates()
|
|
6738
6618
|
RETURNS TABLE(product_id uuid, product_name text, keys text[], row_count integer)
|
|
6739
|
-
LANGUAGE
|
|
6619
|
+
LANGUAGE plpgsql
|
|
6740
6620
|
STABLE SECURITY DEFINER
|
|
6741
6621
|
SET search_path TO 'public'
|
|
6742
6622
|
AS $function$
|
|
6743
|
-
|
|
6744
|
-
|
|
6745
|
-
|
|
6746
|
-
|
|
6747
|
-
|
|
6748
|
-
|
|
6749
|
-
|
|
6750
|
-
|
|
6751
|
-
|
|
6752
|
-
|
|
6623
|
+
BEGIN
|
|
6624
|
+
PERFORM public.voorraad_vereis('ingelogd', 'trade_item_stock_duplicates');
|
|
6625
|
+
RETURN QUERY
|
|
6626
|
+
SELECT p.id, p.product, array_agg(ts.trade_item_key ORDER BY ts.trade_item_key), count(*)::int
|
|
6627
|
+
FROM public.products p
|
|
6628
|
+
JOIN public.trade_item_stock ts
|
|
6629
|
+
ON ts.trade_item_key = p.id::text
|
|
6630
|
+
OR ts.trade_item_key = 'product:' || p.id::text
|
|
6631
|
+
OR (p.floriday_trade_item_id IS NOT NULL AND ts.trade_item_key = p.floriday_trade_item_id)
|
|
6632
|
+
GROUP BY p.id, p.product
|
|
6753
6633
|
HAVING count(*) > 1;
|
|
6754
|
-
$function$
|
|
6634
|
+
END $function$
|
|
6755
6635
|
;
|
|
6756
6636
|
REVOKE ALL ON FUNCTION trade_item_stock_duplicates() FROM PUBLIC;
|
|
6757
6637
|
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
6638
|
GRANT EXECUTE ON FUNCTION trade_item_stock_duplicates() TO authenticated;
|
|
6763
6639
|
GRANT EXECUTE ON FUNCTION trade_item_stock_duplicates() TO service_role;
|
|
6764
6640
|
CREATE OR REPLACE FUNCTION public.trg_cart_numbers_sync_order_status_fn()
|
|
@@ -8045,10 +7921,6 @@ END $function$
|
|
|
8045
7921
|
;
|
|
8046
7922
|
REVOKE ALL ON FUNCTION voorraad_afboeken(uuid,text,numeric,text,text) FROM PUBLIC;
|
|
8047
7923
|
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
7924
|
GRANT EXECUTE ON FUNCTION voorraad_afboeken(uuid,text,numeric,text,text) TO authenticated;
|
|
8053
7925
|
GRANT EXECUTE ON FUNCTION voorraad_afboeken(uuid,text,numeric,text,text) TO service_role;
|
|
8054
7926
|
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)
|
|
@@ -9306,10 +9178,6 @@ END $function$
|
|
|
9306
9178
|
;
|
|
9307
9179
|
REVOKE ALL ON FUNCTION voorraad_correctie_1136(boolean) FROM PUBLIC;
|
|
9308
9180
|
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
9181
|
GRANT EXECUTE ON FUNCTION voorraad_correctie_1136(boolean) TO authenticated;
|
|
9314
9182
|
GRANT EXECUTE ON FUNCTION voorraad_correctie_1136(boolean) TO service_role;
|
|
9315
9183
|
CREATE OR REPLACE FUNCTION public.voorraad_correctie_1140(p_uitvoeren boolean DEFAULT false)
|
|
@@ -9524,7 +9392,7 @@ CREATE OR REPLACE FUNCTION public.voorraad_defaults_versie()
|
|
|
9524
9392
|
LANGUAGE sql
|
|
9525
9393
|
IMMUTABLE
|
|
9526
9394
|
SET search_path TO 'public'
|
|
9527
|
-
AS $function$ SELECT
|
|
9395
|
+
AS $function$ SELECT 4 $function$
|
|
9528
9396
|
;
|
|
9529
9397
|
REVOKE ALL ON FUNCTION voorraad_defaults_versie() FROM PUBLIC;
|
|
9530
9398
|
REVOKE ALL ON FUNCTION voorraad_defaults_versie() FROM anon;
|
|
@@ -9610,7 +9478,7 @@ DECLARE
|
|
|
9610
9478
|
v_ph text[] := ARRAY['artikelcode','artikelnummer','naam','name','code','article code','articlecode','test','-','x','nvt','n.v.t.','tbd','todo'];
|
|
9611
9479
|
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
9480
|
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;
|
|
9481
|
+
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
9482
|
v_idx text := 'bestaat'; v_job text := 'bestaat'; v_res jsonb; v_job_ok boolean;
|
|
9615
9483
|
BEGIN
|
|
9616
9484
|
PERFORM public.voorraad_vereis('ingelogd', 'voorraad_ensure_defaults');
|
|
@@ -9623,6 +9491,7 @@ BEGIN
|
|
|
9623
9491
|
AND EXISTS (SELECT 1 FROM public.voorraad_load_carrier_types)
|
|
9624
9492
|
AND EXISTS (SELECT 1 FROM public.voorraad_instellingen WHERE id)
|
|
9625
9493
|
AND NOT EXISTS (SELECT 1 FROM public.fust_types WHERE saldo_bijhouden IS NULL)
|
|
9494
|
+
AND (SELECT count(*) FROM public.module_runtime_config WHERE key LIKE 'voorraad_hook_enabled.%') >= 7
|
|
9626
9495
|
AND v_job_ok THEN
|
|
9627
9496
|
RETURN jsonb_build_object('ok', true, 'versie', v_versie, 'overgeslagen', true);
|
|
9628
9497
|
END IF;
|
|
@@ -9654,6 +9523,21 @@ BEGIN
|
|
|
9654
9523
|
UPDATE public.fust_types SET saldo_bijhouden = NOT COALESCE(vbn_code IN (999, 800), false) WHERE saldo_bijhouden IS NULL;
|
|
9655
9524
|
GET DIAGNOSTICS n_fust = ROW_COUNT;
|
|
9656
9525
|
|
|
9526
|
+
-- Schakelaars van de verwerkers: alleen aanmaken als ze ontbreken, nooit overschrijven.
|
|
9527
|
+
-- 'standaard' = dezelfde regel als zonder rij (aan zolang er een ERP-leidend artikel is).
|
|
9528
|
+
PERFORM set_config('voorraad.schakelaar_defaults', 'aan', true);
|
|
9529
|
+
INSERT INTO public.module_runtime_config(key, value) VALUES
|
|
9530
|
+
('voorraad_hook_enabled.follow_floriday', 'true'),
|
|
9531
|
+
('voorraad_hook_enabled.floriday_versies', 'true'),
|
|
9532
|
+
('voorraad_hook_enabled.floriday_base_supply', 'standaard'),
|
|
9533
|
+
('voorraad_hook_enabled.logistics_tasks', 'standaard'),
|
|
9534
|
+
('voorraad_hook_enabled.stock_reconcile', 'false'),
|
|
9535
|
+
('voorraad_hook_enabled.continuous_stock', 'false'),
|
|
9536
|
+
('voorraad_hook_enabled.continuous_stock_pull', 'false')
|
|
9537
|
+
ON CONFLICT (key) DO NOTHING;
|
|
9538
|
+
GET DIAGNOSTICS n_sch = ROW_COUNT;
|
|
9539
|
+
PERFORM set_config('voorraad.schakelaar_defaults', '', true);
|
|
9540
|
+
|
|
9657
9541
|
-- Unieke index op het Floriday-id; overslaan (en melden in de installatiecontrole) bij dubbelen.
|
|
9658
9542
|
IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'products_floriday_trade_item_id_uniek') THEN
|
|
9659
9543
|
IF jsonb_array_length(public.voorraad_floriday_dubbele_ids()) = 0 THEN
|
|
@@ -9677,7 +9561,7 @@ BEGIN
|
|
|
9677
9561
|
|
|
9678
9562
|
v_res := jsonb_build_object('plaatshoudercodes_toegevoegd', n_ph, 'ladingdragers_toegevoegd', n_lc_nieuw,
|
|
9679
9563
|
'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);
|
|
9564
|
+
'instellingen_aangemaakt', n_inst, 'fustsoorten_saldo_ingevuld', n_fust, 'unieke_index', v_idx, 'uurlijkse_controle', v_job, 'schakelaars_aangemaakt', n_sch);
|
|
9681
9565
|
INSERT INTO public.voorraad_defaults_state(id, versie, toegepast_at, resultaat) VALUES (true, v_versie, now(), v_res)
|
|
9682
9566
|
ON CONFLICT (id) DO UPDATE SET versie = EXCLUDED.versie, toegepast_at = EXCLUDED.toegepast_at, resultaat = EXCLUDED.resultaat;
|
|
9683
9567
|
RETURN jsonb_build_object('ok', true, 'versie', v_versie, 'overgeslagen', false) || v_res;
|
|
@@ -9954,15 +9838,17 @@ REVOKE ALL ON FUNCTION voorraad_floriday_artikelen_vangnet() FROM anon;
|
|
|
9954
9838
|
GRANT EXECUTE ON FUNCTION voorraad_floriday_artikelen_vangnet() TO service_role;
|
|
9955
9839
|
CREATE OR REPLACE FUNCTION public.voorraad_floriday_dubbele_ids()
|
|
9956
9840
|
RETURNS jsonb
|
|
9957
|
-
LANGUAGE
|
|
9841
|
+
LANGUAGE plpgsql
|
|
9958
9842
|
STABLE SECURITY DEFINER
|
|
9959
9843
|
SET search_path TO 'public'
|
|
9960
9844
|
AS $function$
|
|
9961
|
-
|
|
9845
|
+
BEGIN
|
|
9846
|
+
PERFORM public.voorraad_vereis('ingelogd', 'voorraad_floriday_dubbele_ids');
|
|
9847
|
+
RETURN (SELECT COALESCE(jsonb_agg(jsonb_build_object('floriday_id', k, 'artikelen', ids) ORDER BY k), '[]'::jsonb)
|
|
9962
9848
|
FROM (SELECT lower(btrim(floriday_trade_item_id)) k, jsonb_agg(id ORDER BY id) ids
|
|
9963
9849
|
FROM public.products WHERE NULLIF(btrim(COALESCE(floriday_trade_item_id,'')),'') IS NOT NULL
|
|
9964
|
-
GROUP BY 1 HAVING count(*) > 1) d
|
|
9965
|
-
$function$
|
|
9850
|
+
GROUP BY 1 HAVING count(*) > 1) d);
|
|
9851
|
+
END $function$
|
|
9966
9852
|
;
|
|
9967
9853
|
REVOKE ALL ON FUNCTION voorraad_floriday_dubbele_ids() FROM PUBLIC;
|
|
9968
9854
|
REVOKE ALL ON FUNCTION voorraad_floriday_dubbele_ids() FROM anon;
|
|
@@ -9987,10 +9873,6 @@ END $function$
|
|
|
9987
9873
|
;
|
|
9988
9874
|
REVOKE ALL ON FUNCTION voorraad_floriday_klaarzetten_toegestaan() FROM PUBLIC;
|
|
9989
9875
|
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
9876
|
GRANT EXECUTE ON FUNCTION voorraad_floriday_klaarzetten_toegestaan() TO authenticated;
|
|
9995
9877
|
GRANT EXECUTE ON FUNCTION voorraad_floriday_klaarzetten_toegestaan() TO service_role;
|
|
9996
9878
|
CREATE OR REPLACE FUNCTION public.voorraad_floriday_leads_key(p_key text)
|
|
@@ -10363,13 +10245,15 @@ REVOKE ALL ON FUNCTION voorraad_floriday_volgt(uuid) FROM anon;
|
|
|
10363
10245
|
GRANT EXECUTE ON FUNCTION voorraad_floriday_volgt(uuid) TO service_role;
|
|
10364
10246
|
CREATE OR REPLACE FUNCTION public.voorraad_fust_bijhouden(p_fust_type_id uuid)
|
|
10365
10247
|
RETURNS boolean
|
|
10366
|
-
LANGUAGE
|
|
10248
|
+
LANGUAGE plpgsql
|
|
10367
10249
|
STABLE SECURITY DEFINER
|
|
10368
10250
|
SET search_path TO 'public'
|
|
10369
10251
|
AS $function$
|
|
10370
|
-
|
|
10371
|
-
|
|
10372
|
-
|
|
10252
|
+
BEGIN
|
|
10253
|
+
PERFORM public.voorraad_vereis('ingelogd', 'voorraad_fust_bijhouden');
|
|
10254
|
+
RETURN (SELECT COALESCE(f.saldo_bijhouden, NOT COALESCE(f.vbn_code IN (999, 800), false))
|
|
10255
|
+
FROM public.fust_types f WHERE f.id = p_fust_type_id);
|
|
10256
|
+
END $function$
|
|
10373
10257
|
;
|
|
10374
10258
|
REVOKE ALL ON FUNCTION voorraad_fust_bijhouden(uuid) FROM PUBLIC;
|
|
10375
10259
|
REVOKE ALL ON FUNCTION voorraad_fust_bijhouden(uuid) FROM anon;
|
|
@@ -10602,14 +10486,16 @@ GRANT EXECUTE ON FUNCTION voorraad_fust_startmoment_opslaan(uuid,timestamp with
|
|
|
10602
10486
|
GRANT EXECUTE ON FUNCTION voorraad_fust_startmoment_opslaan(uuid,timestamp with time zone,integer,jsonb,text) TO service_role;
|
|
10603
10487
|
CREATE OR REPLACE FUNCTION public.voorraad_fust_startmoment_van(p_fust_type_id uuid)
|
|
10604
10488
|
RETURNS timestamp with time zone
|
|
10605
|
-
LANGUAGE
|
|
10489
|
+
LANGUAGE plpgsql
|
|
10606
10490
|
STABLE SECURITY DEFINER
|
|
10607
10491
|
SET search_path TO 'public'
|
|
10608
10492
|
AS $function$
|
|
10609
|
-
|
|
10493
|
+
BEGIN
|
|
10494
|
+
PERFORM public.voorraad_vereis('ingelogd', 'voorraad_fust_startmoment_van');
|
|
10495
|
+
RETURN COALESCE(
|
|
10610
10496
|
(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$
|
|
10497
|
+
(SELECT s.moment FROM public.fust_startmoment s WHERE s.fust_type_id IS NULL));
|
|
10498
|
+
END $function$
|
|
10613
10499
|
;
|
|
10614
10500
|
REVOKE ALL ON FUNCTION voorraad_fust_startmoment_van(uuid) FROM PUBLIC;
|
|
10615
10501
|
REVOKE ALL ON FUNCTION voorraad_fust_startmoment_van(uuid) FROM anon;
|
|
@@ -10617,13 +10503,15 @@ GRANT EXECUTE ON FUNCTION voorraad_fust_startmoment_van(uuid) TO authenticated;
|
|
|
10617
10503
|
GRANT EXECUTE ON FUNCTION voorraad_fust_startmoment_van(uuid) TO service_role;
|
|
10618
10504
|
CREATE OR REPLACE FUNCTION public.voorraad_fust_voor_startmoment(p_fust_type_id uuid, p_lever date)
|
|
10619
10505
|
RETURNS boolean
|
|
10620
|
-
LANGUAGE
|
|
10506
|
+
LANGUAGE plpgsql
|
|
10621
10507
|
STABLE SECURITY DEFINER
|
|
10622
10508
|
SET search_path TO 'public'
|
|
10623
10509
|
AS $function$
|
|
10624
|
-
|
|
10625
|
-
|
|
10626
|
-
|
|
10510
|
+
BEGIN
|
|
10511
|
+
PERFORM public.voorraad_vereis('ingelogd', 'voorraad_fust_voor_startmoment');
|
|
10512
|
+
RETURN p_fust_type_id IS NOT NULL AND p_lever IS NOT NULL
|
|
10513
|
+
AND COALESCE(p_lever < (public.voorraad_fust_startmoment_van(p_fust_type_id) AT TIME ZONE 'Europe/Amsterdam')::date, false);
|
|
10514
|
+
END $function$
|
|
10627
10515
|
;
|
|
10628
10516
|
REVOKE ALL ON FUNCTION voorraad_fust_voor_startmoment(uuid,date) FROM PUBLIC;
|
|
10629
10517
|
REVOKE ALL ON FUNCTION voorraad_fust_voor_startmoment(uuid,date) FROM anon;
|
|
@@ -10739,14 +10627,23 @@ REVOKE ALL ON FUNCTION voorraad_hook_base_url() FROM anon;
|
|
|
10739
10627
|
GRANT EXECUTE ON FUNCTION voorraad_hook_base_url() TO service_role;
|
|
10740
10628
|
CREATE OR REPLACE FUNCTION public.voorraad_hook_on(p_name text)
|
|
10741
10629
|
RETURNS boolean
|
|
10742
|
-
LANGUAGE
|
|
10630
|
+
LANGUAGE plpgsql
|
|
10743
10631
|
STABLE SECURITY DEFINER
|
|
10744
10632
|
SET search_path TO 'public'
|
|
10745
10633
|
AS $function$
|
|
10746
|
-
|
|
10747
|
-
|
|
10748
|
-
|
|
10749
|
-
|
|
10634
|
+
DECLARE v text;
|
|
10635
|
+
BEGIN
|
|
10636
|
+
PERFORM public.voorraad_vereis('server', 'voorraad_hook_on');
|
|
10637
|
+
-- Zelfde regel als src/server-hooks/guard.ts (hookEnabled).
|
|
10638
|
+
SELECT lower(trim(value)) INTO v FROM public.module_runtime_config WHERE key = 'voorraad_hook_enabled.' || p_name;
|
|
10639
|
+
IF v IS NOT NULL AND v <> 'standaard' THEN RETURN v = 'true'; END IF;
|
|
10640
|
+
IF p_name IN ('follow_floriday', 'floriday_versies') THEN RETURN true; END IF;
|
|
10641
|
+
IF p_name IN ('floriday_base_supply', 'logistics_tasks') THEN
|
|
10642
|
+
RETURN EXISTS (SELECT 1 FROM public.floriday_inventory_settings WHERE erp_leading = true)
|
|
10643
|
+
OR EXISTS (SELECT 1 FROM public.floriday_inventory_settings WHERE erp_leading IS NULL AND stock_mode <> 'DISABLED');
|
|
10644
|
+
END IF;
|
|
10645
|
+
RETURN false;
|
|
10646
|
+
END $function$
|
|
10750
10647
|
;
|
|
10751
10648
|
REVOKE ALL ON FUNCTION voorraad_hook_on(text) FROM PUBLIC;
|
|
10752
10649
|
REVOKE ALL ON FUNCTION voorraad_hook_on(text) FROM anon;
|
|
@@ -10781,6 +10678,8 @@ CREATE OR REPLACE FUNCTION public.voorraad_hook_switch_jobs()
|
|
|
10781
10678
|
SET search_path TO 'public'
|
|
10782
10679
|
AS $function$
|
|
10783
10680
|
BEGIN
|
|
10681
|
+
-- Vastleggen van standaardschakelaars verandert niets aan bestaande taken.
|
|
10682
|
+
IF TG_OP = 'INSERT' AND current_setting('voorraad.schakelaar_defaults', true) = 'aan' THEN RETURN NEW; END IF;
|
|
10784
10683
|
IF NEW.key IN ('voorraad_hook_enabled.continuous_stock','voorraad_hook_enabled.continuous_stock_pull') THEN
|
|
10785
10684
|
IF public.voorraad_hook_on('continuous_stock') OR public.voorraad_hook_on('continuous_stock_pull') THEN
|
|
10786
10685
|
IF NOT EXISTS (SELECT 1 FROM cron.job WHERE jobname = 'floriday-continuous-stock-sync') THEN
|
|
@@ -11584,10 +11483,6 @@ END $function$
|
|
|
11584
11483
|
;
|
|
11585
11484
|
REVOKE ALL ON FUNCTION voorraad_overzicht_orderregel_koppeling(integer) FROM PUBLIC;
|
|
11586
11485
|
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
11486
|
GRANT EXECUTE ON FUNCTION voorraad_overzicht_orderregel_koppeling(integer) TO authenticated;
|
|
11592
11487
|
GRANT EXECUTE ON FUNCTION voorraad_overzicht_orderregel_koppeling(integer) TO service_role;
|
|
11593
11488
|
CREATE OR REPLACE FUNCTION public.voorraad_packing_from_floriday(p_product_id uuid, p_uitvoeren boolean)
|