@sixtyninecommerce/admin 0.10.0 → 0.11.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 +4347 -171
- 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/index.d.ts +9 -2
- package/dist/catalog/index.js +4 -0
- package/dist/catalog/products.d.ts +159 -19
- package/dist/catalog/products.js +88 -13
- package/dist/catalog/properties.d.ts +102 -14
- package/dist/catalog/properties.js +13 -0
- package/dist/catalog/recommendations.d.ts +261 -0
- package/dist/catalog/recommendations.js +145 -0
- package/dist/catalog/reviews.d.ts +368 -0
- package/dist/catalog/reviews.js +318 -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 +233 -26
- package/dist/catalog/variants.js +125 -7
- package/dist/catalog/visibility.d.ts +20 -5
- package/dist/catalog/visibility.js +19 -1
- package/dist/client.d.ts +95 -9
- package/dist/client.js +35 -7
- package/dist/content/assets.d.ts +286 -0
- package/dist/content/assets.js +181 -0
- package/dist/content/items.d.ts +269 -0
- package/dist/content/items.js +170 -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/groups.d.ts +207 -0
- package/dist/customers/groups.js +438 -0
- package/dist/customers/index.d.ts +447 -37
- package/dist/customers/index.js +313 -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/index.d.ts +731 -21
- package/dist/documents/index.js +436 -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 +44 -10
- package/dist/fulfillments/index.js +11 -2
- 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 +123 -35
- package/dist/index.js +45 -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 +423 -0
- package/dist/integrations/exact-online-types.js +6 -0
- package/dist/integrations/exact-online.d.ts +248 -0
- package/dist/integrations/exact-online.js +376 -0
- package/dist/integrations/index.d.ts +29 -3
- package/dist/integrations/index.js +18 -3
- package/dist/integrations/pipeline-keys.d.ts +13 -0
- package/dist/integrations/pipeline-keys.js +22 -0
- package/dist/integrations/pipelines.d.ts +15 -14
- package/dist/integrations/pipelines.js +6 -22
- package/dist/integrations/types.d.ts +146 -0
- package/dist/locations/index.d.ts +66 -0
- package/dist/locations/index.js +31 -0
- package/dist/meta/index.d.ts +162 -0
- package/dist/orders/cancel-with-money.d.ts +227 -0
- package/dist/orders/cancel-with-money.js +153 -0
- package/dist/orders/commit-edit.d.ts +7 -1
- package/dist/orders/commit-edit.js +5 -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 +49 -9
- package/dist/orders/index.js +22 -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 +222 -0
- package/dist/orders/list.js +377 -0
- package/dist/orders/manual-pricing.d.ts +5 -0
- package/dist/orders/order-entry.d.ts +20 -7
- package/dist/orders/plan-edit.d.ts +1 -1
- package/dist/orders/plan-edit.js +4 -1
- 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 +8 -1
- package/dist/orders/surcharges.js +3 -2
- package/dist/payments/account-credit.d.ts +30 -0
- package/dist/payments/account-credit.js +19 -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 +12 -0
- package/dist/payments/credit-noted-fields.js +37 -0
- package/dist/payments/index.d.ts +257 -11
- package/dist/payments/index.js +131 -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 +144 -0
- package/dist/payments/requests.js +92 -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 +104 -0
- package/dist/pickups/index.js +105 -0
- package/dist/platform/channels.d.ts +132 -0
- package/dist/platform/channels.js +128 -0
- package/dist/platform/geo.d.ts +123 -0
- package/dist/platform/geo.js +144 -0
- package/dist/platform/tax.d.ts +154 -0
- package/dist/platform/tax.js +139 -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 +103 -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 +2125 -32
- package/dist/pos/index.js +742 -4
- package/dist/pos/no-receipt.d.ts +94 -0
- package/dist/pos/no-receipt.js +25 -0
- package/dist/pos/offline-sales.d.ts +187 -0
- package/dist/pos/offline-sales.js +116 -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 +217 -0
- package/dist/pos/returns.js +53 -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 +604 -0
- package/dist/pricing/price-lists.js +600 -0
- package/dist/purchasing/alerts.d.ts +89 -0
- package/dist/purchasing/alerts.js +62 -0
- package/dist/purchasing/cost.d.ts +110 -0
- package/dist/purchasing/cost.js +86 -0
- package/dist/purchasing/index.d.ts +36 -0
- package/dist/purchasing/index.js +16 -0
- package/dist/purchasing/purchase-orders.d.ts +548 -0
- package/dist/purchasing/purchase-orders.js +491 -0
- package/dist/purchasing/replenishment.d.ts +281 -0
- package/dist/purchasing/replenishment.js +240 -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 +501 -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 +614 -21
- package/dist/returns/index.js +695 -11
- package/dist/search/index.d.ts +76 -1
- package/dist/search/index.js +63 -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 +48 -0
- package/dist/shipping/index.js +25 -0
- package/dist/shipping/methods.d.ts +198 -0
- package/dist/shipping/methods.js +240 -0
- package/dist/shipping/myparcel.d.ts +254 -0
- package/dist/shipping/myparcel.js +178 -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 +179 -0
- package/dist/shipping/rate-tables.js +184 -0
- package/dist/stock/index.d.ts +10 -3
- package/dist/stock/index.js +3 -0
- package/dist/stock/locations.d.ts +144 -0
- package/dist/stock/locations.js +168 -0
- package/dist/stock/transfers.d.ts +216 -43
- package/dist/stock/transfers.js +140 -13
- package/dist/stored-value/index.d.ts +214 -4
- package/dist/stored-value/index.js +152 -0
- package/dist/subscriptions/index.d.ts +682 -0
- package/dist/subscriptions/index.js +815 -0
- package/dist/tax/index.d.ts +76 -1
- package/dist/tax/index.js +50 -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 +66 -0
- package/dist/tenant/email-templates.js +54 -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,62 @@
|
|
|
1
|
+
export const PURCHASING_ALERT_SUMMARY_FIELDS = /* GraphQL */ `
|
|
2
|
+
localDay
|
|
3
|
+
awaitingApproval
|
|
4
|
+
overdueLines
|
|
5
|
+
overdueOrders
|
|
6
|
+
attentionOrders
|
|
7
|
+
reorderSuggestions
|
|
8
|
+
newReorderSuggestions
|
|
9
|
+
`;
|
|
10
|
+
export const PURCHASING_ALERT_RECIPIENTS_FIELDS = /* GraphQL */ `
|
|
11
|
+
alert
|
|
12
|
+
permission
|
|
13
|
+
emails
|
|
14
|
+
recipients
|
|
15
|
+
`;
|
|
16
|
+
export const PURCHASING_ALERTS_QUERY = /* GraphQL */ `
|
|
17
|
+
query PurchasingAlerts {
|
|
18
|
+
purchasingAlerts { ${PURCHASING_ALERT_SUMMARY_FIELDS} }
|
|
19
|
+
}
|
|
20
|
+
`;
|
|
21
|
+
export const PURCHASING_ALERT_RECIPIENTS_QUERY = /* GraphQL */ `
|
|
22
|
+
query PurchasingAlertRecipients {
|
|
23
|
+
purchasingAlertRecipients { ${PURCHASING_ALERT_RECIPIENTS_FIELDS} }
|
|
24
|
+
}
|
|
25
|
+
`;
|
|
26
|
+
export const UPDATE_PURCHASING_ALERT_RECIPIENTS_MUTATION = /* GraphQL */ `
|
|
27
|
+
mutation UpdatePurchasingAlertRecipients(
|
|
28
|
+
$input: [PurchasingAlertRecipientsInput!]!
|
|
29
|
+
$idempotencyKey: String
|
|
30
|
+
) {
|
|
31
|
+
updatePurchasingAlertRecipients(input: $input, idempotencyKey: $idempotencyKey) {
|
|
32
|
+
${PURCHASING_ALERT_RECIPIENTS_FIELDS}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
`;
|
|
36
|
+
export function createPurchasingAlertsModule(transport) {
|
|
37
|
+
return {
|
|
38
|
+
async summary(call) {
|
|
39
|
+
const data = await transport.graphql({ api: 'admin', query: PURCHASING_ALERTS_QUERY }, call);
|
|
40
|
+
return data.purchasingAlerts ?? null;
|
|
41
|
+
},
|
|
42
|
+
recipients: {
|
|
43
|
+
async list(call) {
|
|
44
|
+
const data = await transport.graphql({ api: 'admin', query: PURCHASING_ALERT_RECIPIENTS_QUERY }, call);
|
|
45
|
+
return data.purchasingAlertRecipients;
|
|
46
|
+
},
|
|
47
|
+
async update(input, call) {
|
|
48
|
+
const data = await transport.graphql({
|
|
49
|
+
api: 'admin',
|
|
50
|
+
query: UPDATE_PURCHASING_ALERT_RECIPIENTS_MUTATION,
|
|
51
|
+
variables: {
|
|
52
|
+
// Only the input's own fields: a caller spreading what `list` answered sends no
|
|
53
|
+
// `permission` or `recipients`, which the engine's input does not declare.
|
|
54
|
+
input: input.map(({ alert, emails }) => ({ alert, emails: [...emails] })),
|
|
55
|
+
idempotencyKey: call?.idempotencyKey,
|
|
56
|
+
},
|
|
57
|
+
}, call);
|
|
58
|
+
return data.updatePurchasingAlertRecipients;
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
}
|
|
@@ -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,36 @@
|
|
|
1
|
+
import type { Transport } from '@sixtyninecommerce/core';
|
|
2
|
+
import { type PurchasingAlertsModule } from './alerts.js';
|
|
3
|
+
import { type PurchasingCostModule } from './cost.js';
|
|
4
|
+
import { type PurchasingPurchaseOrdersModule } from './purchase-orders.js';
|
|
5
|
+
import { type PurchasingReplenishmentModule } from './replenishment.js';
|
|
6
|
+
import { type PurchasingSettingsModule } from './settings.js';
|
|
7
|
+
import { type PurchasingSuppliersModule } from './suppliers.js';
|
|
8
|
+
export type { PurchasingAlert, PurchasingAlertRecipients, PurchasingAlertRecipientsInput, PurchasingAlertRecipientsModule, PurchasingAlertSummary, PurchasingAlertsModule, } from './alerts.js';
|
|
9
|
+
export type { OverrideVariantCostInput, PurchasingCostModule, VariantCost, VariantCostCause, VariantCostEntry, VariantCostEntryList, VariantCostHistoryOptions, } from './cost.js';
|
|
10
|
+
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';
|
|
11
|
+
export type { PurchasingReplenishmentModule, ReplenishmentComputeResult, ReplenishmentDraftLine, ReplenishmentDrafts, ReplenishmentLocation, ReplenishmentRule, ReplenishmentRuleFields, ReplenishmentRuleImportInput, ReplenishmentRuleImportResult, ReplenishmentRuleImportRow, ReplenishmentRuleListOptions, ReplenishmentRulesModule, ReplenishmentSuggestion, ReplenishmentSuggestionListOptions, ReplenishmentSuggestionsModule, ReplenishmentSupplier, ReplenishmentVariant, } from './replenishment.js';
|
|
12
|
+
export type { PurchasingNumbering, PurchasingNumberingKind, PurchasingNumberingModule, PurchasingSettings, PurchasingSettingsModule, UpdatePurchasingNumberingInput, UpdatePurchasingSettingsInput, } from './settings.js';
|
|
13
|
+
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';
|
|
14
|
+
/**
|
|
15
|
+
* `admin.purchasing` (purchase-orders spec §10.1): buying stock from suppliers, per legal entity.
|
|
16
|
+
* `settings` (with its document `numbering`), `suppliers` (with their `contacts`),
|
|
17
|
+
* `purchaseOrders` (with their `lines`; the spec's `orders` submodule), `replenishment` (reorder
|
|
18
|
+
* `rules` and `suggestions`), `cost` (a variant's cost ledger) and `alerts` (what needs attention,
|
|
19
|
+
* and who the alert emails go to) so far; `receipts` and `returns` join them as their engine
|
|
20
|
+
* surfaces ship.
|
|
21
|
+
*/
|
|
22
|
+
export interface PurchasingModule {
|
|
23
|
+
/** The legal entity's purchasing settings and document numbering. */
|
|
24
|
+
settings: PurchasingSettingsModule;
|
|
25
|
+
/** The legal entity's suppliers, their contacts and their catalog (`items`). */
|
|
26
|
+
suppliers: PurchasingSuppliersModule;
|
|
27
|
+
/** The legal entity's purchase orders, their lines and lifecycle. */
|
|
28
|
+
purchaseOrders: PurchasingPurchaseOrdersModule;
|
|
29
|
+
/** The legal entity's reorder rules and its reorder suggestions. */
|
|
30
|
+
replenishment: PurchasingReplenishmentModule;
|
|
31
|
+
/** What needs attention in the legal entity's purchasing, and who its alert emails go to. */
|
|
32
|
+
alerts: PurchasingAlertsModule;
|
|
33
|
+
/** A variant's cost in the legal entity's ledger: read it, its history, and override it. */
|
|
34
|
+
cost: PurchasingCostModule;
|
|
35
|
+
}
|
|
36
|
+
export declare function createPurchasingModule(transport: Transport): PurchasingModule;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { createPurchasingAlertsModule } from './alerts.js';
|
|
2
|
+
import { createPurchasingCostModule } from './cost.js';
|
|
3
|
+
import { createPurchasingPurchaseOrdersModule, } from './purchase-orders.js';
|
|
4
|
+
import { createPurchasingReplenishmentModule, } from './replenishment.js';
|
|
5
|
+
import { createPurchasingSettingsModule } from './settings.js';
|
|
6
|
+
import { createPurchasingSuppliersModule } from './suppliers.js';
|
|
7
|
+
export function createPurchasingModule(transport) {
|
|
8
|
+
return {
|
|
9
|
+
settings: createPurchasingSettingsModule(transport),
|
|
10
|
+
suppliers: createPurchasingSuppliersModule(transport),
|
|
11
|
+
purchaseOrders: createPurchasingPurchaseOrdersModule(transport),
|
|
12
|
+
replenishment: createPurchasingReplenishmentModule(transport),
|
|
13
|
+
alerts: createPurchasingAlertsModule(transport),
|
|
14
|
+
cost: createPurchasingCostModule(transport),
|
|
15
|
+
};
|
|
16
|
+
}
|