@flowselections/floriday-verkoop-module 1.0.18 → 1.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist-lib/integrations/supabase/auth-middleware.d.ts +62 -0
  2. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  3. package/dist-lib/integrations/supabase/client.d.ts +62 -0
  4. package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
  5. package/dist-lib/integrations/supabase/client.server.d.ts +62 -0
  6. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  7. package/dist-lib/integrations/supabase/types.d.ts +62 -0
  8. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  9. package/dist-lib/lib/cart-lock.functions.d.ts +62 -0
  10. package/dist-lib/lib/cart-lock.functions.d.ts.map +1 -1
  11. package/dist-lib/lib/cart-replan.functions.d.ts +124 -0
  12. package/dist-lib/lib/cart-replan.functions.d.ts.map +1 -1
  13. package/dist-lib/lib/create-order.functions.d.ts +744 -0
  14. package/dist-lib/lib/create-order.functions.d.ts.map +1 -1
  15. package/dist-lib/lib/create-order.functions.js +63 -44
  16. package/dist-lib/lib/floriday-auto-fulfillment.functions.d.ts +186 -0
  17. package/dist-lib/lib/floriday-auto-fulfillment.functions.d.ts.map +1 -1
  18. package/dist-lib/lib/floriday-logistic-labels.functions.d.ts +62 -0
  19. package/dist-lib/lib/floriday-logistic-labels.functions.d.ts.map +1 -1
  20. package/dist-lib/lib/floriday-public.functions.d.ts +434 -0
  21. package/dist-lib/lib/floriday-public.functions.d.ts.map +1 -1
  22. package/dist-lib/lib/floriday-writes.functions.d.ts +310 -0
  23. package/dist-lib/lib/floriday-writes.functions.d.ts.map +1 -1
  24. package/dist-lib/lib/order-shipments.functions.d.ts +248 -0
  25. package/dist-lib/lib/order-shipments.functions.d.ts.map +1 -1
  26. package/dist-lib/lib/salesorders.functions.d.ts +186 -0
  27. package/dist-lib/lib/salesorders.functions.d.ts.map +1 -1
  28. package/dist-lib/lib/tradeitems.functions.d.ts +62 -0
  29. package/dist-lib/lib/tradeitems.functions.d.ts.map +1 -1
  30. package/dist-lib/lib/useSalesOrdersQuery.d.ts.map +1 -1
  31. package/dist-lib/lib/useSalesOrdersQuery.js +62 -3
  32. package/package.json +1 -1
@@ -49,7 +49,7 @@ export const listProductsForCreateOrder = createServerFn({ method: "GET" })
49
49
  .range(0, 9999),
50
50
  context.supabase
51
51
  .from("products")
52
- .select("id, product, unit, sale_price, plants_per_crate, crates_per_layer, layers_per_cart, quantity, custom_fields")
52
+ .select("id, product, unit, sale_price, plants_per_crate, crates_per_layer, layers_per_cart, quantity, custom_fields, trade_item_key")
53
53
  .range(0, 4999),
54
54
  ]);
55
55
  // Supabase geeft standaard max. 1000 rijen terug. Voor productgroepen kan de
@@ -242,6 +242,13 @@ export const listProductsForCreateOrder = createServerFn({ method: "GET" })
242
242
  for (const p of Array.isArray(productsRes.data) ? productsRes.data : []) {
243
243
  productsById.set(p.id, p);
244
244
  }
