@flowselections/floriday-klanten-module 1.0.10 → 1.0.12
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/dist-lib/components/klanten/GroupedKlantDetail.js +1 -1
- package/dist-lib/components/klanten/GroupedKlantDetailRoute.d.ts +2 -0
- package/dist-lib/components/klanten/GroupedKlantDetailRoute.d.ts.map +1 -0
- package/dist-lib/components/klanten/GroupedKlantDetailRoute.js +8 -0
- package/dist-lib/components/klanten/KlantDetail.js +1 -1
- package/dist-lib/components/klanten/KlantDetailRoute.d.ts +2 -0
- package/dist-lib/components/klanten/KlantDetailRoute.d.ts.map +1 -0
- package/dist-lib/components/klanten/KlantDetailRoute.js +8 -0
- package/dist-lib/components/klanten/KlantenOverzicht.js +1 -1
- 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/auth-middleware.d.ts +227 -0
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.d.ts +227 -0
- package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +227 -0
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +235 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/accounting.functions.d.ts +681 -0
- package/dist-lib/lib/accounting.functions.d.ts.map +1 -1
- package/dist-lib/lib/customer-analytics.functions.d.ts +227 -0
- package/dist-lib/lib/customer-analytics.functions.d.ts.map +1 -1
- package/dist-lib/lib/customers.functions.d.ts +1589 -0
- package/dist-lib/lib/customers.functions.d.ts.map +1 -1
- package/dist-lib/lib/delivery-locations.functions.d.ts +908 -0
- package/dist-lib/lib/delivery-locations.functions.d.ts.map +1 -1
- package/dist-lib/lib/external-customers.functions.d.ts +908 -0
- package/dist-lib/lib/external-customers.functions.d.ts.map +1 -1
- package/package.json +25 -1
|
@@ -40,7 +40,7 @@ export function GroupedKlantDetail({ groupKey }) {
|
|
|
40
40
|
provider: providerMap.get(s.provider)?.label ?? s.provider,
|
|
41
41
|
}))
|
|
42
42
|
.sort((a, b) => +new Date(b.created_at) - +new Date(a.created_at));
|
|
43
|
-
return (_jsxs("main", { className: "p-6
|
|
43
|
+
return (_jsxs("main", { className: "p-6 space-y-4", children: [_jsx("div", { className: "flex items-center justify-between", children: _jsxs(Button, { variant: "ghost", size: "sm", onClick: () => navigate({ to: "/klanten" }), children: [_jsx(ArrowLeft, { className: "h-4 w-4 mr-2" }), " Terug naar klanten"] }) }), _jsxs("div", { className: "grid gap-6 lg:grid-cols-[340px_1fr]", children: [_jsx(ProfileCard, { profile: profile }), _jsxs("div", { className: "space-y-4 min-w-0", children: [_jsx(KpiStrip, { counts: {
|
|
44
44
|
contacts: contacts.length,
|
|
45
45
|
locations: locations.length,
|
|
46
46
|
assortment: 0,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GroupedKlantDetailRoute.d.ts","sourceRoot":"","sources":["../../../src/components/klanten/GroupedKlantDetailRoute.tsx"],"names":[],"mappings":"AAKA,wBAAgB,uBAAuB,gCAGtC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { getRouteApi } from "@tanstack/react-router";
|
|
3
|
+
import { GroupedKlantDetail } from "./GroupedKlantDetail";
|
|
4
|
+
const route = getRouteApi("/_authenticated/klanten/groep/$groupKey");
|
|
5
|
+
export function GroupedKlantDetailRoute() {
|
|
6
|
+
const { groupKey } = route.useParams();
|
|
7
|
+
return _jsx(GroupedKlantDetail, { groupKey: groupKey });
|
|
8
|
+
}
|
|
@@ -33,7 +33,7 @@ export function KlantDetail({ id }) {
|
|
|
33
33
|
if (!data)
|
|
34
34
|
return _jsx("main", { className: "p-6", children: "Klant niet gevonden" });
|
|
35
35
|
const c = data.customer;
|
|
36
|
-
return (_jsxs("main", { className: "p-6
|
|
36
|
+
return (_jsxs("main", { className: "p-6 space-y-4", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs(Button, { variant: "ghost", size: "sm", onClick: () => navigate({ to: "/klanten" }), children: [_jsx(ArrowLeft, { className: "h-4 w-4 mr-2" }), " Terug naar klanten"] }), _jsxs("div", { className: "flex gap-2", children: [_jsxs(Button, { variant: "outline", size: "sm", onClick: () => toggleActive.mutate(!c.is_active), children: [_jsx(Power, { className: "h-4 w-4 mr-2" }), c.is_active ? "Op inactief zetten" : "Activeren"] }), _jsxs(AlertDialog, { children: [_jsx(AlertDialogTrigger, { asChild: true, children: _jsxs(Button, { variant: "outline", size: "sm", children: [_jsx(Trash2, { className: "h-4 w-4 mr-2" }), " Verwijderen"] }) }), _jsxs(AlertDialogContent, { children: [_jsxs(AlertDialogHeader, { children: [_jsx(AlertDialogTitle, { children: "Klant verwijderen?" }), _jsxs(AlertDialogDescription, { children: ["Weet je zeker dat je ", _jsx("strong", { children: c.company_name }), " wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt."] })] }), _jsxs(AlertDialogFooter, { children: [_jsx(AlertDialogCancel, { children: "Annuleren" }), _jsx(AlertDialogAction, { onClick: () => delMut.mutate(), children: "Verwijderen" })] })] })] })] })] }), _jsxs("div", { className: "grid gap-6 lg:grid-cols-[340px_1fr]", children: [_jsx(ProfileCard, { profile: adaptLocalToProfile(c, data.contacts) }), _jsxs("div", { className: "space-y-4 min-w-0", children: [_jsx(KpiStrip, { counts: {
|
|
37
37
|
contacts: data.contacts.length,
|
|
38
38
|
locations: data.delivery_locations.length,
|
|
39
39
|
assortment: data.assortment.length,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KlantDetailRoute.d.ts","sourceRoot":"","sources":["../../../src/components/klanten/KlantDetailRoute.tsx"],"names":[],"mappings":"AAKA,wBAAgB,gBAAgB,gCAG/B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { getRouteApi } from "@tanstack/react-router";
|
|
3
|
+
import { KlantDetail } from "./KlantDetail";
|
|
4
|
+
const route = getRouteApi("/_authenticated/klanten/$id");
|
|
5
|
+
export function KlantDetailRoute() {
|
|
6
|
+
const { id } = route.useParams();
|
|
7
|
+
return _jsx(KlantDetail, { id: id });
|
|
8
|
+
}
|
|
@@ -119,7 +119,7 @@ export function KlantenOverzicht() {
|
|
|
119
119
|
activeFilterChips.push({ key: "co", label: `Land: ${country}`, clear: () => setCountry("__all__") });
|
|
120
120
|
const toggleSort = (col) => setSort((s) => (s.col === col ? { col, dir: s.dir === "asc" ? "desc" : "asc" } : { col, dir: "asc" }));
|
|
121
121
|
const lastUpdated = externalData?.last_fetched_at ?? null;
|
|
122
|
-
return (_jsxs("main", { className: "p-6 space-y-5
|
|
122
|
+
return (_jsxs("main", { className: "p-6 space-y-5", children: [_jsxs("div", { className: "flex items-start justify-between gap-4 flex-wrap", children: [_jsxs("div", { children: [_jsx("h1", { className: "text-2xl font-bold tracking-tight", children: "Klanten" }), _jsxs("p", { className: "text-sm text-muted-foreground mt-1", children: ["Beheer en doorzoek al je klanten.", lastUpdated && (_jsxs("span", { className: "ml-2 text-xs", children: ["\u00B7 Bijgewerkt ", relativeTime(lastUpdated)] }))] })] }), _jsxs("div", { className: "flex gap-2", children: [_jsxs(Button, { variant: "outline", onClick: () => navigate({ to: "/klanten/netwerk" }), children: [_jsx(Network, { className: "h-4 w-4 mr-2" }), " Klanten toevoegen uit netwerk"] }), _jsxs(Button, { onClick: () => navigate({ to: "/klanten/nieuw" }), children: [_jsx(Plus, { className: "h-4 w-4 mr-2" }), " Nieuwe klant"] })] })] }), _jsxs("div", { className: "grid grid-cols-2 gap-3 max-w-md", children: [_jsx(StatCard, { icon: _jsx(Users, { className: "h-4 w-4" }), label: "Totaal", value: totals.all ?? 0, active: view === "all", onClick: () => setView("all") }), _jsx(StatCard, { icon: _jsx(UserCheck, { className: "h-4 w-4" }), label: "Actief", value: totals.active ?? 0, active: view === "active", onClick: () => setView("active") })] }), _jsx(Tabs, { value: view, onValueChange: (v) => setView(v), children: _jsxs(TabsList, { className: "flex-wrap", children: [_jsxs(TabsTrigger, { value: "all", children: ["Alle (", totals.all ?? 0, ")"] }), _jsxs(TabsTrigger, { value: "active", children: ["Actief (", totals.active ?? 0, ")"] })] }) }), _jsxs("div", { className: "flex items-center gap-2 flex-wrap", children: [_jsxs("div", { className: "relative flex-1 min-w-[240px] max-w-md", children: [_jsx(Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }), _jsx(Input, { placeholder: "Zoek op bedrijf, contactpersoon of e-mail...", value: search, onChange: (e) => setSearch(e.target.value), className: "pl-9" })] }), _jsxs(Select, { value: customerClass, onValueChange: setCustomerClass, children: [_jsx(SelectTrigger, { className: "w-40", children: _jsx(SelectValue, { placeholder: "Klasse" }) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "__all__", children: "Alle klassen" }), (classData?.classes ?? []).map((c) => (_jsx(SelectItem, { value: c, children: c }, c)))] })] }), _jsxs(Select, { value: country, onValueChange: setCountry, children: [_jsx(SelectTrigger, { className: "w-36", children: _jsx(SelectValue, { placeholder: "Land" }) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "__all__", children: "Alle landen" }), countries.map((c) => (_jsx(SelectItem, { value: c, children: c }, c)))] })] }), _jsxs("div", { className: "flex items-center gap-2 ml-auto", children: [_jsx(Switch, { id: "show-inactive", checked: showInactive, onCheckedChange: setShowInactive }), _jsx(Label, { htmlFor: "show-inactive", className: "text-sm cursor-pointer", children: "Toon inactieve klanten" })] })] }), activeFilterChips.length > 0 && (_jsxs("div", { className: "flex items-center gap-2 flex-wrap", children: [activeFilterChips.map((chip) => (_jsxs("button", { type: "button", onClick: chip.clear, className: "inline-flex items-center gap-1.5 rounded-full border border-border bg-muted/50 px-3 py-1 text-xs hover:bg-muted", children: [chip.label, " ", _jsx(X, { className: "h-3 w-3" })] }, chip.key))), _jsx("button", { type: "button", onClick: () => { setSearch(""); setCustomerClass("__all__"); setCountry("__all__"); }, className: "text-xs text-muted-foreground hover:text-foreground underline", children: "Alles wissen" })] })), _jsx("div", { className: "text-sm text-muted-foreground", children: isLoading ? "Laden..." : `${customers.length} ${customers.length === 1 ? "klant" : "klanten"} gevonden` }), _jsx(Card, { children: _jsx(CardContent, { className: "p-0", children: _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: _jsx(SortHeader, { label: "Bedrijf", col: "company_name", sort: sort, onClick: toggleSort }) }), _jsx(TableHead, { children: "Contact" }), _jsx(TableHead, { children: _jsx(SortHeader, { label: "Klasse", col: "customer_class", sort: sort, onClick: toggleSort }) }), _jsx(TableHead, { children: _jsx(SortHeader, { label: "Land", col: "country", sort: sort, onClick: toggleSort }) }), _jsx(TableHead, { children: "Status" })] }) }), _jsx(TableBody, { children: isLoading ? (Array.from({ length: 6 }).map((_, i) => (_jsx(TableRow, { children: Array.from({ length: 5 }).map((__, j) => (_jsx(TableCell, { className: "py-4", children: _jsx(Skeleton, { className: "h-4 w-full max-w-[160px]" }) }, j))) }, i)))) : customers.length === 0 ? (_jsx(TableRow, { children: _jsx(TableCell, { colSpan: 5, children: _jsx(EmptyState, { onAdd: () => navigate({ to: "/klanten/nieuw" }) }) }) })) : customers.map((c) => {
|
|
123
123
|
const secondary = c.commercial_name && c.commercial_name !== c.company_name
|
|
124
124
|
? c.commercial_name
|
|
125
125
|
: c.city ?? c.email ?? null;
|
package/dist-lib/index.d.ts
CHANGED
|
@@ -5,5 +5,7 @@ export { KlantDetail } from "./components/klanten/KlantDetail";
|
|
|
5
5
|
export { GroupedKlantDetail } from "./components/klanten/GroupedKlantDetail";
|
|
6
6
|
export { NetwerkPagina } from "./components/klanten/NetwerkPagina";
|
|
7
7
|
export { NieuweKlant } from "./components/klanten/NieuweKlant";
|
|
8
|
+
export { KlantDetailRoute } from "./components/klanten/KlantDetailRoute";
|
|
9
|
+
export { GroupedKlantDetailRoute } from "./components/klanten/GroupedKlantDetailRoute";
|
|
8
10
|
export declare const floridayKlantenModule: FlowModule;
|
|
9
11
|
//# 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":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AAEvF,eAAO,MAAM,qBAAqB,EAAE,UAYnC,CAAC"}
|
package/dist-lib/index.js
CHANGED
|
@@ -21,6 +21,8 @@ export { KlantDetail } from "./components/klanten/KlantDetail";
|
|
|
21
21
|
export { GroupedKlantDetail } from "./components/klanten/GroupedKlantDetail";
|
|
22
22
|
export { NetwerkPagina } from "./components/klanten/NetwerkPagina";
|
|
23
23
|
export { NieuweKlant } from "./components/klanten/NieuweKlant";
|
|
24
|
+
export { KlantDetailRoute } from "./components/klanten/KlantDetailRoute";
|
|
25
|
+
export { GroupedKlantDetailRoute } from "./components/klanten/GroupedKlantDetailRoute";
|
|
24
26
|
export const floridayKlantenModule = {
|
|
25
27
|
id: "customers",
|
|
26
28
|
name: "Klanten",
|
|
@@ -2734,6 +2734,7 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
2734
2734
|
};
|
|
2735
2735
|
floricode_sync_state: {
|
|
2736
2736
|
Row: {
|
|
2737
|
+
cursor_skip: number;
|
|
2737
2738
|
error_message: string | null;
|
|
2738
2739
|
last_change_date_time: string | null;
|
|
2739
2740
|
last_sequence_number: number;
|
|
@@ -2743,6 +2744,7 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
2743
2744
|
updated_at: string;
|
|
2744
2745
|
};
|
|
2745
2746
|
Insert: {
|
|
2747
|
+
cursor_skip?: number;
|
|
2746
2748
|
error_message?: string | null;
|
|
2747
2749
|
last_change_date_time?: string | null;
|
|
2748
2750
|
last_sequence_number?: number;
|
|
@@ -2752,6 +2754,7 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
2752
2754
|
updated_at?: string;
|
|
2753
2755
|
};
|
|
2754
2756
|
Update: {
|
|
2757
|
+
cursor_skip?: number;
|
|
2755
2758
|
error_message?: string | null;
|
|
2756
2759
|
last_change_date_time?: string | null;
|
|
2757
2760
|
last_sequence_number?: number;
|
|
@@ -5099,6 +5102,93 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
5099
5102
|
};
|
|
5100
5103
|
Relationships: [];
|
|
5101
5104
|
};
|
|
5105
|
+
manufacture_product_components: {
|
|
5106
|
+
Row: {
|
|
5107
|
+
component_type: string;
|
|
5108
|
+
created_at: string;
|
|
5109
|
+
id: string;
|
|
5110
|
+
manufacture_product_id: string;
|
|
5111
|
+
product_group_id: string | null;
|
|
5112
|
+
quantity: number;
|
|
5113
|
+
trade_item_id: string | null;
|
|
5114
|
+
unit: string;
|
|
5115
|
+
};
|
|
5116
|
+
Insert: {
|
|
5117
|
+
component_type: string;
|
|
5118
|
+
created_at?: string;
|
|
5119
|
+
id?: string;
|
|
5120
|
+
manufacture_product_id: string;
|
|
5121
|
+
product_group_id?: string | null;
|
|
5122
|
+
quantity?: number;
|
|
5123
|
+
trade_item_id?: string | null;
|
|
5124
|
+
unit?: string;
|
|
5125
|
+
};
|
|
5126
|
+
Update: {
|
|
5127
|
+
component_type?: string;
|
|
5128
|
+
created_at?: string;
|
|
5129
|
+
id?: string;
|
|
5130
|
+
manufacture_product_id?: string;
|
|
5131
|
+
product_group_id?: string | null;
|
|
5132
|
+
quantity?: number;
|
|
5133
|
+
trade_item_id?: string | null;
|
|
5134
|
+
unit?: string;
|
|
5135
|
+
};
|
|
5136
|
+
Relationships: [{
|
|
5137
|
+
foreignKeyName: "manufacture_product_components_manufacture_product_id_fkey";
|
|
5138
|
+
columns: ["manufacture_product_id"];
|
|
5139
|
+
isOneToOne: false;
|
|
5140
|
+
referencedRelation: "manufacture_product_possible_stock_view";
|
|
5141
|
+
referencedColumns: ["manufacture_product_id"];
|
|
5142
|
+
}, {
|
|
5143
|
+
foreignKeyName: "manufacture_product_components_manufacture_product_id_fkey";
|
|
5144
|
+
columns: ["manufacture_product_id"];
|
|
5145
|
+
isOneToOne: false;
|
|
5146
|
+
referencedRelation: "manufacture_products";
|
|
5147
|
+
referencedColumns: ["id"];
|
|
5148
|
+
}, {
|
|
5149
|
+
foreignKeyName: "manufacture_product_components_product_group_id_fkey";
|
|
5150
|
+
columns: ["product_group_id"];
|
|
5151
|
+
isOneToOne: false;
|
|
5152
|
+
referencedRelation: "product_groups";
|
|
5153
|
+
referencedColumns: ["id"];
|
|
5154
|
+
}];
|
|
5155
|
+
};
|
|
5156
|
+
manufacture_products: {
|
|
5157
|
+
Row: {
|
|
5158
|
+
created_at: string;
|
|
5159
|
+
description: string | null;
|
|
5160
|
+
id: string;
|
|
5161
|
+
is_active: boolean;
|
|
5162
|
+
name: string;
|
|
5163
|
+
produced_stock: number;
|
|
5164
|
+
product_code: string;
|
|
5165
|
+
tenant_id: string;
|
|
5166
|
+
updated_at: string;
|
|
5167
|
+
};
|
|
5168
|
+
Insert: {
|
|
5169
|
+
created_at?: string;
|
|
5170
|
+
description?: string | null;
|
|
5171
|
+
id?: string;
|
|
5172
|
+
is_active?: boolean;
|
|
5173
|
+
name: string;
|
|
5174
|
+
produced_stock?: number;
|
|
5175
|
+
product_code: string;
|
|
5176
|
+
tenant_id: string;
|
|
5177
|
+
updated_at?: string;
|
|
5178
|
+
};
|
|
5179
|
+
Update: {
|
|
5180
|
+
created_at?: string;
|
|
5181
|
+
description?: string | null;
|
|
5182
|
+
id?: string;
|
|
5183
|
+
is_active?: boolean;
|
|
5184
|
+
name?: string;
|
|
5185
|
+
produced_stock?: number;
|
|
5186
|
+
product_code?: string;
|
|
5187
|
+
tenant_id?: string;
|
|
5188
|
+
updated_at?: string;
|
|
5189
|
+
};
|
|
5190
|
+
Relationships: [];
|
|
5191
|
+
};
|
|
5102
5192
|
monteurs: {
|
|
5103
5193
|
Row: {
|
|
5104
5194
|
avatar_url: string | null;
|
|
@@ -6059,6 +6149,66 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
6059
6149
|
};
|
|
6060
6150
|
Relationships: [];
|
|
6061
6151
|
};
|
|
6152
|
+
product_group_items: {
|
|
6153
|
+
Row: {
|
|
6154
|
+
created_at: string;
|
|
6155
|
+
id: string;
|
|
6156
|
+
product_group_id: string;
|
|
6157
|
+
quantity: number;
|
|
6158
|
+
trade_item_id: string;
|
|
6159
|
+
};
|
|
6160
|
+
Insert: {
|
|
6161
|
+
created_at?: string;
|
|
6162
|
+
id?: string;
|
|
6163
|
+
product_group_id: string;
|
|
6164
|
+
quantity?: number;
|
|
6165
|
+
trade_item_id: string;
|
|
6166
|
+
};
|
|
6167
|
+
Update: {
|
|
6168
|
+
created_at?: string;
|
|
6169
|
+
id?: string;
|
|
6170
|
+
product_group_id?: string;
|
|
6171
|
+
quantity?: number;
|
|
6172
|
+
trade_item_id?: string;
|
|
6173
|
+
};
|
|
6174
|
+
Relationships: [{
|
|
6175
|
+
foreignKeyName: "product_group_items_product_group_id_fkey";
|
|
6176
|
+
columns: ["product_group_id"];
|
|
6177
|
+
isOneToOne: false;
|
|
6178
|
+
referencedRelation: "product_groups";
|
|
6179
|
+
referencedColumns: ["id"];
|
|
6180
|
+
}];
|
|
6181
|
+
};
|
|
6182
|
+
product_groups: {
|
|
6183
|
+
Row: {
|
|
6184
|
+
created_at: string;
|
|
6185
|
+
description: string | null;
|
|
6186
|
+
id: string;
|
|
6187
|
+
is_active: boolean;
|
|
6188
|
+
name: string;
|
|
6189
|
+
tenant_id: string;
|
|
6190
|
+
updated_at: string;
|
|
6191
|
+
};
|
|
6192
|
+
Insert: {
|
|
6193
|
+
created_at?: string;
|
|
6194
|
+
description?: string | null;
|
|
6195
|
+
id?: string;
|
|
6196
|
+
is_active?: boolean;
|
|
6197
|
+
name: string;
|
|
6198
|
+
tenant_id: string;
|
|
6199
|
+
updated_at?: string;
|
|
6200
|
+
};
|
|
6201
|
+
Update: {
|
|
6202
|
+
created_at?: string;
|
|
6203
|
+
description?: string | null;
|
|
6204
|
+
id?: string;
|
|
6205
|
+
is_active?: boolean;
|
|
6206
|
+
name?: string;
|
|
6207
|
+
tenant_id?: string;
|
|
6208
|
+
updated_at?: string;
|
|
6209
|
+
};
|
|
6210
|
+
Relationships: [];
|
|
6211
|
+
};
|
|
6062
6212
|
products: {
|
|
6063
6213
|
Row: {
|
|
6064
6214
|
barcode: string | null;
|
|
@@ -7220,6 +7370,48 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
7220
7370
|
};
|
|
7221
7371
|
Relationships: [];
|
|
7222
7372
|
};
|
|
7373
|
+
trade_item_stock: {
|
|
7374
|
+
Row: {
|
|
7375
|
+
connection_id: string;
|
|
7376
|
+
created_at: string;
|
|
7377
|
+
id: string;
|
|
7378
|
+
incoming_stock: number;
|
|
7379
|
+
minimum_stock: number;
|
|
7380
|
+
notes: string | null;
|
|
7381
|
+
physical_stock: number;
|
|
7382
|
+
reserved_stock: number;
|
|
7383
|
+
trade_item_key: string;
|
|
7384
|
+
updated_at: string;
|
|
7385
|
+
user_id: string;
|
|
7386
|
+
};
|
|
7387
|
+
Insert: {
|
|
7388
|
+
connection_id: string;
|
|
7389
|
+
created_at?: string;
|
|
7390
|
+
id?: string;
|
|
7391
|
+
incoming_stock?: number;
|
|
7392
|
+
minimum_stock?: number;
|
|
7393
|
+
notes?: string | null;
|
|
7394
|
+
physical_stock?: number;
|
|
7395
|
+
reserved_stock?: number;
|
|
7396
|
+
trade_item_key: string;
|
|
7397
|
+
updated_at?: string;
|
|
7398
|
+
user_id: string;
|
|
7399
|
+
};
|
|
7400
|
+
Update: {
|
|
7401
|
+
connection_id?: string;
|
|
7402
|
+
created_at?: string;
|
|
7403
|
+
id?: string;
|
|
7404
|
+
incoming_stock?: number;
|
|
7405
|
+
minimum_stock?: number;
|
|
7406
|
+
notes?: string | null;
|
|
7407
|
+
physical_stock?: number;
|
|
7408
|
+
reserved_stock?: number;
|
|
7409
|
+
trade_item_key?: string;
|
|
7410
|
+
updated_at?: string;
|
|
7411
|
+
user_id?: string;
|
|
7412
|
+
};
|
|
7413
|
+
Relationships: [];
|
|
7414
|
+
};
|
|
7223
7415
|
twinfield_connections: {
|
|
7224
7416
|
Row: {
|
|
7225
7417
|
access_token: string | null;
|
|
@@ -8404,6 +8596,35 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
8404
8596
|
};
|
|
8405
8597
|
Relationships: [];
|
|
8406
8598
|
};
|
|
8599
|
+
manufacture_product_possible_stock_view: {
|
|
8600
|
+
Row: {
|
|
8601
|
+
component_count: number | null;
|
|
8602
|
+
manufacture_product_id: string | null;
|
|
8603
|
+
possible_stock: number | null;
|
|
8604
|
+
};
|
|
8605
|
+
Relationships: [];
|
|
8606
|
+
};
|
|
8607
|
+
product_group_stock_view: {
|
|
8608
|
+
Row: {
|
|
8609
|
+
item_count: number | null;
|
|
8610
|
+
product_group_id: string | null;
|
|
8611
|
+
total_stock: number | null;
|
|
8612
|
+
};
|
|
8613
|
+
Relationships: [{
|
|
8614
|
+
foreignKeyName: "product_group_items_product_group_id_fkey";
|
|
8615
|
+
columns: ["product_group_id"];
|
|
8616
|
+
isOneToOne: false;
|
|
8617
|
+
referencedRelation: "product_groups";
|
|
8618
|
+
referencedColumns: ["id"];
|
|
8619
|
+
}];
|
|
8620
|
+
};
|
|
8621
|
+
trade_item_stock_view: {
|
|
8622
|
+
Row: {
|
|
8623
|
+
stock: number | null;
|
|
8624
|
+
trade_item_id: string | null;
|
|
8625
|
+
};
|
|
8626
|
+
Relationships: [];
|
|
8627
|
+
};
|
|
8407
8628
|
v_external_customers_exact: {
|
|
8408
8629
|
Row: {
|
|
8409
8630
|
account_number: string | null;
|
|
@@ -8974,6 +9195,12 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
8974
9195
|
row_count: number;
|
|
8975
9196
|
}[];
|
|
8976
9197
|
};
|
|
9198
|
+
refresh_floricode_derived_for_product: {
|
|
9199
|
+
Args: {
|
|
9200
|
+
p_product_code: string;
|
|
9201
|
+
};
|
|
9202
|
+
Returns: number;
|
|
9203
|
+
};
|
|
8977
9204
|
reset_floriday_sync_cursor: {
|
|
8978
9205
|
Args: {
|
|
8979
9206
|
p_connection_id: string;
|