@flowselections/mailbox-orders 1.0.51 → 1.0.55

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 (91) hide show
  1. package/dist-lib/components/MailboxAuthBanner.d.ts.map +1 -1
  2. package/dist-lib/components/MailboxAuthBanner.js +6 -5
  3. package/dist-lib/components/MailboxPageFrame.d.ts +19 -0
  4. package/dist-lib/components/MailboxPageFrame.d.ts.map +1 -0
  5. package/dist-lib/components/MailboxPageFrame.js +95 -0
  6. package/dist-lib/components/MailboxProcessedPage.d.ts.map +1 -1
  7. package/dist-lib/components/MailboxProcessedPage.js +94 -62
  8. package/dist-lib/components/MailboxProposalsPage.d.ts.map +1 -1
  9. package/dist-lib/components/MailboxProposalsPage.js +178 -71
  10. package/dist-lib/components/MailboxSkippedPage.d.ts.map +1 -1
  11. package/dist-lib/components/MailboxSkippedPage.js +80 -14
  12. package/dist-lib/components/MailboxStatusLine.d.ts +3 -1
  13. package/dist-lib/components/MailboxStatusLine.d.ts.map +1 -1
  14. package/dist-lib/components/MailboxStatusLine.js +31 -8
  15. package/dist-lib/components/fs-ui/DataTable.d.ts +36 -0
  16. package/dist-lib/components/fs-ui/DataTable.d.ts.map +1 -0
  17. package/dist-lib/components/fs-ui/DataTable.js +33 -0
  18. package/dist-lib/components/fs-ui/EmptyState.d.ts +9 -0
  19. package/dist-lib/components/fs-ui/EmptyState.d.ts.map +1 -0
  20. package/dist-lib/components/fs-ui/EmptyState.js +5 -0
  21. package/dist-lib/components/fs-ui/FilterChips.d.ts +13 -0
  22. package/dist-lib/components/fs-ui/FilterChips.d.ts.map +1 -0
  23. package/dist-lib/components/fs-ui/FilterChips.js +8 -0
  24. package/dist-lib/components/fs-ui/HoverTip.d.ts +15 -0
  25. package/dist-lib/components/fs-ui/HoverTip.d.ts.map +1 -0
  26. package/dist-lib/components/fs-ui/HoverTip.js +24 -0
  27. package/dist-lib/components/fs-ui/InlineAlert.d.ts +9 -0
  28. package/dist-lib/components/fs-ui/InlineAlert.d.ts.map +1 -0
  29. package/dist-lib/components/fs-ui/InlineAlert.js +14 -0
  30. package/dist-lib/components/fs-ui/KpiRow.d.ts +6 -0
  31. package/dist-lib/components/fs-ui/KpiRow.d.ts.map +1 -0
  32. package/dist-lib/components/fs-ui/KpiRow.js +7 -0
  33. package/dist-lib/components/fs-ui/KpiTile.d.ts +21 -0
  34. package/dist-lib/components/fs-ui/KpiTile.d.ts.map +1 -0
  35. package/dist-lib/components/fs-ui/KpiTile.js +40 -0
  36. package/dist-lib/components/fs-ui/MobilePrimaryAction.d.ts +10 -0
  37. package/dist-lib/components/fs-ui/MobilePrimaryAction.d.ts.map +1 -0
  38. package/dist-lib/components/fs-ui/MobilePrimaryAction.js +7 -0
  39. package/dist-lib/components/fs-ui/PageHeader.d.ts +8 -0
  40. package/dist-lib/components/fs-ui/PageHeader.d.ts.map +1 -0
  41. package/dist-lib/components/fs-ui/PageHeader.js +5 -0
  42. package/dist-lib/components/fs-ui/PillTabs.d.ts +15 -0
  43. package/dist-lib/components/fs-ui/PillTabs.d.ts.map +1 -0
  44. package/dist-lib/components/fs-ui/PillTabs.js +14 -0
  45. package/dist-lib/components/fs-ui/SearchInput.d.ts +12 -0
  46. package/dist-lib/components/fs-ui/SearchInput.d.ts.map +1 -0
  47. package/dist-lib/components/fs-ui/SearchInput.js +33 -0
  48. package/dist-lib/components/fs-ui/ShortcutHelp.d.ts +7 -0
  49. package/dist-lib/components/fs-ui/ShortcutHelp.d.ts.map +1 -0
  50. package/dist-lib/components/fs-ui/ShortcutHelp.js +6 -0
  51. package/dist-lib/components/fs-ui/StatusIcon.d.ts +8 -0
  52. package/dist-lib/components/fs-ui/StatusIcon.d.ts.map +1 -0
  53. package/dist-lib/components/fs-ui/StatusIcon.js +16 -0
  54. package/dist-lib/components/fs-ui/TableSkeleton.d.ts +6 -0
  55. package/dist-lib/components/fs-ui/TableSkeleton.d.ts.map +1 -0
  56. package/dist-lib/components/fs-ui/TableSkeleton.js +6 -0
  57. package/dist-lib/components/fs-ui/Toolbar.d.ts +8 -0
  58. package/dist-lib/components/fs-ui/Toolbar.d.ts.map +1 -0
  59. package/dist-lib/components/fs-ui/Toolbar.js +5 -0
  60. package/dist-lib/components/fs-ui/UpdatedAt.d.ts +7 -0
  61. package/dist-lib/components/fs-ui/UpdatedAt.d.ts.map +1 -0
  62. package/dist-lib/components/fs-ui/UpdatedAt.js +9 -0
  63. package/dist-lib/components/fs-ui/useListHotkeys.d.ts +18 -0
  64. package/dist-lib/components/fs-ui/useListHotkeys.d.ts.map +1 -0
  65. package/dist-lib/components/fs-ui/useListHotkeys.js +48 -0
  66. package/dist-lib/components/settings/MailboxAiPromptCard.d.ts +2 -1
  67. package/dist-lib/components/settings/MailboxAiPromptCard.d.ts.map +1 -1
  68. package/dist-lib/components/settings/MailboxAiPromptCard.js +9 -1
  69. package/dist-lib/components/settings/MailboxFilterSettingsCard.d.ts.map +1 -1
  70. package/dist-lib/components/settings/MailboxFilterSettingsCard.js +13 -2
  71. package/dist-lib/components/settings/MailboxTestSetCard.d.ts +2 -1
  72. package/dist-lib/components/settings/MailboxTestSetCard.d.ts.map +1 -1
  73. package/dist-lib/components/settings/MailboxTestSetCard.js +10 -2
  74. package/dist-lib/integrations/supabase/types.d.ts +833 -1
  75. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  76. package/dist-lib/lib/mailbox-filter-settings.functions.d.ts +8 -0
  77. package/dist-lib/lib/mailbox-filter-settings.functions.d.ts.map +1 -1
  78. package/dist-lib/lib/mailbox-filter-settings.functions.js +11 -1
  79. package/dist-lib/lib/mailbox-ingest.server.d.ts +3 -2
  80. package/dist-lib/lib/mailbox-ingest.server.d.ts.map +1 -1
  81. package/dist-lib/lib/mailbox-ingest.server.js +16 -14
  82. package/dist-lib/lib/mailbox-list.functions.d.ts +67 -0
  83. package/dist-lib/lib/mailbox-list.functions.d.ts.map +1 -0
  84. package/dist-lib/lib/mailbox-list.functions.js +63 -0
  85. package/dist-lib/lib/mailbox.functions.d.ts +1 -6
  86. package/dist-lib/lib/mailbox.functions.d.ts.map +1 -1
  87. package/dist-lib/lib/mailbox.functions.js +4 -28
  88. package/dist-lib/lib/pickup-locations.d.ts +17 -0
  89. package/dist-lib/lib/pickup-locations.d.ts.map +1 -0
  90. package/dist-lib/lib/pickup-locations.js +64 -0
  91. package/package.json +1 -1
