@sixtyninecommerce/admin 0.10.0 → 0.12.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/README.md +5772 -118
- package/dist/auth/index.d.ts +7 -1
- package/dist/auth/index.js +8 -1
- package/dist/catalog/assets.d.ts +120 -8
- package/dist/catalog/assets.js +98 -12
- package/dist/catalog/collections.d.ts +279 -14
- package/dist/catalog/collections.js +246 -15
- package/dist/catalog/documents.d.ts +142 -0
- package/dist/catalog/documents.js +114 -0
- package/dist/catalog/index.d.ts +54 -6
- package/dist/catalog/index.js +10 -1
- package/dist/catalog/metadata.d.ts +244 -0
- package/dist/catalog/metadata.js +220 -0
- package/dist/catalog/products.d.ts +159 -19
- package/dist/catalog/products.js +88 -13
- package/dist/catalog/properties.d.ts +140 -14
- package/dist/catalog/properties.js +65 -1
- package/dist/catalog/recommendations.d.ts +288 -0
- package/dist/catalog/recommendations.js +237 -0
- package/dist/catalog/reviews.d.ts +381 -0
- package/dist/catalog/reviews.js +325 -0
- package/dist/catalog/types.d.ts +17 -1
- package/dist/catalog/types.js +10 -0
- package/dist/catalog/variant-find.d.ts +136 -0
- package/dist/catalog/variant-find.js +239 -0
- package/dist/catalog/variants.d.ts +293 -26
- package/dist/catalog/variants.js +164 -7
- package/dist/catalog/visibility.d.ts +38 -7
- package/dist/catalog/visibility.js +19 -1
- package/dist/client.d.ts +121 -9
- package/dist/client.js +53 -14
- package/dist/content/assets.d.ts +285 -0
- package/dist/content/assets.js +181 -0
- package/dist/content/forms.d.ts +332 -1
- package/dist/content/forms.js +140 -4
- package/dist/content/items.d.ts +292 -0
- package/dist/content/items.js +170 -0
- package/dist/content/menus.d.ts +254 -0
- package/dist/content/menus.js +70 -0
- package/dist/content/strings.d.ts +137 -0
- package/dist/content/strings.js +82 -0
- package/dist/content/types.d.ts +282 -0
- package/dist/content/types.js +100 -0
- package/dist/customers/age-verification.d.ts +66 -0
- package/dist/customers/age-verification.js +79 -0
- package/dist/customers/credit.d.ts +263 -0
- package/dist/customers/credit.js +244 -0
- package/dist/customers/delivery-preferences.d.ts +120 -0
- package/dist/customers/delivery-preferences.js +97 -0
- package/dist/customers/delivery-terms.d.ts +44 -0
- package/dist/customers/delivery-terms.js +32 -0
- package/dist/customers/groups.d.ts +207 -0
- package/dist/customers/groups.js +438 -0
- package/dist/customers/index.d.ts +462 -37
- package/dist/customers/index.js +317 -40
- package/dist/customers/invitation-status.d.ts +57 -0
- package/dist/customers/invitation-status.js +21 -0
- package/dist/customers/notes.d.ts +67 -0
- package/dist/customers/notes.js +51 -0
- package/dist/customers/notification-recipients.d.ts +97 -0
- package/dist/customers/notification-recipients.js +84 -0
- package/dist/customers/saved-lists.d.ts +42 -0
- package/dist/customers/saved-lists.js +61 -0
- package/dist/customers/vat.d.ts +83 -0
- package/dist/customers/vat.js +46 -0
- package/dist/customers/wire.d.ts +20 -0
- package/dist/customers/wire.js +35 -0
- package/dist/documents/ar.d.ts +307 -0
- package/dist/documents/ar.js +254 -0
- package/dist/documents/emails.d.ts +150 -0
- package/dist/documents/emails.js +220 -0
- package/dist/documents/index.d.ts +744 -21
- package/dist/documents/index.js +438 -24
- package/dist/documents/pdf.d.ts +2 -0
- package/dist/documents/pdf.js +11 -0
- package/dist/fulfillments/create.d.ts +167 -0
- package/dist/fulfillments/create.js +216 -0
- package/dist/fulfillments/index.d.ts +163 -11
- package/dist/fulfillments/index.js +135 -6
- package/dist/fulfillments/payment-policy.d.ts +64 -0
- package/dist/fulfillments/payment-policy.js +140 -0
- package/dist/fulfillments/warehouse.d.ts +724 -0
- package/dist/fulfillments/warehouse.js +914 -0
- package/dist/geo/index.d.ts +119 -0
- package/dist/geo/index.js +107 -0
- package/dist/index.d.ts +147 -39
- package/dist/index.js +51 -12
- package/dist/integrations/afas-actions.d.ts +234 -0
- package/dist/integrations/afas-actions.js +310 -0
- package/dist/integrations/afas-types.d.ts +483 -0
- package/dist/integrations/afas-types.js +5 -0
- package/dist/integrations/afas.d.ts +234 -0
- package/dist/integrations/afas.js +290 -0
- package/dist/integrations/connections.d.ts +103 -0
- package/dist/integrations/connections.js +55 -0
- package/dist/integrations/esp.d.ts +313 -0
- package/dist/integrations/esp.js +169 -0
- package/dist/integrations/exact-online-types.d.ts +965 -0
- package/dist/integrations/exact-online-types.js +6 -0
- package/dist/integrations/exact-online.d.ts +784 -0
- package/dist/integrations/exact-online.js +1089 -0
- package/dist/integrations/index.d.ts +44 -3
- package/dist/integrations/index.js +23 -3
- package/dist/integrations/pipeline-discoveries.d.ts +65 -0
- package/dist/integrations/pipeline-discoveries.js +65 -0
- package/dist/integrations/pipeline-keys.d.ts +13 -0
- package/dist/integrations/pipeline-keys.js +22 -0
- package/dist/integrations/pipeline-runs.d.ts +119 -0
- package/dist/integrations/pipeline-runs.js +87 -0
- package/dist/integrations/pipelines.d.ts +87 -15
- package/dist/integrations/pipelines.js +41 -22
- package/dist/integrations/price-import.d.ts +223 -0
- package/dist/integrations/price-import.js +124 -0
- package/dist/integrations/types.d.ts +367 -3
- package/dist/integrations/types.js +4 -3
- package/dist/locations/index.d.ts +66 -0
- package/dist/locations/index.js +31 -0
- package/dist/meta/index.d.ts +172 -0
- package/dist/metafields/index.d.ts +8 -1
- package/dist/metafields/index.js +10 -0
- package/dist/orders/cancel-with-money.d.ts +237 -0
- package/dist/orders/cancel-with-money.js +155 -0
- package/dist/orders/commit-edit.d.ts +23 -1
- package/dist/orders/commit-edit.js +19 -2
- package/dist/orders/deposit-policy.d.ts +3 -1
- package/dist/orders/drafts.d.ts +800 -0
- package/dist/orders/drafts.js +771 -0
- package/dist/orders/fields.d.ts +245 -0
- package/dist/orders/fields.js +188 -0
- package/dist/orders/get.d.ts +29 -19
- package/dist/orders/get.js +17 -8
- package/dist/orders/index.d.ts +66 -15
- package/dist/orders/index.js +25 -2
- package/dist/orders/lifecycle.d.ts +128 -0
- package/dist/orders/lifecycle.js +158 -0
- package/dist/orders/line-price-preview.d.ts +7 -2
- package/dist/orders/list.d.ts +243 -0
- package/dist/orders/list.js +487 -0
- package/dist/orders/manual-discounts.d.ts +13 -5
- package/dist/orders/manual-pricing.d.ts +5 -0
- package/dist/orders/money-view.d.ts +149 -0
- package/dist/orders/money-view.js +99 -0
- package/dist/orders/order-entry.d.ts +20 -7
- package/dist/orders/plan-edit.d.ts +34 -2
- package/dist/orders/plan-edit.js +112 -11
- package/dist/orders/settings.d.ts +201 -0
- package/dist/orders/settings.js +325 -0
- package/dist/orders/status.d.ts +159 -13
- package/dist/orders/status.js +21 -0
- package/dist/orders/surcharges.d.ts +20 -1
- package/dist/orders/surcharges.js +37 -11
- package/dist/payments/account-credit.d.ts +46 -0
- package/dist/payments/account-credit.js +42 -0
- package/dist/payments/ar.d.ts +292 -0
- package/dist/payments/ar.js +223 -0
- package/dist/payments/connected-account.d.ts +47 -0
- package/dist/payments/connected-account.js +61 -0
- package/dist/payments/credit-noted-fields.d.ts +19 -0
- package/dist/payments/credit-noted-fields.js +69 -0
- package/dist/payments/customer-consent.d.ts +30 -0
- package/dist/payments/customer-consent.js +49 -0
- package/dist/payments/index.d.ts +340 -19
- package/dist/payments/index.js +151 -1
- package/dist/payments/methods.d.ts +303 -8
- package/dist/payments/methods.js +337 -7
- package/dist/payments/mollie-methods.d.ts +159 -0
- package/dist/payments/mollie-methods.js +141 -0
- package/dist/payments/payment-links.d.ts +180 -0
- package/dist/payments/payment-links.js +97 -0
- package/dist/payments/provider-keys.d.ts +150 -0
- package/dist/payments/provider-keys.js +118 -0
- package/dist/payments/providers.d.ts +86 -11
- package/dist/payments/providers.js +29 -0
- package/dist/payments/requests.d.ts +147 -0
- package/dist/payments/requests.js +93 -0
- package/dist/payments/store-credit-fields.d.ts +15 -0
- package/dist/payments/store-credit-fields.js +51 -0
- package/dist/pickups/index.d.ts +106 -0
- package/dist/pickups/index.js +108 -0
- package/dist/platform/channels.d.ts +132 -0
- package/dist/platform/channels.js +128 -0
- package/dist/platform/email-gateways.d.ts +165 -0
- package/dist/platform/email-gateways.js +78 -0
- package/dist/platform/geo.d.ts +123 -0
- package/dist/platform/geo.js +144 -0
- package/dist/platform/tax.d.ts +162 -0
- package/dist/platform/tax.js +169 -0
- package/dist/pos/anomalies.d.ts +158 -0
- package/dist/pos/anomalies.js +64 -0
- package/dist/pos/assisted-selling.d.ts +79 -0
- package/dist/pos/assisted-selling.js +38 -0
- package/dist/pos/exchanges.d.ts +108 -0
- package/dist/pos/exchanges.js +22 -0
- package/dist/pos/gift-cards.d.ts +135 -0
- package/dist/pos/gift-cards.js +47 -0
- package/dist/pos/index.d.ts +2370 -58
- package/dist/pos/index.js +854 -7
- package/dist/pos/no-receipt.d.ts +94 -0
- package/dist/pos/no-receipt.js +25 -0
- package/dist/pos/offline-sales.d.ts +228 -0
- package/dist/pos/offline-sales.js +170 -0
- package/dist/pos/pay-by-link.d.ts +143 -0
- package/dist/pos/pay-by-link.js +57 -0
- package/dist/pos/quick-keys.d.ts +103 -0
- package/dist/pos/quick-keys.js +45 -0
- package/dist/pos/reports.d.ts +360 -0
- package/dist/pos/reports.js +62 -0
- package/dist/pos/returns.d.ts +244 -0
- package/dist/pos/returns.js +83 -0
- package/dist/pricing/bulk-coupons.d.ts +139 -0
- package/dist/pricing/bulk-coupons.js +112 -0
- package/dist/pricing/index.d.ts +174 -4
- package/dist/pricing/index.js +174 -1
- package/dist/pricing/price-lists.d.ts +606 -0
- package/dist/pricing/price-lists.js +600 -0
- package/dist/purchasing/alerts.d.ts +104 -0
- package/dist/purchasing/alerts.js +88 -0
- package/dist/purchasing/backorders.d.ts +61 -0
- package/dist/purchasing/backorders.js +92 -0
- package/dist/purchasing/cost.d.ts +110 -0
- package/dist/purchasing/cost.js +86 -0
- package/dist/purchasing/index.d.ts +54 -0
- package/dist/purchasing/index.js +24 -0
- package/dist/purchasing/links.d.ts +263 -0
- package/dist/purchasing/links.js +192 -0
- package/dist/purchasing/purchase-orders.d.ts +551 -0
- package/dist/purchasing/purchase-orders.js +491 -0
- package/dist/purchasing/receipts.d.ts +396 -0
- package/dist/purchasing/receipts.js +287 -0
- package/dist/purchasing/replenishment.d.ts +281 -0
- package/dist/purchasing/replenishment.js +240 -0
- package/dist/purchasing/returns.d.ts +273 -0
- package/dist/purchasing/returns.js +229 -0
- package/dist/purchasing/settings.d.ts +152 -0
- package/dist/purchasing/settings.js +181 -0
- package/dist/purchasing/suppliers.d.ts +476 -0
- package/dist/purchasing/suppliers.js +438 -0
- package/dist/quotes/index.d.ts +518 -0
- package/dist/quotes/index.js +439 -0
- package/dist/reports/index.d.ts +71 -8
- package/dist/reports/index.js +74 -11
- package/dist/returns/index.d.ts +675 -21
- package/dist/returns/index.js +756 -11
- package/dist/search/index.d.ts +76 -1
- package/dist/search/index.js +63 -0
- package/dist/seo/config.d.ts +128 -0
- package/dist/seo/config.js +95 -0
- package/dist/seo/redirects.d.ts +125 -0
- package/dist/seo/redirects.js +60 -1
- package/dist/seo/settings.d.ts +147 -0
- package/dist/seo/settings.js +209 -0
- package/dist/shipping/definitions.d.ts +29 -0
- package/dist/shipping/definitions.js +47 -0
- package/dist/shipping/fulfillment-profiles.d.ts +174 -0
- package/dist/shipping/fulfillment-profiles.js +104 -0
- package/dist/shipping/hendriks.d.ts +97 -0
- package/dist/shipping/hendriks.js +50 -0
- package/dist/shipping/index.d.ts +54 -0
- package/dist/shipping/index.js +27 -0
- package/dist/shipping/methods.d.ts +205 -0
- package/dist/shipping/methods.js +240 -0
- package/dist/shipping/myparcel.d.ts +668 -0
- package/dist/shipping/myparcel.js +466 -0
- package/dist/shipping/parcel-count-suggestion.d.ts +2 -0
- package/dist/shipping/parcel-rule.d.ts +6 -5
- package/dist/shipping/parcel-rule.js +21 -23
- package/dist/shipping/rate-tables.d.ts +324 -0
- package/dist/shipping/rate-tables.js +390 -0
- package/dist/shipping/ship-to-countries.d.ts +75 -0
- package/dist/shipping/ship-to-countries.js +47 -0
- package/dist/stock/by-location.d.ts +86 -0
- package/dist/stock/by-location.js +94 -0
- package/dist/stock/index.d.ts +18 -4
- package/dist/stock/index.js +7 -0
- package/dist/stock/locations.d.ts +144 -0
- package/dist/stock/locations.js +168 -0
- package/dist/stock/settings.d.ts +106 -0
- package/dist/stock/settings.js +103 -0
- package/dist/stock/transfers.d.ts +386 -52
- package/dist/stock/transfers.js +222 -17
- package/dist/stored-value/index.d.ts +312 -11
- package/dist/stored-value/index.js +223 -4
- package/dist/subscriptions/index.d.ts +682 -0
- package/dist/subscriptions/index.js +815 -0
- package/dist/tax/display-policy.d.ts +105 -0
- package/dist/tax/display-policy.js +84 -0
- package/dist/tax/index.d.ts +79 -1
- package/dist/tax/index.js +52 -0
- package/dist/tenant/email-style.d.ts +102 -0
- package/dist/tenant/email-style.js +72 -0
- package/dist/tenant/email-templates.d.ts +287 -0
- package/dist/tenant/email-templates.js +271 -0
- package/dist/tenant/notifications.d.ts +23 -17
- package/dist/tenant/settings-sources.d.ts +1 -1
- package/dist/tenant/time-zone.d.ts +17 -0
- package/dist/tenant/time-zone.js +11 -0
- package/dist/types.d.ts +50 -3
- package/dist/users/index.d.ts +3 -0
- package/dist/users/index.js +2 -0
- package/dist/users/warehouses.d.ts +50 -0
- package/dist/users/warehouses.js +51 -0
- package/package.json +2 -2
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import type { Transport } from '@sixtyninecommerce/core';
|
|
2
|
+
import type { Call } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* A purchasing staff alert (purchase-orders spec §8.14), named as its email under Management →
|
|
5
|
+
* Notifications. A string on the wire: more alerts may come (a provider push failing, phase 6).
|
|
6
|
+
*/
|
|
7
|
+
export type PurchasingAlert = 'purchase_order_approval_requested' | 'purchase_order_lines_overdue' | 'reorder_suggestions_digest' | (string & {});
|
|
8
|
+
/**
|
|
9
|
+
* What needs attention in the active store's purchasing, counted over its legal entity: the
|
|
10
|
+
* dashboard's nav badges and Overview cards.
|
|
11
|
+
*/
|
|
12
|
+
export interface PurchasingAlertSummary {
|
|
13
|
+
/** `YYYY-MM-DD` in the legal entity's time zone: the day overdue lines are judged against. */
|
|
14
|
+
localDay: string;
|
|
15
|
+
/**
|
|
16
|
+
* Purchase orders waiting for an approver: submitted above the approval threshold, or sent with
|
|
17
|
+
* a revision above it.
|
|
18
|
+
*/
|
|
19
|
+
awaitingApproval: number;
|
|
20
|
+
/**
|
|
21
|
+
* Lines of sent purchase orders with something still to come whose expected day (the supplier's
|
|
22
|
+
* confirmed day, else the requested one) is before `localDay`.
|
|
23
|
+
*/
|
|
24
|
+
overdueLines: number;
|
|
25
|
+
/** Sent purchase orders with at least one overdue line. */
|
|
26
|
+
overdueOrders: number;
|
|
27
|
+
/** Purchase orders awaiting approval or with an overdue line, each counted once. */
|
|
28
|
+
attentionOrders: number;
|
|
29
|
+
/** Reorder suggestions of the last compute that are listed (not dismissed). */
|
|
30
|
+
reorderSuggestions: number;
|
|
31
|
+
/** Of those, the ones the last compute found new (not suggested before, or grown). */
|
|
32
|
+
newReorderSuggestions: number;
|
|
33
|
+
/**
|
|
34
|
+
* The ACTIVE store's backordered order lines that stock on hand can ship now (its own orders,
|
|
35
|
+
* never another store's of the legal entity): `backorders.ready()`'s total. Purchase-orders
|
|
36
|
+
* step 3.6; `null` from an engine before it (the SDK asks again without the two counts).
|
|
37
|
+
*/
|
|
38
|
+
backordersReadyLines: number | null;
|
|
39
|
+
/** The orders holding those lines, each counted once; `null` as `backordersReadyLines`. */
|
|
40
|
+
backordersReadyOrders: number | null;
|
|
41
|
+
}
|
|
42
|
+
/** Who one purchasing alert email goes to. */
|
|
43
|
+
export interface PurchasingAlertRecipients {
|
|
44
|
+
alert: PurchasingAlert;
|
|
45
|
+
/**
|
|
46
|
+
* The permission whose holders get the alert when no addresses are set:
|
|
47
|
+
* `ApprovePurchaseOrder`, `ReceivePurchaseOrder` (`UpdatePurchaseOrder` on an engine before
|
|
48
|
+
* purchase-orders step 3.6) or `CreatePurchaseOrder`.
|
|
49
|
+
*/
|
|
50
|
+
permission: string;
|
|
51
|
+
/** The addresses set for this alert; empty when it goes to the permission's holders. */
|
|
52
|
+
emails: string[];
|
|
53
|
+
/**
|
|
54
|
+
* Who the alert goes to now: the addresses set, else the administrators of the legal entity's
|
|
55
|
+
* stores holding the permission (never a platform administrator or an API credential).
|
|
56
|
+
*/
|
|
57
|
+
recipients: string[];
|
|
58
|
+
}
|
|
59
|
+
/** One alert's addresses: up to 20; an empty list sends it to the permission's holders again. */
|
|
60
|
+
export interface PurchasingAlertRecipientsInput {
|
|
61
|
+
alert: PurchasingAlert;
|
|
62
|
+
emails: string[];
|
|
63
|
+
}
|
|
64
|
+
export declare const PURCHASING_ALERT_SUMMARY_FIELDS = "\n \n localDay\n awaitingApproval\n overdueLines\n overdueOrders\n attentionOrders\n reorderSuggestions\n newReorderSuggestions\n\n backordersReadyLines\n backordersReadyOrders\n";
|
|
65
|
+
export declare const PURCHASING_ALERT_RECIPIENTS_FIELDS = "\n alert\n permission\n emails\n recipients\n";
|
|
66
|
+
export declare const PURCHASING_ALERTS_QUERY = "\n query PurchasingAlerts {\n purchasingAlerts { \n \n localDay\n awaitingApproval\n overdueLines\n overdueOrders\n attentionOrders\n reorderSuggestions\n newReorderSuggestions\n\n backordersReadyLines\n backordersReadyOrders\n }\n }\n";
|
|
67
|
+
/**
|
|
68
|
+
* The summary without the backorder counts, for an engine before purchase-orders step 3.6: the SDK
|
|
69
|
+
* retries once with it when the engine refuses the fields, and answers the two counts null.
|
|
70
|
+
*/
|
|
71
|
+
export declare const LEGACY_PURCHASING_ALERTS_QUERY = "\n query PurchasingAlertsLegacy {\n purchasingAlerts { \n localDay\n awaitingApproval\n overdueLines\n overdueOrders\n attentionOrders\n reorderSuggestions\n newReorderSuggestions\n }\n }\n";
|
|
72
|
+
export declare const PURCHASING_ALERT_RECIPIENTS_QUERY = "\n query PurchasingAlertRecipients {\n purchasingAlertRecipients { \n alert\n permission\n emails\n recipients\n }\n }\n";
|
|
73
|
+
export declare const UPDATE_PURCHASING_ALERT_RECIPIENTS_MUTATION = "\n mutation UpdatePurchasingAlertRecipients(\n $input: [PurchasingAlertRecipientsInput!]!\n $idempotencyKey: String\n ) {\n updatePurchasingAlertRecipients(input: $input, idempotencyKey: $idempotencyKey) {\n \n alert\n permission\n emails\n recipients\n\n }\n }\n";
|
|
74
|
+
export interface PurchasingAlertRecipientsModule {
|
|
75
|
+
/**
|
|
76
|
+
* Who each alert goes to, in a fixed order (approval requests, overdue lines, reorder digest).
|
|
77
|
+
* Needs `ManagePurchasingSettings`.
|
|
78
|
+
*/
|
|
79
|
+
list(call?: Call): Promise<PurchasingAlertRecipients[]>;
|
|
80
|
+
/**
|
|
81
|
+
* Sets who the named alerts go to; an alert not named keeps its own, and an empty `emails`
|
|
82
|
+
* sends it to the permission's holders again. Answers every alert, as `list` does. Needs
|
|
83
|
+
* `ManagePurchasingSettings` on EVERY store of the legal entity (`SHARED_SELLER_NOT_ALLOWED`,
|
|
84
|
+
* 403). Refusals: `PURCHASING_SETTINGS_INVALID` (400: an unknown alert, an alert named twice, an
|
|
85
|
+
* address that is not one, more than 20 addresses).
|
|
86
|
+
*/
|
|
87
|
+
update(input: PurchasingAlertRecipientsInput[], call?: Call): Promise<PurchasingAlertRecipients[]>;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* `admin.purchasing.alerts` (purchase-orders spec §8.14): what needs attention in the legal
|
|
91
|
+
* entity's purchasing, and who its alert emails go to. Every method needs the Purchasing plugin
|
|
92
|
+
* (`PURCHASING_NOT_ENABLED`, 422) and a store that purchases (`HUB_HAS_NO_PURCHASING`,
|
|
93
|
+
* `LEGAL_ENTITY_REQUIRED`, 422).
|
|
94
|
+
*/
|
|
95
|
+
export interface PurchasingAlertsModule {
|
|
96
|
+
/**
|
|
97
|
+
* The counts behind the nav badges and the Overview cards. Needs `ReadPurchaseOrder`. `null`
|
|
98
|
+
* while purchasing is not switched on for the store's legal entity. Against an engine before
|
|
99
|
+
* purchase-orders step 3.6 the backorder counts answer `null` and the rest as ever.
|
|
100
|
+
*/
|
|
101
|
+
summary(call?: Call): Promise<PurchasingAlertSummary | null>;
|
|
102
|
+
recipients: PurchasingAlertRecipientsModule;
|
|
103
|
+
}
|
|
104
|
+
export declare function createPurchasingAlertsModule(transport: Transport): PurchasingAlertsModule;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { isUnknownFieldRejection } from '../payments/store-credit-fields.js';
|
|
2
|
+
/** The summary's counts an engine before purchase-orders step 3.6 answers. */
|
|
3
|
+
const STEP_4_3_SUMMARY_FIELDS = /* GraphQL */ `
|
|
4
|
+
localDay
|
|
5
|
+
awaitingApproval
|
|
6
|
+
overdueLines
|
|
7
|
+
overdueOrders
|
|
8
|
+
attentionOrders
|
|
9
|
+
reorderSuggestions
|
|
10
|
+
newReorderSuggestions
|
|
11
|
+
`;
|
|
12
|
+
export const PURCHASING_ALERT_SUMMARY_FIELDS = /* GraphQL */ `
|
|
13
|
+
${STEP_4_3_SUMMARY_FIELDS}
|
|
14
|
+
backordersReadyLines
|
|
15
|
+
backordersReadyOrders
|
|
16
|
+
`;
|
|
17
|
+
export const PURCHASING_ALERT_RECIPIENTS_FIELDS = /* GraphQL */ `
|
|
18
|
+
alert
|
|
19
|
+
permission
|
|
20
|
+
emails
|
|
21
|
+
recipients
|
|
22
|
+
`;
|
|
23
|
+
export const PURCHASING_ALERTS_QUERY = /* GraphQL */ `
|
|
24
|
+
query PurchasingAlerts {
|
|
25
|
+
purchasingAlerts { ${PURCHASING_ALERT_SUMMARY_FIELDS} }
|
|
26
|
+
}
|
|
27
|
+
`;
|
|
28
|
+
/**
|
|
29
|
+
* The summary without the backorder counts, for an engine before purchase-orders step 3.6: the SDK
|
|
30
|
+
* retries once with it when the engine refuses the fields, and answers the two counts null.
|
|
31
|
+
*/
|
|
32
|
+
export const LEGACY_PURCHASING_ALERTS_QUERY = /* GraphQL */ `
|
|
33
|
+
query PurchasingAlertsLegacy {
|
|
34
|
+
purchasingAlerts { ${STEP_4_3_SUMMARY_FIELDS} }
|
|
35
|
+
}
|
|
36
|
+
`;
|
|
37
|
+
export const PURCHASING_ALERT_RECIPIENTS_QUERY = /* GraphQL */ `
|
|
38
|
+
query PurchasingAlertRecipients {
|
|
39
|
+
purchasingAlertRecipients { ${PURCHASING_ALERT_RECIPIENTS_FIELDS} }
|
|
40
|
+
}
|
|
41
|
+
`;
|
|
42
|
+
export const UPDATE_PURCHASING_ALERT_RECIPIENTS_MUTATION = /* GraphQL */ `
|
|
43
|
+
mutation UpdatePurchasingAlertRecipients(
|
|
44
|
+
$input: [PurchasingAlertRecipientsInput!]!
|
|
45
|
+
$idempotencyKey: String
|
|
46
|
+
) {
|
|
47
|
+
updatePurchasingAlertRecipients(input: $input, idempotencyKey: $idempotencyKey) {
|
|
48
|
+
${PURCHASING_ALERT_RECIPIENTS_FIELDS}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
`;
|
|
52
|
+
export function createPurchasingAlertsModule(transport) {
|
|
53
|
+
return {
|
|
54
|
+
async summary(call) {
|
|
55
|
+
try {
|
|
56
|
+
const data = await transport.graphql({ api: 'admin', query: PURCHASING_ALERTS_QUERY }, call);
|
|
57
|
+
return data.purchasingAlerts ?? null;
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
if (!isUnknownFieldRejection(error))
|
|
61
|
+
throw error;
|
|
62
|
+
const data = await transport.graphql({ api: 'admin', query: LEGACY_PURCHASING_ALERTS_QUERY }, call);
|
|
63
|
+
return data.purchasingAlerts === null
|
|
64
|
+
? null
|
|
65
|
+
: { ...data.purchasingAlerts, backordersReadyLines: null, backordersReadyOrders: null };
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
recipients: {
|
|
69
|
+
async list(call) {
|
|
70
|
+
const data = await transport.graphql({ api: 'admin', query: PURCHASING_ALERT_RECIPIENTS_QUERY }, call);
|
|
71
|
+
return data.purchasingAlertRecipients;
|
|
72
|
+
},
|
|
73
|
+
async update(input, call) {
|
|
74
|
+
const data = await transport.graphql({
|
|
75
|
+
api: 'admin',
|
|
76
|
+
query: UPDATE_PURCHASING_ALERT_RECIPIENTS_MUTATION,
|
|
77
|
+
variables: {
|
|
78
|
+
// Only the input's own fields: a caller spreading what `list` answered sends no
|
|
79
|
+
// `permission` or `recipients`, which the engine's input does not declare.
|
|
80
|
+
input: input.map(({ alert, emails }) => ({ alert, emails: [...emails] })),
|
|
81
|
+
idempotencyKey: call?.idempotencyKey,
|
|
82
|
+
},
|
|
83
|
+
}, call);
|
|
84
|
+
return data.updatePurchasingAlertRecipients;
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { type Page, type Transport } from '@sixtyninecommerce/core';
|
|
2
|
+
import type { ListOptions } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* An open backordered order line of the active store that stock on hand can ship now
|
|
5
|
+
* (purchase-orders spec §8.11): the store's free on-hand of the variant shared out over its open
|
|
6
|
+
* backorders, oldest order first.
|
|
7
|
+
*/
|
|
8
|
+
export interface BackorderReadyLine {
|
|
9
|
+
orderId: string;
|
|
10
|
+
orderCode: string;
|
|
11
|
+
/** The order's state; a parked or approval-waiting order keeps its turn too. */
|
|
12
|
+
orderState: string;
|
|
13
|
+
/** ISO-8601 UTC; null for an order never placed. */
|
|
14
|
+
orderPlacedAt: string | null;
|
|
15
|
+
orderLineId: string;
|
|
16
|
+
productVariantId: string;
|
|
17
|
+
sku: string;
|
|
18
|
+
/** The variant's name in the request's language. */
|
|
19
|
+
name: string;
|
|
20
|
+
/** The line's quantity. */
|
|
21
|
+
quantity: number;
|
|
22
|
+
/** Its backordered units not yet in a fulfilment. */
|
|
23
|
+
backorderedQuantity: number;
|
|
24
|
+
/** Of those, what stock on hand covers now (at least 1). */
|
|
25
|
+
readyQuantity: number;
|
|
26
|
+
/** The variant's on-hand, summed over the store's stock locations. */
|
|
27
|
+
stockOnHand: number;
|
|
28
|
+
/**
|
|
29
|
+
* True when the line was ordered from a supplier for this customer (a back-to-back link) and
|
|
30
|
+
* the supplier side cancelled it: it is an ordinary backorder again ("Supplier cancelled").
|
|
31
|
+
*/
|
|
32
|
+
supplierCancelled: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface BackordersReadyOptions extends ListOptions {
|
|
35
|
+
/** Only the variants this goods receipt (of the store's legal entity) brought in. */
|
|
36
|
+
goodsReceiptId?: string;
|
|
37
|
+
}
|
|
38
|
+
export declare const BACKORDER_READY_LINE_FIELDS = "\n orderId\n orderCode\n orderState\n orderPlacedAt\n orderLineId\n productVariantId\n sku\n name\n quantity\n backorderedQuantity\n readyQuantity\n stockOnHand\n supplierCancelled\n";
|
|
39
|
+
export declare const BACKORDERS_READY_QUERY = "\n query BackordersReadyToShip($options: BackordersReadyOptions) {\n backordersReadyToShip(options: $options) {\n items { \n orderId\n orderCode\n orderState\n orderPlacedAt\n orderLineId\n productVariantId\n sku\n name\n quantity\n backorderedQuantity\n readyQuantity\n stockOnHand\n supplierCancelled\n }\n totalItems\n }\n }\n";
|
|
40
|
+
/**
|
|
41
|
+
* The list without `supplierCancelled`, for an engine before purchase-orders step 5.1: the SDK
|
|
42
|
+
* retries once with it when the engine refuses the field, and answers it `false` (that engine has
|
|
43
|
+
* no order links, so no supplier cancelled one).
|
|
44
|
+
*/
|
|
45
|
+
export declare const LEGACY_BACKORDERS_READY_QUERY = "\n query BackordersReadyToShipLegacy($options: BackordersReadyOptions) {\n backordersReadyToShip(options: $options) {\n items { \n orderId\n orderCode\n orderState\n orderPlacedAt\n orderLineId\n productVariantId\n sku\n name\n quantity\n backorderedQuantity\n readyQuantity\n stockOnHand\n }\n totalItems\n }\n }\n";
|
|
46
|
+
/**
|
|
47
|
+
* `admin.purchasing.backorders` (purchase-orders spec §8.11, §8.14): what a goods receipt let the
|
|
48
|
+
* store ship. A read only: nothing is allocated. Needs the Purchasing plugin on the store and
|
|
49
|
+
* purchasing switched on for its legal entity (`PURCHASING_NOT_ENABLED`, 422), a store that
|
|
50
|
+
* purchases (`HUB_HAS_NO_PURCHASING`, `LEGAL_ENTITY_REQUIRED`), and `ReadOrder`.
|
|
51
|
+
*/
|
|
52
|
+
export interface PurchasingBackordersModule {
|
|
53
|
+
/**
|
|
54
|
+
* The active store's open backordered order lines that stock on hand can ship now, oldest order
|
|
55
|
+
* first (pages of at most 100). `goodsReceiptId` narrows them to the variants that receipt
|
|
56
|
+
* brought in. Refusals: `GOODS_RECEIPT_NOT_FOUND` (404, a receipt of another legal entity too),
|
|
57
|
+
* `GOODS_RECEIPT_INVALID` (400, a page out of range).
|
|
58
|
+
*/
|
|
59
|
+
ready(options?: BackordersReadyOptions): Promise<Page<BackorderReadyLine>>;
|
|
60
|
+
}
|
|
61
|
+
export declare function createPurchasingBackordersModule(transport: Transport): PurchasingBackordersModule;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { pageFromVendureList, readOffsetCursor, } from '@sixtyninecommerce/core';
|
|
2
|
+
import { isUnknownFieldRejection } from '../payments/store-credit-fields.js';
|
|
3
|
+
/** The line's fields an engine before purchase-orders step 5.1 serves. */
|
|
4
|
+
const STEP_3_6_LINE_FIELDS = /* GraphQL */ `
|
|
5
|
+
orderId
|
|
6
|
+
orderCode
|
|
7
|
+
orderState
|
|
8
|
+
orderPlacedAt
|
|
9
|
+
orderLineId
|
|
10
|
+
productVariantId
|
|
11
|
+
sku
|
|
12
|
+
name
|
|
13
|
+
quantity
|
|
14
|
+
backorderedQuantity
|
|
15
|
+
readyQuantity
|
|
16
|
+
stockOnHand
|
|
17
|
+
`;
|
|
18
|
+
export const BACKORDER_READY_LINE_FIELDS = /* GraphQL */ `
|
|
19
|
+
orderId
|
|
20
|
+
orderCode
|
|
21
|
+
orderState
|
|
22
|
+
orderPlacedAt
|
|
23
|
+
orderLineId
|
|
24
|
+
productVariantId
|
|
25
|
+
sku
|
|
26
|
+
name
|
|
27
|
+
quantity
|
|
28
|
+
backorderedQuantity
|
|
29
|
+
readyQuantity
|
|
30
|
+
stockOnHand
|
|
31
|
+
supplierCancelled
|
|
32
|
+
`;
|
|
33
|
+
export const BACKORDERS_READY_QUERY = /* GraphQL */ `
|
|
34
|
+
query BackordersReadyToShip($options: BackordersReadyOptions) {
|
|
35
|
+
backordersReadyToShip(options: $options) {
|
|
36
|
+
items { ${BACKORDER_READY_LINE_FIELDS} }
|
|
37
|
+
totalItems
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
`;
|
|
41
|
+
/**
|
|
42
|
+
* The list without `supplierCancelled`, for an engine before purchase-orders step 5.1: the SDK
|
|
43
|
+
* retries once with it when the engine refuses the field, and answers it `false` (that engine has
|
|
44
|
+
* no order links, so no supplier cancelled one).
|
|
45
|
+
*/
|
|
46
|
+
export const LEGACY_BACKORDERS_READY_QUERY = /* GraphQL */ `
|
|
47
|
+
query BackordersReadyToShipLegacy($options: BackordersReadyOptions) {
|
|
48
|
+
backordersReadyToShip(options: $options) {
|
|
49
|
+
items { ${STEP_3_6_LINE_FIELDS} }
|
|
50
|
+
totalItems
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
`;
|
|
54
|
+
const DEFAULT_PAGE_SIZE = 25;
|
|
55
|
+
export function createPurchasingBackordersModule(transport) {
|
|
56
|
+
const readyPage = async (skip, take, options) => {
|
|
57
|
+
const variables = {
|
|
58
|
+
options: {
|
|
59
|
+
skip,
|
|
60
|
+
take,
|
|
61
|
+
...(options?.goodsReceiptId === undefined
|
|
62
|
+
? {}
|
|
63
|
+
: { goodsReceiptId: options.goodsReceiptId }),
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
let list;
|
|
67
|
+
try {
|
|
68
|
+
const data = await transport.graphql({ api: 'admin', query: BACKORDERS_READY_QUERY, variables }, options);
|
|
69
|
+
list = data.backordersReadyToShip;
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
if (!isUnknownFieldRejection(error))
|
|
73
|
+
throw error;
|
|
74
|
+
const data = await transport.graphql({ api: 'admin', query: LEGACY_BACKORDERS_READY_QUERY, variables }, options);
|
|
75
|
+
list = {
|
|
76
|
+
items: data.backordersReadyToShip.items.map((line) => ({
|
|
77
|
+
...line,
|
|
78
|
+
supplierCancelled: false,
|
|
79
|
+
})),
|
|
80
|
+
totalItems: data.backordersReadyToShip.totalItems,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
return pageFromVendureList(list, skip, take, (cursor) => readyPage(readOffsetCursor(cursor), take, options));
|
|
84
|
+
};
|
|
85
|
+
return {
|
|
86
|
+
async ready(options) {
|
|
87
|
+
const take = options?.limit ?? DEFAULT_PAGE_SIZE;
|
|
88
|
+
const skip = options?.after === undefined ? 0 : readOffsetCursor(options.after);
|
|
89
|
+
return readyPage(skip, take, options);
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import type { Transport } from '@sixtyninecommerce/core';
|
|
2
|
+
import type { Call } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* A variant's unit cost in the active store's PURCHASING SCOPE (purchase-orders spec §8.10,
|
|
5
|
+
* §10.1 `cost`): its legal entity, shared by every store of that entity, or a sandbox store's own
|
|
6
|
+
* scope. The weighted average of what the scope received, in minor units of the scope's
|
|
7
|
+
* purchasing currency.
|
|
8
|
+
*/
|
|
9
|
+
export interface VariantCost {
|
|
10
|
+
productVariantId: string;
|
|
11
|
+
/** The legal entity's id, or `sandbox:<channelId>` for a sandbox store. */
|
|
12
|
+
scopeId: string;
|
|
13
|
+
/** The legal entity (Seller) id; null for a sandbox store's own scope. */
|
|
14
|
+
legalEntityId: string | null;
|
|
15
|
+
/** ISO 4217: the scope's purchasing currency the cost is in. */
|
|
16
|
+
currencyCode: string;
|
|
17
|
+
/**
|
|
18
|
+
* The average as stored: a decimal string of minor units with six decimals (`"1249.500000"`),
|
|
19
|
+
* never rounded. Parse it with a decimal library, not `Number`, when the decimals matter.
|
|
20
|
+
*/
|
|
21
|
+
averageUnitCost: string;
|
|
22
|
+
/** The average rounded half up to whole minor units (what the variant's cost field mirrors). */
|
|
23
|
+
unitCost: number;
|
|
24
|
+
/** `average` (receipts, seeding), `manual` (an override), `provider` (an ERP's cost). */
|
|
25
|
+
method: 'average' | 'manual' | 'provider' | (string & {});
|
|
26
|
+
/** The scope's on-hand quantity the last change averaged over. */
|
|
27
|
+
onHandAtLastEntry: number;
|
|
28
|
+
/** ISO-8601 UTC. */
|
|
29
|
+
updatedAt: string;
|
|
30
|
+
}
|
|
31
|
+
/** What changed a variant's cost. A string on the wire: more values may come. */
|
|
32
|
+
export type VariantCostCause = 'receipt' | 'reversal' | 'landed_charge' | 'supplier_return' | 'manual' | 'provider_sync' | 'seed' | (string & {});
|
|
33
|
+
/** One change in a variant's cost ledger. Amounts are decimal strings of minor units. */
|
|
34
|
+
export interface VariantCostEntry {
|
|
35
|
+
id: string;
|
|
36
|
+
productVariantId: string;
|
|
37
|
+
scopeId: string;
|
|
38
|
+
cause: VariantCostCause;
|
|
39
|
+
currencyCode: string;
|
|
40
|
+
/** Base units the change moved: positive for a receipt, negative for a reversal or return. */
|
|
41
|
+
deltaQuantity: number;
|
|
42
|
+
/** The scope's on-hand quantity the change averaged over. */
|
|
43
|
+
onHandBefore: number;
|
|
44
|
+
/** The per-unit cost the change brought in or took out; null for a landed charge. */
|
|
45
|
+
unitCost: string | null;
|
|
46
|
+
/** A landed charge's amount for this variant; null otherwise. */
|
|
47
|
+
chargeAmount: string | null;
|
|
48
|
+
/** The part of a landed charge that went to units already sold, outside the average. */
|
|
49
|
+
unabsorbedAmount: string | null;
|
|
50
|
+
/** The average before the change; null when the scope had no cost yet. */
|
|
51
|
+
averageBefore: string | null;
|
|
52
|
+
resultingAverage: string;
|
|
53
|
+
/** Whether the variant's cost field was set to the rounded result. */
|
|
54
|
+
mirrorWritten: boolean;
|
|
55
|
+
/** The document the change belongs to, such as a goods receipt number. */
|
|
56
|
+
referenceDocumentRef: string | null;
|
|
57
|
+
/** Why a manual override changed the cost. */
|
|
58
|
+
reason: string | null;
|
|
59
|
+
actorRef: string | null;
|
|
60
|
+
/** ISO-8601 UTC. */
|
|
61
|
+
createdAt: string;
|
|
62
|
+
}
|
|
63
|
+
export interface VariantCostEntryList {
|
|
64
|
+
items: VariantCostEntry[];
|
|
65
|
+
totalItems: number;
|
|
66
|
+
}
|
|
67
|
+
/** A page of the ledger, newest first. */
|
|
68
|
+
export interface VariantCostHistoryOptions {
|
|
69
|
+
/** 0 or more. Default 0. */
|
|
70
|
+
skip?: number;
|
|
71
|
+
/** 1 to 100. Default 25. */
|
|
72
|
+
take?: number;
|
|
73
|
+
}
|
|
74
|
+
export interface OverrideVariantCostInput {
|
|
75
|
+
variantId: string;
|
|
76
|
+
/**
|
|
77
|
+
* The new unit cost in minor units of the scope's purchasing currency: a non-negative decimal
|
|
78
|
+
* string of at most 6 decimals, no more than 2147483647 (`"1250"`, `"1249.5"`), or a whole
|
|
79
|
+
* number of minor units.
|
|
80
|
+
*/
|
|
81
|
+
unitCost: string | number;
|
|
82
|
+
/** Why the cost changes: 1 to 255 characters, kept in the ledger. */
|
|
83
|
+
reason: string;
|
|
84
|
+
}
|
|
85
|
+
export declare const VARIANT_COST_FIELDS = "\n productVariantId\n scopeId\n legalEntityId\n currencyCode\n averageUnitCost\n unitCost\n method\n onHandAtLastEntry\n updatedAt\n";
|
|
86
|
+
export declare const VARIANT_COST_ENTRY_FIELDS = "\n id\n productVariantId\n scopeId\n cause\n currencyCode\n deltaQuantity\n onHandBefore\n unitCost\n chargeAmount\n unabsorbedAmount\n averageBefore\n resultingAverage\n mirrorWritten\n referenceDocumentRef\n reason\n actorRef\n createdAt\n";
|
|
87
|
+
export declare const VARIANT_COST_QUERY = "\n query VariantCost($variantId: ID!) {\n variantCost(variantId: $variantId) { \n productVariantId\n scopeId\n legalEntityId\n currencyCode\n averageUnitCost\n unitCost\n method\n onHandAtLastEntry\n updatedAt\n }\n }\n";
|
|
88
|
+
export declare const VARIANT_COST_HISTORY_QUERY = "\n query VariantCostHistory($variantId: ID!, $options: VariantCostHistoryOptions) {\n variantCostHistory(variantId: $variantId, options: $options) {\n items { \n id\n productVariantId\n scopeId\n cause\n currencyCode\n deltaQuantity\n onHandBefore\n unitCost\n chargeAmount\n unabsorbedAmount\n averageBefore\n resultingAverage\n mirrorWritten\n referenceDocumentRef\n reason\n actorRef\n createdAt\n }\n totalItems\n }\n }\n";
|
|
89
|
+
export declare const OVERRIDE_VARIANT_COST_MUTATION = "\n mutation OverrideVariantCost($input: OverrideVariantCostInput!, $idempotencyKey: String) {\n overrideVariantCost(input: $input, idempotencyKey: $idempotencyKey) {\n \n productVariantId\n scopeId\n legalEntityId\n currencyCode\n averageUnitCost\n unitCost\n method\n onHandAtLastEntry\n updatedAt\n\n }\n }\n";
|
|
90
|
+
/**
|
|
91
|
+
* `admin.purchasing.cost` (spec §10.1). Every method needs the Purchasing plugin on the store and
|
|
92
|
+
* purchasing switched on for its legal entity (`PURCHASING_NOT_ENABLED`, 422; `PLUGIN_ACCESS_DENIED`,
|
|
93
|
+
* 403, for an ordinary caller), and a store that purchases (`HUB_HAS_NO_PURCHASING`,
|
|
94
|
+
* `LEGAL_ENTITY_REQUIRED`). A variant not in the store is `PURCHASING_VARIANT_NOT_FOUND` (404).
|
|
95
|
+
* Reads need `ReadCatalog`, `ReadProduct` or `ManageInventoryCost`.
|
|
96
|
+
*/
|
|
97
|
+
export interface PurchasingCostModule {
|
|
98
|
+
/** The variant's cost in the scope; null while the scope has none (its cost field answers). */
|
|
99
|
+
get(variantId: string, call?: Call): Promise<VariantCost | null>;
|
|
100
|
+
/** The variant's cost ledger, newest first. Refusals: `VARIANT_COST_INVALID` (400) for a page. */
|
|
101
|
+
history(variantId: string, options?: VariantCostHistoryOptions, call?: Call): Promise<VariantCostEntryList>;
|
|
102
|
+
/**
|
|
103
|
+
* Sets the variant's cost in the scope, with a reason (cause `manual`); averaging continues
|
|
104
|
+
* from it, and the variant's cost field follows when one legal entity alone holds it. Needs
|
|
105
|
+
* `ManageInventoryCost` on EVERY store of the legal entity (`SHARED_SELLER_NOT_ALLOWED`, 403).
|
|
106
|
+
* Refusals: `VARIANT_COST_INVALID` (400) for the amount or the reason.
|
|
107
|
+
*/
|
|
108
|
+
override(input: OverrideVariantCostInput, call?: Call): Promise<VariantCost>;
|
|
109
|
+
}
|
|
110
|
+
export declare function createPurchasingCostModule(transport: Transport): PurchasingCostModule;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export const VARIANT_COST_FIELDS = /* GraphQL */ `
|
|
2
|
+
productVariantId
|
|
3
|
+
scopeId
|
|
4
|
+
legalEntityId
|
|
5
|
+
currencyCode
|
|
6
|
+
averageUnitCost
|
|
7
|
+
unitCost
|
|
8
|
+
method
|
|
9
|
+
onHandAtLastEntry
|
|
10
|
+
updatedAt
|
|
11
|
+
`;
|
|
12
|
+
export const VARIANT_COST_ENTRY_FIELDS = /* GraphQL */ `
|
|
13
|
+
id
|
|
14
|
+
productVariantId
|
|
15
|
+
scopeId
|
|
16
|
+
cause
|
|
17
|
+
currencyCode
|
|
18
|
+
deltaQuantity
|
|
19
|
+
onHandBefore
|
|
20
|
+
unitCost
|
|
21
|
+
chargeAmount
|
|
22
|
+
unabsorbedAmount
|
|
23
|
+
averageBefore
|
|
24
|
+
resultingAverage
|
|
25
|
+
mirrorWritten
|
|
26
|
+
referenceDocumentRef
|
|
27
|
+
reason
|
|
28
|
+
actorRef
|
|
29
|
+
createdAt
|
|
30
|
+
`;
|
|
31
|
+
export const VARIANT_COST_QUERY = /* GraphQL */ `
|
|
32
|
+
query VariantCost($variantId: ID!) {
|
|
33
|
+
variantCost(variantId: $variantId) { ${VARIANT_COST_FIELDS} }
|
|
34
|
+
}
|
|
35
|
+
`;
|
|
36
|
+
export const VARIANT_COST_HISTORY_QUERY = /* GraphQL */ `
|
|
37
|
+
query VariantCostHistory($variantId: ID!, $options: VariantCostHistoryOptions) {
|
|
38
|
+
variantCostHistory(variantId: $variantId, options: $options) {
|
|
39
|
+
items { ${VARIANT_COST_ENTRY_FIELDS} }
|
|
40
|
+
totalItems
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
`;
|
|
44
|
+
export const OVERRIDE_VARIANT_COST_MUTATION = /* GraphQL */ `
|
|
45
|
+
mutation OverrideVariantCost($input: OverrideVariantCostInput!, $idempotencyKey: String) {
|
|
46
|
+
overrideVariantCost(input: $input, idempotencyKey: $idempotencyKey) {
|
|
47
|
+
${VARIANT_COST_FIELDS}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
`;
|
|
51
|
+
export function createPurchasingCostModule(transport) {
|
|
52
|
+
return {
|
|
53
|
+
async get(variantId, call) {
|
|
54
|
+
const data = await transport.graphql({ api: 'admin', query: VARIANT_COST_QUERY, variables: { variantId } }, call);
|
|
55
|
+
return data.variantCost;
|
|
56
|
+
},
|
|
57
|
+
async history(variantId, options, call) {
|
|
58
|
+
const page = {};
|
|
59
|
+
if (options?.skip !== undefined)
|
|
60
|
+
page.skip = options.skip;
|
|
61
|
+
if (options?.take !== undefined)
|
|
62
|
+
page.take = options.take;
|
|
63
|
+
const data = await transport.graphql({
|
|
64
|
+
api: 'admin',
|
|
65
|
+
query: VARIANT_COST_HISTORY_QUERY,
|
|
66
|
+
variables: { variantId, ...(Object.keys(page).length > 0 ? { options: page } : {}) },
|
|
67
|
+
}, call);
|
|
68
|
+
return data.variantCostHistory;
|
|
69
|
+
},
|
|
70
|
+
async override(input, call) {
|
|
71
|
+
const data = await transport.graphql({
|
|
72
|
+
api: 'admin',
|
|
73
|
+
query: OVERRIDE_VARIANT_COST_MUTATION,
|
|
74
|
+
variables: {
|
|
75
|
+
input: {
|
|
76
|
+
variantId: input.variantId,
|
|
77
|
+
unitCost: String(input.unitCost),
|
|
78
|
+
reason: input.reason,
|
|
79
|
+
},
|
|
80
|
+
idempotencyKey: call?.idempotencyKey,
|
|
81
|
+
},
|
|
82
|
+
}, call);
|
|
83
|
+
return data.overrideVariantCost;
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { Transport } from '@sixtyninecommerce/core';
|
|
2
|
+
import { type PurchasingAlertsModule } from './alerts.js';
|
|
3
|
+
import { type PurchasingBackordersModule } from './backorders.js';
|
|
4
|
+
import { type PurchasingCostModule } from './cost.js';
|
|
5
|
+
import { type PurchasingLinksModule } from './links.js';
|
|
6
|
+
import { type PurchasingPurchaseOrdersModule } from './purchase-orders.js';
|
|
7
|
+
import { type PurchasingReceiptsModule } from './receipts.js';
|
|
8
|
+
import { type PurchasingReplenishmentModule } from './replenishment.js';
|
|
9
|
+
import { type PurchasingReturnsModule } from './returns.js';
|
|
10
|
+
import { type PurchasingSettingsModule } from './settings.js';
|
|
11
|
+
import { type PurchasingSuppliersModule } from './suppliers.js';
|
|
12
|
+
export type { PurchasingAlert, PurchasingAlertRecipients, PurchasingAlertRecipientsInput, PurchasingAlertRecipientsModule, PurchasingAlertSummary, PurchasingAlertsModule, } from './alerts.js';
|
|
13
|
+
export type { BackorderReadyLine, BackordersReadyOptions, PurchasingBackordersModule, } from './backorders.js';
|
|
14
|
+
export type { OverrideVariantCostInput, PurchasingCostModule, VariantCost, VariantCostCause, VariantCostEntry, VariantCostEntryList, VariantCostHistoryOptions, } from './cost.js';
|
|
15
|
+
export type { BackToBackLinkQuantities, BackToBackLinkResult, CreateBackToBackLinkInput, DropShipShipmentFulfillment, DropShipShipmentResult, PurchaseOrderDropShip, PurchaseOrderDropShipLine, PurchaseOrderLink, PurchaseOrderLinkKind, PurchaseOrderLinkReleaseReason, PurchaseOrderLinkStatus, PurchasingBackToBackLinksModule, PurchasingDropShipLinksModule, PurchasingLinksModule, RecordDropShipShipmentInput, } from './links.js';
|
|
16
|
+
export type { CreatePurchaseOrderInput, PurchaseOrder, PurchaseOrderCancelOptions, PurchaseOrderConfirmation, PurchaseOrderConfirmationInput, PurchaseOrderDocumentOptions, PurchaseOrderDocumentUrl, PurchaseOrderHeaderFields, PurchaseOrderKeyedCall, PurchaseOrderLine, PurchaseOrderLineConfirmationInput, PurchaseOrderLineImportOptions, PurchaseOrderLineImportResult, PurchaseOrderLineImportRow, PurchaseOrderLineInput, PurchaseOrderLinesModule, PurchaseOrderListOptions, PurchaseOrderLocation, PurchaseOrderReasonOptions, PurchaseOrderRevision, PurchaseOrderRevisionInput, PurchaseOrderRevisionsModule, PurchaseOrderSendVia, PurchaseOrderStatus, PurchaseOrderStatusEntry, PurchaseOrderSupplier, PurchasingPurchaseOrdersModule, UpdatePurchaseOrderInput, UpdatePurchaseOrderLineInput, } from './purchase-orders.js';
|
|
17
|
+
export type { AddGoodsReceiptChargeInput, GoodsReceipt, GoodsReceiptChargesModule, GoodsReceiptDetail, GoodsReceiptKeyedCall, GoodsReceiptKind, GoodsReceiptLine, GoodsReceiptListOptions, GoodsReceiptReference, GoodsReceiptTraceability, GoodsReceiptTraceabilityInput, LandedCharge, LandedChargeAllocation, LandedChargeAllocationBasis, LandedChargeKind, PostGoodsReceiptInput, PostGoodsReceiptLineInput, PurchasingReceiptsModule, ReceivablePurchaseOrderLine, ReceivablePurchaseOrderLinesOptions, RemoveGoodsReceiptChargeInput, ReverseGoodsReceiptInput, } from './receipts.js';
|
|
18
|
+
export type { PurchasingReplenishmentModule, ReplenishmentComputeResult, ReplenishmentDraftLine, ReplenishmentDrafts, ReplenishmentLocation, ReplenishmentRule, ReplenishmentRuleFields, ReplenishmentRuleImportInput, ReplenishmentRuleImportResult, ReplenishmentRuleImportRow, ReplenishmentRuleListOptions, ReplenishmentRulesModule, ReplenishmentSuggestion, ReplenishmentSuggestionListOptions, ReplenishmentSuggestionsModule, ReplenishmentSupplier, ReplenishmentVariant, } from './replenishment.js';
|
|
19
|
+
export type { CreateSupplierReturnInput, PurchasingReturnsModule, ResolveSupplierReturnLineInput, ShipSupplierReturnInput, SupplierReturn, SupplierReturnCancelOptions, SupplierReturnDocumentUrl, SupplierReturnKeyedCall, SupplierReturnLine, SupplierReturnLineInput, SupplierReturnListOptions, SupplierReturnOrigin, SupplierReturnOutcome, SupplierReturnResolution, SupplierReturnStatus, SupplierReturnStatusEntry, UpdateSupplierReturnInput, } from './returns.js';
|
|
20
|
+
export type { PurchasingNumbering, PurchasingNumberingKind, PurchasingNumberingModule, PurchasingSettings, PurchasingSettingsModule, UpdatePurchasingNumberingInput, UpdatePurchasingSettingsInput, } from './settings.js';
|
|
21
|
+
export type { CreateSupplierContactInput, CreateSupplierInput, PurchasingSuppliersModule, Supplier, SupplierAddress, SupplierAddressInput, SupplierContact, SupplierContactFields, SupplierContactsModule, SupplierFields, SupplierItem, SupplierItemFields, SupplierItemImportResult, SupplierItemImportRowResult, SupplierItemListOptions, SupplierItemPrice, SupplierItemPriceInput, SupplierItemPricesModule, SupplierItemPricesOptions, SupplierItemRow, SupplierItemSupplier, SupplierItemsBulkUpsertInput, SupplierItemsModule, SupplierItemVariant, SupplierListOptions, SupplierPriceListImportInput, SupplierStatusOptions, UpdateSupplierContactInput, UpdateSupplierInput, } from './suppliers.js';
|
|
22
|
+
/**
|
|
23
|
+
* `admin.purchasing` (purchase-orders spec §10.1): buying stock from suppliers, per legal entity.
|
|
24
|
+
* `settings` (with its document `numbering`), `suppliers` (with their `contacts`),
|
|
25
|
+
* `purchaseOrders` (with their `lines`; the spec's `orders` submodule), `replenishment` (reorder
|
|
26
|
+
* `rules` and `suggestions`), `cost` (a variant's cost ledger), `alerts` (what needs attention,
|
|
27
|
+
* and who the alert emails go to), `receipts` (goods receipts and what can be received),
|
|
28
|
+
* `backorders` (the store's backordered order lines stock on hand can ship now),
|
|
29
|
+
* `returns` (goods sent back to suppliers) and `links` (customer order lines bought on purchase
|
|
30
|
+
* order lines: back-to-back links, phase 5).
|
|
31
|
+
*/
|
|
32
|
+
export interface PurchasingModule {
|
|
33
|
+
/** The legal entity's purchasing settings and document numbering. */
|
|
34
|
+
settings: PurchasingSettingsModule;
|
|
35
|
+
/** The legal entity's suppliers, their contacts and their catalog (`items`). */
|
|
36
|
+
suppliers: PurchasingSuppliersModule;
|
|
37
|
+
/** The legal entity's purchase orders, their lines and lifecycle. */
|
|
38
|
+
purchaseOrders: PurchasingPurchaseOrdersModule;
|
|
39
|
+
/** The legal entity's reorder rules and its reorder suggestions. */
|
|
40
|
+
replenishment: PurchasingReplenishmentModule;
|
|
41
|
+
/** What needs attention in the legal entity's purchasing, and who its alert emails go to. */
|
|
42
|
+
alerts: PurchasingAlertsModule;
|
|
43
|
+
/** A variant's cost in the legal entity's ledger: read it, its history, and override it. */
|
|
44
|
+
cost: PurchasingCostModule;
|
|
45
|
+
/** Receiving goods against the legal entity's sent purchase orders, and its receipts. */
|
|
46
|
+
receipts: PurchasingReceiptsModule;
|
|
47
|
+
/** Returns of goods to the legal entity's suppliers: refused at a receipt, or from stock. */
|
|
48
|
+
returns: PurchasingReturnsModule;
|
|
49
|
+
/** The active store's backordered order lines that stock on hand can ship now. */
|
|
50
|
+
backorders: PurchasingBackordersModule;
|
|
51
|
+
/** Customer order lines bought on purchase order lines: "Order from supplier" and its reads. */
|
|
52
|
+
links: PurchasingLinksModule;
|
|
53
|
+
}
|
|
54
|
+
export declare function createPurchasingModule(transport: Transport): PurchasingModule;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { createPurchasingAlertsModule } from './alerts.js';
|
|
2
|
+
import { createPurchasingBackordersModule } from './backorders.js';
|
|
3
|
+
import { createPurchasingCostModule } from './cost.js';
|
|
4
|
+
import { createPurchasingLinksModule } from './links.js';
|
|
5
|
+
import { createPurchasingPurchaseOrdersModule, } from './purchase-orders.js';
|
|
6
|
+
import { createPurchasingReceiptsModule } from './receipts.js';
|
|
7
|
+
import { createPurchasingReplenishmentModule, } from './replenishment.js';
|
|
8
|
+
import { createPurchasingReturnsModule } from './returns.js';
|
|
9
|
+
import { createPurchasingSettingsModule } from './settings.js';
|
|
10
|
+
import { createPurchasingSuppliersModule } from './suppliers.js';
|
|
11
|
+
export function createPurchasingModule(transport) {
|
|
12
|
+
return {
|
|
13
|
+
settings: createPurchasingSettingsModule(transport),
|
|
14
|
+
suppliers: createPurchasingSuppliersModule(transport),
|
|
15
|
+
purchaseOrders: createPurchasingPurchaseOrdersModule(transport),
|
|
16
|
+
replenishment: createPurchasingReplenishmentModule(transport),
|
|
17
|
+
alerts: createPurchasingAlertsModule(transport),
|
|
18
|
+
cost: createPurchasingCostModule(transport),
|
|
19
|
+
receipts: createPurchasingReceiptsModule(transport),
|
|
20
|
+
returns: createPurchasingReturnsModule(transport),
|
|
21
|
+
backorders: createPurchasingBackordersModule(transport),
|
|
22
|
+
links: createPurchasingLinksModule(transport),
|
|
23
|
+
};
|
|
24
|
+
}
|