@endora-commerce/mod-price-lists 0.100.0
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/LICENSE +21 -0
- package/README.md +59 -0
- package/dist/admin/components/ApplicationRuleBuilder.d.ts +24 -0
- package/dist/admin/components/ApplicationRuleBuilder.d.ts.map +1 -0
- package/dist/admin/components/ApplicationRuleBuilder.js +249 -0
- package/dist/admin/components/ApplicationRuleBuilder.js.map +1 -0
- package/dist/admin/components/BracketGrid.d.ts +29 -0
- package/dist/admin/components/BracketGrid.d.ts.map +1 -0
- package/dist/admin/components/BracketGrid.js +252 -0
- package/dist/admin/components/BracketGrid.js.map +1 -0
- package/dist/admin/components/DisplayModeOverrideRow.d.ts +46 -0
- package/dist/admin/components/DisplayModeOverrideRow.d.ts.map +1 -0
- package/dist/admin/components/DisplayModeOverrideRow.js +109 -0
- package/dist/admin/components/DisplayModeOverrideRow.js.map +1 -0
- package/dist/admin/components/LinkedPriceListsPanel.d.ts +55 -0
- package/dist/admin/components/LinkedPriceListsPanel.d.ts.map +1 -0
- package/dist/admin/components/LinkedPriceListsPanel.js +131 -0
- package/dist/admin/components/LinkedPriceListsPanel.js.map +1 -0
- package/dist/admin/index.d.ts +34 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +119 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/pages/DisplayModeOverridesPage.d.ts +25 -0
- package/dist/admin/pages/DisplayModeOverridesPage.d.ts.map +1 -0
- package/dist/admin/pages/DisplayModeOverridesPage.js +266 -0
- package/dist/admin/pages/DisplayModeOverridesPage.js.map +1 -0
- package/dist/admin/pages/PriceListDetailPage.d.ts +23 -0
- package/dist/admin/pages/PriceListDetailPage.d.ts.map +1 -0
- package/dist/admin/pages/PriceListDetailPage.js +421 -0
- package/dist/admin/pages/PriceListDetailPage.js.map +1 -0
- package/dist/admin/pages/PriceListsPage.d.ts +17 -0
- package/dist/admin/pages/PriceListsPage.d.ts.map +1 -0
- package/dist/admin/pages/PriceListsPage.js +198 -0
- package/dist/admin/pages/PriceListsPage.js.map +1 -0
- package/dist/admin/zones/CategoryDisplayMode.d.ts +27 -0
- package/dist/admin/zones/CategoryDisplayMode.d.ts.map +1 -0
- package/dist/admin/zones/CategoryDisplayMode.js +11 -0
- package/dist/admin/zones/CategoryDisplayMode.js.map +1 -0
- package/dist/admin/zones/OrganizationDisplayMode.d.ts +36 -0
- package/dist/admin/zones/OrganizationDisplayMode.d.ts.map +1 -0
- package/dist/admin/zones/OrganizationDisplayMode.js +12 -0
- package/dist/admin/zones/OrganizationDisplayMode.js.map +1 -0
- package/dist/admin/zones/ProductLinkedPriceLists.d.ts +16 -0
- package/dist/admin/zones/ProductLinkedPriceLists.d.ts.map +1 -0
- package/dist/admin/zones/ProductLinkedPriceLists.js +7 -0
- package/dist/admin/zones/ProductLinkedPriceLists.js.map +1 -0
- package/dist/backend/entities/price-display-mode-override.entity.d.ts +23 -0
- package/dist/backend/entities/price-display-mode-override.entity.d.ts.map +1 -0
- package/dist/backend/entities/price-display-mode-override.entity.js +58 -0
- package/dist/backend/entities/price-display-mode-override.entity.js.map +1 -0
- package/dist/backend/entities/price-list-price-bracket.entity.d.ts +26 -0
- package/dist/backend/entities/price-list-price-bracket.entity.d.ts.map +1 -0
- package/dist/backend/entities/price-list-price-bracket.entity.js +73 -0
- package/dist/backend/entities/price-list-price-bracket.entity.js.map +1 -0
- package/dist/backend/entities/price-list-product.entity.d.ts +15 -0
- package/dist/backend/entities/price-list-product.entity.d.ts.map +1 -0
- package/dist/backend/entities/price-list-product.entity.js +43 -0
- package/dist/backend/entities/price-list-product.entity.js.map +1 -0
- package/dist/backend/entities/price-list.entity.d.ts +34 -0
- package/dist/backend/entities/price-list.entity.d.ts.map +1 -0
- package/dist/backend/entities/price-list.entity.js +115 -0
- package/dist/backend/entities/price-list.entity.js.map +1 -0
- package/dist/backend/index.d.ts +125 -0
- package/dist/backend/index.d.ts.map +1 -0
- package/dist/backend/index.js +179 -0
- package/dist/backend/index.js.map +1 -0
- package/dist/backend/plugin.d.ts +68 -0
- package/dist/backend/plugin.d.ts.map +1 -0
- package/dist/backend/plugin.js +88 -0
- package/dist/backend/plugin.js.map +1 -0
- package/dist/backend/routes.d.ts +40 -0
- package/dist/backend/routes.d.ts.map +1 -0
- package/dist/backend/routes.js +447 -0
- package/dist/backend/routes.js.map +1 -0
- package/dist/backend/routes.storefront.d.ts +47 -0
- package/dist/backend/routes.storefront.d.ts.map +1 -0
- package/dist/backend/routes.storefront.js +131 -0
- package/dist/backend/routes.storefront.js.map +1 -0
- package/dist/backend/services/application-rule-evaluator.d.ts +25 -0
- package/dist/backend/services/application-rule-evaluator.d.ts.map +1 -0
- package/dist/backend/services/application-rule-evaluator.js +2 -0
- package/dist/backend/services/application-rule-evaluator.js.map +1 -0
- package/dist/backend/services/audit-references.d.ts +11 -0
- package/dist/backend/services/audit-references.d.ts.map +1 -0
- package/dist/backend/services/audit-references.js +23 -0
- package/dist/backend/services/audit-references.js.map +1 -0
- package/dist/backend/services/default-price-list-migration.d.ts +70 -0
- package/dist/backend/services/default-price-list-migration.d.ts.map +1 -0
- package/dist/backend/services/default-price-list-migration.js +177 -0
- package/dist/backend/services/default-price-list-migration.js.map +1 -0
- package/dist/backend/services/display-mode-resolver.d.ts +78 -0
- package/dist/backend/services/display-mode-resolver.d.ts.map +1 -0
- package/dist/backend/services/display-mode-resolver.js +71 -0
- package/dist/backend/services/display-mode-resolver.js.map +1 -0
- package/dist/backend/services/listing-price-chain.d.ts +26 -0
- package/dist/backend/services/listing-price-chain.d.ts.map +1 -0
- package/dist/backend/services/listing-price-chain.js +55 -0
- package/dist/backend/services/listing-price-chain.js.map +1 -0
- package/dist/backend/services/price-bracket-resolver.d.ts +24 -0
- package/dist/backend/services/price-bracket-resolver.d.ts.map +1 -0
- package/dist/backend/services/price-bracket-resolver.js +16 -0
- package/dist/backend/services/price-bracket-resolver.js.map +1 -0
- package/dist/backend/services/price-list-candidate-vector.d.ts +116 -0
- package/dist/backend/services/price-list-candidate-vector.d.ts.map +1 -0
- package/dist/backend/services/price-list-candidate-vector.js +133 -0
- package/dist/backend/services/price-list-candidate-vector.js.map +1 -0
- package/dist/backend/services/price-list-currency-reference.d.ts +12 -0
- package/dist/backend/services/price-list-currency-reference.d.ts.map +1 -0
- package/dist/backend/services/price-list-currency-reference.js +24 -0
- package/dist/backend/services/price-list-currency-reference.js.map +1 -0
- package/dist/backend/services/price-list-read-port.d.ts +29 -0
- package/dist/backend/services/price-list-read-port.d.ts.map +1 -0
- package/dist/backend/services/price-list-read-port.js +64 -0
- package/dist/backend/services/price-list-read-port.js.map +1 -0
- package/dist/backend/services/price-list-resolver.d.ts +26 -0
- package/dist/backend/services/price-list-resolver.d.ts.map +1 -0
- package/dist/backend/services/price-list-resolver.js +37 -0
- package/dist/backend/services/price-list-resolver.js.map +1 -0
- package/dist/backend/services/price-list-service.d.ts +431 -0
- package/dist/backend/services/price-list-service.d.ts.map +1 -0
- package/dist/backend/services/price-list-service.js +1238 -0
- package/dist/backend/services/price-list-service.js.map +1 -0
- package/dist/backend/services/price-list-status-worker.d.ts +28 -0
- package/dist/backend/services/price-list-status-worker.d.ts.map +1 -0
- package/dist/backend/services/price-list-status-worker.js +38 -0
- package/dist/backend/services/price-list-status-worker.js.map +1 -0
- package/dist/backend/services/pricing-cache.d.ts +53 -0
- package/dist/backend/services/pricing-cache.d.ts.map +1 -0
- package/dist/backend/services/pricing-cache.js +88 -0
- package/dist/backend/services/pricing-cache.js.map +1 -0
- package/dist/backend/services/pricing-service.d.ts +304 -0
- package/dist/backend/services/pricing-service.d.ts.map +1 -0
- package/dist/backend/services/pricing-service.interface.d.ts +151 -0
- package/dist/backend/services/pricing-service.interface.d.ts.map +1 -0
- package/dist/backend/services/pricing-service.interface.js +10 -0
- package/dist/backend/services/pricing-service.interface.js.map +1 -0
- package/dist/backend/services/pricing-service.js +803 -0
- package/dist/backend/services/pricing-service.js.map +1 -0
- package/dist/backend/services/unit-price-ordering.d.ts +121 -0
- package/dist/backend/services/unit-price-ordering.d.ts.map +1 -0
- package/dist/backend/services/unit-price-ordering.js +164 -0
- package/dist/backend/services/unit-price-ordering.js.map +1 -0
- package/dist/manifest.d.ts +218 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +228 -0
- package/dist/manifest.js.map +1 -0
- package/dist/migrations/20260426T075235_price_lists_pricing_init.d.ts +24 -0
- package/dist/migrations/20260426T075235_price_lists_pricing_init.d.ts.map +1 -0
- package/dist/migrations/20260426T075235_price_lists_pricing_init.js +89 -0
- package/dist/migrations/20260426T075235_price_lists_pricing_init.js.map +1 -0
- package/dist/migrations/20260504T125655_price_lists_engine.d.ts +6 -0
- package/dist/migrations/20260504T125655_price_lists_engine.d.ts.map +1 -0
- package/dist/migrations/20260504T125655_price_lists_engine.js +319 -0
- package/dist/migrations/20260504T125655_price_lists_engine.js.map +1 -0
- package/dist/migrations/20260817T055457_price_lists_single_system_price_list.d.ts +15 -0
- package/dist/migrations/20260817T055457_price_lists_single_system_price_list.d.ts.map +1 -0
- package/dist/migrations/20260817T055457_price_lists_single_system_price_list.js +58 -0
- package/dist/migrations/20260817T055457_price_lists_single_system_price_list.js.map +1 -0
- package/dist/migrations/20260821T135907_price_lists_unit_price_amount_index.d.ts +40 -0
- package/dist/migrations/20260821T135907_price_lists_unit_price_amount_index.d.ts.map +1 -0
- package/dist/migrations/20260821T135907_price_lists_unit_price_amount_index.js +46 -0
- package/dist/migrations/20260821T135907_price_lists_unit_price_amount_index.js.map +1 -0
- package/dist/migrations/index.d.ts +30 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +35 -0
- package/dist/migrations/index.js.map +1 -0
- package/docs/price_lists.md +278 -0
- package/i18n/en.json +14 -0
- package/i18n/pl.json +14 -0
- package/package.json +99 -0
- package/tailwind.css +14 -0
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useMemo, useState, } from 'react';
|
|
3
|
+
import { Link, useNavigate } from 'react-router-dom';
|
|
4
|
+
import { Calendar, CircleDollarSign, Eye, Lock, Plus, Search, Star, Tag, Zap, } from 'lucide-react';
|
|
5
|
+
import { ApiError, apiClient } from '@endora-commerce/admin-kit/lib';
|
|
6
|
+
import { useTranslation } from '@endora-commerce/admin-kit/i18n';
|
|
7
|
+
const STATUS_BADGE_CLASS = {
|
|
8
|
+
draft: 'b2b-badge b2b-badge--outline',
|
|
9
|
+
active: 'b2b-badge b2b-badge--success',
|
|
10
|
+
scheduled: 'b2b-badge b2b-badge--info',
|
|
11
|
+
expired: 'b2b-badge b2b-badge--muted',
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Price lists — feature 011 (engine) admin landing page.
|
|
15
|
+
*
|
|
16
|
+
* Lists every price list with status/type filter chips and a free-text
|
|
17
|
+
* search. Clicking a row opens the editor; the seeded `Default` row is
|
|
18
|
+
* marked with a lock icon and a "System" chip because protections in
|
|
19
|
+
* `price-list-service.ts` refuse delete/state-change/rule-attach on it.
|
|
20
|
+
*/
|
|
21
|
+
export function PriceListsPage() {
|
|
22
|
+
const t = useTranslation('core');
|
|
23
|
+
const STATUS_LABEL = {
|
|
24
|
+
draft: t('priceLists.status.draft'),
|
|
25
|
+
active: t('priceLists.status.active'),
|
|
26
|
+
scheduled: t('priceLists.status.scheduled'),
|
|
27
|
+
expired: t('priceLists.status.expired'),
|
|
28
|
+
};
|
|
29
|
+
const TYPE_LABEL = {
|
|
30
|
+
base: t('priceLists.type.base'),
|
|
31
|
+
sale: t('priceLists.type.sale'),
|
|
32
|
+
};
|
|
33
|
+
const navigate = useNavigate();
|
|
34
|
+
const [rows, setRows] = useState([]);
|
|
35
|
+
const [loading, setLoading] = useState(true);
|
|
36
|
+
const [error, setError] = useState(null);
|
|
37
|
+
const [info, setInfo] = useState(null);
|
|
38
|
+
const [query, setQuery] = useState('');
|
|
39
|
+
const [statusFilter, setStatusFilter] = useState(new Set());
|
|
40
|
+
const [typeFilter, setTypeFilter] = useState(new Set());
|
|
41
|
+
const [creating, setCreating] = useState(false);
|
|
42
|
+
const refresh = useCallback(async () => {
|
|
43
|
+
setLoading(true);
|
|
44
|
+
setError(null);
|
|
45
|
+
try {
|
|
46
|
+
const params = new URLSearchParams();
|
|
47
|
+
for (const s of statusFilter)
|
|
48
|
+
params.append('status', s);
|
|
49
|
+
for (const ty of typeFilter)
|
|
50
|
+
params.append('type', ty);
|
|
51
|
+
if (query.trim())
|
|
52
|
+
params.set('search', query.trim());
|
|
53
|
+
const qs = params.toString();
|
|
54
|
+
const res = await apiClient.get(`/api/v1/admin/price-lists-engine${qs ? `?${qs}` : ''}`);
|
|
55
|
+
setRows(res.data.items);
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
setError(err instanceof ApiError ? err.envelope.error.message : t('priceLists.error.load'));
|
|
59
|
+
}
|
|
60
|
+
finally {
|
|
61
|
+
setLoading(false);
|
|
62
|
+
}
|
|
63
|
+
}, [statusFilter, typeFilter, query, t]);
|
|
64
|
+
useEffect(() => {
|
|
65
|
+
void refresh();
|
|
66
|
+
}, [refresh]);
|
|
67
|
+
const stats = useMemo(() => {
|
|
68
|
+
return {
|
|
69
|
+
total: rows.length,
|
|
70
|
+
active: rows.filter((r) => r.status === 'active').length,
|
|
71
|
+
scheduled: rows.filter((r) => r.status === 'scheduled').length,
|
|
72
|
+
sale: rows.filter((r) => r.type === 'sale').length,
|
|
73
|
+
};
|
|
74
|
+
}, [rows]);
|
|
75
|
+
const handleCreate = useCallback(async (input) => {
|
|
76
|
+
try {
|
|
77
|
+
const res = await apiClient.post('/api/v1/admin/price-lists-engine', input);
|
|
78
|
+
setInfo(t('priceLists.info.created', { name: res.data.name }));
|
|
79
|
+
setCreating(false);
|
|
80
|
+
navigate(`/price-lists/${res.data.id}`);
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
setError(err instanceof ApiError ? err.envelope.error.message : t('priceLists.error.create'));
|
|
84
|
+
}
|
|
85
|
+
}, [navigate, t]);
|
|
86
|
+
return (_jsxs("div", { className: "b2b-page b2b-page--wide", children: [_jsxs("div", { className: "b2b-page-head", children: [_jsxs("div", { className: "b2b-grow", children: [_jsx("div", { className: "b2b-page-head__title", children: t('priceLists.page.title') }), _jsx("div", { className: "b2b-page-head__sub", children: t('priceLists.page.description') })] }), _jsxs("div", { className: "b2b-page-head__actions", children: [_jsxs(Link, { to: "/price-lists/display-modes", className: "b2b-btn b2b-btn--default", children: [_jsx(Eye, { size: 14 }), " ", t('priceLists.action.displayModes')] }), _jsxs("button", { type: "button", className: "b2b-btn b2b-btn--primary", onClick: () => setCreating(true), children: [_jsx(Plus, { size: 14 }), " ", t('priceLists.action.newPriceList')] })] })] }), error ? (_jsx(Banner, { kind: "error", message: error, onDismiss: () => setError(null) })) : null, info ? (_jsx(Banner, { kind: "info", message: info, onDismiss: () => setInfo(null) })) : null, _jsxs("div", { className: "b2b-row", style: { gap: 16, marginBottom: 16 }, children: [_jsx(Stat, { label: t('priceLists.stat.total'), value: String(stats.total) }), _jsx(Stat, { label: t('priceLists.stat.active'), value: String(stats.active) }), _jsx(Stat, { label: t('priceLists.stat.scheduled'), value: String(stats.scheduled) }), _jsx(Stat, { label: t('priceLists.stat.sale'), value: String(stats.sale) })] }), _jsxs("div", { className: "b2b-card", children: [_jsxs("div", { className: "b2b-filterbar", children: [_jsx("div", { className: "b2b-filterbar__search", children: _jsxs("div", { className: "b2b-input-wrap", children: [_jsx(Search, { size: 16, className: "lead" }), _jsx("input", { className: "b2b-field b2b-field--addon", placeholder: t('priceLists.search.placeholder'), value: query, onChange: (e) => setQuery(e.target.value) })] }) }), _jsx(FilterChip, { icon: _jsx(Zap, { size: 12 }), label: t('priceLists.filter.status'), options: ['draft', 'active', 'scheduled', 'expired'].map((s) => ({
|
|
87
|
+
value: s,
|
|
88
|
+
label: STATUS_LABEL[s],
|
|
89
|
+
})), selected: statusFilter, onToggle: (value) => {
|
|
90
|
+
setStatusFilter((prev) => {
|
|
91
|
+
const next = new Set(prev);
|
|
92
|
+
const v = value;
|
|
93
|
+
if (next.has(v))
|
|
94
|
+
next.delete(v);
|
|
95
|
+
else
|
|
96
|
+
next.add(v);
|
|
97
|
+
return next;
|
|
98
|
+
});
|
|
99
|
+
} }), _jsx(FilterChip, { icon: _jsx(Tag, { size: 12 }), label: t('priceLists.filter.type'), options: ['base', 'sale'].map((ty) => ({ value: ty, label: TYPE_LABEL[ty] })), selected: typeFilter, onToggle: (value) => {
|
|
100
|
+
setTypeFilter((prev) => {
|
|
101
|
+
const next = new Set(prev);
|
|
102
|
+
const v = value;
|
|
103
|
+
if (next.has(v))
|
|
104
|
+
next.delete(v);
|
|
105
|
+
else
|
|
106
|
+
next.add(v);
|
|
107
|
+
return next;
|
|
108
|
+
});
|
|
109
|
+
} })] }), _jsx("div", { className: "b2b-card__body b2b-card__body--flush", children: loading ? (_jsx("div", { style: { padding: 32, color: 'var(--fg-muted)', fontSize: 13 }, children: t('priceLists.loading') })) : rows.length === 0 ? (_jsxs("div", { className: "b2b-empty", children: [_jsx("div", { className: "b2b-empty__icon", children: _jsx(CircleDollarSign, { size: 20 }) }), _jsx("div", { className: "b2b-empty__title", children: query.trim() || statusFilter.size > 0 || typeFilter.size > 0
|
|
110
|
+
? t('priceLists.empty.filtered')
|
|
111
|
+
: t('priceLists.empty.none') }), _jsx("div", { className: "b2b-empty__sub", children: t('priceLists.empty.subtitle') }), _jsxs("button", { type: "button", className: "b2b-btn b2b-btn--primary", onClick: () => setCreating(true), children: [_jsx(Plus, { size: 14 }), " ", t('priceLists.action.newPriceList')] })] })) : (_jsxs("table", { className: "b2b-tbl", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: t('priceLists.column.name') }), _jsx("th", { children: t('priceLists.column.type') }), _jsx("th", { children: t('priceLists.column.status') }), _jsx("th", { children: t('priceLists.column.activeWindow') }), _jsx("th", { children: t('priceLists.column.lastModified') })] }) }), _jsx("tbody", { children: rows.map((r) => (_jsxs("tr", { className: "is-clickable", onClick: () => { navigate(`/price-lists/${r.id}`); }, children: [_jsx("td", { children: _jsxs("div", { className: "b2b-row", style: { gap: 12 }, children: [_jsx("div", { style: {
|
|
112
|
+
width: 32,
|
|
113
|
+
height: 32,
|
|
114
|
+
borderRadius: 6,
|
|
115
|
+
background: r.isSystem ? 'var(--primary-soft)' : 'var(--surface-sunken)',
|
|
116
|
+
display: 'grid',
|
|
117
|
+
placeItems: 'center',
|
|
118
|
+
}, children: r.isSystem ? (_jsx(Star, { size: 14, style: { color: 'var(--primary-color)' } })) : (_jsx(CircleDollarSign, { size: 14, style: { color: 'var(--fg-muted)' } })) }), _jsxs("div", { children: [_jsx("div", { style: { fontWeight: 500 }, children: r.name }), r.isSystem ? (_jsxs("span", { className: "b2b-badge b2b-badge--success", style: { marginTop: 2, display: 'inline-flex', alignItems: 'center', gap: 4 }, children: [_jsx(Lock, { size: 10 }), " ", t('priceLists.systemBadge')] })) : null] })] }) }), _jsx("td", { children: _jsx("span", { className: "b2b-badge b2b-badge--outline", children: TYPE_LABEL[r.type] }) }), _jsx("td", { children: _jsx("span", { className: STATUS_BADGE_CLASS[r.status], children: STATUS_LABEL[r.status] }) }), _jsx("td", { children: _jsxs("span", { style: { fontSize: 12, color: 'var(--fg-muted)', display: 'inline-flex', alignItems: 'center', gap: 4 }, children: [_jsx(Calendar, { size: 12 }), formatRange(r.startsAt, r.endsAt, t)] }) }), _jsx("td", { children: _jsx("span", { style: { fontSize: 12, color: 'var(--fg-muted)' }, children: formatDate(r.modifiedAt) }) })] }, r.id))) })] })) })] }), creating ? (_jsx(CreateDrawer, { onClose: () => setCreating(false), onSubmit: handleCreate })) : null] }));
|
|
119
|
+
}
|
|
120
|
+
function Stat({ label, value }) {
|
|
121
|
+
return (_jsxs("div", { className: "b2b-card", style: { flex: 1, padding: 16 }, children: [_jsx("div", { className: "b2b-muted", style: { fontSize: 11, textTransform: 'uppercase', letterSpacing: '0.06em' }, children: label }), _jsx("div", { style: { fontSize: 22, fontWeight: 600, marginTop: 4 }, children: value })] }));
|
|
122
|
+
}
|
|
123
|
+
function Banner({ kind, message, onDismiss, }) {
|
|
124
|
+
const t = useTranslation('core');
|
|
125
|
+
const palette = kind === 'error'
|
|
126
|
+
? { bg: 'var(--danger-soft)', fg: 'var(--danger-soft-fg)', border: 'hsl(8 80% 85%)' }
|
|
127
|
+
: { bg: 'var(--success-soft)', fg: 'var(--success-soft-fg)', border: 'hsl(142 50% 80%)' };
|
|
128
|
+
return (_jsxs("div", { className: "b2b-card b2b-row", style: {
|
|
129
|
+
background: palette.bg,
|
|
130
|
+
color: palette.fg,
|
|
131
|
+
padding: 12,
|
|
132
|
+
marginBottom: 16,
|
|
133
|
+
border: `1px solid ${palette.border}`,
|
|
134
|
+
gap: 8,
|
|
135
|
+
alignItems: 'center',
|
|
136
|
+
}, children: [_jsx("div", { className: "b2b-grow", children: message }), _jsx("button", { type: "button", className: "b2b-btn b2b-btn--ghost b2b-btn--sm", onClick: onDismiss, children: t('priceLists.dismiss') })] }));
|
|
137
|
+
}
|
|
138
|
+
function FilterChip({ icon, label, options, selected, onToggle, }) {
|
|
139
|
+
const [open, setOpen] = useState(false);
|
|
140
|
+
return (_jsxs("div", { style: { position: 'relative' }, children: [_jsxs("button", { type: "button", className: "b2b-filterchip", "aria-expanded": open, onClick: () => setOpen((v) => !v), style: selected.size > 0 ? { borderColor: 'var(--primary-color)' } : undefined, children: [icon, _jsxs("span", { children: [label, selected.size > 0 ? ` · ${selected.size}` : ''] })] }), open ? (_jsx("div", { className: "b2b-card", style: {
|
|
141
|
+
position: 'absolute',
|
|
142
|
+
top: '100%',
|
|
143
|
+
left: 0,
|
|
144
|
+
marginTop: 4,
|
|
145
|
+
zIndex: 10,
|
|
146
|
+
padding: 8,
|
|
147
|
+
minWidth: 140,
|
|
148
|
+
display: 'flex',
|
|
149
|
+
flexDirection: 'column',
|
|
150
|
+
gap: 4,
|
|
151
|
+
}, children: options.map((opt) => {
|
|
152
|
+
const isOn = selected.has(opt.value);
|
|
153
|
+
return (_jsxs("label", { style: { display: 'flex', alignItems: 'center', gap: 8, fontSize: 12, padding: '4px 6px', cursor: 'pointer' }, children: [_jsx("input", { type: "checkbox", className: "b2b-cbx", checked: isOn, onChange: () => onToggle(opt.value) }), opt.label] }, opt.value));
|
|
154
|
+
}) })) : null] }));
|
|
155
|
+
}
|
|
156
|
+
function CreateDrawer({ onClose, onSubmit, }) {
|
|
157
|
+
const t = useTranslation('core');
|
|
158
|
+
const [name, setName] = useState('');
|
|
159
|
+
const [type, setType] = useState('base');
|
|
160
|
+
const [startsAt, setStartsAt] = useState('');
|
|
161
|
+
const [endsAt, setEndsAt] = useState('');
|
|
162
|
+
const [submitting, setSubmitting] = useState(false);
|
|
163
|
+
const handle = async () => {
|
|
164
|
+
if (!name.trim())
|
|
165
|
+
return;
|
|
166
|
+
setSubmitting(true);
|
|
167
|
+
try {
|
|
168
|
+
await onSubmit({
|
|
169
|
+
name: name.trim(),
|
|
170
|
+
type,
|
|
171
|
+
startsAt: startsAt ? new Date(startsAt).toISOString() : null,
|
|
172
|
+
endsAt: endsAt ? new Date(endsAt).toISOString() : null,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
finally {
|
|
176
|
+
setSubmitting(false);
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "b2b-scrim", onClick: onClose }), _jsxs("aside", { className: "b2b-drawer", role: "dialog", "aria-modal": "true", children: [_jsx("div", { className: "b2b-drawer__head", children: _jsxs("div", { className: "b2b-grow", children: [_jsx("div", { className: "b2b-drawer__title", children: t('priceLists.create.title') }), _jsx("div", { className: "b2b-card__sub", children: t('priceLists.create.description') })] }) }), _jsx("div", { className: "b2b-drawer__body", children: _jsxs("div", { className: "b2b-col", style: { gap: 14 }, children: [_jsxs("div", { children: [_jsx("label", { className: "b2b-label", htmlFor: "pl-name", children: t('priceLists.create.name') }), _jsx("input", { id: "pl-name", className: "b2b-field", value: name, onChange: (e) => setName(e.target.value), placeholder: t('priceLists.create.namePlaceholder'), required: true }), _jsx("div", { className: "b2b-help", children: t('priceLists.create.nameHelp') })] }), _jsxs("div", { children: [_jsx("label", { className: "b2b-label", htmlFor: "pl-type", children: t('priceLists.create.type') }), _jsxs("select", { id: "pl-type", className: "b2b-field", value: type, onChange: (e) => setType(e.target.value), children: [_jsx("option", { value: "base", children: t('priceLists.create.typeBaseOption') }), _jsx("option", { value: "sale", children: t('priceLists.create.typeSaleOption') })] })] }), _jsxs("div", { className: "b2b-row", style: { gap: 12 }, children: [_jsxs("div", { className: "b2b-grow", children: [_jsx("label", { className: "b2b-label", htmlFor: "pl-starts", children: t('priceLists.create.startsAt') }), _jsx("input", { id: "pl-starts", className: "b2b-field", type: "datetime-local", value: startsAt, onChange: (e) => setStartsAt(e.target.value) })] }), _jsxs("div", { className: "b2b-grow", children: [_jsx("label", { className: "b2b-label", htmlFor: "pl-ends", children: t('priceLists.create.endsAt') }), _jsx("input", { id: "pl-ends", className: "b2b-field", type: "datetime-local", value: endsAt, onChange: (e) => setEndsAt(e.target.value) })] })] }), _jsx("div", { className: "b2b-help", children: t('priceLists.create.windowHint') })] }) }), _jsxs("div", { className: "b2b-drawer__foot", children: [_jsx("button", { type: "button", className: "b2b-btn b2b-btn--ghost", onClick: onClose, children: t('priceLists.create.cancel') }), _jsx("button", { type: "button", className: "b2b-btn b2b-btn--primary", disabled: submitting || !name.trim(), onClick: () => {
|
|
180
|
+
void handle();
|
|
181
|
+
}, children: submitting ? t('priceLists.create.creating') : t('priceLists.create.submit') })] })] })] }));
|
|
182
|
+
}
|
|
183
|
+
function formatRange(startsAt, endsAt, t) {
|
|
184
|
+
if (!startsAt && !endsAt)
|
|
185
|
+
return t('priceLists.window.always');
|
|
186
|
+
const fmt = (s) => (s ? new Date(s).toLocaleDateString() : '—');
|
|
187
|
+
return `${fmt(startsAt)} → ${fmt(endsAt)}`;
|
|
188
|
+
}
|
|
189
|
+
function formatDate(iso) {
|
|
190
|
+
return new Date(iso).toLocaleString();
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* The registry loads a route component through a dynamic-import factory and
|
|
194
|
+
* reads its default export (feature 091, FR-013). The named export stays: it is
|
|
195
|
+
* the spelling this module's own code and its tests use.
|
|
196
|
+
*/
|
|
197
|
+
export default PriceListsPage;
|
|
198
|
+
//# sourceMappingURL=PriceListsPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PriceListsPage.js","sourceRoot":"","sources":["../../../src/admin/pages/PriceListsPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { AdminZoneProps } from '@endora-commerce/contracts';
|
|
3
|
+
/**
|
|
4
|
+
* The category editor's price-display-mode override (feature 091, P7a).
|
|
5
|
+
*
|
|
6
|
+
* `catalog`'s `CategoriesTree.tsx` used to import `DisplayModeOverrideRow`
|
|
7
|
+
* directly and hand it its own label and hint. The place is
|
|
8
|
+
* `category.editor.after` now, and this is the four-line wrapper that binds the
|
|
9
|
+
* zone's props to the control's: the scope is *this module's* constant, because
|
|
10
|
+
* the host mounting a category editor is the only thing that could have said
|
|
11
|
+
* `'category'`.
|
|
12
|
+
*
|
|
13
|
+
* **No `match`, and it is a decision rather than an omission.** `match` narrows
|
|
14
|
+
* the mounts of one place (Z13); this place has one host and one mount, so
|
|
15
|
+
* there is nothing to narrow, and `match` has no negation — anything written
|
|
16
|
+
* here would be an enumeration of `catalog`'s vocabulary that goes stale
|
|
17
|
+
* fail-closed. `admin/test/modules/price_lists/price-lists-zones.test.tsx`
|
|
18
|
+
* asserts it absent.
|
|
19
|
+
*/
|
|
20
|
+
export type CategoryDisplayModeProps = AdminZoneProps<'category.editor.after'>;
|
|
21
|
+
export declare function CategoryDisplayMode({ categoryId }: CategoryDisplayModeProps): ReactNode;
|
|
22
|
+
/**
|
|
23
|
+
* The zone renderer loads a contribution through a dynamic-import factory and
|
|
24
|
+
* reads its default export (feature 091, FR-013).
|
|
25
|
+
*/
|
|
26
|
+
export default CategoryDisplayMode;
|
|
27
|
+
//# sourceMappingURL=CategoryDisplayMode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CategoryDisplayMode.d.ts","sourceRoot":"","sources":["../../../src/admin/zones/CategoryDisplayMode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGjE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,wBAAwB,GAAG,cAAc,CAAC,uBAAuB,CAAC,CAAC;AAE/E,wBAAgB,mBAAmB,CAAC,EAAE,UAAU,EAAE,EAAE,wBAAwB,GAAG,SAAS,CAEvF;AAED;;;GAGG;AACH,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { DisplayModeOverrideRow } from '../components/DisplayModeOverrideRow.js';
|
|
3
|
+
export function CategoryDisplayMode({ categoryId }) {
|
|
4
|
+
return _jsx(DisplayModeOverrideRow, { scope: "category", targetId: categoryId });
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* The zone renderer loads a contribution through a dynamic-import factory and
|
|
8
|
+
* reads its default export (feature 091, FR-013).
|
|
9
|
+
*/
|
|
10
|
+
export default CategoryDisplayMode;
|
|
11
|
+
//# sourceMappingURL=CategoryDisplayMode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CategoryDisplayMode.js","sourceRoot":"","sources":["../../../src/admin/zones/CategoryDisplayMode.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAqBjF,MAAM,UAAU,mBAAmB,CAAC,EAAE,UAAU,EAA4B;IAC1E,OAAO,KAAC,sBAAsB,IAAC,KAAK,EAAC,UAAU,EAAC,QAAQ,EAAE,UAAU,GAAI,CAAC;AAC3E,CAAC;AAED;;;GAGG;AACH,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { AdminZoneProps } from '@endora-commerce/contracts';
|
|
3
|
+
/**
|
|
4
|
+
* The organization detail screen's price-display-mode override (feature 091,
|
|
5
|
+
* P7b).
|
|
6
|
+
*
|
|
7
|
+
* `organizations`' `OrganizationDetail.tsx` used to import
|
|
8
|
+
* `DisplayModeOverrideRow` by path and wrap it in a card of its own, handing it
|
|
9
|
+
* `organizations.detail.pricingLabel` and `organizations.detail.pricingHint`.
|
|
10
|
+
* The place is `organization.detail.after` now, and the scope is *this
|
|
11
|
+
* module's* constant, because the host mounting an organization detail is the
|
|
12
|
+
* only thing that could have said `'organization'`.
|
|
13
|
+
*
|
|
14
|
+
* **The card is the contribution's and not the host's**, which is the one
|
|
15
|
+
* layout decision this wrapper makes. The zone is a stack of panels and the
|
|
16
|
+
* other three contributors each render a `Card`; a bare row between them would
|
|
17
|
+
* read as a rendering failure. The host cannot wrap the zone in one card
|
|
18
|
+
* instead, because that would nest four cards inside a fifth. What went with
|
|
19
|
+
* the host's card is its heading — `organizations.detail.pricingCard` — for
|
|
20
|
+
* `DisplayModeOverrideRow`'s own reason: a host cannot title a contributor it
|
|
21
|
+
* does not know, and the row already labels its control.
|
|
22
|
+
*
|
|
23
|
+
* **No `match`, and it is a decision rather than an omission.** `match` narrows
|
|
24
|
+
* the mounts of one place (Z13); this place has one host and one mount, so
|
|
25
|
+
* there is nothing to narrow.
|
|
26
|
+
* `admin/test/modules/price_lists/price-lists-zones.test.tsx` asserts it absent
|
|
27
|
+
* so a later author cannot add one quietly.
|
|
28
|
+
*/
|
|
29
|
+
export type OrganizationDisplayModeProps = AdminZoneProps<'organization.detail.after'>;
|
|
30
|
+
export declare function OrganizationDisplayMode({ organizationId, }: OrganizationDisplayModeProps): ReactNode;
|
|
31
|
+
/**
|
|
32
|
+
* The zone renderer loads a contribution through a dynamic-import factory and
|
|
33
|
+
* reads its default export (feature 091, FR-013).
|
|
34
|
+
*/
|
|
35
|
+
export default OrganizationDisplayMode;
|
|
36
|
+
//# sourceMappingURL=OrganizationDisplayMode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OrganizationDisplayMode.d.ts","sourceRoot":"","sources":["../../../src/admin/zones/OrganizationDisplayMode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAIjE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,MAAM,4BAA4B,GAAG,cAAc,CAAC,2BAA2B,CAAC,CAAC;AAEvF,wBAAgB,uBAAuB,CAAC,EACtC,cAAc,GACf,EAAE,4BAA4B,GAAG,SAAS,CAQ1C;AAED;;;GAGG;AACH,eAAe,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Card, CardContent } from '@endora-commerce/admin-kit/ui';
|
|
3
|
+
import { DisplayModeOverrideRow } from '../components/DisplayModeOverrideRow.js';
|
|
4
|
+
export function OrganizationDisplayMode({ organizationId, }) {
|
|
5
|
+
return (_jsx(Card, { className: "mb-4", children: _jsx(CardContent, { children: _jsx(DisplayModeOverrideRow, { scope: "organization", targetId: organizationId }) }) }));
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* The zone renderer loads a contribution through a dynamic-import factory and
|
|
9
|
+
* reads its default export (feature 091, FR-013).
|
|
10
|
+
*/
|
|
11
|
+
export default OrganizationDisplayMode;
|
|
12
|
+
//# sourceMappingURL=OrganizationDisplayMode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OrganizationDisplayMode.js","sourceRoot":"","sources":["../../../src/admin/zones/OrganizationDisplayMode.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AA8BjF,MAAM,UAAU,uBAAuB,CAAC,EACtC,cAAc,GACe;IAC7B,OAAO,CACL,KAAC,IAAI,IAAC,SAAS,EAAC,MAAM,YACpB,KAAC,WAAW,cACV,KAAC,sBAAsB,IAAC,KAAK,EAAC,cAAc,EAAC,QAAQ,EAAE,cAAc,GAAI,GAC7D,GACT,CACR,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,eAAe,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { AdminZoneProps } from '@endora-commerce/contracts';
|
|
3
|
+
/**
|
|
4
|
+
* The product editor's linked-price-lists panel (feature 091, P7a).
|
|
5
|
+
*
|
|
6
|
+
* `catalog`'s `ProductEditor.tsx` used to import `LinkedPriceListsPanel`
|
|
7
|
+
* directly and render it as the last child of the Pricing tab. The place is
|
|
8
|
+
* `product.editor.pricing.after` now, and the zone's props are the panel's, so
|
|
9
|
+
* this wrapper exists only to give the renderer a default export.
|
|
10
|
+
*
|
|
11
|
+
* **No `match`** — one host, one mount; see `CategoryDisplayMode.tsx`.
|
|
12
|
+
*/
|
|
13
|
+
export type ProductLinkedPriceListsProps = AdminZoneProps<'product.editor.pricing.after'>;
|
|
14
|
+
export declare function ProductLinkedPriceLists({ productId }: ProductLinkedPriceListsProps): ReactNode;
|
|
15
|
+
export default ProductLinkedPriceLists;
|
|
16
|
+
//# sourceMappingURL=ProductLinkedPriceLists.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProductLinkedPriceLists.d.ts","sourceRoot":"","sources":["../../../src/admin/zones/ProductLinkedPriceLists.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGjE;;;;;;;;;GASG;AACH,MAAM,MAAM,4BAA4B,GAAG,cAAc,CAAC,8BAA8B,CAAC,CAAC;AAE1F,wBAAgB,uBAAuB,CAAC,EAAE,SAAS,EAAE,EAAE,4BAA4B,GAAG,SAAS,CAE9F;AAED,eAAe,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { LinkedPriceListsPanel } from '../components/LinkedPriceListsPanel.js';
|
|
3
|
+
export function ProductLinkedPriceLists({ productId }) {
|
|
4
|
+
return _jsx(LinkedPriceListsPanel, { productId: productId });
|
|
5
|
+
}
|
|
6
|
+
export default ProductLinkedPriceLists;
|
|
7
|
+
//# sourceMappingURL=ProductLinkedPriceLists.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProductLinkedPriceLists.js","sourceRoot":"","sources":["../../../src/admin/zones/ProductLinkedPriceLists.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAc/E,MAAM,UAAU,uBAAuB,CAAC,EAAE,SAAS,EAAgC;IACjF,OAAO,KAAC,qBAAqB,IAAC,SAAS,EAAE,SAAS,GAAI,CAAC;AACzD,CAAC;AAED,eAAe,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { OptionalProps } from '@mikro-orm/core';
|
|
2
|
+
/**
|
|
3
|
+
* PriceDisplayModeOverride — per-Organization / per-Category / per-Product
|
|
4
|
+
* override of the price display mode.
|
|
5
|
+
*
|
|
6
|
+
* Resolves alongside the platform defaults from the settings module
|
|
7
|
+
* (`pricing.default_display_mode`, `pricing.unauthenticated_display_mode`)
|
|
8
|
+
* via the chain Product → Category → Organization → Settings.
|
|
9
|
+
*
|
|
10
|
+
* Composite primary key on `(scope, targetId)` allows at most one override per
|
|
11
|
+
* scope+target pair. The `targetId` is a polymorphic FK to the appropriate
|
|
12
|
+
* table for `scope`; integrity is enforced at the service layer because the
|
|
13
|
+
* target table varies (data-model.md §1.4).
|
|
14
|
+
*/
|
|
15
|
+
export declare class PriceDisplayModeOverride {
|
|
16
|
+
[OptionalProps]?: 'createdAt' | 'updatedAt';
|
|
17
|
+
scope: 'organization' | 'category' | 'product';
|
|
18
|
+
targetId: string;
|
|
19
|
+
mode: 'gross_only' | 'net_only' | 'both' | 'none';
|
|
20
|
+
createdAt: Date;
|
|
21
|
+
updatedAt: Date;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=price-display-mode-override.entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"price-display-mode-override.entity.d.ts","sourceRoot":"","sources":["../../../src/backend/entities/price-display-mode-override.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,aAAa,EAAwB,MAAM,iBAAiB,CAAC;AAG9E;;;;;;;;;;;;GAYG;AACH,qBAEa,wBAAwB;IACnC,CAAC,aAAa,CAAC,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC;IAG5C,KAAK,EAAG,cAAc,GAAG,UAAU,GAAG,SAAS,CAAC;IAGhD,QAAQ,EAAG,MAAM,CAAC;IAGlB,IAAI,EAAG,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;IAGnD,SAAS,EAAE,IAAI,CAAc;IAG7B,SAAS,EAAE,IAAI,CAAc;CAC9B"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { Entity, OptionalProps, PrimaryKey, Property } from '@mikro-orm/core';
|
|
11
|
+
import { GlobalEntity } from '@endora-commerce/platform/tenancy';
|
|
12
|
+
/**
|
|
13
|
+
* PriceDisplayModeOverride — per-Organization / per-Category / per-Product
|
|
14
|
+
* override of the price display mode.
|
|
15
|
+
*
|
|
16
|
+
* Resolves alongside the platform defaults from the settings module
|
|
17
|
+
* (`pricing.default_display_mode`, `pricing.unauthenticated_display_mode`)
|
|
18
|
+
* via the chain Product → Category → Organization → Settings.
|
|
19
|
+
*
|
|
20
|
+
* Composite primary key on `(scope, targetId)` allows at most one override per
|
|
21
|
+
* scope+target pair. The `targetId` is a polymorphic FK to the appropriate
|
|
22
|
+
* table for `scope`; integrity is enforced at the service layer because the
|
|
23
|
+
* target table varies (data-model.md §1.4).
|
|
24
|
+
*/
|
|
25
|
+
let PriceDisplayModeOverride = class PriceDisplayModeOverride {
|
|
26
|
+
[OptionalProps];
|
|
27
|
+
scope;
|
|
28
|
+
targetId;
|
|
29
|
+
mode;
|
|
30
|
+
createdAt = new Date();
|
|
31
|
+
updatedAt = new Date();
|
|
32
|
+
};
|
|
33
|
+
__decorate([
|
|
34
|
+
PrimaryKey({ type: 'string', length: 16 }),
|
|
35
|
+
__metadata("design:type", String)
|
|
36
|
+
], PriceDisplayModeOverride.prototype, "scope", void 0);
|
|
37
|
+
__decorate([
|
|
38
|
+
PrimaryKey({ type: 'uuid' }),
|
|
39
|
+
__metadata("design:type", String)
|
|
40
|
+
], PriceDisplayModeOverride.prototype, "targetId", void 0);
|
|
41
|
+
__decorate([
|
|
42
|
+
Property({ type: 'string', length: 16 }),
|
|
43
|
+
__metadata("design:type", String)
|
|
44
|
+
], PriceDisplayModeOverride.prototype, "mode", void 0);
|
|
45
|
+
__decorate([
|
|
46
|
+
Property({ type: 'datetime', onCreate: () => new Date() }),
|
|
47
|
+
__metadata("design:type", Date)
|
|
48
|
+
], PriceDisplayModeOverride.prototype, "createdAt", void 0);
|
|
49
|
+
__decorate([
|
|
50
|
+
Property({ type: 'datetime', onUpdate: () => new Date() }),
|
|
51
|
+
__metadata("design:type", Date)
|
|
52
|
+
], PriceDisplayModeOverride.prototype, "updatedAt", void 0);
|
|
53
|
+
PriceDisplayModeOverride = __decorate([
|
|
54
|
+
GlobalEntity(),
|
|
55
|
+
Entity({ tableName: 'price_display_mode_overrides' })
|
|
56
|
+
], PriceDisplayModeOverride);
|
|
57
|
+
export { PriceDisplayModeOverride };
|
|
58
|
+
//# sourceMappingURL=price-display-mode-override.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"price-display-mode-override.entity.js","sourceRoot":"","sources":["../../../src/backend/entities/price-display-mode-override.entity.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE;;;;;;;;;;;;GAYG;AAGI,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IACnC,CAAC,aAAa,CAAC,CAA6B;IAG5C,KAAK,CAA2C;IAGhD,QAAQ,CAAU;IAGlB,IAAI,CAA+C;IAGnD,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;IAG7B,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;CAC9B,CAAA;AAbC;IADC,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;uDACK;AAGhD;IADC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;0DACX;AAGlB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;sDACU;AAGnD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;2DAAc;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;2DAAc;AAhBlB,wBAAwB;IAFpC,YAAY,EAAE;IACd,MAAM,CAAC,EAAE,SAAS,EAAE,8BAA8B,EAAE,CAAC;GACzC,wBAAwB,CAiBpC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { OptionalProps } from '@mikro-orm/core';
|
|
2
|
+
/**
|
|
3
|
+
* PriceListPriceBracket — one bracket row inside a price list for a given
|
|
4
|
+
* `(product, currency)` pair.
|
|
5
|
+
*
|
|
6
|
+
* Composite primary key on `(priceListId, productId, currencyCode, minQuantity)`
|
|
7
|
+
* which guarantees a unique starting point per series. Overlap-freedom across
|
|
8
|
+
* brackets within the same `(list, product, currency)` triplet is enforced at
|
|
9
|
+
* the service layer (research §R3) — not at the DB — so the API can return a
|
|
10
|
+
* structured `400 bracket_overlap` error.
|
|
11
|
+
*
|
|
12
|
+
* `maxQuantity = null` is the open-ended top bracket. `amount` is decimal(14,4)
|
|
13
|
+
* stored as a string to preserve precision through the wire and the ORM.
|
|
14
|
+
*/
|
|
15
|
+
export declare class PriceListPriceBracket {
|
|
16
|
+
[OptionalProps]?: 'createdAt' | 'updatedAt' | 'maxQuantity';
|
|
17
|
+
priceListId: string;
|
|
18
|
+
productId: string;
|
|
19
|
+
currencyCode: string;
|
|
20
|
+
minQuantity: number;
|
|
21
|
+
maxQuantity?: number | null;
|
|
22
|
+
amount: string;
|
|
23
|
+
createdAt: Date;
|
|
24
|
+
updatedAt: Date;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=price-list-price-bracket.entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"price-list-price-bracket.entity.d.ts","sourceRoot":"","sources":["../../../src/backend/entities/price-list-price-bracket.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,aAAa,EAAwB,MAAM,iBAAiB,CAAC;AAG9E;;;;;;;;;;;;GAYG;AACH,qBAEa,qBAAqB;IAChC,CAAC,aAAa,CAAC,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,aAAa,CAAC;IAG5D,WAAW,EAAG,MAAM,CAAC;IAGrB,SAAS,EAAG,MAAM,CAAC;IAGnB,YAAY,EAAG,MAAM,CAAC;IAGtB,WAAW,EAAG,MAAM,CAAC;IAGrB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAG5B,MAAM,EAAG,MAAM,CAAC;IAGhB,SAAS,EAAE,IAAI,CAAc;IAG7B,SAAS,EAAE,IAAI,CAAc;CAC9B"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { Entity, OptionalProps, PrimaryKey, Property } from '@mikro-orm/core';
|
|
11
|
+
import { GlobalEntity } from '@endora-commerce/platform/tenancy';
|
|
12
|
+
/**
|
|
13
|
+
* PriceListPriceBracket — one bracket row inside a price list for a given
|
|
14
|
+
* `(product, currency)` pair.
|
|
15
|
+
*
|
|
16
|
+
* Composite primary key on `(priceListId, productId, currencyCode, minQuantity)`
|
|
17
|
+
* which guarantees a unique starting point per series. Overlap-freedom across
|
|
18
|
+
* brackets within the same `(list, product, currency)` triplet is enforced at
|
|
19
|
+
* the service layer (research §R3) — not at the DB — so the API can return a
|
|
20
|
+
* structured `400 bracket_overlap` error.
|
|
21
|
+
*
|
|
22
|
+
* `maxQuantity = null` is the open-ended top bracket. `amount` is decimal(14,4)
|
|
23
|
+
* stored as a string to preserve precision through the wire and the ORM.
|
|
24
|
+
*/
|
|
25
|
+
let PriceListPriceBracket = class PriceListPriceBracket {
|
|
26
|
+
[OptionalProps];
|
|
27
|
+
priceListId;
|
|
28
|
+
productId;
|
|
29
|
+
currencyCode;
|
|
30
|
+
minQuantity;
|
|
31
|
+
maxQuantity;
|
|
32
|
+
amount;
|
|
33
|
+
createdAt = new Date();
|
|
34
|
+
updatedAt = new Date();
|
|
35
|
+
};
|
|
36
|
+
__decorate([
|
|
37
|
+
PrimaryKey({ type: 'uuid' }),
|
|
38
|
+
__metadata("design:type", String)
|
|
39
|
+
], PriceListPriceBracket.prototype, "priceListId", void 0);
|
|
40
|
+
__decorate([
|
|
41
|
+
PrimaryKey({ type: 'uuid' }),
|
|
42
|
+
__metadata("design:type", String)
|
|
43
|
+
], PriceListPriceBracket.prototype, "productId", void 0);
|
|
44
|
+
__decorate([
|
|
45
|
+
PrimaryKey({ type: 'string', length: 3 }),
|
|
46
|
+
__metadata("design:type", String)
|
|
47
|
+
], PriceListPriceBracket.prototype, "currencyCode", void 0);
|
|
48
|
+
__decorate([
|
|
49
|
+
PrimaryKey({ type: 'integer' }),
|
|
50
|
+
__metadata("design:type", Number)
|
|
51
|
+
], PriceListPriceBracket.prototype, "minQuantity", void 0);
|
|
52
|
+
__decorate([
|
|
53
|
+
Property({ type: 'integer', nullable: true }),
|
|
54
|
+
__metadata("design:type", Object)
|
|
55
|
+
], PriceListPriceBracket.prototype, "maxQuantity", void 0);
|
|
56
|
+
__decorate([
|
|
57
|
+
Property({ type: 'decimal', precision: 14, scale: 4 }),
|
|
58
|
+
__metadata("design:type", String)
|
|
59
|
+
], PriceListPriceBracket.prototype, "amount", void 0);
|
|
60
|
+
__decorate([
|
|
61
|
+
Property({ type: 'datetime', onCreate: () => new Date() }),
|
|
62
|
+
__metadata("design:type", Date)
|
|
63
|
+
], PriceListPriceBracket.prototype, "createdAt", void 0);
|
|
64
|
+
__decorate([
|
|
65
|
+
Property({ type: 'datetime', onUpdate: () => new Date() }),
|
|
66
|
+
__metadata("design:type", Date)
|
|
67
|
+
], PriceListPriceBracket.prototype, "updatedAt", void 0);
|
|
68
|
+
PriceListPriceBracket = __decorate([
|
|
69
|
+
GlobalEntity(),
|
|
70
|
+
Entity({ tableName: 'price_list_price_brackets' })
|
|
71
|
+
], PriceListPriceBracket);
|
|
72
|
+
export { PriceListPriceBracket };
|
|
73
|
+
//# sourceMappingURL=price-list-price-bracket.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"price-list-price-bracket.entity.js","sourceRoot":"","sources":["../../../src/backend/entities/price-list-price-bracket.entity.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE;;;;;;;;;;;;GAYG;AAGI,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAChC,CAAC,aAAa,CAAC,CAA6C;IAG5D,WAAW,CAAU;IAGrB,SAAS,CAAU;IAGnB,YAAY,CAAU;IAGtB,WAAW,CAAU;IAGrB,WAAW,CAAiB;IAG5B,MAAM,CAAU;IAGhB,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;IAG7B,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;CAC9B,CAAA;AAtBC;IADC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;0DACR;AAGrB;IADC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;wDACV;AAGnB;IADC,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;;2DACpB;AAGtB;IADC,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;0DACX;AAGrB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0DAClB;AAG5B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;;qDACvC;AAGhB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;wDAAc;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;wDAAc;AAzBlB,qBAAqB;IAFjC,YAAY,EAAE;IACd,MAAM,CAAC,EAAE,SAAS,EAAE,2BAA2B,EAAE,CAAC;GACtC,qBAAqB,CA0BjC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { OptionalProps } from '@mikro-orm/core';
|
|
2
|
+
/**
|
|
3
|
+
* PriceListProduct — assignment join between a price list and a product.
|
|
4
|
+
*
|
|
5
|
+
* Composite primary key on `(priceListId, productId)`. The bracket rows in
|
|
6
|
+
* `price_list_price_brackets` cascade off this assignment: removing a product
|
|
7
|
+
* from a list deletes its bracket rows.
|
|
8
|
+
*/
|
|
9
|
+
export declare class PriceListProduct {
|
|
10
|
+
[OptionalProps]?: 'createdAt';
|
|
11
|
+
priceListId: string;
|
|
12
|
+
productId: string;
|
|
13
|
+
createdAt: Date;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=price-list-product.entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"price-list-product.entity.d.ts","sourceRoot":"","sources":["../../../src/backend/entities/price-list-product.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,aAAa,EAAwB,MAAM,iBAAiB,CAAC;AAGrF;;;;;;GAMG;AACH,qBAEa,gBAAgB;IAC3B,CAAC,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC;IAG9B,WAAW,EAAG,MAAM,CAAC;IAGrB,SAAS,EAAG,MAAM,CAAC;IAInB,SAAS,EAAE,IAAI,CAAc;CAC9B"}
|