@@ -41,6 +41,14 @@ export declare const saveMailboxFilterSettings: import("@tanstack/start-client-c
41
41
  }, Promise<{
42
42
  ok: true;
43
43
  }>>;
44
+ /** Voegt alleen ontbrekende standaard-bestelwoorden toe; haalt niets weg. */
45
+ export declare const addStandardOrderKeywords: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
46
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
47
+ userId: string;
48
+ claims: import("@supabase/auth-js").User;
49
+ }, undefined, undefined, undefined>], undefined, Promise<{
50
+ added: number;
51
+ }>>;
44
52
  /** Telling van openstaande voorstellen die het nieuwe filter als "geen bestelling" zou zien. Wijzigt niets. */
45
53
  export declare const countLikelyFakeProposals: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
46
54
  supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
@@ -1 +1 @@
1
- {"version":3,"file":"mailbox-filter-settings.functions.d.ts","sourceRoot":"","sources":["../../src/lib/mailbox-filter-settings.functions.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;GA2CjC,CAAC;AAEL,eAAO,MAAM,yBAAyB;;;;8CAEZ,OAAO;;;;;;;;;;;;;;;;;;;;;GAyB7B,CAAC;AAEL,+GAA+G;AAC/G,eAAO,MAAM,wBAAwB;;;;;;;;;GA+BjC,CAAC;AAIL,eAAO,MAAM,aAAa;;;;;;GAUtB,CAAC;AAYL,eAAO,MAAM,YAAY;;;;8CAEC,OAAO;;;;;;;;;;GAW7B,CAAC;AAEL,eAAO,MAAM,cAAc;;;;8CAED,OAAO;;;;GAM7B,CAAC;AAEL,KAAK,KAAK,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC;IAAC,EAAE,EAAE,OAAO,CAAA;CAAE,CAAC;AA4BxE,kFAAkF;AAClF,eAAO,MAAM,WAAW;;;;8CAEE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqB7B,CAAC"}
1
+ {"version":3,"file":"mailbox-filter-settings.functions.d.ts","sourceRoot":"","sources":["../../src/lib/mailbox-filter-settings.functions.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;GA2CjC,CAAC;AAEL,eAAO,MAAM,yBAAyB;;;;8CAEZ,OAAO;;;;;;;;;;;;;;;;;;;;;GAyB7B,CAAC;AAEL,6EAA6E;AAC7E,eAAO,MAAM,wBAAwB;;;;;;GAOjC,CAAC;AAEL,+GAA+G;AAC/G,eAAO,MAAM,wBAAwB;;;;;;;;;GA+BjC,CAAC;AAIL,eAAO,MAAM,aAAa;;;;;;GAUtB,CAAC;AAYL,eAAO,MAAM,YAAY;;;;8CAEC,OAAO;;;;;;;;;;GAW7B,CAAC;AAEL,eAAO,MAAM,cAAc;;;;8CAED,OAAO;;;;GAM7B,CAAC;AAEL,KAAK,KAAK,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC;IAAC,EAAE,EAAE,OAAO,CAAA;CAAE,CAAC;AA4BxE,kFAAkF;AAClF,eAAO,MAAM,WAAW;;;;8CAEE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqB7B,CAAC"}
@@ -85,7 +85,7 @@ export const saveMailboxFilterSettings = createServerFn({ method: "POST" })
85
85
  await admin.rpc("mailbox_ensure_defaults").then(() => { }, () => { });
86
86
  const { error } = await admin
87
87
  .from("mailbox_filter_settings")
88
- .update({ ...rest, updated_at: new Date().toISOString() })
88
+ .update({ ...rest, updated_at: new Date().toISOString(), door_gebruiker_opgeslagen_at: new Date().toISOString() })
89
89
  .eq("singleton", true);
90
90
  if (error)
91
91
  throw new Error(error.message);
@@ -97,6 +97,16 @@ export const saveMailboxFilterSettings = createServerFn({ method: "POST" })
97
97
  }
98
98
  return { ok: true };
99
99
  });
