@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,151 @@
|
|
|
1
|
+
import type { DisplayMode, ListingPrice, ListingPriceOrderChunk, ListingPriceOrderQuery, ListingPriceViewerContext } from '@endora-commerce/contracts';
|
|
2
|
+
import type { PriceBracketRow } from './price-bracket-resolver.js';
|
|
3
|
+
/**
|
|
4
|
+
* The product a price is resolved for, as this engine reads it (feature 075
|
|
5
|
+
* Phase C).
|
|
6
|
+
*
|
|
7
|
+
* It used to be `catalog`'s `Product` **entity**, and that was two problems in
|
|
8
|
+
* one specifier: this module could not compile without `catalog`, and the
|
|
9
|
+
* contract an overlay decoration is written against named a class the overlay
|
|
10
|
+
* had no business seeing. The engine reads exactly two fields — the id it keys
|
|
11
|
+
* every bracket lookup on, and the legacy price attribute the listing chain
|
|
12
|
+
* falls back to — so those two are what it asks for.
|
|
13
|
+
*
|
|
14
|
+
* Narrowing is what makes this a cut rather than a rename: a `Product` entity
|
|
15
|
+
* and a `CatalogProductRecord` are both assignable here, and nothing wider is
|
|
16
|
+
* reachable from inside the engine.
|
|
17
|
+
*/
|
|
18
|
+
export interface PricedProductRef {
|
|
19
|
+
id: string;
|
|
20
|
+
/** JSONB `{ attributeKey: value }` — the legacy `defaultPrice` / `price`. */
|
|
21
|
+
attributeValues: Record<string, unknown>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The buying organisation, as this engine reads it. Two fields: the id (a rule
|
|
25
|
+
* dimension and part of the cache key) and the group it belongs to, which a
|
|
26
|
+
* customer's own group overrides when set.
|
|
27
|
+
*/
|
|
28
|
+
export interface PricingOrganizationRef {
|
|
29
|
+
id: string;
|
|
30
|
+
/**
|
|
31
|
+
* Optional, and it has to be: `organizations` declares the column
|
|
32
|
+
* `customerGroupId?: string | null` and the published `OrganizationRecord`
|
|
33
|
+
* declares it `string | null`, so the narrow shape has to admit both. Every
|
|
34
|
+
* read of it here is `?? null`.
|
|
35
|
+
*/
|
|
36
|
+
customerGroupId?: string | null;
|
|
37
|
+
}
|
|
38
|
+
/** The resolution context shared by both pricing entry points. */
|
|
39
|
+
export interface PricingResolutionInput {
|
|
40
|
+
product: PricedProductRef;
|
|
41
|
+
variantId?: string | null;
|
|
42
|
+
context: {
|
|
43
|
+
quantity: number;
|
|
44
|
+
organization?: PricingOrganizationRef | null;
|
|
45
|
+
/** Feature 040 — customer's direct group overrides the org's (R6). */
|
|
46
|
+
customerGroupId?: string | null;
|
|
47
|
+
/** The request's resolved sales channel (only `id` + `defaultCurrency` read). */
|
|
48
|
+
salesChannel: {
|
|
49
|
+
id: string;
|
|
50
|
+
defaultCurrency: string;
|
|
51
|
+
};
|
|
52
|
+
currencyCode?: string;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export interface PricingEngineResult {
|
|
56
|
+
base: {
|
|
57
|
+
listId: string;
|
|
58
|
+
listName: string;
|
|
59
|
+
bracket: PriceBracketRow | null;
|
|
60
|
+
};
|
|
61
|
+
sale: {
|
|
62
|
+
listId: string;
|
|
63
|
+
listName: string;
|
|
64
|
+
bracket: PriceBracketRow;
|
|
65
|
+
} | null;
|
|
66
|
+
displayMode: DisplayMode;
|
|
67
|
+
currencyCode: string;
|
|
68
|
+
}
|
|
69
|
+
export interface PricingLineResult {
|
|
70
|
+
amount: string;
|
|
71
|
+
currency: string;
|
|
72
|
+
priceListId: string;
|
|
73
|
+
isSale: boolean;
|
|
74
|
+
bracketStartQuantity: number;
|
|
75
|
+
displayMode: DisplayMode;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* The context a catalogue listing prices in. Quantity is fixed at 1 — a listing
|
|
79
|
+
* card, a search hit, a comparison column and a related-product tile all quote
|
|
80
|
+
* the unit price — so it is not part of the input.
|
|
81
|
+
*/
|
|
82
|
+
export interface ListingPricesInput {
|
|
83
|
+
products: readonly PricedProductRef[];
|
|
84
|
+
context: {
|
|
85
|
+
organization?: PricingOrganizationRef | null;
|
|
86
|
+
/** Feature 040 — customer's direct group overrides the org's (R6). */
|
|
87
|
+
customerGroupId?: string | null;
|
|
88
|
+
salesChannel: {
|
|
89
|
+
id: string;
|
|
90
|
+
defaultCurrency: string;
|
|
91
|
+
};
|
|
92
|
+
currencyCode?: string;
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
export interface PricingServiceContract {
|
|
96
|
+
resolveEngine(input: PricingResolutionInput): Promise<PricingEngineResult>;
|
|
97
|
+
resolveLinePrice(input: PricingResolutionInput): Promise<PricingLineResult | null>;
|
|
98
|
+
/**
|
|
99
|
+
* Issue #132 — the price a catalogue listing may render, per product, keyed
|
|
100
|
+
* by product id. Every requested product gets an entry; a product nothing
|
|
101
|
+
* priced gets the `none` arm rather than being missing from the map, so a
|
|
102
|
+
* caller cannot mistake "not asked about" for "no price".
|
|
103
|
+
*
|
|
104
|
+
* This is the whole chain (applicable list → the product's own price →
|
|
105
|
+
* nothing) behind one call, so a listing path cannot implement a step of it
|
|
106
|
+
* differently. Four of them did, which is what the issue reports.
|
|
107
|
+
*/
|
|
108
|
+
resolveListingPrices(input: ListingPricesInput): Promise<Map<string, ListingPrice>>;
|
|
109
|
+
/**
|
|
110
|
+
* The lowest-quantity bracket amount on one **named** price list, per
|
|
111
|
+
* product, for callers that use a list verbatim rather than resolving it
|
|
112
|
+
* (a product feed pinned to a list — feature 067, FR-020). Products with no
|
|
113
|
+
* bracket on that list are absent from the map.
|
|
114
|
+
*
|
|
115
|
+
* It exists so that reading a named list is a port call rather than a raw
|
|
116
|
+
* `select` against `price_list_price_brackets` from another module: the
|
|
117
|
+
* table is this module's, and the port is what makes an absent owner refuse
|
|
118
|
+
* instead of a feed publishing prices the platform is not serving.
|
|
119
|
+
*/
|
|
120
|
+
namedListPrices(input: {
|
|
121
|
+
priceListId: string;
|
|
122
|
+
currencyCode: string;
|
|
123
|
+
productIds: readonly string[];
|
|
124
|
+
}): Promise<Map<string, string>>;
|
|
125
|
+
/**
|
|
126
|
+
* Feature 062 — distinct bracket start quantities (ascending) across every
|
|
127
|
+
* ACTIVE price list for a (product, currency). The external catalog detail
|
|
128
|
+
* probes `resolveLinePrice` at each returned quantity to build the caller
|
|
129
|
+
* org's effective tier ladder without re-implementing resolution.
|
|
130
|
+
*/
|
|
131
|
+
listBracketMinQuantities(productId: string, currencyCode: string): Promise<number[]>;
|
|
132
|
+
/**
|
|
133
|
+
* Feature 086 — the catalogue in resolved-unit-price order, for one viewer,
|
|
134
|
+
* one chunk at a time. Published as the `ListingPriceOrderPort` slice of the
|
|
135
|
+
* `pricingService` container, so an overlay decoration has to satisfy it in
|
|
136
|
+
* order to stay assignable here.
|
|
137
|
+
*
|
|
138
|
+
* The three methods below are the whole of the listing-ordering surface. They
|
|
139
|
+
* read this module's own tables and know nothing about visibility, channels
|
|
140
|
+
* or the buyer's category filter; the caller intersects.
|
|
141
|
+
*/
|
|
142
|
+
orderByUnitPrice(input: ListingPriceOrderQuery): Promise<ListingPriceOrderChunk>;
|
|
143
|
+
pricedProductIds(input: {
|
|
144
|
+
context: ListingPriceViewerContext;
|
|
145
|
+
productIds: readonly string[];
|
|
146
|
+
}): Promise<ReadonlySet<string>>;
|
|
147
|
+
pageDisplayMode(input: {
|
|
148
|
+
context: ListingPriceViewerContext;
|
|
149
|
+
}): Promise<DisplayMode>;
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=pricing-service.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing-service.interface.d.ts","sourceRoot":"","sources":["../../../src/backend/services/pricing-service.interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Formalized contract for the price-list pricing engine (feature 057, R4).
|
|
2
|
+
//
|
|
3
|
+
// This is the documented interface an overlay MUST satisfy to override the core
|
|
4
|
+
// `PricingService` for a deployment. It captures exactly the surface consumers
|
|
5
|
+
// depend on — `resolveEngine` and `resolveLinePrice` — so an overlay can replace
|
|
6
|
+
// the implementation and every consumer keeps type-checking. The core class
|
|
7
|
+
// `implements` this interface, so if the interface changes, a stale overlay
|
|
8
|
+
// stops being assignable and the build fails (contract drift = build error).
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=pricing-service.interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing-service.interface.js","sourceRoot":"","sources":["../../../src/backend/services/pricing-service.interface.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,iFAAiF;AACjF,4EAA4E;AAC5E,4EAA4E;AAC5E,6EAA6E"}
|