245
+ const productsByGroupId = new Map();
246
+ for (const p of Array.isArray(productsRes.data) ? productsRes.data : []) {
247
+ const key = p.trade_item_key;
248
+ if (typeof key === "string" && key.startsWith("group:")) {
249
+ productsByGroupId.set(key.slice("group:".length), p);
250
+ }
251
+ }
245
252
  const packingFromProductRow = (p) => ({
246
253
  plants_per_crate: Math.max(1, Number(p?.plants_per_crate ?? 1)),
247
254
  crates_per_layer: Math.max(1, Number(p?.crates_per_layer ?? 1)),
@@ -277,32 +284,34 @@ export const listProductsForCreateOrder = createServerFn({ method: "GET" })
277
284
  reserved = resSum;
278
285
  available = Math.max(0, physical - reserved);
279
286
  }
280
- // Probeer belading van de bovenste member; val terug op head_trade_item /
281
- // head_product_id als de member niet in byId of products staat.
287
+ // Head eerst — belading van de groep = belading van het hoofdproduct.
288
+ // Volgorde: head_trade_item_floriday_id → head_product_id → group-mirror
289
+ // products-rij (`trade_item_key = 'group:<id>'`) → eerste member.
282
290
  let packing = { plants_per_crate: 1, crates_per_layer: 1, layers_per_cart: 1 };
283
- const candidates = [
284
- members[0]?.trade_item_id ?? null,
285
- r.head_trade_item_floriday_id ?? null,
286
- r.head_product_id ?? null,
287
- ];
288
- for (const cand of candidates) {
291
+ const headFloriday = r.head_trade_item_floriday_id;
292
+ const headProduct = r.head_product_id;
293
+ const groupMirror = productsByGroupId.get(id);
294
+ const firstMemberId = members[0]?.trade_item_id ?? null;
295
+ const tryFromById = (cand) => {
289
296
  if (!cand)
290
- continue;
291
- const fromBy = byId.get(cand);
292
- if (fromBy) {
293
- packing = {
294
- plants_per_crate: fromBy.plants_per_crate,
295
- crates_per_layer: fromBy.crates_per_layer,
296
- layers_per_cart: fromBy.layers_per_cart,
297
- };
298
- break;
299
- }
300
- const fromProd = productsById.get(cand);
301
- if (fromProd) {
302
- packing = packingFromProductRow(fromProd);
303
- break;
304
- }
305
- }
297
+ return null;
298
+ const hit = byId.get(cand);
299
+ if (!hit)
300
+ return null;
301
+ return {
302
+ plants_per_crate: hit.plants_per_crate,
303
+ crates_per_layer: hit.crates_per_layer,
304
+ layers_per_cart: hit.layers_per_cart,
305
+ };
306
+ };
307
+ const tryFromProductRow = (row) => (row ? packingFromProductRow(row) : null);
308
+ packing =
309
+ tryFromById(headFloriday) ??
310
+ tryFromProductRow(headProduct ? productsById.get(headProduct) : null) ??
311
+ tryFromProductRow(groupMirror) ??
312
+ tryFromById(firstMemberId) ??
313
+ tryFromProductRow(firstMemberId ? productsById.get(firstMemberId) : null) ??
314
+ packing;
306
315
  byId.set(id, {
307
316
  id,
308
317
  product: displayName,
@@ -513,7 +522,12 @@ export const createManualOrder = createServerFn({ method: "POST" })
513
522
  const groupById = new Map();
514
523
  for (const r of groupsRes.data ?? [])
515
524
  groupById.set(r.id, r);
516
- const missingLines = data.lines.filter((l) => !existingIds.has(l.product_id));
525
+ // Groepen krijgen GEEN spiegelrij in `products`: de database heeft een
526
+ // trigger die id-botsingen tussen products en product_groups tegenhoudt.
527
+ // De order-regel wordt daarom met product_id = null én naamprefix
528
+ // "[Groep] <naam>" opgeslagen; expand-group-order-items resolvt de groep
529
+ // dan op naam en splitst hem in members.
530
+ const missingLines = data.lines.filter((l) => !existingIds.has(l.product_id) && !groupById.has(l.product_id));
517
531
  if (missingLines.length > 0) {
518
532
  const shortRand = () => Array.from({ length: 6 }, () => Math.floor(Math.random() * 16).toString(16).toUpperCase()).join("");
519
533
  const seen = new Set();
@@ -548,13 +562,6 @@ export const createManualOrder = createServerFn({ method: "POST" })
548
562
  customFields.floriday_id = id;
549
563
  customFields.source = "sales-module-floriday-mirror";
550
564
  }
551
- else if (groupById.has(id)) {
552
- source = "group";
553
- tradeItemKey = `group:${id}`;
554
- articleNumber = l.article_code?.trim() || `GRP-${shortRand()}`;
555
- customFields.group_id = id;
556
- customFields.source = "sales-module-group-mirror";
557
- }
558
565
  else {
559
566
  source = "unknown";
560
567
  tradeItemKey = `product:${id}`;
@@ -576,9 +583,11 @@ export const createManualOrder = createServerFn({ method: "POST" })
576
583
  custom_fields: { ...customFields, mirror_kind: source },
577
584
  };
578
585
  });
579
- const { error: prodErr } = await supabaseAdmin.from("products").insert(toInsert);
580
- if (prodErr)
581
- throw new Error(`Product aanmaken faalde: ${prodErr.message}`);
586
+ if (toInsert.length > 0) {
587
+ const { error: prodErr } = await supabaseAdmin.from("products").insert(toInsert);
588
+ if (prodErr)
589
+ throw new Error(`Product aanmaken faalde: ${prodErr.message}`);
590
+ }
582
591
  }
