@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 { assertDeleted } from '../catalog/types.js';
|
|
2
|
+
const PROFILE_FIELDS = /* GraphQL */ `
|
|
3
|
+
id
|
|
4
|
+
code
|
|
5
|
+
name
|
|
6
|
+
enabled
|
|
7
|
+
stockLocationId
|
|
8
|
+
defaultHandlerCode
|
|
9
|
+
shippingMethodId
|
|
10
|
+
minOrder
|
|
11
|
+
isDefault
|
|
12
|
+
createdAt
|
|
13
|
+
updatedAt
|
|
14
|
+
`;
|
|
15
|
+
const NOTIFICATION_FIELDS = /* GraphQL */ `
|
|
16
|
+
id
|
|
17
|
+
handlerCode
|
|
18
|
+
enabled
|
|
19
|
+
emails
|
|
20
|
+
createdAt
|
|
21
|
+
updatedAt
|
|
22
|
+
`;
|
|
23
|
+
export const FULFILLMENT_PROFILES_QUERY = /* GraphQL */ `
|
|
24
|
+
query FulfillmentProfiles {
|
|
25
|
+
fulfillmentProfiles { ${PROFILE_FIELDS} }
|
|
26
|
+
}
|
|
27
|
+
`;
|
|
28
|
+
export const FULFILLMENT_PROFILE_QUERY = /* GraphQL */ `
|
|
29
|
+
query FulfillmentProfile($id: ID!) {
|
|
30
|
+
fulfillmentProfile(id: $id) { ${PROFILE_FIELDS} }
|
|
31
|
+
}
|
|
32
|
+
`;
|
|
33
|
+
export const CREATE_FULFILLMENT_PROFILE_MUTATION = /* GraphQL */ `
|
|
34
|
+
mutation CreateFulfillmentProfile($input: CreateFulfillmentProfileInput!) {
|
|
35
|
+
createFulfillmentProfile(input: $input) { ${PROFILE_FIELDS} }
|
|
36
|
+
}
|
|
37
|
+
`;
|
|
38
|
+
export const UPDATE_FULFILLMENT_PROFILE_MUTATION = /* GraphQL */ `
|
|
39
|
+
mutation UpdateFulfillmentProfile($input: UpdateFulfillmentProfileInput!) {
|
|
40
|
+
updateFulfillmentProfile(input: $input) { ${PROFILE_FIELDS} }
|
|
41
|
+
}
|
|
42
|
+
`;
|
|
43
|
+
export const DELETE_FULFILLMENT_PROFILE_MUTATION = /* GraphQL */ `
|
|
44
|
+
mutation DeleteFulfillmentProfile($id: ID!) {
|
|
45
|
+
deleteFulfillmentProfile(id: $id) { result message }
|
|
46
|
+
}
|
|
47
|
+
`;
|
|
48
|
+
export const SET_DEFAULT_FULFILLMENT_PROFILE_MUTATION = /* GraphQL */ `
|
|
49
|
+
mutation SetDefaultFulfillmentProfile($id: ID!) {
|
|
50
|
+
setDefaultFulfillmentProfile(id: $id) { ${PROFILE_FIELDS} }
|
|
51
|
+
}
|
|
52
|
+
`;
|
|
53
|
+
export const FULFILLMENT_HANDLER_NOTIFICATIONS_QUERY = /* GraphQL */ `
|
|
54
|
+
query FulfillmentHandlerNotifications {
|
|
55
|
+
fulfillmentHandlerNotifications { ${NOTIFICATION_FIELDS} }
|
|
56
|
+
}
|
|
57
|
+
`;
|
|
58
|
+
export const SET_FULFILLMENT_HANDLER_NOTIFICATION_MUTATION = /* GraphQL */ `
|
|
59
|
+
mutation SetFulfillmentHandlerNotification($input: SetFulfillmentHandlerNotificationInput!) {
|
|
60
|
+
setFulfillmentHandlerNotification(input: $input) { ${NOTIFICATION_FIELDS} }
|
|
61
|
+
}
|
|
62
|
+
`;
|
|
63
|
+
export function createFulfillmentProfilesModule(transport) {
|
|
64
|
+
const call = async (query, variables, options) => transport.graphql({ api: 'admin', query, variables }, options);
|
|
65
|
+
return {
|
|
66
|
+
async list(options) {
|
|
67
|
+
const data = await call(FULFILLMENT_PROFILES_QUERY, undefined, options);
|
|
68
|
+
return data.fulfillmentProfiles;
|
|
69
|
+
},
|
|
70
|
+
async get(id, options) {
|
|
71
|
+
const data = await call(FULFILLMENT_PROFILE_QUERY, { id }, options);
|
|
72
|
+
return data.fulfillmentProfile ?? null;
|
|
73
|
+
},
|
|
74
|
+
async create(input, options) {
|
|
75
|
+
const data = await call(CREATE_FULFILLMENT_PROFILE_MUTATION, { input }, options);
|
|
76
|
+
return data.createFulfillmentProfile;
|
|
77
|
+
},
|
|
78
|
+
async update(id, input, options) {
|
|
79
|
+
const data = await call(UPDATE_FULFILLMENT_PROFILE_MUTATION,
|
|
80
|
+
// The id goes last: an `id` key smuggled into the patch cannot redirect the write.
|
|
81
|
+
{ input: { ...input, id } }, options);
|
|
82
|
+
return data.updateFulfillmentProfile;
|
|
83
|
+
},
|
|
84
|
+
async delete(id, options) {
|
|
85
|
+
const data = await call(DELETE_FULFILLMENT_PROFILE_MUTATION, { id }, options);
|
|
86
|
+
// The engine refuses by throwing today; a NOT_DELETED answer must still never pass as done.
|
|
87
|
+
assertDeleted('FULFILLMENT_PROFILE_NOT_DELETED', [data.deleteFulfillmentProfile]);
|
|
88
|
+
},
|
|
89
|
+
async setDefault(id, options) {
|
|
90
|
+
const data = await call(SET_DEFAULT_FULFILLMENT_PROFILE_MUTATION, { id }, options);
|
|
91
|
+
return data.setDefaultFulfillmentProfile;
|
|
92
|
+
},
|
|
93
|
+
handlerNotifications: {
|
|
94
|
+
async list(options) {
|
|
95
|
+
const data = await call(FULFILLMENT_HANDLER_NOTIFICATIONS_QUERY, undefined, options);
|
|
96
|
+
return data.fulfillmentHandlerNotifications;
|
|
97
|
+
},
|
|
98
|
+
async set(input, options) {
|
|
99
|
+
const data = await call(SET_FULFILLMENT_HANDLER_NOTIFICATION_MUTATION, { input }, options);
|
|
100
|
+
return data.setFulfillmentHandlerNotification;
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { Transport } from '@sixtyninecommerce/core';
|
|
2
|
+
import type { Call } from '../types.js';
|
|
3
|
+
/** How the order reference sent to C.J. Hendriks is prefixed. */
|
|
4
|
+
export type HendriksWirePrefixMode = 'year' | 'custom';
|
|
5
|
+
/** A store's C.J. Hendriks 3PL settings: one record per store. */
|
|
6
|
+
export interface HendriksConfig {
|
|
7
|
+
id: string;
|
|
8
|
+
channelId: string;
|
|
9
|
+
/** Gates every Hendriks export of the store. */
|
|
10
|
+
enabled: boolean;
|
|
11
|
+
/** The plugins-service export pipeline that sends the orders; `null` is not linked. */
|
|
12
|
+
pipelineId: string | null;
|
|
13
|
+
/** `year` prefixes the current UTC year; `custom` prefixes {@link wirePrefixDigits}. */
|
|
14
|
+
wirePrefixMode: HendriksWirePrefixMode;
|
|
15
|
+
/** 1 to 4 digits without a leading zero. Only read in `custom` mode; `null` in `year` mode. */
|
|
16
|
+
wirePrefixDigits: string | null;
|
|
17
|
+
/**
|
|
18
|
+
* Refuse to export an order the source platform already sent to its own fulfillment
|
|
19
|
+
* provider. On by default: while a migrated shop is still live both systems feed the same
|
|
20
|
+
* warehouse, and neither can spot the other's reference, so the goods would ship twice.
|
|
21
|
+
*/
|
|
22
|
+
blockSourceFulfilledOrders: boolean;
|
|
23
|
+
/** ISO-8601, UTC. */
|
|
24
|
+
createdAt: string;
|
|
25
|
+
/** ISO-8601, UTC. */
|
|
26
|
+
updatedAt: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* A PATCH: a key left out keeps the stored value. The custom-prefix rule is judged on the
|
|
30
|
+
* RESULTING settings, so switching to `custom` needs `wirePrefixDigits` in the same call unless
|
|
31
|
+
* valid digits are already stored.
|
|
32
|
+
*/
|
|
33
|
+
export interface UpdateHendriksConfigInput {
|
|
34
|
+
enabled?: boolean;
|
|
35
|
+
/** `null` unlinks the pipeline. */
|
|
36
|
+
pipelineId?: string | null;
|
|
37
|
+
wirePrefixMode?: HendriksWirePrefixMode;
|
|
38
|
+
/** Cleared by the engine whenever the resulting mode is `year`. */
|
|
39
|
+
wirePrefixDigits?: string | null;
|
|
40
|
+
blockSourceFulfilledOrders?: boolean;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* The C.J. Hendriks 3PL settings of the store the client is scoped to
|
|
44
|
+
* (`admin.shipping.hendriks.config`). There is no channel argument: a SuperAdmin head configures
|
|
45
|
+
* ANOTHER store with `admin.withTenant({ scope: { kind: 'channel', code } })`, or a per-call
|
|
46
|
+
* `tenant`.
|
|
47
|
+
*/
|
|
48
|
+
export interface HendriksConfigModule {
|
|
49
|
+
/**
|
|
50
|
+
* The store's settings, or `null` when it never saved any. Needs `ReadSettings`, and is
|
|
51
|
+
* answered for a store without the Hendriks plugin too (a head reads it to decide whether to
|
|
52
|
+
* show the integration).
|
|
53
|
+
*
|
|
54
|
+
* @effect read
|
|
55
|
+
* @permission ReadSettings
|
|
56
|
+
*/
|
|
57
|
+
get(options?: Call): Promise<HendriksConfig | null>;
|
|
58
|
+
/**
|
|
59
|
+
* Save the settings; the first call creates the record (`enabled` off, `year` prefix,
|
|
60
|
+
* `blockSourceFulfilledOrders` on, unless given). Needs `UpdateSettings`.
|
|
61
|
+
*
|
|
62
|
+
* Refused, with nothing saved:
|
|
63
|
+
* - `HENDRIKS_CONFIG_INVALID` (`ValidationError`, 400): `custom` mode without 1 to 4 digits not
|
|
64
|
+
* starting with 0. `details[]` names each field (`wirePrefixDigits`, `wirePrefixMode`), so a
|
|
65
|
+
* form can put the reason on it;
|
|
66
|
+
* - `PLUGIN_ACCESS_DENIED` (`PermissionDeniedError`, 403): the store does not hold the
|
|
67
|
+
* Hendriks plugin. An ordinary caller only: the engine never refuses a SuperAdmin on this
|
|
68
|
+
* ground, so a SuperAdmin head that must know reads `tenant.entitlements()` on that store;
|
|
69
|
+
* - `ORGANIZATION_WORKSPACE_NOT_A_STORE` (`BusinessRuleError`, 422): switching the export on,
|
|
70
|
+
* or linking a pipeline, in an organization's workspace.
|
|
71
|
+
*
|
|
72
|
+
* `pipelineId` is not checked against the store's pipelines; an export through a pipeline
|
|
73
|
+
* that does not exist fails when it runs.
|
|
74
|
+
*
|
|
75
|
+
* @effect write
|
|
76
|
+
* @permission UpdateSettings
|
|
77
|
+
*/
|
|
78
|
+
update(input: UpdateHendriksConfigInput, options?: Call): Promise<HendriksConfig>;
|
|
79
|
+
/**
|
|
80
|
+
* Delete the store's settings record. Every Hendriks export of the store is refused until
|
|
81
|
+
* settings are saved again, and the prefix and pipeline link are gone with it. `true` when a
|
|
82
|
+
* record was deleted, `false` when the store had none. Needs `UpdateSettings`; allowed for a
|
|
83
|
+
* store that no longer holds the plugin, so it can always remove its connection.
|
|
84
|
+
*
|
|
85
|
+
* @effect destructive
|
|
86
|
+
* @permission UpdateSettings
|
|
87
|
+
*/
|
|
88
|
+
delete(options?: Call): Promise<boolean>;
|
|
89
|
+
}
|
|
90
|
+
/** `admin.shipping.hendriks`: the C.J. Hendriks 3PL integration of the store. */
|
|
91
|
+
export interface HendriksModule {
|
|
92
|
+
config: HendriksConfigModule;
|
|
93
|
+
}
|
|
94
|
+
export declare const HENDRIKS_CONFIG_QUERY = "\n query HendriksConfig {\n hendriksConfig { \n id\n channelId\n enabled\n pipelineId\n wirePrefixMode\n wirePrefixDigits\n blockSourceFulfilledOrders\n createdAt\n updatedAt\n }\n }\n";
|
|
95
|
+
export declare const UPDATE_HENDRIKS_CONFIG_MUTATION = "\n mutation UpdateHendriksConfig($input: UpdateHendriksConfigInput!) {\n updateHendriksConfig(input: $input) { \n id\n channelId\n enabled\n pipelineId\n wirePrefixMode\n wirePrefixDigits\n blockSourceFulfilledOrders\n createdAt\n updatedAt\n }\n }\n";
|
|
96
|
+
export declare const DELETE_HENDRIKS_CONFIG_MUTATION = "\n mutation DeleteHendriksConfig {\n deleteHendriksConfig\n }\n";
|
|
97
|
+
export declare function createHendriksModule(transport: Transport): HendriksModule;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
const CONFIG_FIELDS = /* GraphQL */ `
|
|
2
|
+
id
|
|
3
|
+
channelId
|
|
4
|
+
enabled
|
|
5
|
+
pipelineId
|
|
6
|
+
wirePrefixMode
|
|
7
|
+
wirePrefixDigits
|
|
8
|
+
blockSourceFulfilledOrders
|
|
9
|
+
createdAt
|
|
10
|
+
updatedAt
|
|
11
|
+
`;
|
|
12
|
+
export const HENDRIKS_CONFIG_QUERY = /* GraphQL */ `
|
|
13
|
+
query HendriksConfig {
|
|
14
|
+
hendriksConfig { ${CONFIG_FIELDS} }
|
|
15
|
+
}
|
|
16
|
+
`;
|
|
17
|
+
export const UPDATE_HENDRIKS_CONFIG_MUTATION = /* GraphQL */ `
|
|
18
|
+
mutation UpdateHendriksConfig($input: UpdateHendriksConfigInput!) {
|
|
19
|
+
updateHendriksConfig(input: $input) { ${CONFIG_FIELDS} }
|
|
20
|
+
}
|
|
21
|
+
`;
|
|
22
|
+
export const DELETE_HENDRIKS_CONFIG_MUTATION = /* GraphQL */ `
|
|
23
|
+
mutation DeleteHendriksConfig {
|
|
24
|
+
deleteHendriksConfig
|
|
25
|
+
}
|
|
26
|
+
`;
|
|
27
|
+
export function createHendriksModule(transport) {
|
|
28
|
+
return {
|
|
29
|
+
config: {
|
|
30
|
+
async get(options) {
|
|
31
|
+
const data = await transport.graphql({ api: 'admin', query: HENDRIKS_CONFIG_QUERY }, options);
|
|
32
|
+
return data.hendriksConfig ?? null;
|
|
33
|
+
},
|
|
34
|
+
async update(input, options) {
|
|
35
|
+
const data = await transport.graphql({
|
|
36
|
+
api: 'admin',
|
|
37
|
+
query: UPDATE_HENDRIKS_CONFIG_MUTATION,
|
|
38
|
+
// Sent as given: a key left out stays off the wire (the engine reads an absent
|
|
39
|
+
// key as "keep"), and the engine names anything it refuses.
|
|
40
|
+
variables: { input },
|
|
41
|
+
}, options);
|
|
42
|
+
return data.updateHendriksConfig;
|
|
43
|
+
},
|
|
44
|
+
async delete(options) {
|
|
45
|
+
const data = await transport.graphql({ api: 'admin', query: DELETE_HENDRIKS_CONFIG_MUTATION }, options);
|
|
46
|
+
return data.deleteHendriksConfig === true;
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shipping (headless spec §9.2 `shipping`): everything about getting a store's orders to its
|
|
3
|
+
* customers. Each member lives in a file of its own and is only assembled here, so a branch
|
|
4
|
+
* that adds one (shipping methods, rate tables, a carrier) adds a file and one line.
|
|
5
|
+
*/
|
|
6
|
+
import type { Transport } from '@sixtyninecommerce/core';
|
|
7
|
+
import { type ShippingDefinitionsModule } from './definitions.js';
|
|
8
|
+
import { type FulfillmentProfilesModule } from './fulfillment-profiles.js';
|
|
9
|
+
import { type HendriksModule } from './hendriks.js';
|
|
10
|
+
import { type ShippingMethodsModule } from './methods.js';
|
|
11
|
+
import { type MyparcelModule } from './myparcel.js';
|
|
12
|
+
import { type ParcelCountSuggestionMethod } from './parcel-count-suggestion.js';
|
|
13
|
+
import { type ParcelRuleModule } from './parcel-rule.js';
|
|
14
|
+
import { type RateTablesModule } from './rate-tables.js';
|
|
15
|
+
import { type ShipToCountriesModule } from './ship-to-countries.js';
|
|
16
|
+
/** `admin.shipping` (spec §9.2 `shipping`). Always the store the client is scoped to. */
|
|
17
|
+
export interface ShippingModule {
|
|
18
|
+
/** The store's shipping methods: what checkout offers and what each charges. */
|
|
19
|
+
methods: ShippingMethodsModule;
|
|
20
|
+
/** What a shipping method's calculator, checker and fulfillment handler may be. */
|
|
21
|
+
definitions: ShippingDefinitionsModule;
|
|
22
|
+
/**
|
|
23
|
+
* The weight-zone rate tables a `weight-zone-calculator` method prices with: per table its
|
|
24
|
+
* zones (postal-code ranges or countries) and per zone its weight tiers' prices.
|
|
25
|
+
*/
|
|
26
|
+
rateTables: RateTablesModule;
|
|
27
|
+
/** How the store counts parcels for extra-parcel shipping charges. */
|
|
28
|
+
parcelRule: ParcelRuleModule;
|
|
29
|
+
/**
|
|
30
|
+
* How many parcels the store's rule gives a set of variant + quantity items.
|
|
31
|
+
*
|
|
32
|
+
* @effect read
|
|
33
|
+
*/
|
|
34
|
+
parcelCountSuggestion: ParcelCountSuggestionMethod;
|
|
35
|
+
/** The C.J. Hendriks 3PL integration: its settings (`config`). */
|
|
36
|
+
hendriks: HendriksModule;
|
|
37
|
+
/**
|
|
38
|
+
* The MyParcel integration: its set-up (`config`: the API key, label format, on/off and webhook
|
|
39
|
+
* secret, both secrets read back masked), the carriers MyParcel offers, and the store's stock
|
|
40
|
+
* locations as parcel senders (`senders`).
|
|
41
|
+
*/
|
|
42
|
+
myparcel: MyparcelModule;
|
|
43
|
+
/**
|
|
44
|
+
* The store's fulfillment profiles (warehouse + handler + shipping method + minimum), its
|
|
45
|
+
* default profile, and who is emailed per handler when a fulfilment is created.
|
|
46
|
+
*/
|
|
47
|
+
fulfillmentProfiles: FulfillmentProfilesModule;
|
|
48
|
+
/**
|
|
49
|
+
* The countries the store ships to, as checkout applies them: which ones its storefront offers,
|
|
50
|
+
* which selected ones no shopper can choose, saved or previewed.
|
|
51
|
+
*/
|
|
52
|
+
shipToCountries: ShipToCountriesModule;
|
|
53
|
+
}
|
|
54
|
+
export declare function createShippingModule(transport: Transport): ShippingModule;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shipping (headless spec §9.2 `shipping`): everything about getting a store's orders to its
|
|
3
|
+
* customers. Each member lives in a file of its own and is only assembled here, so a branch
|
|
4
|
+
* that adds one (shipping methods, rate tables, a carrier) adds a file and one line.
|
|
5
|
+
*/
|
|
6
|
+
import { createShippingDefinitionsModule } from './definitions.js';
|
|
7
|
+
import { createFulfillmentProfilesModule, } from './fulfillment-profiles.js';
|
|
8
|
+
import { createHendriksModule } from './hendriks.js';
|
|
9
|
+
import { createShippingMethodsModule } from './methods.js';
|
|
10
|
+
import { createMyparcelModule } from './myparcel.js';
|
|
11
|
+
import { createParcelCountSuggestion, } from './parcel-count-suggestion.js';
|
|
12
|
+
import { createParcelRuleModule } from './parcel-rule.js';
|
|
13
|
+
import { createRateTablesModule } from './rate-tables.js';
|
|
14
|
+
import { createShipToCountriesModule } from './ship-to-countries.js';
|
|
15
|
+
export function createShippingModule(transport) {
|
|
16
|
+
return {
|
|
17
|
+
methods: createShippingMethodsModule(transport),
|
|
18
|
+
definitions: createShippingDefinitionsModule(transport),
|
|
19
|
+
rateTables: createRateTablesModule(transport),
|
|
20
|
+
parcelRule: createParcelRuleModule(transport),
|
|
21
|
+
parcelCountSuggestion: createParcelCountSuggestion(transport),
|
|
22
|
+
hendriks: createHendriksModule(transport),
|
|
23
|
+
myparcel: createMyparcelModule(transport),
|
|
24
|
+
fulfillmentProfiles: createFulfillmentProfilesModule(transport),
|
|
25
|
+
shipToCountries: createShipToCountriesModule(transport),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { type Page, type Transport } from '@sixtyninecommerce/core';
|
|
2
|
+
import { type ConfigurableOperation, type ConfigurableOperationInput, type LanguageCode } from '../catalog/types.js';
|
|
3
|
+
import type { Call, ListOptions } from '../types.js';
|
|
4
|
+
/** A shipping method's name and description in one language. */
|
|
5
|
+
export interface ShippingMethodTranslation {
|
|
6
|
+
id: string;
|
|
7
|
+
/** As the engine spells it: `en`, `nl`, `pt_BR`. */
|
|
8
|
+
languageCode: string;
|
|
9
|
+
name: string;
|
|
10
|
+
description: string;
|
|
11
|
+
}
|
|
12
|
+
/** One shipping method of the store, as its list reads it. */
|
|
13
|
+
export interface ShippingMethodSummary {
|
|
14
|
+
id: string;
|
|
15
|
+
/** What checkout and a fulfillment profile name the method by. */
|
|
16
|
+
code: string;
|
|
17
|
+
/** In the language the client is set to (`tenant.language`), else the store's default. */
|
|
18
|
+
name: string;
|
|
19
|
+
/**
|
|
20
|
+
* The fulfillment handler of an order fulfilled WITHOUT a fulfillment profile (the profiles
|
|
21
|
+
* route every other one). `manual-fulfillment` unless a carrier's was picked.
|
|
22
|
+
*/
|
|
23
|
+
fulfillmentHandlerCode: string;
|
|
24
|
+
/** What the method charges, with its stored arguments (every value a string). */
|
|
25
|
+
calculator: ConfigurableOperation;
|
|
26
|
+
/**
|
|
27
|
+
* The master switch: a disabled method is offered nowhere (webshop, staff, till) and a cart on
|
|
28
|
+
* it re-quotes. On unless it was switched off (a method stored before the switch existed).
|
|
29
|
+
*/
|
|
30
|
+
enabled: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Offered at webshop checkout; staff orders and the till do not read it. On unless it was
|
|
33
|
+
* switched off. Only meaningful while {@link enabled}.
|
|
34
|
+
*/
|
|
35
|
+
enabledInStorefront: boolean;
|
|
36
|
+
/** ISO-8601, UTC. */
|
|
37
|
+
createdAt: string;
|
|
38
|
+
/** ISO-8601, UTC. */
|
|
39
|
+
updatedAt: string;
|
|
40
|
+
}
|
|
41
|
+
/** One shipping method of the store, as its settings read it. */
|
|
42
|
+
export interface ShippingMethod extends ShippingMethodSummary {
|
|
43
|
+
/** In the same language as {@link name}; empty when the method has none. */
|
|
44
|
+
description: string;
|
|
45
|
+
/** Which orders the method is offered for, with its stored arguments. Every method has one. */
|
|
46
|
+
checker: ConfigurableOperation;
|
|
47
|
+
/** Every language the method is named in. */
|
|
48
|
+
translations: ShippingMethodTranslation[];
|
|
49
|
+
/**
|
|
50
|
+
* The Exact Online integration created the method from one of its own shipping definitions:
|
|
51
|
+
* Exact's sync owns its code and calculator (the name is the store's). Written by that sync
|
|
52
|
+
* only; neither write here takes it.
|
|
53
|
+
*/
|
|
54
|
+
exactManaged: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Added once per parcel after the first, in minor units and the calculator's own tax basis;
|
|
57
|
+
* null charges nothing, 0 is a price. Only the two flat-rate calculators
|
|
58
|
+
* (`default-shipping-calculator`, `flat-threshold-calculator`) charge it, and the store's
|
|
59
|
+
* parcel rule decides how many parcels an order is; on any other calculator a stored value is
|
|
60
|
+
* kept but charges nothing.
|
|
61
|
+
*/
|
|
62
|
+
extraParcelPrice: number | null;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* A method's name and description in one language, as a create or an update writes them. The
|
|
66
|
+
* engine keeps one row per language: writing a language the method has replaces that row's
|
|
67
|
+
* name and description, and any other language is added beside the ones it has.
|
|
68
|
+
*/
|
|
69
|
+
export interface ShippingMethodTranslationInput {
|
|
70
|
+
/** As the engine spells it: `en`, `nl`, `pt_BR`. */
|
|
71
|
+
languageCode: LanguageCode;
|
|
72
|
+
name: string;
|
|
73
|
+
/** Empty when left out. */
|
|
74
|
+
description?: string;
|
|
75
|
+
}
|
|
76
|
+
/** A new shipping method, as {@link ShippingMethodsModule.create} takes it. */
|
|
77
|
+
export interface CreateShippingMethodInput {
|
|
78
|
+
code: string;
|
|
79
|
+
/**
|
|
80
|
+
* One of `shipping.definitions.get()`'s `fulfillmentHandlers`. The engine requires one; a
|
|
81
|
+
* store that routes by fulfillment profiles names `manual-fulfillment`.
|
|
82
|
+
*/
|
|
83
|
+
fulfillmentHandler: string;
|
|
84
|
+
/**
|
|
85
|
+
* One of `eligibilityCheckers`, with every argument it needs (a value is always a string; lists
|
|
86
|
+
* and booleans JSON-encoded). The engine requires one; "everyone" is
|
|
87
|
+
* `default-shipping-eligibility-checker` with `orderMinimum: '0'`.
|
|
88
|
+
*/
|
|
89
|
+
checker: ConfigurableOperationInput;
|
|
90
|
+
/** One of `calculators`, with its arguments. */
|
|
91
|
+
calculator: ConfigurableOperationInput;
|
|
92
|
+
/** At least the store's default language: it is the name shoppers and staff are shown. */
|
|
93
|
+
translations: ShippingMethodTranslationInput[];
|
|
94
|
+
/** On when left out. See {@link ShippingMethodSummary.enabled}. */
|
|
95
|
+
enabled?: boolean;
|
|
96
|
+
/** On when left out. */
|
|
97
|
+
enabledInStorefront?: boolean;
|
|
98
|
+
/** Minor units, or null for no charge (left out: none). See {@link ShippingMethod.extraParcelPrice}. */
|
|
99
|
+
extraParcelPrice?: number | null;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* A change to a shipping method, as {@link ShippingMethodsModule.update} takes it. A field left
|
|
103
|
+
* out keeps what the method has. The checker can be replaced, never taken away: every method has
|
|
104
|
+
* one.
|
|
105
|
+
*/
|
|
106
|
+
export interface UpdateShippingMethodInput {
|
|
107
|
+
code?: string;
|
|
108
|
+
fulfillmentHandler?: string;
|
|
109
|
+
checker?: ConfigurableOperationInput;
|
|
110
|
+
calculator?: ConfigurableOperationInput;
|
|
111
|
+
translations?: ShippingMethodTranslationInput[];
|
|
112
|
+
enabled?: boolean;
|
|
113
|
+
enabledInStorefront?: boolean;
|
|
114
|
+
/** `null` clears it (no charge); left out, the stored price stays. */
|
|
115
|
+
extraParcelPrice?: number | null;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* The store's shipping methods (`admin.shipping.methods`): what checkout offers, what a
|
|
119
|
+
* fulfillment profile and the till's delivery setting name, and what the store's shipping
|
|
120
|
+
* settings show.
|
|
121
|
+
*
|
|
122
|
+
* Every read needs `ReadSettings` or `ReadShippingMethod` (either one, so no `@permission` tag:
|
|
123
|
+
* the tag can only say "all of these"). Scoped to the channel the client is on: another store's
|
|
124
|
+
* methods are not listed, and not answered by id.
|
|
125
|
+
*/
|
|
126
|
+
export interface ShippingMethodsModule {
|
|
127
|
+
/**
|
|
128
|
+
* Every method of the store, enabled or not, in id order. Paged (`options.limit`, default 100,
|
|
129
|
+
* at most 1,000 or `INVALID_PAGE_SIZE`; and `options.after` from a previous page);
|
|
130
|
+
* `for await (const method of page)` walks them all.
|
|
131
|
+
*
|
|
132
|
+
* @effect read
|
|
133
|
+
*/
|
|
134
|
+
list(options?: ListOptions): Promise<Page<ShippingMethodSummary>>;
|
|
135
|
+
/**
|
|
136
|
+
* One method by id, or `null` when the store the client is on has no such method: an id that
|
|
137
|
+
* does not exist, a deleted method and the id of a method only ANOTHER store holds read the
|
|
138
|
+
* same.
|
|
139
|
+
*
|
|
140
|
+
* @effect read
|
|
141
|
+
*/
|
|
142
|
+
get(id: string, options?: Call): Promise<ShippingMethod | null>;
|
|
143
|
+
/**
|
|
144
|
+
* Add a shipping method to the store the client is on, and answer it as {@link get} reads it.
|
|
145
|
+
* Needs `CreateSettings` or `CreateShippingMethod` (either one). Nothing is saved when it is
|
|
146
|
+
* refused:
|
|
147
|
+
*
|
|
148
|
+
* - `INVALID_SHIPPING_METHOD_INPUT` (`ValidationError`, 400): the input's shape, checked here
|
|
149
|
+
* before anything is sent.
|
|
150
|
+
* - `ORGANIZATION_WORKSPACE_NOT_A_STORE` (`BusinessRuleError`, 422): an organization's
|
|
151
|
+
* workspace ships nothing; create the method in one of its stores.
|
|
152
|
+
* - `PLUGIN_ACCESS_DENIED` (`PermissionDeniedError`, 403): the fulfillment handler, checker or
|
|
153
|
+
* calculator belongs to a plugin the store does not hold (a carrier, Exact Online).
|
|
154
|
+
* - The engine's own input refusal (`ValidationError`, 400): a handler, checker or calculator
|
|
155
|
+
* code it has not registered, a missing argument, or an `extraParcelPrice` outside
|
|
156
|
+
* 0–10,000,000.
|
|
157
|
+
* - `SHIPPING_ZONE_CONFIG_NOT_FOUND` (`NotFoundError`, 404): the `weight-zone-shipping-calculator`
|
|
158
|
+
* names no rate table of the store (`admin.shipping.rateTables`): its `shippingZoneConfigId` is
|
|
159
|
+
* empty or left out (detail code `required`), or is not one of the store's table ids (`enum`;
|
|
160
|
+
* another store's, a deleted one and a malformed one read alike). Such a method would quote no
|
|
161
|
+
* price. `details[0].field` points at the argument (`/input/calculator/arguments/<i>/value`).
|
|
162
|
+
*
|
|
163
|
+
* @effect write
|
|
164
|
+
*/
|
|
165
|
+
create(input: CreateShippingMethodInput, options?: Call): Promise<ShippingMethod>;
|
|
166
|
+
/**
|
|
167
|
+
* Change a shipping method of the store the client is on, and answer it as {@link get} reads
|
|
168
|
+
* it. A field left out keeps what the method has. Needs `UpdateSettings` or
|
|
169
|
+
* `UpdateShippingMethod` (either one).
|
|
170
|
+
*
|
|
171
|
+
* One method may be held by several stores, and a change reaches every one of them. Refused,
|
|
172
|
+
* with nothing saved, as {@link create} is (`PLUGIN_ACCESS_DENIED` only for a handler, checker
|
|
173
|
+
* or calculator the patch CHANGES: one the method already has is no new pick;
|
|
174
|
+
* `SHIPPING_ZONE_CONFIG_NOT_FOUND` whenever the patch sends a weight-zone calculator, judged in
|
|
175
|
+
* the store the client is on, and never when it sends none), and:
|
|
176
|
+
*
|
|
177
|
+
* - `ENTITY_NOT_FOUND` (`NotFoundError`, 404): the store has no such method (another store's
|
|
178
|
+
* reads the same).
|
|
179
|
+
* - `SHARED_SHIPPING_METHOD_NOT_ALLOWED` (`PermissionDeniedError`, 403): the method is shared
|
|
180
|
+
* with another store where the caller lacks `UpdateSettings` or `UpdateShippingMethod`.
|
|
181
|
+
*
|
|
182
|
+
* @effect write
|
|
183
|
+
*/
|
|
184
|
+
update(id: string, patch: UpdateShippingMethodInput, options?: Call): Promise<ShippingMethod>;
|
|
185
|
+
/**
|
|
186
|
+
* Delete a shipping method. The method is withdrawn from checkout in EVERY store that holds
|
|
187
|
+
* it, not only the one the client is on; orders already shipped with it keep their shipping
|
|
188
|
+
* line. Needs `DeleteSettings` or `DeleteShippingMethod` (either one), and the same in every
|
|
189
|
+
* other store holding the method, else `SHARED_SHIPPING_METHOD_NOT_ALLOWED`
|
|
190
|
+
* (`PermissionDeniedError`, 403) and nothing is deleted.
|
|
191
|
+
*
|
|
192
|
+
* `ENTITY_NOT_FOUND` (`NotFoundError`, 404): the store has no such method, or it is already
|
|
193
|
+
* deleted. A refusal the engine answers as a result rather than an error is
|
|
194
|
+
* `SHIPPING_METHOD_NOT_DELETED` (`ConflictError`, 409) with the engine's reason.
|
|
195
|
+
*
|
|
196
|
+
* @effect destructive
|
|
197
|
+
*/
|
|
198
|
+
delete(id: string, options?: Call): Promise<void>;
|
|
199
|
+
}
|
|
200
|
+
export declare const SHIPPING_METHODS_QUERY = "\n query StoreShippingMethods($options: ShippingMethodListOptions) {\n shippingMethods(options: $options) {\n items { \n id\n createdAt\n updatedAt\n code\n name\n fulfillmentHandlerCode\n calculator { \n code\n args {\n name\n value\n }\n }\n customFields {\n enabled\n enabledInStorefront\n }\n }\n totalItems\n }\n }\n";
|
|
201
|
+
export declare const SHIPPING_METHOD_QUERY = "\n query StoreShippingMethod($id: ID!) {\n shippingMethod(id: $id) { \n id\n createdAt\n updatedAt\n code\n name\n description\n fulfillmentHandlerCode\n calculator { \n code\n args {\n name\n value\n }\n }\n checker { \n code\n args {\n name\n value\n }\n }\n translations {\n id\n languageCode\n name\n description\n }\n customFields {\n enabled\n enabledInStorefront\n exactManaged\n extraParcelPrice\n }\n }\n }\n";
|
|
202
|
+
export declare const CREATE_SHIPPING_METHOD_MUTATION = "\n mutation CreateStoreShippingMethod($input: CreateShippingMethodInput!) {\n createShippingMethod(input: $input) { \n id\n createdAt\n updatedAt\n code\n name\n description\n fulfillmentHandlerCode\n calculator { \n code\n args {\n name\n value\n }\n }\n checker { \n code\n args {\n name\n value\n }\n }\n translations {\n id\n languageCode\n name\n description\n }\n customFields {\n enabled\n enabledInStorefront\n exactManaged\n extraParcelPrice\n }\n }\n }\n";
|
|
203
|
+
export declare const UPDATE_SHIPPING_METHOD_MUTATION = "\n mutation UpdateStoreShippingMethod($input: UpdateShippingMethodInput!) {\n updateShippingMethod(input: $input) { \n id\n createdAt\n updatedAt\n code\n name\n description\n fulfillmentHandlerCode\n calculator { \n code\n args {\n name\n value\n }\n }\n checker { \n code\n args {\n name\n value\n }\n }\n translations {\n id\n languageCode\n name\n description\n }\n customFields {\n enabled\n enabledInStorefront\n exactManaged\n extraParcelPrice\n }\n }\n }\n";
|
|
204
|
+
export declare const DELETE_SHIPPING_METHOD_MUTATION = "\n mutation DeleteStoreShippingMethod($id: ID!) {\n deleteShippingMethod(id: $id) {\n result\n message\n }\n }\n";
|
|
205
|
+
export declare function createShippingMethodsModule(transport: Transport): ShippingMethodsModule;
|