100
+ /** Voegt alleen ontbrekende standaard-bestelwoorden toe; haalt niets weg. */
101
+ export const addStandardOrderKeywords = createServerFn({ method: "POST" })
102
+ .middleware([requireSupabaseAuth])
103
+ .handler(async () => {
104
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
105
+ const { data, error } = await supabaseAdmin.rpc("mailbox_add_standaard_woorden");
106
+ if (error)
107
+ throw new Error(error.message);
108
+ return { added: Number(data?.toegevoegd ?? 0) };
109
+ });
100
110
  /** Telling van openstaande voorstellen die het nieuwe filter als "geen bestelling" zou zien. Wijzigt niets. */
101
111
  export const countLikelyFakeProposals = createServerFn({ method: "GET" })
102
112
  .middleware([requireSupabaseAuth])
@@ -76,8 +76,9 @@ export declare function resolveDeliveryLocation(admin: AdminClient, customerId:
76
76
  source: "mail" | "gln" | "vast";
77
77
  } | null>;
78
78
  /**
79
- * Afhaallocatie (eigen tuin/warehouse): AI-herkenning wint, anders de hoofdlocatie
80
- * (Floriday warehouse met isDefault = true).
79
+ * Afhaallocatie (eigen tuin/warehouse): AI-herkenning wint, anders de hoofdlocatie.
80
+ * Bron volgt de Floriday-koppeling (zie loadPickupLocations). Kan de koppeling niet
81
+ * worden gecontroleerd, dan blijft het veld leeg en kiest de gebruiker zelf.
81
82
  */