583
592
  const total = data.lines.reduce((s, l) => s + (Number(l.unit_price ?? 0) * Number(l.quantity)), 0);
584
593
  const { data: order, error: orderErr } = await supabaseAdmin.from("orders").insert({
@@ -600,14 +609,24 @@ export const createManualOrder = createServerFn({ method: "POST" })
600
609
  }).select("id, order_number").single();
601
610
  if (orderErr)
602
611
  throw new Error(orderErr.message);
603
- const items = data.lines.map((l) => ({
604
- order_id: order.id,
605
- product_id: l.product_id,
606
- product_name: l.product_name,
607
- quantity: Math.max(1, Math.round(l.quantity)),
608
- unit: l.unit ?? "stuks",
609
- unit_price: l.unit_price ?? undefined,
610
- }));
612
+ const items = data.lines.map((l) => {
613
+ const isGroup = groupById.has(l.product_id);
614
+ const groupRow = isGroup ? groupById.get(l.product_id) : null;
615
+ const groupName = groupRow?.name ?? l.product_name;
616
+ const displayName = isGroup
617
+ ? (/^\s*\[Groep\]/i.test(l.product_name) ? l.product_name : `[Groep] ${groupName}`)
618
+ : l.product_name;
619
+ return {
620
+ order_id: order.id,
621
+ // Groepen krijgen product_id = null; expand-group-order-items
622
+ // resolvt hen op naam ("[Groep] <naam>").
623
+ product_id: isGroup ? null : l.product_id,
624
+ product_name: displayName,
625
+ quantity: Math.max(1, Math.round(l.quantity)),
626
+ unit: l.unit ?? "stuks",
627
+ unit_price: l.unit_price ?? undefined,
628
+ };
629
+ });
611
630
  const { error: itemsErr } = await supabaseAdmin.from("order_items").insert(items);
612
631
  if (itemsErr)
613
632
  throw new Error(itemsErr.message);
@@ -7693,6 +7693,39 @@ export declare const getPreferredWarehouseStatus: import("@tanstack/start-client
7693
7693
  referencedColumns: ["id"];
7694
7694
  }];
7695
7695
  };
