@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,491 @@
|
|
|
1
|
+
import { pageFromVendureList, readOffsetCursor, } from '@sixtyninecommerce/core';
|
|
2
|
+
export const PURCHASE_ORDER_LINE_FIELDS = /* GraphQL */ `
|
|
3
|
+
id
|
|
4
|
+
purchaseOrderId
|
|
5
|
+
position
|
|
6
|
+
productVariantId
|
|
7
|
+
supplierItemId
|
|
8
|
+
sku
|
|
9
|
+
name
|
|
10
|
+
supplierSku
|
|
11
|
+
purchaseUnitLabel
|
|
12
|
+
purchaseUnitFactor
|
|
13
|
+
orderedQuantity
|
|
14
|
+
orderedBaseQuantity
|
|
15
|
+
cancelledBaseQuantity
|
|
16
|
+
receivedBaseQuantity
|
|
17
|
+
returnedForReplacementBaseQuantity
|
|
18
|
+
unitPrice
|
|
19
|
+
discountBps
|
|
20
|
+
priceSource
|
|
21
|
+
vatRateBps
|
|
22
|
+
lineTotal
|
|
23
|
+
requestedOn
|
|
24
|
+
confirmedBaseQuantity
|
|
25
|
+
confirmedOn
|
|
26
|
+
confirmedAt
|
|
27
|
+
externalLineId
|
|
28
|
+
createdAt
|
|
29
|
+
updatedAt
|
|
30
|
+
`;
|
|
31
|
+
/**
|
|
32
|
+
* The header and lines, without the status history, which the engine reads per order: what the
|
|
33
|
+
* list selects, so a page stays one round of reads.
|
|
34
|
+
*/
|
|
35
|
+
export const PURCHASE_ORDER_SUMMARY_FIELDS = /* GraphQL */ `
|
|
36
|
+
id
|
|
37
|
+
scopeId
|
|
38
|
+
legalEntityId
|
|
39
|
+
originChannelId
|
|
40
|
+
code
|
|
41
|
+
kind
|
|
42
|
+
status
|
|
43
|
+
supplierId
|
|
44
|
+
supplier { id code name status }
|
|
45
|
+
destinationStockLocationId
|
|
46
|
+
destinationStockLocation { id name }
|
|
47
|
+
currencyCode
|
|
48
|
+
revision
|
|
49
|
+
approvedRevision
|
|
50
|
+
approvedAmount
|
|
51
|
+
requestedDeliveryOn
|
|
52
|
+
supplierReference
|
|
53
|
+
notesToSupplier
|
|
54
|
+
internalNotes
|
|
55
|
+
managedBy
|
|
56
|
+
externalId
|
|
57
|
+
externalNumber
|
|
58
|
+
externalApprovalStatus
|
|
59
|
+
sentAt
|
|
60
|
+
closedAt
|
|
61
|
+
closeReason
|
|
62
|
+
createdByRef
|
|
63
|
+
total
|
|
64
|
+
lineCount
|
|
65
|
+
confirmation
|
|
66
|
+
lines { ${PURCHASE_ORDER_LINE_FIELDS} }
|
|
67
|
+
createdAt
|
|
68
|
+
updatedAt
|
|
69
|
+
`;
|
|
70
|
+
/**
|
|
71
|
+
* A whole purchase order, its status history and revisions included: what `get` and every write
|
|
72
|
+
* answer.
|
|
73
|
+
*/
|
|
74
|
+
export const PURCHASE_ORDER_FIELDS = /* GraphQL */ `
|
|
75
|
+
${PURCHASE_ORDER_SUMMARY_FIELDS}
|
|
76
|
+
statusHistory { id fromStatus status actorRef reason metadata createdAt }
|
|
77
|
+
revisions {
|
|
78
|
+
id
|
|
79
|
+
revision
|
|
80
|
+
state
|
|
81
|
+
diff
|
|
82
|
+
totalAfter
|
|
83
|
+
createdByRef
|
|
84
|
+
createdAt
|
|
85
|
+
appliedAt
|
|
86
|
+
sentAt
|
|
87
|
+
sentVia
|
|
88
|
+
}
|
|
89
|
+
`;
|
|
90
|
+
export const PURCHASE_ORDERS_QUERY = /* GraphQL */ `
|
|
91
|
+
query PurchaseOrders($options: PurchaseOrderListOptions) {
|
|
92
|
+
purchaseOrders(options: $options) {
|
|
93
|
+
totalItems
|
|
94
|
+
items { ${PURCHASE_ORDER_SUMMARY_FIELDS} }
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
`;
|
|
98
|
+
export const PURCHASE_ORDER_QUERY = /* GraphQL */ `
|
|
99
|
+
query PurchaseOrder($id: ID!) {
|
|
100
|
+
purchaseOrder(id: $id) { ${PURCHASE_ORDER_FIELDS} }
|
|
101
|
+
}
|
|
102
|
+
`;
|
|
103
|
+
export const CREATE_PURCHASE_ORDER_MUTATION = /* GraphQL */ `
|
|
104
|
+
mutation CreatePurchaseOrder($input: CreatePurchaseOrderInput!, $idempotencyKey: String) {
|
|
105
|
+
createPurchaseOrder(input: $input, idempotencyKey: $idempotencyKey) {
|
|
106
|
+
${PURCHASE_ORDER_FIELDS}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
`;
|
|
110
|
+
export const UPDATE_PURCHASE_ORDER_MUTATION = /* GraphQL */ `
|
|
111
|
+
mutation UpdatePurchaseOrder($input: UpdatePurchaseOrderInput!, $idempotencyKey: String) {
|
|
112
|
+
updatePurchaseOrder(input: $input, idempotencyKey: $idempotencyKey) {
|
|
113
|
+
${PURCHASE_ORDER_FIELDS}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
`;
|
|
117
|
+
export const ADD_PURCHASE_ORDER_LINES_MUTATION = /* GraphQL */ `
|
|
118
|
+
mutation AddPurchaseOrderLines(
|
|
119
|
+
$purchaseOrderId: ID!
|
|
120
|
+
$lines: [PurchaseOrderLineInput!]!
|
|
121
|
+
$idempotencyKey: String
|
|
122
|
+
) {
|
|
123
|
+
addPurchaseOrderLines(
|
|
124
|
+
purchaseOrderId: $purchaseOrderId
|
|
125
|
+
lines: $lines
|
|
126
|
+
idempotencyKey: $idempotencyKey
|
|
127
|
+
) {
|
|
128
|
+
${PURCHASE_ORDER_FIELDS}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
`;
|
|
132
|
+
export const UPDATE_PURCHASE_ORDER_LINE_MUTATION = /* GraphQL */ `
|
|
133
|
+
mutation UpdatePurchaseOrderLine(
|
|
134
|
+
$input: UpdatePurchaseOrderLineInput!
|
|
135
|
+
$idempotencyKey: String
|
|
136
|
+
) {
|
|
137
|
+
updatePurchaseOrderLine(input: $input, idempotencyKey: $idempotencyKey) {
|
|
138
|
+
${PURCHASE_ORDER_FIELDS}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
`;
|
|
142
|
+
export const REMOVE_PURCHASE_ORDER_LINE_MUTATION = /* GraphQL */ `
|
|
143
|
+
mutation RemovePurchaseOrderLine($id: ID!, $idempotencyKey: String) {
|
|
144
|
+
removePurchaseOrderLine(id: $id, idempotencyKey: $idempotencyKey) {
|
|
145
|
+
${PURCHASE_ORDER_FIELDS}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
`;
|
|
149
|
+
export const SUBMIT_PURCHASE_ORDER_MUTATION = /* GraphQL */ `
|
|
150
|
+
mutation SubmitPurchaseOrder($id: ID!, $idempotencyKey: String) {
|
|
151
|
+
submitPurchaseOrder(id: $id, idempotencyKey: $idempotencyKey) { ${PURCHASE_ORDER_FIELDS} }
|
|
152
|
+
}
|
|
153
|
+
`;
|
|
154
|
+
export const APPROVE_PURCHASE_ORDER_MUTATION = /* GraphQL */ `
|
|
155
|
+
mutation ApprovePurchaseOrder($id: ID!, $idempotencyKey: String) {
|
|
156
|
+
approvePurchaseOrder(id: $id, idempotencyKey: $idempotencyKey) { ${PURCHASE_ORDER_FIELDS} }
|
|
157
|
+
}
|
|
158
|
+
`;
|
|
159
|
+
export const REJECT_PURCHASE_ORDER_MUTATION = /* GraphQL */ `
|
|
160
|
+
mutation RejectPurchaseOrder($id: ID!, $reason: String!, $idempotencyKey: String) {
|
|
161
|
+
rejectPurchaseOrder(id: $id, reason: $reason, idempotencyKey: $idempotencyKey) {
|
|
162
|
+
${PURCHASE_ORDER_FIELDS}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
`;
|
|
166
|
+
export const CANCEL_PURCHASE_ORDER_MUTATION = /* GraphQL */ `
|
|
167
|
+
mutation CancelPurchaseOrder($id: ID!, $reason: String, $idempotencyKey: String) {
|
|
168
|
+
cancelPurchaseOrder(id: $id, reason: $reason, idempotencyKey: $idempotencyKey) {
|
|
169
|
+
${PURCHASE_ORDER_FIELDS}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
`;
|
|
173
|
+
/**
|
|
174
|
+
* The cancel that states whether the supplier is emailed: sent only when `notifySupplier` is
|
|
175
|
+
* given, so a cancel without it still reaches an engine from before the cancellation email.
|
|
176
|
+
*/
|
|
177
|
+
export const CANCEL_PURCHASE_ORDER_NOTIFYING_MUTATION = /* GraphQL */ `
|
|
178
|
+
mutation CancelPurchaseOrderNotifying(
|
|
179
|
+
$id: ID!
|
|
180
|
+
$reason: String
|
|
181
|
+
$notifySupplier: Boolean
|
|
182
|
+
$idempotencyKey: String
|
|
183
|
+
) {
|
|
184
|
+
cancelPurchaseOrder(
|
|
185
|
+
id: $id
|
|
186
|
+
reason: $reason
|
|
187
|
+
notifySupplier: $notifySupplier
|
|
188
|
+
idempotencyKey: $idempotencyKey
|
|
189
|
+
) {
|
|
190
|
+
${PURCHASE_ORDER_FIELDS}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
`;
|
|
194
|
+
export const SEND_PURCHASE_ORDER_MUTATION = /* GraphQL */ `
|
|
195
|
+
mutation SendPurchaseOrder($id: ID!, $via: String!, $idempotencyKey: String) {
|
|
196
|
+
sendPurchaseOrder(id: $id, via: $via, idempotencyKey: $idempotencyKey) {
|
|
197
|
+
${PURCHASE_ORDER_FIELDS}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
`;
|
|
201
|
+
export const REVISE_PURCHASE_ORDER_MUTATION = /* GraphQL */ `
|
|
202
|
+
mutation RevisePurchaseOrder($input: RevisePurchaseOrderInput!, $idempotencyKey: String) {
|
|
203
|
+
revisePurchaseOrder(input: $input, idempotencyKey: $idempotencyKey) {
|
|
204
|
+
${PURCHASE_ORDER_FIELDS}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
`;
|
|
208
|
+
export const APPROVE_PURCHASE_ORDER_REVISION_MUTATION = /* GraphQL */ `
|
|
209
|
+
mutation ApprovePurchaseOrderRevision($purchaseOrderId: ID!, $idempotencyKey: String) {
|
|
210
|
+
approvePurchaseOrderRevision(
|
|
211
|
+
purchaseOrderId: $purchaseOrderId
|
|
212
|
+
idempotencyKey: $idempotencyKey
|
|
213
|
+
) {
|
|
214
|
+
${PURCHASE_ORDER_FIELDS}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
`;
|
|
218
|
+
export const DISCARD_PURCHASE_ORDER_REVISION_MUTATION = /* GraphQL */ `
|
|
219
|
+
mutation DiscardPurchaseOrderRevision(
|
|
220
|
+
$purchaseOrderId: ID!
|
|
221
|
+
$reason: String
|
|
222
|
+
$idempotencyKey: String
|
|
223
|
+
) {
|
|
224
|
+
discardPurchaseOrderRevision(
|
|
225
|
+
purchaseOrderId: $purchaseOrderId
|
|
226
|
+
reason: $reason
|
|
227
|
+
idempotencyKey: $idempotencyKey
|
|
228
|
+
) {
|
|
229
|
+
${PURCHASE_ORDER_FIELDS}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
`;
|
|
233
|
+
export const CLOSE_PURCHASE_ORDER_MUTATION = /* GraphQL */ `
|
|
234
|
+
mutation ClosePurchaseOrder($id: ID!, $reason: String!, $idempotencyKey: String) {
|
|
235
|
+
closePurchaseOrder(id: $id, reason: $reason, idempotencyKey: $idempotencyKey) {
|
|
236
|
+
${PURCHASE_ORDER_FIELDS}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
`;
|
|
240
|
+
export const REOPEN_PURCHASE_ORDER_MUTATION = /* GraphQL */ `
|
|
241
|
+
mutation ReopenPurchaseOrder($id: ID!, $reason: String, $idempotencyKey: String) {
|
|
242
|
+
reopenPurchaseOrder(id: $id, reason: $reason, idempotencyKey: $idempotencyKey) {
|
|
243
|
+
${PURCHASE_ORDER_FIELDS}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
`;
|
|
247
|
+
export const CREATE_PURCHASE_ORDER_DOCUMENT_URL_MUTATION = /* GraphQL */ `
|
|
248
|
+
mutation CreatePurchaseOrderDocumentUrl($purchaseOrderId: ID!, $revision: Int) {
|
|
249
|
+
createPurchaseOrderDocumentUrl(purchaseOrderId: $purchaseOrderId, revision: $revision) {
|
|
250
|
+
url
|
|
251
|
+
expiresAt
|
|
252
|
+
filename
|
|
253
|
+
revision
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
`;
|
|
257
|
+
export const CONFIRM_PURCHASE_ORDER_MUTATION = /* GraphQL */ `
|
|
258
|
+
mutation ConfirmPurchaseOrder($input: ConfirmPurchaseOrderInput!, $idempotencyKey: String) {
|
|
259
|
+
confirmPurchaseOrder(input: $input, idempotencyKey: $idempotencyKey) {
|
|
260
|
+
${PURCHASE_ORDER_FIELDS}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
`;
|
|
264
|
+
export const DUPLICATE_PURCHASE_ORDER_MUTATION = /* GraphQL */ `
|
|
265
|
+
mutation DuplicatePurchaseOrder($id: ID!, $idempotencyKey: String) {
|
|
266
|
+
duplicatePurchaseOrder(id: $id, idempotencyKey: $idempotencyKey) { ${PURCHASE_ORDER_FIELDS} }
|
|
267
|
+
}
|
|
268
|
+
`;
|
|
269
|
+
export const IMPORT_PURCHASE_ORDER_LINES_MUTATION = /* GraphQL */ `
|
|
270
|
+
mutation ImportPurchaseOrderLines(
|
|
271
|
+
$input: ImportPurchaseOrderLinesInput!
|
|
272
|
+
$idempotencyKey: String
|
|
273
|
+
) {
|
|
274
|
+
importPurchaseOrderLines(input: $input, idempotencyKey: $idempotencyKey) {
|
|
275
|
+
dryRun
|
|
276
|
+
contentHash
|
|
277
|
+
ignoredColumns
|
|
278
|
+
totalRows
|
|
279
|
+
created
|
|
280
|
+
updated
|
|
281
|
+
unchanged
|
|
282
|
+
failed
|
|
283
|
+
rows { row sku supplierSku outcome lineId errorCode message }
|
|
284
|
+
purchaseOrder { ${PURCHASE_ORDER_FIELDS} }
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
`;
|
|
288
|
+
/** The engine's own default page; it refuses a page above 100. */
|
|
289
|
+
const DEFAULT_PAGE_SIZE = 50;
|
|
290
|
+
const HEADER_INPUT_FIELDS = [
|
|
291
|
+
'requestedDeliveryOn',
|
|
292
|
+
'supplierReference',
|
|
293
|
+
'notesToSupplier',
|
|
294
|
+
'internalNotes',
|
|
295
|
+
];
|
|
296
|
+
const LINE_INPUT_FIELDS = [
|
|
297
|
+
'productVariantId',
|
|
298
|
+
'orderedQuantity',
|
|
299
|
+
'unitPrice',
|
|
300
|
+
'discountBps',
|
|
301
|
+
'requestedOn',
|
|
302
|
+
];
|
|
303
|
+
const LINE_PATCH_FIELDS = [
|
|
304
|
+
'orderedQuantity',
|
|
305
|
+
'unitPrice',
|
|
306
|
+
'discountBps',
|
|
307
|
+
'requestedOn',
|
|
308
|
+
];
|
|
309
|
+
const LIST_FILTERS = ['statuses', 'supplierId', 'destinationStockLocationId', 'term'];
|
|
310
|
+
const CONFIRMATION_LINE_FIELDS = [
|
|
311
|
+
'lineId',
|
|
312
|
+
'confirmedBaseQuantity',
|
|
313
|
+
'confirmedOn',
|
|
314
|
+
];
|
|
315
|
+
const REVISION_HEADER_FIELDS = [
|
|
316
|
+
'destinationStockLocationId',
|
|
317
|
+
'requestedDeliveryOn',
|
|
318
|
+
'notesToSupplier',
|
|
319
|
+
];
|
|
320
|
+
/**
|
|
321
|
+
* Only the fields the engine's input declares, so a caller spreading what it read (which carries
|
|
322
|
+
* `id`, `lines`, `createdAt`, …) sends just the fields, and a field left out stays out. `null` is
|
|
323
|
+
* sent as `null` (cleared).
|
|
324
|
+
*/
|
|
325
|
+
function picked(input, fields) {
|
|
326
|
+
const out = {};
|
|
327
|
+
for (const field of fields) {
|
|
328
|
+
const value = input[field];
|
|
329
|
+
if (value !== undefined)
|
|
330
|
+
out[field] = value;
|
|
331
|
+
}
|
|
332
|
+
return out;
|
|
333
|
+
}
|
|
334
|
+
function linesOf(lines) {
|
|
335
|
+
return lines.map((line) => picked(line, LINE_INPUT_FIELDS));
|
|
336
|
+
}
|
|
337
|
+
export function createPurchasingPurchaseOrdersModule(transport) {
|
|
338
|
+
const listPage = async (skip, take, options) => {
|
|
339
|
+
const filters = options ? picked(options, LIST_FILTERS) : {};
|
|
340
|
+
const data = await transport.graphql({
|
|
341
|
+
api: 'admin',
|
|
342
|
+
query: PURCHASE_ORDERS_QUERY,
|
|
343
|
+
variables: { options: { skip, take, ...filters } },
|
|
344
|
+
}, options);
|
|
345
|
+
const items = data.purchaseOrders.items.map((order) => ({
|
|
346
|
+
...order,
|
|
347
|
+
statusHistory: [],
|
|
348
|
+
revisions: [],
|
|
349
|
+
}));
|
|
350
|
+
return pageFromVendureList({ items, totalItems: data.purchaseOrders.totalItems }, skip, take, (cursor) => listPage(readOffsetCursor(cursor), take, options));
|
|
351
|
+
};
|
|
352
|
+
const mutate = async (field, query, variables, call) => {
|
|
353
|
+
const data = await transport.graphql({ api: 'admin', query, variables: { ...variables, idempotencyKey: call?.idempotencyKey } }, call);
|
|
354
|
+
return data[field];
|
|
355
|
+
};
|
|
356
|
+
return {
|
|
357
|
+
async list(options) {
|
|
358
|
+
const take = options?.limit ?? DEFAULT_PAGE_SIZE;
|
|
359
|
+
const skip = options?.after === undefined ? 0 : readOffsetCursor(options.after);
|
|
360
|
+
return listPage(skip, take, options);
|
|
361
|
+
},
|
|
362
|
+
async get(id, call) {
|
|
363
|
+
const data = await transport.graphql({ api: 'admin', query: PURCHASE_ORDER_QUERY, variables: { id } }, call);
|
|
364
|
+
return data.purchaseOrder;
|
|
365
|
+
},
|
|
366
|
+
create(input, call) {
|
|
367
|
+
const fields = {
|
|
368
|
+
...picked(input, HEADER_INPUT_FIELDS),
|
|
369
|
+
supplierId: input.supplierId,
|
|
370
|
+
};
|
|
371
|
+
if (input.destinationStockLocationId !== undefined) {
|
|
372
|
+
fields.destinationStockLocationId = input.destinationStockLocationId;
|
|
373
|
+
}
|
|
374
|
+
if (input.currencyCode !== undefined)
|
|
375
|
+
fields.currencyCode = input.currencyCode;
|
|
376
|
+
if (input.lines !== undefined)
|
|
377
|
+
fields.lines = linesOf(input.lines);
|
|
378
|
+
return mutate('createPurchaseOrder', CREATE_PURCHASE_ORDER_MUTATION, { input: fields }, call);
|
|
379
|
+
},
|
|
380
|
+
update(id, input, call) {
|
|
381
|
+
const fields = { ...picked(input, HEADER_INPUT_FIELDS), id };
|
|
382
|
+
if (input.destinationStockLocationId !== undefined) {
|
|
383
|
+
fields.destinationStockLocationId = input.destinationStockLocationId;
|
|
384
|
+
}
|
|
385
|
+
return mutate('updatePurchaseOrder', UPDATE_PURCHASE_ORDER_MUTATION, { input: fields }, call);
|
|
386
|
+
},
|
|
387
|
+
lines: {
|
|
388
|
+
add(purchaseOrderId, lines, call) {
|
|
389
|
+
return mutate('addPurchaseOrderLines', ADD_PURCHASE_ORDER_LINES_MUTATION, { purchaseOrderId, lines: linesOf(lines) }, call);
|
|
390
|
+
},
|
|
391
|
+
update(lineId, input, call) {
|
|
392
|
+
return mutate('updatePurchaseOrderLine', UPDATE_PURCHASE_ORDER_LINE_MUTATION, { input: { ...picked(input, LINE_PATCH_FIELDS), id: lineId } }, call);
|
|
393
|
+
},
|
|
394
|
+
remove(lineId, call) {
|
|
395
|
+
return mutate('removePurchaseOrderLine', REMOVE_PURCHASE_ORDER_LINE_MUTATION, { id: lineId }, call);
|
|
396
|
+
},
|
|
397
|
+
async import(purchaseOrderId, content, options) {
|
|
398
|
+
const data = await transport.graphql({
|
|
399
|
+
api: 'admin',
|
|
400
|
+
query: IMPORT_PURCHASE_ORDER_LINES_MUTATION,
|
|
401
|
+
variables: {
|
|
402
|
+
input: {
|
|
403
|
+
purchaseOrderId,
|
|
404
|
+
content,
|
|
405
|
+
...(options?.dryRun === undefined ? {} : { dryRun: options.dryRun }),
|
|
406
|
+
},
|
|
407
|
+
idempotencyKey: options?.idempotencyKey,
|
|
408
|
+
},
|
|
409
|
+
}, options);
|
|
410
|
+
return data.importPurchaseOrderLines;
|
|
411
|
+
},
|
|
412
|
+
},
|
|
413
|
+
submit(id, call) {
|
|
414
|
+
return mutate('submitPurchaseOrder', SUBMIT_PURCHASE_ORDER_MUTATION, { id }, call);
|
|
415
|
+
},
|
|
416
|
+
approve(id, call) {
|
|
417
|
+
return mutate('approvePurchaseOrder', APPROVE_PURCHASE_ORDER_MUTATION, { id }, call);
|
|
418
|
+
},
|
|
419
|
+
reject(id, reason, call) {
|
|
420
|
+
return mutate('rejectPurchaseOrder', REJECT_PURCHASE_ORDER_MUTATION, { id, reason }, call);
|
|
421
|
+
},
|
|
422
|
+
cancel(id, options) {
|
|
423
|
+
const notifying = options?.notifySupplier !== undefined;
|
|
424
|
+
return mutate('cancelPurchaseOrder', notifying ? CANCEL_PURCHASE_ORDER_NOTIFYING_MUTATION : CANCEL_PURCHASE_ORDER_MUTATION, {
|
|
425
|
+
id,
|
|
426
|
+
...(options?.reason === undefined ? {} : { reason: options.reason }),
|
|
427
|
+
...(notifying ? { notifySupplier: options?.notifySupplier } : {}),
|
|
428
|
+
}, options);
|
|
429
|
+
},
|
|
430
|
+
send(id, via, call) {
|
|
431
|
+
return mutate('sendPurchaseOrder', SEND_PURCHASE_ORDER_MUTATION, { id, via }, call);
|
|
432
|
+
},
|
|
433
|
+
revise(id, input, call) {
|
|
434
|
+
const fields = {
|
|
435
|
+
...picked(input, REVISION_HEADER_FIELDS),
|
|
436
|
+
purchaseOrderId: id,
|
|
437
|
+
};
|
|
438
|
+
if (input.addLines !== undefined)
|
|
439
|
+
fields.addLines = linesOf(input.addLines);
|
|
440
|
+
if (input.updateLines !== undefined) {
|
|
441
|
+
fields.updateLines = input.updateLines.map((line) => ({
|
|
442
|
+
...picked(line, LINE_PATCH_FIELDS),
|
|
443
|
+
id: line.id,
|
|
444
|
+
}));
|
|
445
|
+
}
|
|
446
|
+
if (input.removeLineIds !== undefined)
|
|
447
|
+
fields.removeLineIds = input.removeLineIds;
|
|
448
|
+
return mutate('revisePurchaseOrder', REVISE_PURCHASE_ORDER_MUTATION, { input: fields }, call);
|
|
449
|
+
},
|
|
450
|
+
revisions: {
|
|
451
|
+
approve(purchaseOrderId, call) {
|
|
452
|
+
return mutate('approvePurchaseOrderRevision', APPROVE_PURCHASE_ORDER_REVISION_MUTATION, { purchaseOrderId }, call);
|
|
453
|
+
},
|
|
454
|
+
discard(purchaseOrderId, options) {
|
|
455
|
+
return mutate('discardPurchaseOrderRevision', DISCARD_PURCHASE_ORDER_REVISION_MUTATION, {
|
|
456
|
+
purchaseOrderId,
|
|
457
|
+
...(options?.reason === undefined ? {} : { reason: options.reason }),
|
|
458
|
+
}, options);
|
|
459
|
+
},
|
|
460
|
+
},
|
|
461
|
+
confirm(id, input, call) {
|
|
462
|
+
const fields = { purchaseOrderId: id };
|
|
463
|
+
if (input.supplierReference !== undefined)
|
|
464
|
+
fields.supplierReference = input.supplierReference;
|
|
465
|
+
if (input.lines !== undefined) {
|
|
466
|
+
fields.lines = input.lines.map((line) => picked(line, CONFIRMATION_LINE_FIELDS));
|
|
467
|
+
}
|
|
468
|
+
return mutate('confirmPurchaseOrder', CONFIRM_PURCHASE_ORDER_MUTATION, { input: fields }, call);
|
|
469
|
+
},
|
|
470
|
+
duplicate(id, call) {
|
|
471
|
+
return mutate('duplicatePurchaseOrder', DUPLICATE_PURCHASE_ORDER_MUTATION, { id }, call);
|
|
472
|
+
},
|
|
473
|
+
close(id, reason, call) {
|
|
474
|
+
return mutate('closePurchaseOrder', CLOSE_PURCHASE_ORDER_MUTATION, { id, reason }, call);
|
|
475
|
+
},
|
|
476
|
+
reopen(id, options) {
|
|
477
|
+
return mutate('reopenPurchaseOrder', REOPEN_PURCHASE_ORDER_MUTATION, { id, ...(options?.reason === undefined ? {} : { reason: options.reason }) }, options);
|
|
478
|
+
},
|
|
479
|
+
async document(id, options) {
|
|
480
|
+
const data = await transport.graphql({
|
|
481
|
+
api: 'admin',
|
|
482
|
+
query: CREATE_PURCHASE_ORDER_DOCUMENT_URL_MUTATION,
|
|
483
|
+
variables: {
|
|
484
|
+
purchaseOrderId: id,
|
|
485
|
+
...(options?.revision === undefined ? {} : { revision: options.revision }),
|
|
486
|
+
},
|
|
487
|
+
}, options);
|
|
488
|
+
return data.createPurchaseOrderDocumentUrl;
|
|
489
|
+
},
|
|
490
|
+
};
|
|
491
|
+
}
|