82
83
  export declare function resolvePickupLocation(admin: AdminClient, aiValue: unknown): Promise<{
83
84
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"mailbox-ingest.server.d.ts","sourceRoot":"","sources":["../../src/lib/mailbox-ingest.server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mailbox-ingest.server.d.ts","sourceRoot":"","sources":["../../src/lib/mailbox-ingest.server.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ import { classifyMessage, extractLatestPart } from "./mailbox-filter.js";
14
14
  import { normalizeUnitKind, toPlants, unitPricePerPlant } from "./mailbox-units.js";
15
15
  import { matchLine, rankCandidates } from "./mailbox-match.js";
16
16
  import { classifyEventFolder } from "./mailbox-folders.js";
17
+ import { loadPickupLocations } from "./pickup-locations.js";
17
18
  /**
18
19
  * Ladingdragers komen live uit de Logistics Engine — nooit cachen, nooit een
19
20
  * eigen lijst bijhouden.
@@ -457,27 +458,28 @@ export async function resolveDeliveryLocation(admin, customerId, aiValue, mailTe
457
458
  return primary.length === 1 ? { id: String(primary[0].id), source: "vast" } : null;
458
459
  }
459
460
  /**
460
- * Afhaallocatie (eigen tuin/warehouse): AI-herkenning wint, anders de hoofdlocatie
461
- * (Floriday warehouse met isDefault = true).
461
+ * Afhaallocatie (eigen tuin/warehouse): AI-herkenning wint, anders de hoofdlocatie.
462
+ * Bron volgt de Floriday-koppeling (zie loadPickupLocations). Kan de koppeling niet
463
+ * worden gecontroleerd, dan blijft het veld leeg en kiest de gebruiker zelf.
462
464
  */
463
465
  export async function resolvePickupLocation(admin, aiValue) {
464
- const { data: rows } = await admin
465
- .from("floriday_warehouses_cache")
466
- .select("floriday_id, data")
467
- .eq("is_deleted", false);
468
- const own = (Array.isArray(rows) ? rows : []).filter((r) => {
469
- const d = r?.data ?? {};
470
- return d?.hasAccess === true && d?.isExternal === false;
471
- });
466
+ let own;
467
+ try {
468
+ own = await loadPickupLocations(admin);
469
+ }
470
+ catch (e) {
471
+ console.warn("[mailbox] afhaallocatie niet bepaald:", e instanceof Error ? e.message : e);
472
+ return null;
473
+ }
472
474
  if (own.length === 0)
473
475
  return null;
474
476
  if (typeof aiValue === "string" && aiValue) {
475
- const hit = own.find((r) => String(r.floriday_id) === aiValue);
477
+ const hit = own.find((l) => l.id === aiValue);
476
478
  if (hit)
477
- return { id: String(hit.floriday_id), primary: false };
479
+ return { id: hit.id, primary: false };
478
480
  }
479
- const main = own.find((r) => r?.data?.isDefault === true) ?? own[0];
480
- return main ? { id: String(main.floriday_id), primary: true } : null;
481
+ const main = own.find((l) => l.is_default) ?? own[0];
482
+ return main ? { id: main.id, primary: true } : null;
481
483
  }
482
484
  /** Schrijft velden + regels van een AI-parse weg. */
483
485
  async function writeParsedDetails(admin, proposalId, parsed, lines) {
@@ -0,0 +1,67 @@
1
+ import { z } from "zod";
2
+ declare const pageInput: z.ZodObject<{
3
+ statuses: z.ZodArray<z.ZodEnum<{
4
+ pending: "pending";
5
+ approved: "approved";
6
+ rejected: "rejected";
7
+ }>>;
8
+ search: z.ZodDefault<z.ZodOptional<z.ZodString>>;
9
+ period: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
10
+ all: "all";
11
+ today: "today";
12
+ "7d": "7d";
13
+ "30d": "30d";
14
+ }>>>;
15
+ sort: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
16
+ desc: "desc";
17
+ asc: "asc";
18
+ }>>>;
19
+ dateField: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
20
+ received: "received";
21
+ reviewed: "reviewed";
22
+ }>>>;
23
+ tz: z.ZodDefault<z.ZodOptional<z.ZodString>>;
24
+ filter: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodEnum<{
25
+ klant_onbekend: "klant_onbekend";
26
+ }>>>>;
27
+ page: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
28
+ pageSize: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
29
+ }, z.core.$strip>;
30
+ export type ProposalsPageInput = z.input<typeof pageInput>;
31
+ /** Eén pagina voorstellen + totaal (mailbox_proposals_page). */
32
+ export declare const listProposalsPage: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
33
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
34
+ userId: string;
35
+ claims: import("@supabase/auth-js").User;
36
+ }, undefined, undefined, undefined>], (input: unknown) => {
37
+ statuses: ("pending" | "approved" | "rejected")[];
38
+ search: string;
39
+ period: "all" | "today" | "7d" | "30d";
40
+ sort: "desc" | "asc";
41
+ dateField: "received" | "reviewed";
42
+ tz: string;
43
+ filter: "klant_onbekend" | null;
44
+ page: number;
45
+ pageSize: number;
46
+ }, Promise<{
47
+ items: any;
48
+ total: number;
49
+ }>>;
50
+ export interface MailboxKpis {
51
+ pending: number;
52
+ pending_today: number;
53
+ customer_unknown: number;
54
+ processed: number;
55
+ approved_today: number;
56
+ skipped: number;
57
+ }
58
+ /** Tellers voor tegels en tabbladen in één aanroep (mailbox_kpis). */
59
+ export declare const getMailboxKpis: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
60
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
61
+ userId: string;
62
+ claims: import("@supabase/auth-js").User;
63
+ }, undefined, undefined, undefined>], (input: unknown) => {
64
+ tz: string;
65
+ }, Promise<MailboxKpis>>;
66
+ export {};
67
+ //# sourceMappingURL=mailbox-list.functions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mailbox-list.functions.d.ts","sourceRoot":"","sources":["../../src/lib/mailbox-list.functions.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAUb,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAE3D,gEAAgE;AAChE,eAAO,MAAM,iBAAiB;;;;8CAEJ,OAAO;;;;;;;;;;;;;GAqB7B,CAAC;AAEL,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,sEAAsE;AACtE,eAAO,MAAM,cAAc;;;;8CAED,OAAO;;wBAiB7B,CAAC"}
@@ -0,0 +1,63 @@
1
+ // Leesfuncties voor de lijstweergaven (zoeken, filteren en pagineren op de server).
2
+ // Nieuwe functies; de bestaande listProposals blijft ongewijzigd bestaan.
3
+ import { createServerFn } from "@tanstack/react-start";
4
+ import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
5
+ import { z } from "zod";
6
+ import { ensureMailboxDefaults } from "./mailbox.functions.js";
7
+ const pageInput = z.object({
8
+ statuses: z.array(z.enum(["pending", "approved", "rejected"])).min(1),
9
+ search: z.string().max(200).optional().default(""),
10
+ period: z.enum(["all", "today", "7d", "30d"]).optional().default("all"),
11
+ sort: z.enum(["asc", "desc"]).optional().default("desc"),
12
+ dateField: z.enum(["received", "reviewed"]).optional().default("received"),
13
+ tz: z.string().max(64).optional().default("UTC"),
14
+ filter: z.enum(["klant_onbekend"]).nullable().optional().default(null),
15
+ page: z.number().int().min(1).optional().default(1),
16
+ pageSize: z.number().int().min(10).max(200).optional().default(50),
17
+ });
18
+ /** Eén pagina voorstellen + totaal (mailbox_proposals_page). */
19
+ export const listProposalsPage = createServerFn({ method: "GET" })
20
+ .middleware([requireSupabaseAuth])
21
+ .inputValidator((input) => pageInput.parse(input ?? {}))
22
+ .handler(async ({ data }) => {
23
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
24
+ await ensureMailboxDefaults(supabaseAdmin);
25
+ const { data: res, error } = await supabaseAdmin.rpc("mailbox_proposals_page", {
26
+ p_statuses: data.statuses,
27
+ p_search: data.search?.trim() ? data.search.trim() : null,
28
+ p_period: data.period,
29
+ p_sort: data.sort,
30
+ p_date_field: data.dateField,
31
+ p_tz: data.tz,
32
+ p_filter: data.filter ?? null,
33
+ p_limit: data.pageSize,
34
+ p_offset: (data.page - 1) * data.pageSize,
35
+ });
36
+ if (error) {
37
+ console.error("[mailbox] mailbox_proposals_page", error);
38
+ throw new Error("De lijst kon niet worden geladen.");
39
+ }
40
+ const items = Array.isArray(res?.items) ? res.items : [];
41
+ return { items, total: Number(res?.total ?? 0) };
42
+ });
43
+ /** Tellers voor tegels en tabbladen in één aanroep (mailbox_kpis). */
44
+ export const getMailboxKpis = createServerFn({ method: "GET" })
45
+ .middleware([requireSupabaseAuth])
46
+ .inputValidator((input) => z.object({ tz: z.string().max(64).optional().default("UTC") }).parse(input ?? {}))
47
+ .handler(async ({ data }) => {
48
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
49
+ const { data: res, error } = await supabaseAdmin.rpc("mailbox_kpis", { p_tz: data.tz });
50
+ if (error) {
51
+ console.error("[mailbox] mailbox_kpis", error);
52
+ throw new Error("De tellers konden niet worden geladen.");
53
+ }
54
+ const n = (k) => Number(res?.[k] ?? 0) || 0;
55
+ return {
56
+ pending: n("pending"),
57
+ pending_today: n("pending_today"),
58
+ customer_unknown: n("customer_unknown"),
59
+ processed: n("processed"),
60
+ approved_today: n("approved_today"),
61
+ skipped: n("skipped"),
62
+ };
63
+ });
@@ -333,12 +333,7 @@ export declare const listPickupLocations: import("@tanstack/start-client-core").
333
333
  userId: string;
