@flowselections/layout-maker 1.57.2 → 1.58.1

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.
@@ -7,7 +7,7 @@ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
7
7
  // gewijzigd, alleen getoond met een link.
8
8
  // ============================================================================
9
9
  import { useState } from "react";
10
- import { Badge, Button, Card, CardContent, CardDescription, CardHeader, CardTitle, toast } from "@flowselections/core";
10
+ import { Badge, Button, Card, CardContent, CardDescription, CardHeader, CardTitle, toast, useShellModules } from "@flowselections/core";
11
11
  import { AlertTriangle, ExternalLink } from "lucide-react";
12
12
  import { documentTypeLabel } from "../lib/documentTypes.js";
13
13
  import { maakStandaardLayout } from "../lib/useDocumentData.js";
@@ -43,7 +43,8 @@ export function LayoutVerwijzingenKaart({ onGewijzigd }) {
43
43
  })] }, s.documenttype))) })] }));
44
44
  }
45
45
  function VerwijzingRegel({ v, naarStandaard, beheerder, onKlaar, }) {
46
- const plek = plekVanVerwijzing(v);
46
+ const shell = useShellModules();
47
+ const plek = plekVanVerwijzing(v, (shell?.modules ?? null));
47
48
  return (_jsxs("li", { className: "flex flex-wrap items-center gap-2 text-xs", children: [_jsxs("span", { children: [plek.module, " \u203A ", plek.scherm, v.rij_naam ? ` (${v.rij_naam}${v.rij_actief === false ? ", niet actief" : ""})` : v.rij_actief === false ? " (niet actief)" : ""] }), !isEigenVerwijzing(v) && plek.link ? (_jsxs("a", { href: plek.link, className: "text-primary inline-flex items-center gap-1 underline", children: ["Openen ", _jsx(ExternalLink, { className: "h-3 w-3" })] })) : null, naarStandaard ? (_jsxs(Button, { size: "sm", variant: "ghost", disabled: !beheerder, title: beheerder ? undefined : "Alleen beheerders kunnen dit wijzigen", onClick: async () => {
48
49
  if (!window.confirm(`Deze regel laten wijzen naar "${naarStandaard.naam}"?`))
49
50
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"WerkplekOmzettingStap.d.ts","sourceRoot":"","sources":["../../src/components/WerkplekOmzettingStap.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAA+B,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAW9F,wBAAgB,qBAAqB,CAAC,EACpC,QAAQ,EAAE,KAAK,EACf,QAAQ,EACR,SAAS,EACT,OAAO,EACP,WAAW,GACZ,EAAE;IACD,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,+BAuFA"}
1
+ {"version":3,"file":"WerkplekOmzettingStap.d.ts","sourceRoot":"","sources":["../../src/components/WerkplekOmzettingStap.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAA+B,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAW9F,wBAAgB,qBAAqB,CAAC,EACpC,QAAQ,EAAE,KAAK,EACf,QAAQ,EACR,SAAS,EACT,OAAO,EACP,WAAW,GACZ,EAAE;IACD,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,+BA8FA"}
@@ -26,7 +26,7 @@ export function WerkplekOmzettingStap({ voorstel: begin, printers, beheerder, on
26
26
  return (_jsxs("div", { className: "space-y-3 text-sm", children: [_jsx("p", { children: "Op basis van de huidige instellingen stelt de module deze werkplekken voor. Controleer per documentsoort de printer van nu en die van na de omzetting. Er wordt pas iets aangemaakt als je bevestigt." }), voorstel.map((w, i) => {
27
27
  const etiket = printers.find((p) => p.id === w.label_printer_id)?.geladen_etiket;
28
28
  const verschillen = w.soorten.filter((s) => s.verschil).length;
29
- return (_jsxs("div", { className: "space-y-2 rounded border p-2", "data-werkplek-voorstel": w.print_plek_id ?? "kantoor", children: [_jsxs("div", { className: "grid gap-2 sm:grid-cols-[8rem_1fr]", children: [_jsx("span", { children: "Naam" }), _jsx(Input, { value: w.naam, disabled: w.bestaat || !beheerder, onChange: (e) => wijzig(i, { naam: e.target.value }) }), _jsx("span", { children: "A4-printer" }), _jsxs("select", { className: selectKlasse, disabled: w.bestaat || !beheerder, value: w.a4_printer_id ?? "", onChange: (e) => wijzig(i, { a4_printer_id: e.target.value || null }), children: [_jsx("option", { value: "", children: "\u2014 geen \u2014" }), bruikbaar.map((p) => _jsx("option", { value: p.id, children: printerTitel(p) }, p.id))] }), _jsx("span", { children: "Labelprinter" }), _jsxs("select", { className: selectKlasse, disabled: w.bestaat || !beheerder, value: w.label_printer_id ?? "", onChange: (e) => wijzig(i, { label_printer_id: e.target.value || null }), children: [_jsx("option", { value: "", children: "\u2014 geen \u2014" }), bruikbaar.map((p) => _jsx("option", { value: p.id, children: printerTitel(p) }, p.id))] }), _jsx("span", { children: "Geladen etiket" }), _jsx("span", { className: etiket ? "" : "text-destructive", children: etiket ? JSON.stringify(etiket) : "nog niet ingesteld — stel het in bij Werkplekken" })] }), _jsxs("div", { className: "flex items-center gap-2", children: [w.print_plek_id ? _jsx(Badge, { variant: "outline", children: "gekoppeld aan printplek" }) : _jsx(Badge, { variant: "outline", children: "op basis van standaardregels" }), w.bestaat ? _jsx(Badge, { variant: "secondary", children: "bestaat al \u2014 wordt overgeslagen" }) : null, _jsxs(Badge, { variant: verschillen ? "destructive" : "secondary", children: [verschillen, " verschillen"] })] }), _jsxs("table", { className: "w-full text-xs", children: [_jsx("thead", { children: _jsxs("tr", { className: "text-muted-foreground text-left", children: [_jsx("th", { className: "py-0.5", children: "Documentsoort" }), _jsx("th", { children: "Nu" }), _jsx("th", { children: "Bron nu" }), _jsx("th", { children: "Na omzetting" })] }) }), _jsx("tbody", { children: w.soorten.map((s) => (_jsxs("tr", { className: s.verschil ? "bg-destructive/10 font-medium" : "", "data-verschil": s.verschil ? "ja" : "nee", children: [_jsx("td", { className: "py-0.5", children: documentTypeLabel(s.documenttype) }), _jsx("td", { children: titel(s.printer_id) }), _jsx("td", { children: BRON[s.bron ?? "geen"] ?? s.bron }), _jsxs("td", { children: [titel(s.na_printer_id), s.klasse === "label" ? " (label)" : " (A4)"] })] }, s.documenttype))) })] })] }, `${w.print_plek_id ?? "kantoor"}`));
29
+ return (_jsxs("div", { className: "space-y-2 rounded border p-2", "data-werkplek-voorstel": w.print_plek_id ?? "kantoor", children: [_jsxs("div", { className: "grid gap-2 sm:grid-cols-[8rem_1fr]", children: [_jsx("span", { children: "Naam" }), _jsx(Input, { value: w.naam, disabled: w.bestaat || !beheerder, onChange: (e) => wijzig(i, { naam: e.target.value }) }), _jsx("span", { children: "A4-printer" }), _jsxs("select", { className: selectKlasse, disabled: w.bestaat || !beheerder, value: w.a4_printer_id ?? "", onChange: (e) => wijzig(i, { a4_printer_id: e.target.value || null }), children: [_jsx("option", { value: "", children: "\u2014 geen \u2014" }), bruikbaar.map((p) => _jsx("option", { value: p.id, children: printerTitel(p) }, p.id))] }), _jsx("span", { children: "Labelprinter" }), _jsxs("select", { className: selectKlasse, disabled: w.bestaat || !beheerder, value: w.label_printer_id ?? "", onChange: (e) => wijzig(i, { label_printer_id: e.target.value || null }), children: [_jsx("option", { value: "", children: "\u2014 geen \u2014" }), bruikbaar.map((p) => _jsx("option", { value: p.id, children: printerTitel(p) }, p.id))] }), _jsx("span", { children: "Geladen etiket" }), _jsx("span", { className: etiket ? "" : "text-destructive", children: etiket ? JSON.stringify(etiket) : "nog niet ingesteld — stel het in bij Werkplekken" })] }), _jsxs("div", { className: "flex items-center gap-2", children: [w.print_plek_id ? _jsx(Badge, { variant: "outline", children: "gekoppeld aan printplek" }) : _jsx(Badge, { variant: "outline", children: "op basis van standaardregels" }), w.bestaat ? _jsx(Badge, { variant: "secondary", children: "bestaat al \u2014 wordt overgeslagen" }) : null, _jsxs(Badge, { variant: verschillen ? "destructive" : "secondary", children: [verschillen, " verschillen"] })] }), _jsxs("table", { className: "w-full text-xs", children: [_jsx("thead", { children: _jsxs("tr", { className: "text-muted-foreground text-left", children: [_jsx("th", { className: "py-0.5", children: "Documentsoort" }), _jsx("th", { children: "Nu" }), _jsx("th", { children: "Bron nu" }), _jsx("th", { children: "Na omzetting" })] }) }), _jsx("tbody", { children: w.soorten.map((s) => (_jsxs("tr", { className: s.verschil ? "bg-destructive/10 font-medium" : "", "data-verschil": s.verschil ? "ja" : "nee", children: [_jsxs("td", { className: "py-0.5", children: [documentTypeLabel(s.documenttype), s.geen_etiketlayout ? (_jsx("div", { className: "text-destructive", "data-geen-etiketlayout": "ja", children: "Deze soort heeft nog geen etiketlayout (layout staat op A4)" })) : null] }), _jsx("td", { children: titel(s.printer_id) }), _jsx("td", { children: BRON[s.bron ?? "geen"] ?? s.bron }), _jsxs("td", { children: [titel(s.na_printer_id), s.klasse === "label" ? " (label)" : " (A4)"] })] }, s.documenttype))) })] })] }, `${w.print_plek_id ?? "kantoor"}`));
30
30
  }), !beheerder ? _jsx("p", { className: "text-muted-foreground", children: "Alleen beheerders kunnen dit wijzigen." }) : null, _jsxs("div", { className: "flex justify-between", children: [_jsx(Button, { variant: "ghost", onClick: onOverslaan, children: "Overslaan, zelf instellen" }), _jsx(Button, { disabled: !beheerder || bezig || !nieuw.length || nieuw.some((w) => !w.naam.trim() || (!w.a4_printer_id && !w.label_printer_id)), onClick: async () => {
31
31
  if (!window.confirm(`${nieuw.length} werkplek(ken) aanmaken? De verschillen hierboven gaan dan gelden voor wie deze werkplek kiest.`))
32
32
  return;
@@ -2611,6 +2611,7 @@ export type Database = {
2611
2611
  twinfield_base_snapshot: Json | null;
2612
2612
  twinfield_base_version: number | null;
2613
2613
  twinfield_code: string | null;
2614
+ twinfield_create_on_insert: boolean;
2614
2615
  twinfield_last_hash: string | null;
2615
2616
  twinfield_missing_since: string | null;
2616
2617
  twinfield_present: boolean;
@@ -2702,6 +2703,7 @@ export type Database = {
2702
2703
  twinfield_base_snapshot?: Json | null;
2703
2704
  twinfield_base_version?: number | null;
2704
2705
  twinfield_code?: string | null;
2706
+ twinfield_create_on_insert?: boolean;
2705
2707
  twinfield_last_hash?: string | null;
2706
2708
  twinfield_missing_since?: string | null;
2707
2709
  twinfield_present?: boolean;
@@ -2793,6 +2795,7 @@ export type Database = {
2793
2795
  twinfield_base_snapshot?: Json | null;
2794
2796
  twinfield_base_version?: number | null;
2795
2797
  twinfield_code?: string | null;
2798
+ twinfield_create_on_insert?: boolean;
2796
2799
  twinfield_last_hash?: string | null;
2797
2800
  twinfield_missing_since?: string | null;
2798
2801
  twinfield_present?: boolean;
@@ -7061,6 +7064,59 @@ export type Database = {
7061
7064
  }
7062
7065
  ];
7063
7066
  };
7067
+ floriday_customer_sticker_upload_requests_cache: {
7068
+ Row: {
7069
+ connection_id: string;
7070
+ created_at: string;
7071
+ customer_sticker_id: string | null;
7072
+ data: Json;
7073
+ expires_on: string | null;
7074
+ fetched_at: string;
7075
+ floriday_id: string;
7076
+ id: string;
7077
+ responded_on: string | null;
7078
+ sales_order_id: string | null;
7079
+ sequence_number: number;
7080
+ status: string | null;
7081
+ };
7082
+ Insert: {
7083
+ connection_id: string;
7084
+ created_at?: string;
7085
+ customer_sticker_id?: string | null;
7086
+ data?: Json;
7087
+ expires_on?: string | null;
7088
+ fetched_at?: string;
7089
+ floriday_id: string;
7090
+ id?: string;
7091
+ responded_on?: string | null;
7092
+ sales_order_id?: string | null;
7093
+ sequence_number?: number;
7094
+ status?: string | null;
7095
+ };
7096
+ Update: {
7097
+ connection_id?: string;
7098
+ created_at?: string;
7099
+ customer_sticker_id?: string | null;
7100
+ data?: Json;
7101
+ expires_on?: string | null;
7102
+ fetched_at?: string;
7103
+ floriday_id?: string;
7104
+ id?: string;
7105
+ responded_on?: string | null;
7106
+ sales_order_id?: string | null;
7107
+ sequence_number?: number;
7108
+ status?: string | null;
7109
+ };
7110
+ Relationships: [
7111
+ {
7112
+ foreignKeyName: "floriday_customer_sticker_upload_requests_ca_connection_id_fkey";
7113
+ columns: ["connection_id"];
7114
+ isOneToOne: false;
7115
+ referencedRelation: "floriday_connections";
7116
+ referencedColumns: ["id"];
7117
+ }
7118
+ ];
7119
+ };
7064
7120
  floriday_customer_stickers_cache: {
7065
7121
  Row: {
7066
7122
  connection_id: string;
@@ -7388,6 +7444,59 @@ export type Database = {
7388
7444
  }
7389
7445
  ];
7390
7446
  };
7447
+ floriday_document_versions: {
7448
+ Row: {
7449
+ bucket: string;
7450
+ byte_size: number | null;
7451
+ connection_id: string;
7452
+ content_sha256: string;
7453
+ content_type: string | null;
7454
+ created_at: string;
7455
+ delivery_date: string | null;
7456
+ document_id: string;
7457
+ document_kind: string;
7458
+ id: string;
7459
+ storage_path: string;
7460
+ version: number;
7461
+ };
7462
+ Insert: {
7463
+ bucket: string;
7464
+ byte_size?: number | null;
7465
+ connection_id: string;
7466
+ content_sha256: string;
7467
+ content_type?: string | null;
7468
+ created_at?: string;
7469
+ delivery_date?: string | null;
7470
+ document_id: string;
7471
+ document_kind: string;
7472
+ id?: string;
7473
+ storage_path: string;
7474
+ version: number;
7475
+ };
7476
+ Update: {
7477
+ bucket?: string;
7478
+ byte_size?: number | null;
7479
+ connection_id?: string;
7480
+ content_sha256?: string;
7481
+ content_type?: string | null;
7482
+ created_at?: string;
7483
+ delivery_date?: string | null;
7484
+ document_id?: string;
7485
+ document_kind?: string;
7486
+ id?: string;
7487
+ storage_path?: string;
7488
+ version?: number;
7489
+ };
7490
+ Relationships: [
7491
+ {
7492
+ foreignKeyName: "floriday_document_versions_connection_id_fkey";
7493
+ columns: ["connection_id"];
7494
+ isOneToOne: false;
7495
+ referencedRelation: "floriday_connections";
7496
+ referencedColumns: ["id"];
7497
+ }
7498
+ ];
7499
+ };
7391
7500
  floriday_fulfillment_orders_cache: {
7392
7501
  Row: {
7393
7502
  auction_date: string | null;
@@ -29055,6 +29164,10 @@ export type Database = {
29055
29164
  Args: never;
29056
29165
  Returns: Json;
29057
29166
  };
29167
+ dashboard_alert_counts_v2: {
29168
+ Args: never;
29169
+ Returns: Json;
29170
+ };
29058
29171
  dashboard_alert_rows: {
29059
29172
  Args: {
29060
29173
  check_id: string;
@@ -29062,6 +29175,17 @@ export type Database = {
29062
29175
  };
29063
29176
  Returns: Json;
29064
29177
  };
29178
+ dashboard_alert_rows_v2: {
29179
+ Args: {
29180
+ check_id: string;
29181
+ row_limit?: number;
29182
+ };
29183
+ Returns: Json;
29184
+ };
29185
+ dashboard_ensure_start_page: {
29186
+ Args: never;
29187
+ Returns: string;
29188
+ };
29065
29189
  dashboard_funnel_betaald: {
29066
29190
  Args: {
29067
29191
  _bedragen: number[];
@@ -29083,6 +29207,12 @@ export type Database = {
29083
29207
  table_name: string;
29084
29208
  }[];
29085
29209
  };
29210
+ dashboard_order_state: {
29211
+ Args: {
29212
+ _order_id: string;
29213
+ };
29214
+ Returns: string;
29215
+ };
29086
29216
  dashboard_pit_tellingen: {
29087
29217
  Args: {
29088
29218
  _mail_connecties?: string[];
@@ -30162,6 +30292,13 @@ export type Database = {
30162
30292
  };
30163
30293
  Returns: Json;
30164
30294
  };
30295
+ invoice_status_transition_ok: {
30296
+ Args: {
30297
+ _from: string;
30298
+ _to: string;
30299
+ };
30300
+ Returns: boolean;
30301
+ };
30165
30302
  invoice_update_full: {
30166
30303
  Args: {
30167
30304
  _invoice_id: string;
@@ -33962,6 +34099,13 @@ export type Database = {
33962
34099
  };
33963
34100
  Returns: Json;
33964
34101
  };
34102
+ pickstation_cart_sticker_state: {
34103
+ Args: {
34104
+ p_cart_id: string;
34105
+ p_slug: string;
34106
+ };
34107
+ Returns: Json;
34108
+ };
33965
34109
  pickstation_get_orders_raw: {
33966
34110
  Args: never;
33967
34111
  Returns: Json;
@@ -33984,6 +34128,13 @@ export type Database = {
33984
34128
  };
33985
34129
  Returns: undefined;
33986
34130
  };
34131
+ pickstation_order_sticker_meldingen: {
34132
+ Args: {
34133
+ p_order_id: string;
34134
+ p_slug: string;
34135
+ };
34136
+ Returns: Json;
34137
+ };
33987
34138
  pickstation_resolve_delivery_orders: {
33988
34139
  Args: {
33989
34140
  p_sales_order_ids: string[];
@@ -34127,6 +34278,12 @@ export type Database = {
34127
34278
  };
34128
34279
  Returns: string;
34129
34280
  };
34281
+ print_is_etiketsoort: {
34282
+ Args: {
34283
+ _t: string;
34284
+ };
34285
+ Returns: boolean;
34286
+ };
34130
34287
  print_job_status_uitgebreid: {
34131
34288
  Args: {
34132
34289
  _job_id: string;
@@ -36201,7 +36358,7 @@ export type Database = {
36201
36358
  Enums: {
36202
36359
  ai_import_status: "nieuw" | "verwerken" | "bevestigen" | "klaar" | "mislukt";
36203
36360
  app_role: "admin" | "planner" | "monteur" | "administratie" | "ai_admin" | "manager" | "warehouse" | "sales" | "developer" | "receptie" | "superadmin";
36204
- doc_layout_type: "pakbon" | "factuur" | "offerte" | "orderbevestiging" | "etiket" | "verzendlabel" | "productlabel" | "barcode_label" | "magazijnlijst" | "controlelijst" | "transportdocument" | "vrij" | "sticker" | "productiebon" | "veilingbon" | "afleverbrief" | "veilingbrief";
36361
+ doc_layout_type: "pakbon" | "factuur" | "offerte" | "orderbevestiging" | "etiket" | "verzendlabel" | "productlabel" | "barcode_label" | "magazijnlijst" | "controlelijst" | "transportdocument" | "vrij" | "sticker" | "productiebon" | "veilingbon" | "afleverbrief" | "veilingbrief" | "traysticker";
36205
36362
  doc_orientation: "portrait" | "landscape";
36206
36363
  exact_env: "staging" | "live";
36207
36364
  exact_push_status: "pending" | "sent" | "error";
@@ -36272,7 +36429,7 @@ export declare const Constants: {
36272
36429
  readonly Enums: {
36273
36430
  readonly ai_import_status: readonly ["nieuw", "verwerken", "bevestigen", "klaar", "mislukt"];
36274
36431
  readonly app_role: readonly ["admin", "planner", "monteur", "administratie", "ai_admin", "manager", "warehouse", "sales", "developer", "receptie", "superadmin"];
36275
- readonly doc_layout_type: readonly ["pakbon", "factuur", "offerte", "orderbevestiging", "etiket", "verzendlabel", "productlabel", "barcode_label", "magazijnlijst", "controlelijst", "transportdocument", "vrij", "sticker", "productiebon", "veilingbon", "afleverbrief", "veilingbrief"];
36432
+ readonly doc_layout_type: readonly ["pakbon", "factuur", "offerte", "orderbevestiging", "etiket", "verzendlabel", "productlabel", "barcode_label", "magazijnlijst", "controlelijst", "transportdocument", "vrij", "sticker", "productiebon", "veilingbon", "afleverbrief", "veilingbrief", "traysticker"];
36276
36433
  readonly doc_orientation: readonly ["portrait", "landscape"];
36277
36434
  readonly exact_env: readonly ["staging", "live"];
36278
36435
  readonly exact_push_status: readonly ["pending", "sent", "error"];