7696
+ product_merge_log: {
7697
+ Row: {
7698
+ canonical_product_id: string | null;
7699
+ id: string;
7700
+ merged_at: string;
7701
+ merged_from_id: string;
7702
+ notes: string | null;
7703
+ snapshot: import("../integrations/supabase/types").Json;
7704
+ source_table: string;
7705
+ status: string;
7706
+ };
7707
+ Insert: {
7708
+ canonical_product_id?: string | null;
7709
+ id?: string;
7710
+ merged_at?: string;
7711
+ merged_from_id: string;
7712
+ notes?: string | null;
7713
+ snapshot?: import("../integrations/supabase/types").Json;
7714
+ source_table: string;
7715
+ status?: string;
7716
+ };
7717
+ Update: {
7718
+ canonical_product_id?: string | null;
7719
+ id?: string;
7720
+ merged_at?: string;
7721
+ merged_from_id?: string;
7722
+ notes?: string | null;
7723
+ snapshot?: import("../integrations/supabase/types").Json;
7724
+ source_table?: string;
7725
+ status?: string;
7726
+ };
7727
+ Relationships: [];
7728
+ };
7696
7729
  products: {
7697
7730
  Row: {
7698
7731
  article_number: string | null;
@@ -7701,6 +7734,9 @@ export declare const getPreferredWarehouseStatus: import("@tanstack/start-client
7701
7734
  crates_per_layer: number;
7702
7735
  created_at: string;
7703
7736
  custom_fields: import("../integrations/supabase/types").Json;
7737
+ floriday_active: boolean;
7738
+ floriday_payload: import("../integrations/supabase/types").Json;
7739
+ floriday_trade_item_id: string | null;
7704
7740
  id: string;
7705
7741
  image_url: string | null;
7706
7742
  incoming_quantity: number;
@@ -7725,6 +7761,9 @@ export declare const getPreferredWarehouseStatus: import("@tanstack/start-client
7725
7761
  crates_per_layer?: number;
7726
7762
  created_at?: string;
7727
7763
  custom_fields?: import("../integrations/supabase/types").Json;
7764
+ floriday_active?: boolean;
7765
+ floriday_payload?: import("../integrations/supabase/types").Json;
7766
+ floriday_trade_item_id?: string | null;
7728
7767
  id?: string;
7729
7768
  image_url?: string | null;
7730
7769
  incoming_quantity?: number;
@@ -7749,6 +7788,9 @@ export declare const getPreferredWarehouseStatus: import("@tanstack/start-client
7749
7788
  crates_per_layer?: number;
7750
7789
  created_at?: string;
7751
7790
  custom_fields?: import("../integrations/supabase/types").Json;
7791
+ floriday_active?: boolean;
7792
+ floriday_payload?: import("../integrations/supabase/types").Json;
7793
+ floriday_trade_item_id?: string | null;
7752
7794
  id?: string;
7753
7795
  image_url?: string | null;
7754
7796
  incoming_quantity?: number;
@@ -10707,6 +10749,13 @@ export declare const getPreferredWarehouseStatus: import("@tanstack/start-client
10707
10749
  };
10708
10750
  Returns: number;
10709
10751
  };
10752
+ _migrate_rewrite_stock_key: {
10753
+ Args: {
10754
+ _from_key: string;
10755
+ _to_key: string;
10756
+ };
10757
+ Returns: undefined;
10758
+ };
10710
10759
  afh_city_code: {
10711
10760
  Args: {
10712
10761
  _city: string;
@@ -11265,6 +11314,13 @@ export declare const getPreferredWarehouseStatus: import("@tanstack/start-client
11265
11314
  };
11266
11315
  Returns: undefined;
11267
11316
  };
11317
+ merge_products: {
11318
+ Args: {
11319
+ _canonical: string;
11320
+ _loser: string;
11321
+ };
11322
+ Returns: undefined;
11323
+ };
11268
11324
  next_manufacture_partij: {
11269
11325
  Args: {
11270
11326
  _tenant_id: string;
@@ -11730,6 +11786,12 @@ export declare const getPreferredWarehouseStatus: import("@tanstack/start-client
11730
11786
  };
11731
11787
  Returns: undefined;
11732
11788
  };
11789
+ sync_product_group_belading: {
11790
+ Args: {
11791
+ _group_id: string;
11792
+ };
11793
+ Returns: undefined;
11794
+ };
11733
11795
  sync_product_packing_from_floriday_cache: {
11734
11796
  Args: {
11735
11797
  p_floriday_id: string;
@@ -19471,6 +19533,39 @@ export declare const getAutoFulfillmentStatus: import("@tanstack/start-client-co
19471
19533
  referencedColumns: ["id"];
19472
19534
  }];
19473
19535
  };
19536
+ product_merge_log: {
19537
+ Row: {
19538
+ canonical_product_id: string | null;
19539
+ id: string;
19540
+ merged_at: string;
19541
+ merged_from_id: string;
19542
+ notes: string | null;
19543
+ snapshot: import("../integrations/supabase/types").Json;
19544
+ source_table: string;
19545
+ status: string;
19546
+ };
19547
+ Insert: {
19548
+ canonical_product_id?: string | null;
19549
+ id?: string;
19550
+ merged_at?: string;
19551
+ merged_from_id: string;
19552
+ notes?: string | null;
19553
+ snapshot?: import("../integrations/supabase/types").Json;
19554
+ source_table: string;
19555
+ status?: string;
19556
+ };
19557
+ Update: {
19558
+ canonical_product_id?: string | null;
19559
+ id?: string;
19560
+ merged_at?: string;
19561
+ merged_from_id?: string;
19562
+ notes?: string | null;
19563
+ snapshot?: import("../integrations/supabase/types").Json;
19564
+ source_table?: string;
19565
+ status?: string;
19566
+ };
19567
+ Relationships: [];
19568
+ };
19474
19569
  products: {
19475
19570
  Row: {
19476
19571
  article_number: string | null;
@@ -19479,6 +19574,9 @@ export declare const getAutoFulfillmentStatus: import("@tanstack/start-client-co
19479
19574
  crates_per_layer: number;
19480
19575
  created_at: string;
19481
19576
  custom_fields: import("../integrations/supabase/types").Json;
19577
+ floriday_active: boolean;
19578
+ floriday_payload: import("../integrations/supabase/types").Json;
19579
+ floriday_trade_item_id: string | null;
19482
19580
  id: string;
19483
19581
  image_url: string | null;
19484
19582
  incoming_quantity: number;
@@ -19503,6 +19601,9 @@ export declare const getAutoFulfillmentStatus: import("@tanstack/start-client-co
19503
19601
  crates_per_layer?: number;
19504
19602
  created_at?: string;
19505
19603
  custom_fields?: import("../integrations/supabase/types").Json;
19604
+ floriday_active?: boolean;
19605
+ floriday_payload?: import("../integrations/supabase/types").Json;
19606
+ floriday_trade_item_id?: string | null;
19506
19607
  id?: string;
19507
19608
  image_url?: string | null;
19508
19609
  incoming_quantity?: number;
@@ -19527,6 +19628,9 @@ export declare const getAutoFulfillmentStatus: import("@tanstack/start-client-co
19527
19628
  crates_per_layer?: number;
19528
19629
  created_at?: string;
19529
19630
  custom_fields?: import("../integrations/supabase/types").Json;
19631
+ floriday_active?: boolean;
19632
+ floriday_payload?: import("../integrations/supabase/types").Json;
19633
+ floriday_trade_item_id?: string | null;
19530
19634
  id?: string;
19531
19635
  image_url?: string | null;
19532
19636
  incoming_quantity?: number;
@@ -22485,6 +22589,13 @@ export declare const getAutoFulfillmentStatus: import("@tanstack/start-client-co
22485
22589
  };
22486
22590
  Returns: number;
22487
22591
  };
22592
+ _migrate_rewrite_stock_key: {
22593
+ Args: {
22594
+ _from_key: string;
22595
+ _to_key: string;
22596
+ };
22597
+ Returns: undefined;
22598
+ };
22488
22599
  afh_city_code: {
22489
22600
  Args: {
22490
22601
  _city: string;
@@ -23043,6 +23154,13 @@ export declare const getAutoFulfillmentStatus: import("@tanstack/start-client-co
23043
23154
  };
23044
23155
  Returns: undefined;
23045
23156
  };
23157
+ merge_products: {
23158
+ Args: {
23159
+ _canonical: string;
23160
+ _loser: string;
23161
+ };
23162
+ Returns: undefined;
23163
+ };
23046
23164
  next_manufacture_partij: {
23047
23165
  Args: {
23048
23166
  _tenant_id: string;
@@ -23508,6 +23626,12 @@ export declare const getAutoFulfillmentStatus: import("@tanstack/start-client-co
23508
23626
  };
23509
23627
  Returns: undefined;
23510
23628
  };
23629
+ sync_product_group_belading: {
23630
+ Args: {
23631
+ _group_id: string;
23632
+ };
23633
+ Returns: undefined;
23634
+ };
23511
23635
  sync_product_packing_from_floriday_cache: {
23512
23636
  Args: {
23513
23637
  p_floriday_id: string;
@@ -31258,6 +31382,39 @@ export declare const retryAutoFulfillment: import("@tanstack/start-client-core")
31258
31382
  referencedColumns: ["id"];
31259
31383
  }];
31260
31384
  };
31385
+ product_merge_log: {
31386
+ Row: {
31387
+ canonical_product_id: string | null;
31388
+ id: string;
31389
+ merged_at: string;
31390
+ merged_from_id: string;
31391
+ notes: string | null;
31392
+ snapshot: import("../integrations/supabase/types").Json;
31393
+ source_table: string;
31394
+ status: string;
31395
+ };
31396
+ Insert: {
31397
+ canonical_product_id?: string | null;
31398
+ id?: string;
31399
+ merged_at?: string;
31400
+ merged_from_id: string;
31401
+ notes?: string | null;
31402
+ snapshot?: import("../integrations/supabase/types").Json;
31403
+ source_table: string;
31404
+ status?: string;
31405
+ };
31406
+ Update: {
31407
+ canonical_product_id?: string | null;
31408
+ id?: string;
31409
+ merged_at?: string;
31410
+ merged_from_id?: string;
31411
+ notes?: string | null;
31412
+ snapshot?: import("../integrations/supabase/types").Json;
31413
+ source_table?: string;
31414
+ status?: string;
31415
+ };
31416
+ Relationships: [];
31417
+ };
31261
31418
  products: {
31262
31419
  Row: {
31263
31420
  article_number: string | null;
@@ -31266,6 +31423,9 @@ export declare const retryAutoFulfillment: import("@tanstack/start-client-core")
31266
31423
  crates_per_layer: number;
31267
31424
  created_at: string;
31268
31425
  custom_fields: import("../integrations/supabase/types").Json;
31426
+ floriday_active: boolean;
31427
+ floriday_payload: import("../integrations/supabase/types").Json;
31428
+ floriday_trade_item_id: string | null;
31269
31429
  id: string;
31270
31430
  image_url: string | null;
31271
31431
  incoming_quantity: number;
@@ -31290,6 +31450,9 @@ export declare const retryAutoFulfillment: import("@tanstack/start-client-core")
31290
31450
  crates_per_layer?: number;
31291
31451
  created_at?: string;
31292
31452
  custom_fields?: import("../integrations/supabase/types").Json;
31453
+ floriday_active?: boolean;
31454
+ floriday_payload?: import("../integrations/supabase/types").Json;
31455
+ floriday_trade_item_id?: string | null;
31293
31456
  id?: string;
31294
31457
  image_url?: string | null;
31295
31458
  incoming_quantity?: number;
@@ -31314,6 +31477,9 @@ export declare const retryAutoFulfillment: import("@tanstack/start-client-core")
31314
31477
  crates_per_layer?: number;
31315
31478
  created_at?: string;
31316
31479
  custom_fields?: import("../integrations/supabase/types").Json;
31480
+ floriday_active?: boolean;
31481
+ floriday_payload?: import("../integrations/supabase/types").Json;
31482
+ floriday_trade_item_id?: string | null;
31317
31483
  id?: string;
31318
31484
  image_url?: string | null;
31319
31485
  incoming_quantity?: number;
@@ -34272,6 +34438,13 @@ export declare const retryAutoFulfillment: import("@tanstack/start-client-core")
34272
34438
  };
34273
34439
  Returns: number;
34274
34440
  };
34441
+ _migrate_rewrite_stock_key: {
34442
+ Args: {
34443
+ _from_key: string;
34444
+ _to_key: string;
34445
+ };
34446
+ Returns: undefined;
34447
+ };
34275
34448
  afh_city_code: {
34276
34449
  Args: {
34277
34450
  _city: string;
@@ -34830,6 +35003,13 @@ export declare const retryAutoFulfillment: import("@tanstack/start-client-core")
34830
35003
  };
34831
35004
  Returns: undefined;
34832
35005
  };
35006
+ merge_products: {
35007
+ Args: {
35008
+ _canonical: string;
35009
+ _loser: string;
35010
+ };
35011
+ Returns: undefined;
35012
+ };
34833
35013
  next_manufacture_partij: {
34834
35014
  Args: {
34835
35015
  _tenant_id: string;
@@ -35295,6 +35475,12 @@ export declare const retryAutoFulfillment: import("@tanstack/start-client-core")
35295
35475
  };
35296
35476
  Returns: undefined;
35297
35477
  };
35478
+ sync_product_group_belading: {
35479
+ Args: {
35480
+ _group_id: string;
35481
+ };
35482
+ Returns: undefined;
35483
+ };
35298
35484
  sync_product_packing_from_floriday_cache: {
35299
35485
  Args: {
35300
35486
  p_floriday_id: string;