334
334
  claims: import("@supabase/auth-js").User;
335
335
  }, undefined, undefined, undefined>], undefined, Promise<{
336
- items: {
337
- id: string;
338
- name: any;
339
- is_default: boolean;
340
- sort_order: number;
341
- }[];
336
+ items: import("./pickup-locations.js").PickupLocation[];
342
337
  }>>;
343
338
  export declare const listCarriersForPicker: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
344
339
  supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
@@ -1 +1 @@
1
- {"version":3,"file":"mailbox.functions.d.ts","sourceRoot":"","sources":["../../src/lib/mailbox.functions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mailbox.functions.d.ts","sourceRoot":"","sources":["../../src/lib/mailbox.functions.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { classifyVerkoopRefusal, existingOrderOrFilter, defaultNeedsSticker, checkLinePrices, zeroPriceFlag } from "./verkoop-order.js";
2
2
  import { toActiveMailboxStatus } from "./mailbox-active.js";
3
+ import { loadPickupLocations } from "./pickup-locations.js";
3
4
  // Server functions voor de Mailbox-bestellingen module
4
5
  import { createServerFn } from "@tanstack/react-start";
5
6
  import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
@@ -874,37 +875,12 @@ export const listDeliveryLocationsForCustomer = createServerFn({ method: "POST"
874
875
  .order("name");
875
876
  return { items: Array.isArray(rows) ? rows : [] };
876
877
  });
877
- // Onze eigen bedrijfslocaties (tuinen / afhaallocaties) — bron: Floriday warehouses cache.
878
- // Filter op onze eigen warehouses: hasAccess=true en isExternal=false (dus geen KLOK/veiling
879
- // locaties). Naam valt terug op het adres wanneer het name-veld leeg is (bv. "Zijdeweg 6A").
878
+ // Onze eigen bedrijfslocaties (tuinen / afhaallocaties): met Floriday-koppeling de
879
+ // Floriday warehouses, anders de eigen afhaallocaties uit de Verkoop-module. Zie loadPickupLocations.
880
880
  export const listPickupLocations = createServerFn({ method: "GET" })
881
881
  .middleware([requireSupabaseAuth])
882
882
  .handler(async ({ context }) => {
883
- const { data } = await context.supabase
884
- .from("floriday_warehouses_cache")
885
- .select("floriday_id, name, data")
886
- .eq("is_deleted", false);
887
- const rows = Array.isArray(data) ? data : [];
888
- const items = rows
889
- .filter((r) => {
890
- const d = r?.data ?? {};
891
- return d?.hasAccess === true && d?.isExternal === false;
892
- })
893
- .map((r) => {
894
- const addr = r?.data?.location?.address?.addressLine;
895
- const city = r?.data?.location?.address?.city;
896
- const nameRaw = typeof r.name === "string" ? r.name.trim() : "";
897
- const label = nameRaw.length > 0
898
- ? nameRaw
899
- : [addr, city].filter(Boolean).join(", ") || "(naamloos)";
900
- return {
901
- id: r.floriday_id,
902
- name: label,
903
- is_default: r?.data?.isDefault === true,
904
- sort_order: 0,
905
- };
906
- })
907
- .sort((a, b) => (a.is_default === b.is_default ? a.name.localeCompare(b.name, "nl") : a.is_default ? -1 : 1));
883
+ const items = await loadPickupLocations(context.supabase);
908
884
  return { items };
909
885
  });
910
886
  export const listCarriersForPicker = createServerFn({ method: "GET" })
@@ -0,0 +1,17 @@
1
+ import type { SupabaseClient } from "@supabase/supabase-js";
2
+ export type PickupSource = "floriday" | "eigen";
3
+ export type PickupLocation = {
4
+ id: string;
5
+ name: string;
6
+ is_default: boolean;
7
+ sort_order: number;
8
+ source: PickupSource;
9
+ };
10
+ /**
11
+ * true = actieve Floriday-koppeling (get_active_floriday_connection_public uit de
12
+ * Authenticatie-module). Ontbreekt de functie, dan geen koppeling. Elke andere fout
13
+ * gooit: niet gokken, anders komen orders op de verkeerde locatie.
14
+ */
15
+ export declare function hasActiveFloridayConnection(client: SupabaseClient<any>): Promise<boolean>;
16
+ export declare function loadPickupLocations(client: SupabaseClient<any>): Promise<PickupLocation[]>;
17
+ //# sourceMappingURL=pickup-locations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pickup-locations.d.ts","sourceRoot":"","sources":["../../src/lib/pickup-locations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,OAAO,CAAC;AAEhD,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,2BAA2B,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAS/F;AAQD,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CA4ChG"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * true = actieve Floriday-koppeling (get_active_floriday_connection_public uit de
3
+ * Authenticatie-module). Ontbreekt de functie, dan geen koppeling. Elke andere fout
4
+ * gooit: niet gokken, anders komen orders op de verkeerde locatie.
5
+ */
6
+ export async function hasActiveFloridayConnection(client) {
7
+ const { data, error } = await client.rpc("get_active_floriday_connection_public");
8
+ if (error) {
9
+ const missing = error.code === "42883" || error.code === "PGRST202";
10
+ if (missing)
11
+ return false;
12
+ throw new Error(`Floriday-koppeling kon niet worden gecontroleerd: ${error.message}`);
13
+ }
14
+ const rows = Array.isArray(data) ? data : data ? [data] : [];
15
+ return rows.some((r) => typeof r?.id === "string" && r.id.length > 0);
16
+ }
17
+ // Onze eigen bedrijfslocaties (tuinen / afhaallocaties). De bron hangt af van de koppeling:
18
+ // - Floriday gekoppeld: alleen de Floriday warehouses cache, eigen warehouses
19
+ // (hasAccess=true en isExternal=false, dus geen KLOK/veiling locaties); hoofdlocatie = isDefault.
20
+ // - Niet gekoppeld: alleen verkoop_pickup_locations (handmatig ingesteld in de Verkoop-module)
21
+ // waar is_active; hoofdlocatie = is_default. Ontbreekt de tabel, dan telt dat als leeg.
22
+ // Naam valt terug op het adres wanneer het name-veld leeg is (bv. "Zijdeweg 6A").
23
+ export async function loadPickupLocations(client) {
24
+ const label = (name, addr, city) => {
25
+ const nameRaw = typeof name === "string" ? name.trim() : "";
26
+ return nameRaw.length > 0
27
+ ? nameRaw
28
+ : [addr, city].filter((x) => typeof x === "string" && x.trim()).join(", ") || "(naamloos)";
29
+ };
30
+ let items;
31
+ if (await hasActiveFloridayConnection(client)) {
32
+ const { data } = await client
33
+ .from("floriday_warehouses_cache")
34
+ .select("floriday_id, name, data")
35
+ .eq("is_deleted", false);
36
+ items = (Array.isArray(data) ? data : [])
37
+ .filter((r) => {
38
+ const d = r?.data ?? {};
39
+ return d?.hasAccess === true && d?.isExternal === false;
40
+ })
41
+ .map((r) => ({
42
+ id: String(r.floriday_id),
43
+ name: label(r.name, r?.data?.location?.address?.addressLine, r?.data?.location?.address?.city),
44
+ is_default: r?.data?.isDefault === true,
45
+ sort_order: 0,
46
+ source: "floriday",
47
+ }));
48
+ }
49
+ else {
50
+ const { data, error } = await client
51
+ .from("verkoop_pickup_locations")
52
+ .select("id, name, address_line, city, is_default, is_active")
53
+ .eq("is_active", true);
54
+ // Fout (bv. tabel bestaat niet in dit project) → geen eigen locaties.
55
+ items = (!error && Array.isArray(data) ? data : []).map((r) => ({
56
+ id: String(r.id),
57
+ name: label(r.name, r.address_line, r.city),
58
+ is_default: r.is_default === true,
59
+ sort_order: 0,
60
+ source: "eigen",
61
+ }));
62
+ }
63
+ return items.sort((a, b) => a.is_default === b.is_default ? a.name.localeCompare(b.name, "nl") : a.is_default ? -1 : 1);
64
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowselections/mailbox-orders",
3
- "version": "1.0.51",
3
+ "version": "1.0.55",
4
4
  "private": false,
5
5
  "sideEffects": false,
6
6
  "type": "module",