@flowselections/logistiek-engine 1.0.212 → 1.0.214
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/db/schema/logistiek-engine.sql +233 -0
- package/dist-lib/components/DataGereedheidCard.d.ts.map +1 -1
- package/dist-lib/components/DataGereedheidCard.js +24 -5
- package/dist-lib/index.d.ts +2 -0
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +2 -0
- package/dist-lib/integrations/supabase/types.d.ts +61 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanner.d.ts +13 -0
- package/dist-lib/lib/loadCarrierPlanner.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanner.js +25 -7
- package/dist-lib/lib/loadCarrierPlanning.server.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanning.server.js +41 -13
- package/dist-lib/lib/moduleVersion.d.ts +1 -1
- package/dist-lib/lib/moduleVersion.js +1 -1
- package/dist-lib/lib/planPreview.d.ts +39 -0
- package/dist-lib/lib/planPreview.d.ts.map +1 -0
- package/dist-lib/lib/planPreview.functions.d.ts +13 -0
- package/dist-lib/lib/planPreview.functions.d.ts.map +1 -0
- package/dist-lib/lib/planPreview.functions.js +34 -0
- package/dist-lib/lib/planPreview.js +87 -0
- package/package.json +1 -1
|
@@ -36719,3 +36719,236 @@ RETURNS TABLE(punt text, ok boolean, uitleg text) LANGUAGE sql STABLE SECURITY D
|
|
|
36719
36719
|
'Verouderde kar toont geen lagen en %'
|
|
36720
36720
|
$$;
|
|
36721
36721
|
GRANT EXECUTE ON FUNCTION public.logistics_install_check_210() TO authenticated, service_role;
|
|
36722
|
+
|
|
36723
|
+
|
|
36724
|
+
-- ============================================================
|
|
36725
|
+
-- 1.0.213
|
|
36726
|
+
-- ============================================================
|
|
36727
|
+
-- Punt 1: geldige buffer nooit splitsen in de voorbeeldberekening.
|
|
36728
|
+
CREATE OR REPLACE FUNCTION public.logistics_rebuffer_simulate_open()
|
|
36729
|
+
RETURNS TABLE(id uuid, order_number text, delivery_date text, buffer_id uuid, cur_label text, new_label text, changed boolean, reason text)
|
|
36730
|
+
LANGUAGE plpgsql
|
|
36731
|
+
STABLE SECURITY DEFINER
|
|
36732
|
+
SET search_path TO 'public'
|
|
36733
|
+
AS $function$
|
|
36734
|
+
BEGIN
|
|
36735
|
+
PERFORM public.logistics_acc_guard('server', 'logistics_rebuffer_simulate_open');
|
|
36736
|
+
RETURN QUERY
|
|
36737
|
+
WITH c AS MATERIALIZED (
|
|
36738
|
+
SELECT o.id, o.order_number, o.delivery_date, o.buffer_id, public.logistics_buffer_target(o.id) AS t,
|
|
36739
|
+
public.logistics_order_afgemeld(o.id) AS afgemeld,
|
|
36740
|
+
(o.buffer_id IS NOT NULL AND coalesce(public.logistics_buffer_frozen(o.buffer_id), false)) AS buf_vast
|
|
36741
|
+
FROM public.orders o JOIN public.logistics_rebuffer_candidates() k ON k.order_id = o.id
|
|
36742
|
+
), m AS (
|
|
36743
|
+
SELECT c.*,
|
|
36744
|
+
(c.afgemeld OR c.buf_vast) AS beschermd,
|
|
36745
|
+
(SELECT array_agg(x.id ORDER BY x.id) FROM public.orders x WHERE c.buffer_id IS NOT NULL AND x.buffer_id = c.buffer_id AND x.deleted_at IS NULL AND x.id <> c.id) AS cur_mates,
|
|
36746
|
+
(SELECT array_agg(x.id ORDER BY x.id) FROM public.orders x WHERE c.t->>'soort' = 'buffer' AND x.buffer_id = (c.t->>'bufferId')::uuid AND x.deleted_at IS NULL AND x.id <> c.id) AS new_mates
|
|
36747
|
+
FROM c
|
|
36748
|
+
), l AS (
|
|
36749
|
+
SELECT m.*,
|
|
36750
|
+
CASE WHEN m.buffer_id IS NULL THEN 'Geen buffer (eigen kar)'
|
|
36751
|
+
WHEN m.cur_mates IS NULL THEN 'Eigen buffer'
|
|
36752
|
+
ELSE 'Buffer met ' || (SELECT string_agg(x.order_number, ', ' ORDER BY x.order_number) FROM public.orders x WHERE x.id = ANY(m.cur_mates)) END AS cur_l
|
|
36753
|
+
FROM m
|
|
36754
|
+
)
|
|
36755
|
+
SELECT l.id, l.order_number, l.delivery_date, l.buffer_id, l.cur_l,
|
|
36756
|
+
CASE WHEN l.beschermd THEN l.cur_l
|
|
36757
|
+
WHEN l.t->>'soort' IN ('solo','uitgesloten') THEN 'Geen buffer (eigen kar)'
|
|
36758
|
+
WHEN l.new_mates IS NULL THEN 'Eigen buffer'
|
|
36759
|
+
ELSE 'Buffer met ' || (SELECT string_agg(x.order_number, ', ' ORDER BY x.order_number) FROM public.orders x WHERE x.id = ANY(l.new_mates)) END,
|
|
36760
|
+
CASE WHEN l.beschermd THEN false
|
|
36761
|
+
ELSE coalesce(l.cur_mates, '{}') IS DISTINCT FROM coalesce(l.new_mates, '{}')
|
|
36762
|
+
OR ((l.t->>'soort') IN ('solo','uitgesloten') AND l.buffer_id IS NOT NULL AND l.cur_mates IS NOT NULL) END,
|
|
36763
|
+
CASE WHEN l.afgemeld THEN 'Ongewijzigd: de order is al verzonden of afgemeld; een bestaande buffer wordt niet gesplitst.'
|
|
36764
|
+
WHEN l.buf_vast THEN 'Ongewijzigd: de buffer ligt al vast (geprint, gescand of verstuurd) en wordt niet gesplitst.'
|
|
36765
|
+
WHEN jsonb_array_length(coalesce(l.t->'overgeslagen','[]'::jsonb)) > 0
|
|
36766
|
+
THEN 'Niet samengevoegd: buffer van ' || (SELECT string_agg(v, '; ') FROM jsonb_array_elements_text(l.t->'overgeslagen') v)
|
|
36767
|
+
|| ' ligt vast (geprint, gescand of verstuurd).'
|
|
36768
|
+
WHEN l.t->>'soort' = 'uitgesloten' THEN 'Deze order is uitgesloten van combineren (handmatig uitgesloten van indeling).'
|
|
36769
|
+
WHEN l.t->>'soort' = 'solo' THEN 'Volgens de huidige combineerregels krijgt deze order een eigen kar (' || coalesce(l.t->>'reason','onbekend') || ').'
|
|
36770
|
+
ELSE 'Volgens de huidige combineerregels (' || coalesce(l.t->>'reason','onbekend') || ').' END
|
|
36771
|
+
FROM l;
|
|
36772
|
+
END $function$;
|
|
36773
|
+
|
|
36774
|
+
-- Punt 3: oordeel per product, ladingdrager uit de hoofdverpakking eerst.
|
|
36775
|
+
CREATE OR REPLACE FUNCTION public.logistics_product_oordeel_many(p_product_ids uuid[])
|
|
36776
|
+
RETURNS TABLE(product_id uuid, oordeel text, tekst text, "actieUrl" text)
|
|
36777
|
+
LANGUAGE plpgsql
|
|
36778
|
+
STABLE SECURITY DEFINER
|
|
36779
|
+
SET search_path TO 'public'
|
|
36780
|
+
AS $function$
|
|
36781
|
+
#variable_conflict use_column
|
|
36782
|
+
DECLARE r record; c record; cd record; v_carrier text; hv jsonb; rs jsonb; v_code text; v_lfout text; ls int; fh numeric; ph numeric; cpl numeric; lpc numeric; laag numeric;
|
|
36783
|
+
blok text[]; waar text[]; mist text[]; hmist text[]; naam text; bron text;
|
|
36784
|
+
c_url constant text := '/logistiek-engine/beheer#gegevens-voor-karindeling';
|
|
36785
|
+
BEGIN
|
|
36786
|
+
PERFORM public.logistics_acc_guard('ingelogd', 'logistics_product_oordeel_many');
|
|
36787
|
+
IF coalesce(cardinality(p_product_ids), 0) = 0 THEN RETURN; END IF;
|
|
36788
|
+
IF cardinality(p_product_ids) > 1000 THEN
|
|
36789
|
+
RAISE EXCEPTION 'Maximaal 1000 producten per aanroep (ontvangen: %).', cardinality(p_product_ids) USING ERRCODE = '22023';
|
|
36790
|
+
END IF;
|
|
36791
|
+
SELECT nullif(btrim(coalesce(s.settings->'karrenindeling'->'fields'->>'default_carrier_type', s.settings->'karrenindeling'->>'default_carrier_type')), '')
|
|
36792
|
+
INTO v_carrier FROM public.logistics_rule_configs s WHERE s.is_active ORDER BY s.updated_at DESC LIMIT 1;
|
|
36793
|
+
SELECT t.code, t.name, t.layer_length_cm, t.layer_width_cm, t.max_height_cm, t.max_crates_per_layer, t.layers_per_carrier INTO cd
|
|
36794
|
+
FROM public.load_carrier_types t
|
|
36795
|
+
WHERE t.is_active AND (t.code = v_carrier OR (v_carrier IS NULL AND t.is_default))
|
|
36796
|
+
ORDER BY (t.code = v_carrier) DESC NULLS LAST LIMIT 1;
|
|
36797
|
+
|
|
36798
|
+
FOR r IN SELECT * FROM public.logistics_data_gereedheid(p_product_ids) LOOP
|
|
36799
|
+
blok := '{}'; waar := '{}'; hmist := '{}';
|
|
36800
|
+
mist := array_remove(coalesce(r.ontbrekend, '{}'), 'weight');
|
|
36801
|
+
hv := public.logistics_product_hoofdverpakking(r.product_id);
|
|
36802
|
+
v_code := NULL; v_lfout := NULL;
|
|
36803
|
+
IF hv IS NOT NULL AND NOT coalesce((hv->>'aanwezig')::boolean, false) THEN
|
|
36804
|
+
mist := mist || 'belading niet ingesteld'::text;
|
|
36805
|
+
END IF;
|
|
36806
|
+
IF hv IS NOT NULL AND coalesce((hv->>'aanwezig')::boolean, false) AND nullif(hv->>'ladingdrager', '') IS NOT NULL THEN
|
|
36807
|
+
rs := public.logistics_ladingdrager_resolve(hv->>'ladingdrager');
|
|
36808
|
+
v_code := rs->>'code'; v_lfout := rs->>'fout';
|
|
36809
|
+
END IF;
|
|
36810
|
+
SELECT NULL::text AS code, NULL::text AS name, NULL::int AS layer_length_cm, NULL::int AS layer_width_cm, NULL::int AS max_height_cm, NULL::int AS max_crates_per_layer, NULL::int AS layers_per_carrier INTO c;
|
|
36811
|
+
IF v_code IS NOT NULL THEN
|
|
36812
|
+
SELECT t.code, t.name, t.layer_length_cm, t.layer_width_cm, t.max_height_cm, t.max_crates_per_layer, t.layers_per_carrier INTO c
|
|
36813
|
+
FROM public.load_carrier_types t WHERE t.is_active AND t.code = v_code LIMIT 1;
|
|
36814
|
+
ELSIF v_lfout IS NULL THEN
|
|
36815
|
+
SELECT cd.code, cd.name, cd.layer_length_cm, cd.layer_width_cm, cd.max_height_cm, cd.max_crates_per_layer, cd.layers_per_carrier INTO c;
|
|
36816
|
+
ELSE
|
|
36817
|
+
mist := mist || v_lfout;
|
|
36818
|
+
END IF;
|
|
36819
|
+
naam := coalesce(c.name, c.code, 'de ladingdrager');
|
|
36820
|
+
bron := coalesce(r.velden->'crates_per_layer'->>'bron', 'product');
|
|
36821
|
+
cpl := coalesce(nullif(r.velden->'crates_per_layer'->>'waarde', '')::numeric, 0);
|
|
36822
|
+
lpc := coalesce(nullif(r.velden->'layers_per_cart'->>'waarde', '')::numeric, 0);
|
|
36823
|
+
fh := nullif(r.velden->'fust_height_mm'->>'waarde', '')::numeric / 10.0;
|
|
36824
|
+
ph := nullif(r.velden->'plant_height_cm'->>'waarde', '')::numeric;
|
|
36825
|
+
ls := public.logistics_max_fusten_per_laag(c.layer_length_cm, c.layer_width_cm,
|
|
36826
|
+
nullif(r.velden->'fust_length_mm'->>'waarde', '')::numeric / 10.0, nullif(r.velden->'fust_width_mm'->>'waarde', '')::numeric / 10.0);
|
|
36827
|
+
IF coalesce(fh,0) > 0 AND coalesce(ph,0) > 0 AND coalesce(c.max_height_cm,0) > 0 THEN
|
|
36828
|
+
laag := greatest(fh, ph);
|
|
36829
|
+
IF lpc * laag > c.max_height_cm + 1e-9 AND ph >= fh AND coalesce(r.velden->'plant_height_cm'->>'bron', '') ILIKE 'floricode%' THEN
|
|
36830
|
+
waar := waar || format('planthoogte volgens Floricode; controleer: %s lagen × %s cm = %s cm, hoger dan %s (%s cm)',
|
|
36831
|
+
lpc, trim_scale(round(laag,1)), trim_scale(round(lpc*laag,1)), naam, trim_scale(round(c.max_height_cm::numeric,1)));
|
|
36832
|
+
ELSIF lpc * laag > c.max_height_cm + 1e-9 THEN
|
|
36833
|
+
blok := blok || format('%s lagen × %s cm = %s cm, terwijl %s %s cm hoog is; er passen maximaal %s lagen',
|
|
36834
|
+
lpc, trim_scale(round(laag,1)), trim_scale(round(lpc*laag,1)), naam, trim_scale(round(c.max_height_cm::numeric,1)), floor(c.max_height_cm / laag));
|
|
36835
|
+
END IF;
|
|
36836
|
+
ELSE
|
|
36837
|
+
IF coalesce(fh,0) <= 0 THEN hmist := hmist || 'fusthoogte'::text; END IF;
|
|
36838
|
+
IF coalesce(ph,0) <= 0 THEN hmist := hmist || 'planthoogte'::text; END IF;
|
|
36839
|
+
IF coalesce(c.max_height_cm,0) <= 0 THEN hmist := hmist || ('hoogte van ' || naam); END IF;
|
|
36840
|
+
END IF;
|
|
36841
|
+
IF public.logistics_laag_tolerantie_tekst(c.layer_length_cm, c.layer_width_cm,
|
|
36842
|
+
nullif(r.velden->'fust_length_mm'->>'waarde', '')::numeric / 10.0, nullif(r.velden->'fust_width_mm'->>'waarde', '')::numeric / 10.0, cpl) IS NOT NULL THEN
|
|
36843
|
+
waar := waar || public.logistics_laag_tolerantie_tekst(c.layer_length_cm, c.layer_width_cm,
|
|
36844
|
+
nullif(r.velden->'fust_length_mm'->>'waarde', '')::numeric / 10.0, nullif(r.velden->'fust_width_mm'->>'waarde', '')::numeric / 10.0, cpl);
|
|
36845
|
+
END IF;
|
|
36846
|
+
IF ls IS NOT NULL AND cpl > ls THEN
|
|
36847
|
+
blok := blok || format('%s fust per laag (bron: %s), maar op een laag van %s passen er maximaal %s', cpl, bron, naam, ls);
|
|
36848
|
+
END IF;
|
|
36849
|
+
IF coalesce(c.max_crates_per_layer,0) > 0 AND cpl > c.max_crates_per_layer THEN
|
|
36850
|
+
blok := blok || format('%s fust per laag (bron: %s), maar %s staat maximaal %s fust per laag toe', cpl, bron, naam, c.max_crates_per_layer);
|
|
36851
|
+
END IF;
|
|
36852
|
+
IF cardinality(blok) = 0 AND cardinality(hmist) > 0 AND coalesce(c.layers_per_carrier,0) > 0 AND lpc > c.layers_per_carrier THEN
|
|
36853
|
+
waar := waar || format('%s lagen opgegeven, standaard %s; niet te controleren omdat de %s ontbreekt', lpc, c.layers_per_carrier, array_to_string(hmist, ', '));
|
|
36854
|
+
END IF;
|
|
36855
|
+
IF 'weight' = ANY(coalesce(r.ontbrekend, '{}')) THEN waar := waar || 'gewicht per fust ontbreekt'::text; END IF;
|
|
36856
|
+
|
|
36857
|
+
product_id := r.product_id; "actieUrl" := c_url;
|
|
36858
|
+
IF cardinality(blok) > 0 THEN
|
|
36859
|
+
oordeel := 'onmogelijk'; tekst := format('%s past niet op %s: %s.', r.product, naam, array_to_string(blok, '; '));
|
|
36860
|
+
ELSIF cardinality(mist) > 0 THEN
|
|
36861
|
+
oordeel := 'mist_gegevens';
|
|
36862
|
+
tekst := CASE WHEN 'belading niet ingesteld' = ANY(mist) THEN format('%s: belading niet ingesteld.', r.product)
|
|
36863
|
+
WHEN v_lfout IS NOT NULL AND v_lfout = ANY(mist) THEN format('%s: %s.', r.product, v_lfout)
|
|
36864
|
+
ELSE r.uitleg END;
|
|
36865
|
+
ELSIF cardinality(waar) > 0 THEN
|
|
36866
|
+
oordeel := 'waarschuwing'; tekst := format('%s: %s.', r.product, array_to_string(waar, '; '));
|
|
36867
|
+
ELSE
|
|
36868
|
+
oordeel := 'compleet'; tekst := format('%s: gegevens voor karindeling compleet.', r.product);
|
|
36869
|
+
END IF;
|
|
36870
|
+
RETURN NEXT;
|
|
36871
|
+
END LOOP;
|
|
36872
|
+
END $function$;
|
|
36873
|
+
-- 1.0.213 punt 6/2: verouderde kar ook bij aantalafwijking of zonder geldige regels.
|
|
36874
|
+
CREATE OR REPLACE FUNCTION public.logistics_cart_aantal_afwijking_core(p_cart_id uuid)
|
|
36875
|
+
RETURNS text[] LANGUAGE sql STABLE SET search_path TO 'public' AS $$
|
|
36876
|
+
-- Regels op deze kar waarvan het totaal aantal fust (over alle actieve karren) niet past bij de order:
|
|
36877
|
+
-- fust moet gelijk zijn aan het orderaantal (eenheid fust) of aan ceil(aantal ÷ planten per fust) (eenheid planten).
|
|
36878
|
+
-- Groepsartikelen (meerdere producten onder één orderregel) worden per lid afgerond en tellen hier niet mee.
|
|
36879
|
+
WITH r AS (
|
|
36880
|
+
SELECT DISTINCT ci.order_item_id FROM public.order_cart_items ci WHERE ci.cart_id = p_cart_id AND ci.order_item_id IS NOT NULL
|
|
36881
|
+
), s AS (
|
|
36882
|
+
SELECT oi.id, coalesce(oi.product_name, 'regel') naam, oi.quantity q, sum(ci.crates) fust,
|
|
36883
|
+
max(ci.plants_per_crate) ppc, count(DISTINCT ci.product_id) nprod,
|
|
36884
|
+
bool_or(ci.components IS NOT NULL AND ci.components::text NOT IN ('null','[]','{}')) comp
|
|
36885
|
+
FROM r JOIN public.order_items oi ON oi.id = r.order_item_id
|
|
36886
|
+
JOIN public.order_cart_items ci ON ci.order_item_id = oi.id
|
|
36887
|
+
JOIN public.order_carts c ON c.id = ci.cart_id AND c.archived_at IS NULL
|
|
36888
|
+
WHERE oi.quarantined_at IS NULL
|
|
36889
|
+
GROUP BY oi.id, oi.product_name, oi.quantity)
|
|
36890
|
+
SELECT array_agg(naam ORDER BY naam) FROM s
|
|
36891
|
+
WHERE NOT comp AND nprod <= 1 AND q IS NOT NULL AND q > 0
|
|
36892
|
+
AND fust <> q AND fust <> ceil(q::numeric / greatest(coalesce(ppc, 1), 1))
|
|
36893
|
+
$$;
|
|
36894
|
+
|
|
36895
|
+
CREATE OR REPLACE FUNCTION public.logistics_cart_verouderd_core(p_cart_id uuid)
|
|
36896
|
+
RETURNS jsonb LANGUAGE plpgsql STABLE SET search_path TO 'public'
|
|
36897
|
+
AS $function$
|
|
36898
|
+
DECLARE v_nr text; v_n int; v_live int; v_afw text[];
|
|
36899
|
+
BEGIN
|
|
36900
|
+
IF p_cart_id IS NULL THEN RETURN NULL; END IF;
|
|
36901
|
+
SELECT cart_number::text INTO v_nr FROM public.order_carts WHERE id = p_cart_id;
|
|
36902
|
+
IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = 'public' AND table_name = 'order_items' AND column_name = 'quarantined_at') THEN
|
|
36903
|
+
SELECT count(*) INTO v_n FROM public.order_cart_items ci JOIN public.order_items oi ON oi.id = ci.order_item_id
|
|
36904
|
+
WHERE ci.cart_id = p_cart_id AND oi.quarantined_at IS NOT NULL;
|
|
36905
|
+
IF coalesce(v_n, 0) > 0 THEN
|
|
36906
|
+
RETURN jsonb_build_object('verouderd', true, 'reden', 'quarantaine', 'regelsInQuarantaine', v_n,
|
|
36907
|
+
'blokkade', jsonb_build_object('code', 'kar_verouderd',
|
|
36908
|
+
'tekst', format('Kar %s heeft %s regel(s) die Verkoop in quarantaine heeft gezet. Deel de niet-geprinte karren opnieuw in.', coalesce(v_nr, '?'), v_n)));
|
|
36909
|
+
END IF;
|
|
36910
|
+
SELECT count(*) INTO v_live FROM public.order_cart_items ci LEFT JOIN public.order_items oi ON oi.id = ci.order_item_id
|
|
36911
|
+
WHERE ci.cart_id = p_cart_id AND coalesce(ci.crates, 0) > 0 AND oi.quarantined_at IS NULL;
|
|
36912
|
+
ELSE
|
|
36913
|
+
SELECT count(*) INTO v_live FROM public.order_cart_items ci WHERE ci.cart_id = p_cart_id AND coalesce(ci.crates, 0) > 0;
|
|
36914
|
+
END IF;
|
|
36915
|
+
IF coalesce(v_live, 0) = 0 THEN
|
|
36916
|
+
RETURN jsonb_build_object('verouderd', true, 'reden', 'leeg',
|
|
36917
|
+
'blokkade', jsonb_build_object('code', 'kar_leeg',
|
|
36918
|
+
'tekst', format('Kar %s heeft geen regels meer. Deel de niet-geprinte karren opnieuw in.', coalesce(v_nr, '?'))));
|
|
36919
|
+
END IF;
|
|
36920
|
+
v_afw := public.logistics_cart_aantal_afwijking_core(p_cart_id);
|
|
36921
|
+
IF coalesce(cardinality(v_afw), 0) > 0 THEN
|
|
36922
|
+
RETURN jsonb_build_object('verouderd', true, 'reden', 'aantal', 'producten', to_jsonb(v_afw),
|
|
36923
|
+
'blokkade', jsonb_build_object('code', 'kar_verouderd',
|
|
36924
|
+
'tekst', format('Kar %s: de aantallen wijken af van de order (%s). Deel de niet-geprinte karren opnieuw in.', coalesce(v_nr, '?'), array_to_string(v_afw, ', '))));
|
|
36925
|
+
END IF;
|
|
36926
|
+
RETURN NULL;
|
|
36927
|
+
END $function$;
|
|
36928
|
+
|
|
36929
|
+
-- "1 laag" i.p.v. "1 lagen".
|
|
36930
|
+
CREATE OR REPLACE FUNCTION public.logistics_kar_tekst(p_carrier_code text, p_lagen numeric, p_pct numeric)
|
|
36931
|
+
RETURNS text LANGUAGE sql STABLE SECURITY DEFINER SET search_path TO 'public' AS $$
|
|
36932
|
+
SELECT CASE WHEN p_lagen IS NULL THEN NULL ELSE
|
|
36933
|
+
replace(trim_scale(round(p_lagen, 1))::text, '.', ',') || CASE WHEN round(p_lagen, 1) = 1 THEN ' laag · ' ELSE ' lagen · ' END
|
|
36934
|
+
|| coalesce((SELECT nullif(btrim(t.name), '') FROM public.load_carrier_types t WHERE t.code = p_carrier_code ORDER BY t.is_active DESC LIMIT 1), 'Ladingdrager')
|
|
36935
|
+
|| CASE WHEN coalesce(public.logistics_extra_platen(p_lagen), 0) = 0 THEN ''
|
|
36936
|
+
WHEN public.logistics_extra_platen(p_lagen) = 1 THEN ' + 1 plaat'
|
|
36937
|
+
ELSE ' + ' || public.logistics_extra_platen(p_lagen) || ' platen' END
|
|
36938
|
+
|| CASE WHEN p_pct IS NULL THEN '' ELSE ' · ' || round(p_pct)::int || ' %' END END
|
|
36939
|
+
$$;
|
|
36940
|
+
CREATE OR REPLACE FUNCTION public.logistics_install_check_213()
|
|
36941
|
+
RETURNS TABLE(punt text, ok boolean, uitleg text) LANGUAGE sql STABLE SECURITY DEFINER SET search_path TO 'public' AS $$
|
|
36942
|
+
SELECT 'buffer niet splitsen', position('beschermd' IN pg_get_functiondef('public.logistics_rebuffer_simulate_open()'::regprocedure)) > 0,
|
|
36943
|
+
'Verzonden/afgemelde of vastliggende buffers blijven bij de voorbeeldberekening ongewijzigd'
|
|
36944
|
+
UNION ALL SELECT 'oordeel_many: hoofdverpakking eerst', position('logistics_product_hoofdverpakking' IN pg_get_functiondef('public.logistics_product_oordeel_many(uuid[])'::regprocedure)) > 0
|
|
36945
|
+
AND position('logistics_ladingdrager_resolve' IN pg_get_functiondef('public.logistics_product_oordeel_many(uuid[])'::regprocedure)) > 0,
|
|
36946
|
+
'Ladingdrager: hoofdverpakking → standaard werkwijze'
|
|
36947
|
+
UNION ALL SELECT 'kar verouderd bij aantalafwijking', to_regprocedure('public.logistics_cart_aantal_afwijking_core(uuid)') IS NOT NULL
|
|
36948
|
+
AND position('aantal_afwijking' IN pg_get_functiondef('public.logistics_cart_verouderd_core(uuid)'::regprocedure)) > 0,
|
|
36949
|
+
'Afwijkende aantallen of lege kar → verouderd: opnieuw indelen'
|
|
36950
|
+
UNION ALL SELECT 'karTekst enkelvoud', position(' laag · ' IN pg_get_functiondef('public.logistics_kar_tekst(text,numeric,numeric)'::regprocedure)) > 0,
|
|
36951
|
+
'"1 laag" in plaats van "1 lagen"'
|
|
36952
|
+
UNION ALL SELECT 'guard', to_regprocedure('public.logistics_acc_guard(text,text)') IS NOT NULL, 'Toegangscontrole aanwezig'
|
|
36953
|
+
$$;
|
|
36954
|
+
GRANT EXECUTE ON FUNCTION public.logistics_install_check_213() TO authenticated, service_role;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataGereedheidCard.d.ts","sourceRoot":"","sources":["../../src/components/DataGereedheidCard.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAU3E,KAAK,IAAI,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AACxG,KAAK,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAMzN,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,aAAa,GAAG;IAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAuB9H;AAED,KAAK,QAAQ,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACtE,KAAK,KAAK,GAAG;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAClI,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAS7C,CAAC;AAGF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQ7C,CAAC;AAGF,wBAAgB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"DataGereedheidCard.d.ts","sourceRoot":"","sources":["../../src/components/DataGereedheidCard.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAU3E,KAAK,IAAI,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AACxG,KAAK,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAMzN,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,aAAa,GAAG;IAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAuB9H;AAED,KAAK,QAAQ,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACtE,KAAK,KAAK,GAAG;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAClI,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAS7C,CAAC;AAGF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQ7C,CAAC;AAGF,wBAAgB,kBAAkB,gCAmMjC"}
|
|
@@ -78,6 +78,8 @@ export function DataGereedheidCard() {
|
|
|
78
78
|
const [bezig, setBezig] = useState(null);
|
|
79
79
|
const [fusten, setFusten] = useState(new Map());
|
|
80
80
|
const [dragers, setDragers] = useState(new Map());
|
|
81
|
+
// 1.0.213: het oordeel per product komt van de server (zelfde regel als de planner).
|
|
82
|
+
const [oordelen, setOordelen] = useState(new Map());
|
|
81
83
|
const floricodeNamen = useFloricodeLadingdragers();
|
|
82
84
|
const laden = useCallback(async () => {
|
|
83
85
|
setLoading(true);
|
|
@@ -88,6 +90,16 @@ export function DataGereedheidCard() {
|
|
|
88
90
|
const lijst = !error && Array.isArray(data) ? data : [];
|
|
89
91
|
if (!error)
|
|
90
92
|
setRijen(lijst);
|
|
93
|
+
const pids = Array.from(new Set(lijst.map((r) => r.product_id).filter(Boolean))).slice(0, 1000);
|
|
94
|
+
if (pids.length > 0) {
|
|
95
|
+
const { data: o, error: oe } = await supabase.rpc("logistics_product_oordeel_many", { p_product_ids: pids });
|
|
96
|
+
if (oe)
|
|
97
|
+
setFout(oe.message);
|
|
98
|
+
const ol = !oe && Array.isArray(o) ? o : [];
|
|
99
|
+
setOordelen(new Map(ol.map((x) => [String(x.product_id), String(x.oordeel)])));
|
|
100
|
+
}
|
|
101
|
+
else
|
|
102
|
+
setOordelen(new Map());
|
|
91
103
|
const fustIds = Array.from(new Set(lijst.map((r) => r.velden?.fust_type_id?.waarde).filter((x) => typeof x === "string")));
|
|
92
104
|
const codes = Array.from(new Set(lijst.map((r) => r.ladingdrager).filter((x) => !!x)));
|
|
93
105
|
if (fustIds.length > 0) {
|
|
@@ -123,19 +135,26 @@ export function DataGereedheidCard() {
|
|
|
123
135
|
};
|
|
124
136
|
const fysiek = (r) => fysiekVoorRegel(r, typeof r.velden?.fust_type_id?.waarde === "string" ? fusten.get(r.velden.fust_type_id.waarde) ?? null : null, r.ladingdrager ? dragers.get(r.ladingdrager) ?? null : null);
|
|
125
137
|
// 1.0.201: onmogelijk bovenaan, dan ontbrekende gegevens, dan alleen een waarschuwing (gewicht).
|
|
138
|
+
// 1.0.213: status volgt het serveroordeel (logistics_product_oordeel_many); alleen
|
|
139
|
+
// "onmogelijk" als de server dat zegt, ontbrekende gegevens → "Gegevens ontbreken".
|
|
126
140
|
const rang = (r) => {
|
|
127
|
-
|
|
141
|
+
const o = oordelen.get(String(r.product_id));
|
|
142
|
+
if (o === "onmogelijk")
|
|
128
143
|
return 0;
|
|
129
|
-
|
|
130
|
-
if (mist.length > 0)
|
|
144
|
+
if (o === "mist_gegevens")
|
|
131
145
|
return 1;
|
|
146
|
+
if (o == null) {
|
|
147
|
+
const mist = (Array.isArray(r.ontbrekend) ? r.ontbrekend : []).filter((v) => v !== "weight");
|
|
148
|
+
if (mist.length > 0)
|
|
149
|
+
return 1;
|
|
150
|
+
}
|
|
132
151
|
return 2;
|
|
133
152
|
};
|
|
134
153
|
const metGaten = rijen
|
|
135
|
-
.filter((r) => (Array.isArray(r.ontbrekend) && r.ontbrekend.length > 0) ||
|
|
154
|
+
.filter((r) => (Array.isArray(r.ontbrekend) && r.ontbrekend.length > 0) || oordelen.get(String(r.product_id)) === "onmogelijk")
|
|
136
155
|
.sort((a, b) => rang(a) - rang(b) || a.product.localeCompare(b.product));
|
|
137
156
|
const dragerNaam = (code) => code ? ladingdragerNaam(code, floricodeNamen, dragers.get(code)?.name ?? undefined) : "";
|
|
138
|
-
return (_jsxs(Card, { id: "gegevens-voor-karindeling", children: [_jsxs(CardHeader, { className: "flex flex-row items-start justify-between gap-4", children: [_jsxs("div", { children: [_jsx(CardTitle, { children: "Gegevens voor karindeling" }), _jsx(CardDescription, { children: "Producten in open orders waarvan een waarde ontbreekt. Een voorstel (berekend of van vergelijkbare producten) wordt pas gebruikt als je het hier invult en opslaat." })] }), _jsxs(Button, { variant: "outline", size: "sm", onClick: () => void laden(), disabled: loading, children: [_jsx(RefreshCw, { className: "h-4 w-4" }), "Verversen"] })] }), _jsxs(CardContent, { className: "space-y-3", children: [fout && _jsx("p", { className: "text-sm text-destructive", children: fout }), loading ? (_jsx(Skeleton, { className: "h-16 w-full" })) : metGaten.length === 0 ? (_jsx("p", { className: "text-sm text-muted-foreground", children: "Alle producten in open orders hebben de benodigde gegevens." })) : (metGaten.map((r) => (_jsxs("div", { className: "rounded-md border p-3 space-y-2", children: [_jsxs("div", { className: "flex flex-wrap items-baseline justify-between gap-2", children: [_jsx("span", { className: "font-medium", children: r.product }), _jsxs("span", { className: "text-xs text-muted-foreground", children: [rang(r) === 0 ? "Onmogelijk · " : rang(r) ===
|
|
157
|
+
return (_jsxs(Card, { id: "gegevens-voor-karindeling", children: [_jsxs(CardHeader, { className: "flex flex-row items-start justify-between gap-4", children: [_jsxs("div", { children: [_jsx(CardTitle, { children: "Gegevens voor karindeling" }), _jsx(CardDescription, { children: "Producten in open orders waarvan een waarde ontbreekt. Een voorstel (berekend of van vergelijkbare producten) wordt pas gebruikt als je het hier invult en opslaat." })] }), _jsxs(Button, { variant: "outline", size: "sm", onClick: () => void laden(), disabled: loading, children: [_jsx(RefreshCw, { className: "h-4 w-4" }), "Verversen"] })] }), _jsxs(CardContent, { className: "space-y-3", children: [fout && _jsx("p", { className: "text-sm text-destructive", children: fout }), loading ? (_jsx(Skeleton, { className: "h-16 w-full" })) : metGaten.length === 0 ? (_jsx("p", { className: "text-sm text-muted-foreground", children: "Alle producten in open orders hebben de benodigde gegevens." })) : (metGaten.map((r) => (_jsxs("div", { className: "rounded-md border p-3 space-y-2", children: [_jsxs("div", { className: "flex flex-wrap items-baseline justify-between gap-2", children: [_jsx("span", { className: "font-medium", children: r.product }), _jsxs("span", { className: "text-xs text-muted-foreground", children: [rang(r) === 0 ? "Onmogelijk · " : rang(r) === 1 ? "Gegevens ontbreken · " : "Compleet, 1 waarschuwing · ", r.in_open_order ? "In open order" : "Niet in open order", " \u00B7 ", METHODE_LABEL[r.methode] ?? "Indeling", r.ladingdrager ? ` · ${dragerNaam(r.ladingdrager)}` : ""] })] }), _jsx("p", { className: "text-xs text-muted-foreground", children: r.uitleg }), _jsxs("p", { className: "text-xs text-muted-foreground", children: ["Fust ", String(r.velden?.fust_type_id?.naam ?? "onbekend"), " (", bronTekst(r.velden?.fust_type_id?.bron), ") \u00B7 maten", " ", ["fust_length_mm", "fust_width_mm", "fust_height_mm"]
|
|
139
158
|
.map((k) => `${r.velden?.[k]?.waarde ?? "?"} mm (${bronTekst(r.velden?.[k]?.bron)})`)
|
|
140
159
|
.join(" × "), " ", "\u00B7 planthoogte inclusief pot ", r.velden?.plant_height_cm?.waarde != null ? `${r.velden.plant_height_cm.waarde} cm` : "onbekend", " (", bronTekst(r.velden?.plant_height_cm?.bron), ")"] }), r.ontbrekend.map((veld) => {
|
|
141
160
|
const k = `${r.product_id}:${veld}`;
|
package/dist-lib/index.d.ts
CHANGED
|
@@ -85,4 +85,6 @@ export * from './hooks/useShellAdres.js';
|
|
|
85
85
|
export { BeladingVerstuurderCard } from "./components/BeladingVerstuurderCard.js";
|
|
86
86
|
export { DocumentkeuzeCard } from "./components/DocumentkeuzeCard.js";
|
|
87
87
|
export * from './lib/extraPlaten.js';
|
|
88
|
+
export { logisticsPlanPreview } from './lib/planPreview.functions.js';
|
|
89
|
+
export * from './lib/planPreview.js';
|
|
88
90
|
//# sourceMappingURL=index.d.ts.map
|
package/dist-lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist-lib/index.js
CHANGED
|
@@ -99,3 +99,5 @@ export * from './hooks/useShellAdres.js';
|
|
|
99
99
|
export { BeladingVerstuurderCard } from "./components/BeladingVerstuurderCard.js";
|
|
100
100
|
export { DocumentkeuzeCard } from "./components/DocumentkeuzeCard.js";
|
|
101
101
|
export * from './lib/extraPlaten.js';
|
|
102
|
+
export { logisticsPlanPreview } from './lib/planPreview.functions.js';
|
|
103
|
+
export * from './lib/planPreview.js';
|
|
@@ -28593,6 +28593,21 @@ export type Database = {
|
|
|
28593
28593
|
};
|
|
28594
28594
|
Relationships: [];
|
|
28595
28595
|
};
|
|
28596
|
+
voorraad_placeholder_codes: {
|
|
28597
|
+
Row: {
|
|
28598
|
+
code: string;
|
|
28599
|
+
created_at: string;
|
|
28600
|
+
};
|
|
28601
|
+
Insert: {
|
|
28602
|
+
code: string;
|
|
28603
|
+
created_at?: string;
|
|
28604
|
+
};
|
|
28605
|
+
Update: {
|
|
28606
|
+
code?: string;
|
|
28607
|
+
created_at?: string;
|
|
28608
|
+
};
|
|
28609
|
+
Relationships: [];
|
|
28610
|
+
};
|
|
28596
28611
|
voorraad_publish_attempts: {
|
|
28597
28612
|
Row: {
|
|
28598
28613
|
action: string;
|
|
@@ -34982,6 +34997,12 @@ export type Database = {
|
|
|
34982
34997
|
Args: never;
|
|
34983
34998
|
Returns: Json;
|
|
34984
34999
|
};
|
|
35000
|
+
logistics_cart_aantal_afwijking_core: {
|
|
35001
|
+
Args: {
|
|
35002
|
+
p_cart_id: string;
|
|
35003
|
+
};
|
|
35004
|
+
Returns: string[];
|
|
35005
|
+
};
|
|
34985
35006
|
logistics_cart_archive: {
|
|
34986
35007
|
Args: {
|
|
34987
35008
|
p_confirm_count: number;
|
|
@@ -36285,6 +36306,14 @@ export type Database = {
|
|
|
36285
36306
|
uitleg: string;
|
|
36286
36307
|
}[];
|
|
36287
36308
|
};
|
|
36309
|
+
logistics_install_check_213: {
|
|
36310
|
+
Args: never;
|
|
36311
|
+
Returns: {
|
|
36312
|
+
ok: boolean;
|
|
36313
|
+
punt: string;
|
|
36314
|
+
uitleg: string;
|
|
36315
|
+
}[];
|
|
36316
|
+
};
|
|
36288
36317
|
logistics_is_beheer: {
|
|
36289
36318
|
Args: never;
|
|
36290
36319
|
Returns: boolean;
|
|
@@ -44001,6 +44030,18 @@ export type Database = {
|
|
|
44001
44030
|
};
|
|
44002
44031
|
Returns: Json;
|
|
44003
44032
|
};
|
|
44033
|
+
voorraad_correctie_1126: {
|
|
44034
|
+
Args: {
|
|
44035
|
+
p_uitvoeren?: boolean;
|
|
44036
|
+
};
|
|
44037
|
+
Returns: Json;
|
|
44038
|
+
};
|
|
44039
|
+
voorraad_correctie_1127: {
|
|
44040
|
+
Args: {
|
|
44041
|
+
p_uitvoeren?: boolean;
|
|
44042
|
+
};
|
|
44043
|
+
Returns: Json;
|
|
44044
|
+
};
|
|
44004
44045
|
voorraad_correctie_status: {
|
|
44005
44046
|
Args: {
|
|
44006
44047
|
p_correctie?: string;
|
|
@@ -44091,6 +44132,26 @@ export type Database = {
|
|
|
44091
44132
|
};
|
|
44092
44133
|
Returns: boolean;
|
|
44093
44134
|
};
|
|
44135
|
+
voorraad_packing_from_floriday: {
|
|
44136
|
+
Args: {
|
|
44137
|
+
p_product_id: string;
|
|
44138
|
+
p_uitvoeren: boolean;
|
|
44139
|
+
};
|
|
44140
|
+
Returns: Json;
|
|
44141
|
+
};
|
|
44142
|
+
voorraad_packing_missing: {
|
|
44143
|
+
Args: {
|
|
44144
|
+
p_packing: Json;
|
|
44145
|
+
};
|
|
44146
|
+
Returns: string[];
|
|
44147
|
+
};
|
|
44148
|
+
voorraad_placeholder_code_reason: {
|
|
44149
|
+
Args: {
|
|
44150
|
+
p_code: string;
|
|
44151
|
+
p_name: string;
|
|
44152
|
+
};
|
|
44153
|
+
Returns: string;
|
|
44154
|
+
};
|
|
44094
44155
|
voorraad_production_enabled: {
|
|
44095
44156
|
Args: never;
|
|
44096
44157
|
Returns: boolean;
|