@flowselections/pick-schermen-kwekers 1.0.94 → 1.0.95

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.
@@ -37,4 +37,10 @@ export declare function reprintQuestion(printedAt: string | null, tz: string | n
37
37
  export declare const ACCEPTED_STATUSES: Set<string>;
38
38
  /** Wachtrij-telling als echt getal: "12 orders nog te printen". */
39
39
  export declare function todoCountText(n: number): string;
40
+ /**
41
+ * Bevestigvraag van de Engine (`payload.bevestigVraag`) voor een kaart: de
42
+ * eerste gevulde vraag van zijn karregels, anders null. Het scherm rekent zelf
43
+ * nooit of een kar vol is; het toont alleen wat de Engine vraagt.
44
+ */
45
+ export declare function confirmQuestionOf(card: WerkvloerCard | null | undefined): string | null;
40
46
  //# sourceMappingURL=werkvloer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"werkvloer.d.ts","sourceRoot":"","sources":["../../src/lib/werkvloer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAIrD;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,qDAAqD;IACrD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAsBlE;AAED,uFAAuF;AACvF,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAM7D;AASD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAGzD;AAED,yDAAyD;AACzD,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAIvD;AAcD,gFAAgF;AAChF,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,OAAa,GAAG,MAAM,GAAG,IAAI,CASjG;AAED,2CAA2C;AAC3C,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAE9E;AAED,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAI1F;AAED,qDAAqD;AACrD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAGrE;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAGnF;AAED,2DAA2D;AAC3D,eAAO,MAAM,iBAAiB,aAA6E,CAAC;AAE5G,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C"}
1
+ {"version":3,"file":"werkvloer.d.ts","sourceRoot":"","sources":["../../src/lib/werkvloer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAIrD;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,qDAAqD;IACrD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAsBlE;AAED,uFAAuF;AACvF,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAM7D;AASD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAGzD;AAED,yDAAyD;AACzD,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAIvD;AAcD,gFAAgF;AAChF,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,OAAa,GAAG,MAAM,GAAG,IAAI,CASjG;AAED,2CAA2C;AAC3C,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAE9E;AAED,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAI1F;AAED,qDAAqD;AACrD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAGrE;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAGnF;AAED,2DAA2D;AAC3D,eAAO,MAAM,iBAAiB,aAA6E,CAAC;AAE5G,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAMD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAQvF"}
@@ -119,3 +119,18 @@ export function todoCountText(n) {
119
119
  function textOf(v) {
120
120
  return typeof v === "string" && v.trim() ? v.trim() : null;
121
121
  }
122
+ /**
123
+ * Bevestigvraag van de Engine (`payload.bevestigVraag`) voor een kaart: de
124
+ * eerste gevulde vraag van zijn karregels, anders null. Het scherm rekent zelf
125
+ * nooit of een kar vol is; het toont alleen wat de Engine vraagt.
126
+ */
127
+ export function confirmQuestionOf(card) {
128
+ const rows = Array.isArray(card?.rows) ? card.rows : [];
129
+ for (const r of rows) {
130
+ const p = (r.payload && typeof r.payload === "object" ? r.payload : {});
131
+ const q = p["bevestigVraag"];
132
+ if (typeof q === "string" && q.trim() !== "")
133
+ return q.trim();
134
+ }
135
+ return null;
136
+ }
@@ -47,3 +47,13 @@ describe("werkvloer", () => {
47
47
  expect(todoCountText(12)).toBe("12 orders nog te printen");
48
48
  });
49
49
  });
50
+ import { confirmQuestionOf as _cq } from "./werkvloer.js";
51
+ describe("confirmQuestionOf (bevestigVraag van de Engine)", () => {
52
+ const card = (payloads) => ({ key: "k", rows: payloads.map((payload, i) => ({ id: String(i), payload })) });
53
+ it("geeft de vraag van de Engine terug als die gevuld is", () => {
54
+ expect(_cq(card([{}, { bevestigVraag: "Deze kar is nog niet vol. Toch nu printen?" }]))).toBe("Deze kar is nog niet vol. Toch nu printen?");
55
+ });
56
+ it("geen vraag bij een volle kar (leeg veld)", () => {
57
+ expect(_cq(card([{ bevestigVraag: "" }, { bevestigVraag: null }]))).toBeNull();
58
+ });
59
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowselections/pick-schermen-kwekers",
3
- "version": "1.0.94",
3
+ "version": "1.0.95",
4
4
  "flowselections": {
5
5
  "moduleId": "pick-schermen",
6
6
  "schema": {
@@ -6569,4 +6569,54 @@ BEGIN
6569
6569
  VALUES ('pick_queue', NEW.id, TG_OP, auth.uid(), v_o, v_n);
6570
6570
  RETURN NEW;
6571
6571
  END; $function$;
6572
- GRANT EXECUTE ON FUNCTION public.pick_queue_audit() TO anon, authenticated, service_role;
6572
+ GRANT EXECUTE ON FUNCTION public.pick_queue_audit() TO anon, authenticated, service_role;
6573
+ -- ==== 20261111093706_3c5ab944-e36a-4e47-9a41-681415615661.sql ====
6574
+ CREATE INDEX IF NOT EXISTS idx_pick_station_history_created_at ON public.pick_station_history USING btree (created_at);
6575
+
6576
+ CREATE OR REPLACE FUNCTION public.pick_cleanup_history()
6577
+ RETURNS jsonb
6578
+ LANGUAGE plpgsql
6579
+ VOLATILE
6580
+ SECURITY DEFINER
6581
+ SET search_path TO 'public'
6582
+ AS $function$
6583
+ DECLARE
6584
+ v_days integer; v_start timestamptz := clock_timestamp(); v_total integer := 0; n integer;
6585
+ v_bron text := 'standaard'; v_max integer := 5000; v_portie integer := 1000; v_rest boolean := false;
6586
+ BEGIN
6587
+ IF current_user NOT IN ('postgres','service_role','supabase_admin')
6588
+ AND NOT COALESCE(public.has_role(auth.uid(), 'admin'), false) THEN
6589
+ RAISE EXCEPTION 'Geen toegang tot het opruimen van de pickhistorie.' USING ERRCODE = '42501';
6590
+ END IF;
6591
+ IF to_regprocedure('public.logistics_retention_days(text)') IS NOT NULL THEN
6592
+ BEGIN
6593
+ EXECUTE 'SELECT public.logistics_retention_days($1)' INTO v_days USING 'pick_history_retention_days';
6594
+ v_bron := 'engine';
6595
+ EXCEPTION WHEN OTHERS THEN
6596
+ RAISE WARNING 'pick_cleanup_history: termijn uit Engine niet leesbaar (%), standaard 30 dagen', SQLERRM;
6597
+ v_days := NULL;
6598
+ END;
6599
+ END IF;
6600
+ IF v_days IS NULL OR v_days < 1 THEN v_days := 30; v_bron := 'standaard'; END IF;
6601
+
6602
+ BEGIN
6603
+ LOOP
6604
+ WITH weg AS (SELECT id FROM public.pick_station_history
6605
+ WHERE created_at < now() - make_interval(days => v_days)
6606
+ ORDER BY created_at LIMIT LEAST(v_portie, v_max - v_total))
6607
+ DELETE FROM public.pick_station_history h USING weg WHERE h.id = weg.id;
6608
+ GET DIAGNOSTICS n = ROW_COUNT;
6609
+ v_total := v_total + n;
6610
+ IF n = 0 THEN EXIT; END IF;
6611
+ IF v_total >= v_max OR clock_timestamp() - v_start > interval '10 seconds' THEN v_rest := true; EXIT; END IF;
6612
+ END LOOP;
6613
+ EXCEPTION WHEN OTHERS THEN
6614
+ RAISE WARNING 'pick_cleanup_history mislukt na % verwijderde regels: % (%)', v_total, SQLERRM, SQLSTATE;
6615
+ RAISE;
6616
+ END;
6617
+ RETURN jsonb_build_object('verwijderd', v_total, 'termijn_dagen', v_days, 'bron', v_bron,
6618
+ 'mogelijk_meer', v_rest,
6619
+ 'duur_ms', round(extract(epoch FROM clock_timestamp() - v_start) * 1000));
6620
+ END $function$;
6621
+ REVOKE ALL ON FUNCTION public.pick_cleanup_history() FROM PUBLIC, anon, authenticated;
6622
+ GRANT EXECUTE ON FUNCTION public.pick_cleanup_history() TO service_role;