@propeller-commerce/propeller-sdk-v2 0.18.0 → 0.19.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.
Files changed (86) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/README.md +1 -0
  3. package/dist/cjs/client/GraphQLClient.d.ts +22 -0
  4. package/dist/cjs/client/GraphQLClient.js +24 -3
  5. package/dist/cjs/client/index.d.ts +1 -1
  6. package/dist/cjs/generated/operations/cart.js +4 -0
  7. package/dist/cjs/generated/operations/cartAcceptPurchaseAuthorizationRequest.js +4 -0
  8. package/dist/cjs/generated/operations/cartAddActionCode.js +4 -0
  9. package/dist/cjs/generated/operations/cartAddBundle.js +4 -0
  10. package/dist/cjs/generated/operations/cartAddItem.js +4 -0
  11. package/dist/cjs/generated/operations/cartDeleteItem.js +4 -0
  12. package/dist/cjs/generated/operations/cartRemoveActionCode.js +4 -0
  13. package/dist/cjs/generated/operations/cartSetContact.js +4 -0
  14. package/dist/cjs/generated/operations/cartSetCustomer.js +4 -0
  15. package/dist/cjs/generated/operations/cartStart.js +4 -0
  16. package/dist/cjs/generated/operations/cartUpdate.js +4 -0
  17. package/dist/cjs/generated/operations/cartUpdateAddress.js +4 -0
  18. package/dist/cjs/generated/operations/cartUpdateItem.js +4 -0
  19. package/dist/cjs/generated/operations/order.js +2 -0
  20. package/dist/cjs/generated/operations/orderCreate.js +2 -0
  21. package/dist/cjs/generated/operations/orderItemCreate.js +1 -0
  22. package/dist/cjs/generated/operations/orderItemUpdate.js +1 -0
  23. package/dist/cjs/generated/operations/orderRevision.js +2 -0
  24. package/dist/cjs/generated/operations/orderRevisionRestore.js +2 -0
  25. package/dist/cjs/generated/operations/orderRevisions.js +2 -0
  26. package/dist/cjs/generated/operations/orderUpdate.js +2 -0
  27. package/dist/cjs/generated/operations/orders.js +1 -0
  28. package/dist/cjs/generated/operations/tender.js +2 -0
  29. package/dist/cjs/generated/operations/tenderAddItems.js +2 -0
  30. package/dist/cjs/generated/operations/tenderApplyIncentives.js +2 -0
  31. package/dist/cjs/generated/operations/tenderDeleteBonusItem.js +2 -0
  32. package/dist/cjs/generated/operations/tenderDeleteItem.js +2 -0
  33. package/dist/cjs/generated/operations/tenderStart.js +2 -0
  34. package/dist/cjs/generated/operations/tenderUpdate.js +2 -0
  35. package/dist/cjs/generated/operations/tenderUpdateAddress.js +2 -0
  36. package/dist/cjs/generated/operations/tenderUpdateDiscount.js +2 -0
  37. package/dist/cjs/generated/operations/tenderUpdateInvoiceUser.js +2 -0
  38. package/dist/cjs/generated/operations/tenderUpdateItem.js +2 -0
  39. package/dist/cjs/generated/operations/tenderUpdatePayment.js +2 -0
  40. package/dist/cjs/generated/operations/tenderUpdatePostage.js +2 -0
  41. package/dist/cjs/type/CartItemSurcharge.d.ts +6 -1
  42. package/dist/cjs/type/CartPaymentData.d.ts +6 -1
  43. package/dist/cjs/type/CartPostageData.d.ts +6 -1
  44. package/dist/cjs/type/CartTaxLevel.d.ts +6 -1
  45. package/dist/cjs/type/ITenderBaseItem.d.ts +2 -0
  46. package/dist/cjs/type/OrderItem.d.ts +6 -1
  47. package/dist/cjs/type/OrderTotalTaxPercentage.d.ts +6 -1
  48. package/dist/cjs/type/TenderBaseItem.d.ts +6 -1
  49. package/dist/cjs/type/TenderMainItem.d.ts +6 -1
  50. package/dist/esm/client/GraphQLClient.js +24 -3
  51. package/dist/esm/generated/operations/cart.js +4 -0
  52. package/dist/esm/generated/operations/cartAcceptPurchaseAuthorizationRequest.js +4 -0
  53. package/dist/esm/generated/operations/cartAddActionCode.js +4 -0
  54. package/dist/esm/generated/operations/cartAddBundle.js +4 -0
  55. package/dist/esm/generated/operations/cartAddItem.js +4 -0
  56. package/dist/esm/generated/operations/cartDeleteItem.js +4 -0
  57. package/dist/esm/generated/operations/cartRemoveActionCode.js +4 -0
  58. package/dist/esm/generated/operations/cartSetContact.js +4 -0
  59. package/dist/esm/generated/operations/cartSetCustomer.js +4 -0
  60. package/dist/esm/generated/operations/cartStart.js +4 -0
  61. package/dist/esm/generated/operations/cartUpdate.js +4 -0
  62. package/dist/esm/generated/operations/cartUpdateAddress.js +4 -0
  63. package/dist/esm/generated/operations/cartUpdateItem.js +4 -0
  64. package/dist/esm/generated/operations/order.js +2 -0
  65. package/dist/esm/generated/operations/orderCreate.js +2 -0
  66. package/dist/esm/generated/operations/orderItemCreate.js +1 -0
  67. package/dist/esm/generated/operations/orderItemUpdate.js +1 -0
  68. package/dist/esm/generated/operations/orderRevision.js +2 -0
  69. package/dist/esm/generated/operations/orderRevisionRestore.js +2 -0
  70. package/dist/esm/generated/operations/orderRevisions.js +2 -0
  71. package/dist/esm/generated/operations/orderUpdate.js +2 -0
  72. package/dist/esm/generated/operations/orders.js +1 -0
  73. package/dist/esm/generated/operations/tender.js +2 -0
  74. package/dist/esm/generated/operations/tenderAddItems.js +2 -0
  75. package/dist/esm/generated/operations/tenderApplyIncentives.js +2 -0
  76. package/dist/esm/generated/operations/tenderDeleteBonusItem.js +2 -0
  77. package/dist/esm/generated/operations/tenderDeleteItem.js +2 -0
  78. package/dist/esm/generated/operations/tenderStart.js +2 -0
  79. package/dist/esm/generated/operations/tenderUpdate.js +2 -0
  80. package/dist/esm/generated/operations/tenderUpdateAddress.js +2 -0
  81. package/dist/esm/generated/operations/tenderUpdateDiscount.js +2 -0
  82. package/dist/esm/generated/operations/tenderUpdateInvoiceUser.js +2 -0
  83. package/dist/esm/generated/operations/tenderUpdateItem.js +2 -0
  84. package/dist/esm/generated/operations/tenderUpdatePayment.js +2 -0
  85. package/dist/esm/generated/operations/tenderUpdatePostage.js +2 -0
  86. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,64 @@
2
2
 
3
3
  All notable changes to `@propeller-commerce/propeller-sdk-v2` are documented here.
4
4
 
5
+ ---
6
+ ## [0.19.0] - 2026-11-12
7
+
8
+ VAT rates now come with their decimals: Swiss VAT reads 8.1, not 8.
9
+
10
+ ### Added
11
+
12
+ - **The exact VAT rate on carts, orders and quotes.** The API rounds the old
13
+ tax percentage fields to a whole number, so a shop showed "8% VAT" while it
14
+ charged 8.1%. Each of those fields now has a decimal counterpart, and every
15
+ `cart*`, `order*` and `tender*` operation requests it:
16
+
17
+ | Type | Rounded (deprecated) | Exact |
18
+ |---|---|---|
19
+ | `CartTaxLevel`, `CartPostageData`, `CartPaymentData`, `CartItemSurcharge` | `taxPercentage` | `taxPercentageDecimal` |
20
+ | `OrderItem`, `TenderBaseItem`, `TenderMainItem` | `taxPercentage` | `taxPercentageDecimal` |
21
+ | `OrderTotalTaxPercentage` (`order.total.taxPercentages`) | `percentage` | `percentageDecimal` |
22
+
23
+ Show the decimal field. A whole-number rate arrives as `21`, so it still
24
+ reads 21%. (PWP-1065)
25
+
26
+ ### Deprecated
27
+
28
+ - **The rounded `taxPercentage` / `percentage` fields listed above.** They are
29
+ still requested and typed, so existing code keeps working, and they are marked
30
+ `@deprecated` to match the API. They will be removed in a later breaking
31
+ release. `OrderPostageData`, `OrderPaymentData`, `TenderPostage`,
32
+ `TenderPayment`, `TenderItemSurcharge` and `TenderTaxLevel` already return
33
+ the exact rate and are unchanged.
34
+
35
+ ---
36
+ ## [0.18.1] - 2026-11-03
37
+
38
+ A host can now hand the client its own `fetch()`, and a query no longer fails
39
+ the page when the connection to the API drops once.
40
+
41
+ ### Added
42
+
43
+ - **`fetch` on `GraphQLClientConfig`.** Supply the `fetch()` the client sends
44
+ requests with; it defaults to the global `fetch`. Pass a request-scoped fetch
45
+ during SSR (Nitro's `event.fetch`, in Nuxt `useRequestEvent()!.fetch`) so a
46
+ relative proxy `endpoint` such as `/api/graphql` is served in-process instead
47
+ of over the network, which fails with `fetch failed` wherever a server can't
48
+ reach its own public hostname. A request-scoped fetch belongs to one request,
49
+ so create the client per request when you pass one. The type is exported as
50
+ `FetchImplementation`. Contributed by Mark Wienk (TRIMM) in
51
+ [#1](https://github.com/propeller-commerce/propeller-sdk-v2/pull/1). (PWP-1091)
52
+
53
+ ### Fixed
54
+
55
+ - **A query is sent once more when the connection drops.** `GraphQL request
56
+ failed: fetch failed` used to reach the page straight away, so a
57
+ server-rendered page answered 500 where a reload worked. A query now gets one
58
+ more attempt, within the same `timeout`, before the error is thrown.
59
+ Mutations are never resent, since the server may have applied one before the
60
+ connection dropped; timeouts, HTTP error statuses and GraphQL errors are not
61
+ retried. (PWP-1062)
62
+
5
63
  ---
6
64
  ## [0.18.0] - 2026-09-24
7
65
 
package/README.md CHANGED
@@ -87,6 +87,7 @@ See [MIGRATION-0.10.0.md](./MIGRATION-0.10.0.md) for the full upgrade guide.
87
87
  | `getAccessToken` | `() => string \| undefined \| Promise<string \| undefined>` | reads `localStorage['access_token']` in browser | Use this for SSR (`getServerSession`, HTTP-only cookies) or in-memory token stores. |
88
88
  | `defaultLanguage` | `string` | — | ISO 639-1 tag (e.g. `'NL'`). Service methods that take an optional top-level `language` and don't receive one fall back to this value before sending the request. An explicit `language` on the call always wins. |
89
89
  | `throwOnPartialErrors` | `boolean` | `false` | On a partial response (`data` *and* `errors`), services return the data and debug-log the errors. Set `true` to throw `GraphQLOperationError` instead. `client.execute()` never throws regardless. |
90
+ | `fetch` | `(url: string, init: RequestInit) => Promise<Response>` | global `fetch` | Request transport. Pass a request-scoped fetch during SSR (e.g. Nitro's `event.fetch`) so a relative proxy `endpoint` is handled in-process instead of over the network. A request-scoped fetch belongs to one request, so create the client per request when you pass one. |
90
91
 
91
92
  ### Proxy contract
92
93
 
@@ -66,6 +66,13 @@ export interface GraphQLResponse<T = any> {
66
66
  * May return a string, undefined (no token), or a Promise of either.
67
67
  */
68
68
  export type AccessTokenProvider = () => string | undefined | Promise<string | undefined>;
69
+ /**
70
+ * The subset of `fetch()` the client calls: a URL string and a `RequestInit`,
71
+ * resolving to a standard `Response`. Narrower than `typeof fetch` so
72
+ * host-runtime implementations (undici, Nitro's `event.fetch`, test doubles)
73
+ * fit without matching every overload.
74
+ */
75
+ export type FetchImplementation = (url: string, init: RequestInit) => Promise<Response>;
69
76
  /**
70
77
  * Configuration for the GraphQL client.
71
78
  */
@@ -118,6 +125,18 @@ export interface GraphQLClientConfig {
118
125
  * compatible). The low-level `client.execute()` never throws regardless.
119
126
  */
120
127
  throwOnPartialErrors?: boolean;
128
+ /**
129
+ * `fetch()` implementation used for every request. Defaults to the global
130
+ * `fetch`, resolved per request (so later polyfills and spies apply).
131
+ *
132
+ * Supply a request-scoped fetch during SSR to keep the call in-process:
133
+ * Nitro's `event.fetch` (Nuxt: `useRequestEvent()!.fetch`) routes a
134
+ * relative `endpoint` like `/api/graphql` straight to the app's own proxy
135
+ * handler. With the global `fetch`, SSR needs an absolute URL and makes a
136
+ * real network round trip to its own public hostname — which fails with
137
+ * `fetch failed` wherever the server can't reach its own ingress.
138
+ */
139
+ fetch?: FetchImplementation;
121
140
  }
122
141
  /**
123
142
  * A GraphQL client for the Propeller eCommerce Platform.
@@ -195,6 +214,9 @@ export declare class GraphQLClient {
195
214
  * who want to inspect partial responses can do so. The higher-level
196
215
  * `query()` / `mutate()` helpers and the `runOperation` helper used by
197
216
  * services throw `GraphQLOperationError` when `errors` is non-empty.
217
+ *
218
+ * A query whose connection drops (`fetch failed`) is sent once more, within
219
+ * the same `timeout`, before the error is thrown. Mutations are never resent.
198
220
  */
199
221
  execute<T = any>(operation: GraphQLOperation): Promise<GraphQLResponse<T>>;
200
222
  /**
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
- // Note: This client uses the built-in fetch API available in Node.js 18+.
3
- // For older runtimes, install a fetch polyfill.
2
+ // Note: This client uses the built-in fetch API available in Node.js 18+
3
+ // unless `config.fetch` supplies another implementation. For older runtimes,
4
+ // install a fetch polyfill.
4
5
  Object.defineProperty(exports, "__esModule", { value: true });
5
6
  exports.GraphQLClient = void 0;
6
7
  exports.createClient = createClient;
@@ -15,6 +16,10 @@ const DEFAULT_ORDER_EDITOR_MUTATIONS = [
15
16
  'triggerQuoteSendRequest',
16
17
  'triggerOrderSendConfirm',
17
18
  ];
19
+ // The `mutation` keyword at the start of any line. Generated documents put
20
+ // their fragments first, so "the document starts with `mutation`" would miss
21
+ // most mutations — and a missed mutation is one that gets sent twice.
22
+ const MUTATION_DOCUMENT = /^\s*mutation\b/m;
18
23
  function defaultAccessTokenProvider() {
19
24
  if (typeof window !== 'undefined' && window.localStorage) {
20
25
  return window.localStorage.getItem(DEFAULT_TOKEN_STORAGE_KEY) || undefined;
@@ -183,6 +188,9 @@ class GraphQLClient {
183
188
  * who want to inspect partial responses can do so. The higher-level
184
189
  * `query()` / `mutate()` helpers and the `runOperation` helper used by
185
190
  * services throw `GraphQLOperationError` when `errors` is non-empty.
191
+ *
192
+ * A query whose connection drops (`fetch failed`) is sent once more, within
193
+ * the same `timeout`, before the error is thrown. Mutations are never resent.
186
194
  */
187
195
  async execute(operation) {
188
196
  const { query, variables = {}, operationName, fetchOptions } = operation;
@@ -200,7 +208,8 @@ class GraphQLClient {
200
208
  const controller = new AbortController();
201
209
  const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);
202
210
  try {
203
- const response = await fetch(this.getEndpoint(), {
211
+ const fetchImpl = this.config.fetch ?? fetch;
212
+ const send = () => fetchImpl(this.getEndpoint(), {
204
213
  method: 'POST',
205
214
  headers,
206
215
  body,
@@ -214,6 +223,18 @@ class GraphQLClient {
214
223
  next: fetchOptions?.next,
215
224
  signal: controller.signal,
216
225
  });
226
+ // A dropped connection rejects fetch() with a TypeError (the fetch spec's
227
+ // network error). A timeout rejects with an AbortError and an HTTP error
228
+ // status resolves, so neither is retried. Matched by name, not
229
+ // `instanceof`, so a TypeError from another realm (Jest, a vm sandbox)
230
+ // still counts. A mutation is never sent twice: the server may have
231
+ // applied it before the connection dropped. The retry shares the timeout.
232
+ const response = await send().catch((error) => {
233
+ if (error?.name !== 'TypeError' || MUTATION_DOCUMENT.test(query))
234
+ throw error;
235
+ this.debugLog(`Connection dropped (${error.message}), retrying ${actualOperationName ?? 'query'} once`);
236
+ return send();
237
+ });
217
238
  clearTimeout(timeoutId);
218
239
  if (!response.ok) {
219
240
  const bodyText = await response.text().catch(() => '');
@@ -7,7 +7,7 @@
7
7
  * compatibility with code written against 0.9.x.
8
8
  */
9
9
  export { GraphQLClient, createClient, createGraphQLClient, initializeClient, getClient, } from './GraphQLClient';
10
- export type { GraphQLOperation, GraphQLResponse, GraphQLClientConfig, GraphQLFetchOptions, AccessTokenProvider, } from './GraphQLClient';
10
+ export type { GraphQLOperation, GraphQLResponse, GraphQLClientConfig, GraphQLFetchOptions, AccessTokenProvider, FetchImplementation, } from './GraphQLClient';
11
11
  export { GraphQLOperationError } from './GraphQLOperationError';
12
12
  export type { GraphQLErrorEntry } from './GraphQLOperationError';
13
13
  /**
@@ -104,6 +104,7 @@ fragment CartPaymentDataFields on CartPaymentData {
104
104
  priceMode
105
105
  tax
106
106
  taxPercentage
107
+ taxPercentageDecimal
107
108
  status
108
109
  statusDate
109
110
  }
@@ -111,6 +112,7 @@ fragment CartPaymentDataFields on CartPaymentData {
111
112
  fragment CartPostageDataFields on CartPostageData {
112
113
  method
113
114
  taxPercentage
115
+ taxPercentageDecimal
114
116
  requestDate
115
117
  price
116
118
  priceNet
@@ -367,6 +369,7 @@ fragment CartItemSurchargeFields on CartItemSurcharge {
367
369
  value
368
370
  taxCode
369
371
  taxPercentage
372
+ taxPercentageDecimal
370
373
  quantity
371
374
  price
372
375
  totalPrice
@@ -426,6 +429,7 @@ fragment CartAddressFields on CartAddress {
426
429
 
427
430
  fragment CartTaxLevelFields on CartTaxLevel {
428
431
  taxPercentage
432
+ taxPercentageDecimal
429
433
  price
430
434
  discount
431
435
  }
@@ -104,6 +104,7 @@ fragment CartPaymentDataFields on CartPaymentData {
104
104
  priceMode
105
105
  tax
106
106
  taxPercentage
107
+ taxPercentageDecimal
107
108
  status
108
109
  statusDate
109
110
  }
@@ -111,6 +112,7 @@ fragment CartPaymentDataFields on CartPaymentData {
111
112
  fragment CartPostageDataFields on CartPostageData {
112
113
  method
113
114
  taxPercentage
115
+ taxPercentageDecimal
114
116
  requestDate
115
117
  price
116
118
  priceNet
@@ -367,6 +369,7 @@ fragment CartItemSurchargeFields on CartItemSurcharge {
367
369
  value
368
370
  taxCode
369
371
  taxPercentage
372
+ taxPercentageDecimal
370
373
  quantity
371
374
  price
372
375
  totalPrice
@@ -426,6 +429,7 @@ fragment CartAddressFields on CartAddress {
426
429
 
427
430
  fragment CartTaxLevelFields on CartTaxLevel {
428
431
  taxPercentage
432
+ taxPercentageDecimal
429
433
  price
430
434
  discount
431
435
  }
@@ -104,6 +104,7 @@ fragment CartPaymentDataFields on CartPaymentData {
104
104
  priceMode
105
105
  tax
106
106
  taxPercentage
107
+ taxPercentageDecimal
107
108
  status
108
109
  statusDate
109
110
  }
@@ -111,6 +112,7 @@ fragment CartPaymentDataFields on CartPaymentData {
111
112
  fragment CartPostageDataFields on CartPostageData {
112
113
  method
113
114
  taxPercentage
115
+ taxPercentageDecimal
114
116
  requestDate
115
117
  price
116
118
  priceNet
@@ -367,6 +369,7 @@ fragment CartItemSurchargeFields on CartItemSurcharge {
367
369
  value
368
370
  taxCode
369
371
  taxPercentage
372
+ taxPercentageDecimal
370
373
  quantity
371
374
  price
372
375
  totalPrice
@@ -426,6 +429,7 @@ fragment CartAddressFields on CartAddress {
426
429
 
427
430
  fragment CartTaxLevelFields on CartTaxLevel {
428
431
  taxPercentage
432
+ taxPercentageDecimal
429
433
  price
430
434
  discount
431
435
  }
@@ -104,6 +104,7 @@ fragment CartPaymentDataFields on CartPaymentData {
104
104
  priceMode
105
105
  tax
106
106
  taxPercentage
107
+ taxPercentageDecimal
107
108
  status
108
109
  statusDate
109
110
  }
@@ -111,6 +112,7 @@ fragment CartPaymentDataFields on CartPaymentData {
111
112
  fragment CartPostageDataFields on CartPostageData {
112
113
  method
113
114
  taxPercentage
115
+ taxPercentageDecimal
114
116
  requestDate
115
117
  price
116
118
  priceNet
@@ -367,6 +369,7 @@ fragment CartItemSurchargeFields on CartItemSurcharge {
367
369
  value
368
370
  taxCode
369
371
  taxPercentage
372
+ taxPercentageDecimal
370
373
  quantity
371
374
  price
372
375
  totalPrice
@@ -426,6 +429,7 @@ fragment CartAddressFields on CartAddress {
426
429
 
427
430
  fragment CartTaxLevelFields on CartTaxLevel {
428
431
  taxPercentage
432
+ taxPercentageDecimal
429
433
  price
430
434
  discount
431
435
  }
@@ -104,6 +104,7 @@ fragment CartPaymentDataFields on CartPaymentData {
104
104
  priceMode
105
105
  tax
106
106
  taxPercentage
107
+ taxPercentageDecimal
107
108
  status
108
109
  statusDate
109
110
  }
@@ -111,6 +112,7 @@ fragment CartPaymentDataFields on CartPaymentData {
111
112
  fragment CartPostageDataFields on CartPostageData {
112
113
  method
113
114
  taxPercentage
115
+ taxPercentageDecimal
114
116
  requestDate
115
117
  price
116
118
  priceNet
@@ -367,6 +369,7 @@ fragment CartItemSurchargeFields on CartItemSurcharge {
367
369
  value
368
370
  taxCode
369
371
  taxPercentage
372
+ taxPercentageDecimal
370
373
  quantity
371
374
  price
372
375
  totalPrice
@@ -426,6 +429,7 @@ fragment CartAddressFields on CartAddress {
426
429
 
427
430
  fragment CartTaxLevelFields on CartTaxLevel {
428
431
  taxPercentage
432
+ taxPercentageDecimal
429
433
  price
430
434
  discount
431
435
  }
@@ -104,6 +104,7 @@ fragment CartPaymentDataFields on CartPaymentData {
104
104
  priceMode
105
105
  tax
106
106
  taxPercentage
107
+ taxPercentageDecimal
107
108
  status
108
109
  statusDate
109
110
  }
@@ -111,6 +112,7 @@ fragment CartPaymentDataFields on CartPaymentData {
111
112
  fragment CartPostageDataFields on CartPostageData {
112
113
  method
113
114
  taxPercentage
115
+ taxPercentageDecimal
114
116
  requestDate
115
117
  price
116
118
  priceNet
@@ -367,6 +369,7 @@ fragment CartItemSurchargeFields on CartItemSurcharge {
367
369
  value
368
370
  taxCode
369
371
  taxPercentage
372
+ taxPercentageDecimal
370
373
  quantity
371
374
  price
372
375
  totalPrice
@@ -426,6 +429,7 @@ fragment CartAddressFields on CartAddress {
426
429
 
427
430
  fragment CartTaxLevelFields on CartTaxLevel {
428
431
  taxPercentage
432
+ taxPercentageDecimal
429
433
  price
430
434
  discount
431
435
  }
@@ -104,6 +104,7 @@ fragment CartPaymentDataFields on CartPaymentData {
104
104
  priceMode
105
105
  tax
106
106
  taxPercentage
107
+ taxPercentageDecimal
107
108
  status
108
109
  statusDate
109
110
  }
@@ -111,6 +112,7 @@ fragment CartPaymentDataFields on CartPaymentData {
111
112
  fragment CartPostageDataFields on CartPostageData {
112
113
  method
113
114
  taxPercentage
115
+ taxPercentageDecimal
114
116
  requestDate
115
117
  price
116
118
  priceNet
@@ -367,6 +369,7 @@ fragment CartItemSurchargeFields on CartItemSurcharge {
367
369
  value
368
370
  taxCode
369
371
  taxPercentage
372
+ taxPercentageDecimal
370
373
  quantity
371
374
  price
372
375
  totalPrice
@@ -426,6 +429,7 @@ fragment CartAddressFields on CartAddress {
426
429
 
427
430
  fragment CartTaxLevelFields on CartTaxLevel {
428
431
  taxPercentage
432
+ taxPercentageDecimal
429
433
  price
430
434
  discount
431
435
  }
@@ -104,6 +104,7 @@ fragment CartPaymentDataFields on CartPaymentData {
104
104
  priceMode
105
105
  tax
106
106
  taxPercentage
107
+ taxPercentageDecimal
107
108
  status
108
109
  statusDate
109
110
  }
@@ -111,6 +112,7 @@ fragment CartPaymentDataFields on CartPaymentData {
111
112
  fragment CartPostageDataFields on CartPostageData {
112
113
  method
113
114
  taxPercentage
115
+ taxPercentageDecimal
114
116
  requestDate
115
117
  price
116
118
  priceNet
@@ -367,6 +369,7 @@ fragment CartItemSurchargeFields on CartItemSurcharge {
367
369
  value
368
370
  taxCode
369
371
  taxPercentage
372
+ taxPercentageDecimal
370
373
  quantity
371
374
  price
372
375
  totalPrice
@@ -426,6 +429,7 @@ fragment CartAddressFields on CartAddress {
426
429
 
427
430
  fragment CartTaxLevelFields on CartTaxLevel {
428
431
  taxPercentage
432
+ taxPercentageDecimal
429
433
  price
430
434
  discount
431
435
  }
@@ -104,6 +104,7 @@ fragment CartPaymentDataFields on CartPaymentData {
104
104
  priceMode
105
105
  tax
106
106
  taxPercentage
107
+ taxPercentageDecimal
107
108
  status
108
109
  statusDate
109
110
  }
@@ -111,6 +112,7 @@ fragment CartPaymentDataFields on CartPaymentData {
111
112
  fragment CartPostageDataFields on CartPostageData {
112
113
  method
113
114
  taxPercentage
115
+ taxPercentageDecimal
114
116
  requestDate
115
117
  price
116
118
  priceNet
@@ -367,6 +369,7 @@ fragment CartItemSurchargeFields on CartItemSurcharge {
367
369
  value
368
370
  taxCode
369
371
  taxPercentage
372
+ taxPercentageDecimal
370
373
  quantity
371
374
  price
372
375
  totalPrice
@@ -426,6 +429,7 @@ fragment CartAddressFields on CartAddress {
426
429
 
427
430
  fragment CartTaxLevelFields on CartTaxLevel {
428
431
  taxPercentage
432
+ taxPercentageDecimal
429
433
  price
430
434
  discount
431
435
  }
@@ -104,6 +104,7 @@ fragment CartPaymentDataFields on CartPaymentData {
104
104
  priceMode
105
105
  tax
106
106
  taxPercentage
107
+ taxPercentageDecimal
107
108
  status
108
109
  statusDate
109
110
  }
@@ -111,6 +112,7 @@ fragment CartPaymentDataFields on CartPaymentData {
111
112
  fragment CartPostageDataFields on CartPostageData {
112
113
  method
113
114
  taxPercentage
115
+ taxPercentageDecimal
114
116
  requestDate
115
117
  price
116
118
  priceNet
@@ -367,6 +369,7 @@ fragment CartItemSurchargeFields on CartItemSurcharge {
367
369
  value
368
370
  taxCode
369
371
  taxPercentage
372
+ taxPercentageDecimal
370
373
  quantity
371
374
  price
372
375
  totalPrice
@@ -426,6 +429,7 @@ fragment CartAddressFields on CartAddress {
426
429
 
427
430
  fragment CartTaxLevelFields on CartTaxLevel {
428
431
  taxPercentage
432
+ taxPercentageDecimal
429
433
  price
430
434
  discount
431
435
  }
@@ -104,6 +104,7 @@ fragment CartPaymentDataFields on CartPaymentData {
104
104
  priceMode
105
105
  tax
106
106
  taxPercentage
107
+ taxPercentageDecimal
107
108
  status
108
109
  statusDate
109
110
  }
@@ -111,6 +112,7 @@ fragment CartPaymentDataFields on CartPaymentData {
111
112
  fragment CartPostageDataFields on CartPostageData {
112
113
  method
113
114
  taxPercentage
115
+ taxPercentageDecimal
114
116
  requestDate
115
117
  price
116
118
  priceNet
@@ -367,6 +369,7 @@ fragment CartItemSurchargeFields on CartItemSurcharge {
367
369
  value
368
370
  taxCode
369
371
  taxPercentage
372
+ taxPercentageDecimal
370
373
  quantity
371
374
  price
372
375
  totalPrice
@@ -426,6 +429,7 @@ fragment CartAddressFields on CartAddress {
426
429
 
427
430
  fragment CartTaxLevelFields on CartTaxLevel {
428
431
  taxPercentage
432
+ taxPercentageDecimal
429
433
  price
430
434
  discount
431
435
  }
@@ -104,6 +104,7 @@ fragment CartPaymentDataFields on CartPaymentData {
104
104
  priceMode
105
105
  tax
106
106
  taxPercentage
107
+ taxPercentageDecimal
107
108
  status
108
109
  statusDate
109
110
  }
@@ -111,6 +112,7 @@ fragment CartPaymentDataFields on CartPaymentData {
111
112
  fragment CartPostageDataFields on CartPostageData {
112
113
  method
113
114
  taxPercentage
115
+ taxPercentageDecimal
114
116
  requestDate
115
117
  price
116
118
  priceNet
@@ -367,6 +369,7 @@ fragment CartItemSurchargeFields on CartItemSurcharge {
367
369
  value
368
370
  taxCode
369
371
  taxPercentage
372
+ taxPercentageDecimal
370
373
  quantity
371
374
  price
372
375
  totalPrice
@@ -426,6 +429,7 @@ fragment CartAddressFields on CartAddress {
426
429
 
427
430
  fragment CartTaxLevelFields on CartTaxLevel {
428
431
  taxPercentage
432
+ taxPercentageDecimal
429
433
  price
430
434
  discount
431
435
  }
@@ -104,6 +104,7 @@ fragment CartPaymentDataFields on CartPaymentData {
104
104
  priceMode
105
105
  tax
106
106
  taxPercentage
107
+ taxPercentageDecimal
107
108
  status
108
109
  statusDate
109
110
  }
@@ -111,6 +112,7 @@ fragment CartPaymentDataFields on CartPaymentData {
111
112
  fragment CartPostageDataFields on CartPostageData {
112
113
  method
113
114
  taxPercentage
115
+ taxPercentageDecimal
114
116
  requestDate
115
117
  price
116
118
  priceNet
@@ -367,6 +369,7 @@ fragment CartItemSurchargeFields on CartItemSurcharge {
367
369
  value
368
370
  taxCode
369
371
  taxPercentage
372
+ taxPercentageDecimal
370
373
  quantity
371
374
  price
372
375
  totalPrice
@@ -426,6 +429,7 @@ fragment CartAddressFields on CartAddress {
426
429
 
427
430
  fragment CartTaxLevelFields on CartTaxLevel {
428
431
  taxPercentage
432
+ taxPercentageDecimal
429
433
  price
430
434
  discount
431
435
  }
@@ -188,6 +188,7 @@ fragment OrderTotalsFields on OrderTotals {
188
188
  discountValue
189
189
  taxPercentages {
190
190
  percentage
191
+ percentageDecimal
191
192
  total
192
193
  }
193
194
  }
@@ -218,6 +219,7 @@ fragment OrderItemFields on OrderItem {
218
219
  discount
219
220
  tax
220
221
  taxPercentage
222
+ taxPercentageDecimal
221
223
  taxCode
222
224
  isBonus
223
225
  minimumQuantity
@@ -188,6 +188,7 @@ fragment OrderTotalsFields on OrderTotals {
188
188
  discountValue
189
189
  taxPercentages {
190
190
  percentage
191
+ percentageDecimal
191
192
  total
192
193
  }
193
194
  }
@@ -218,6 +219,7 @@ fragment OrderItemFields on OrderItem {
218
219
  discount
219
220
  tax
220
221
  taxPercentage
222
+ taxPercentageDecimal
221
223
  taxCode
222
224
  isBonus
223
225
  minimumQuantity
@@ -28,6 +28,7 @@ exports.document = `fragment OrderItemFields on OrderItem {
28
28
  discount
29
29
  tax
30
30
  taxPercentage
31
+ taxPercentageDecimal
31
32
  taxCode
32
33
  isBonus
33
34
  minimumQuantity
@@ -28,6 +28,7 @@ exports.document = `fragment OrderItemFields on OrderItem {
28
28
  discount
29
29
  tax
30
30
  taxPercentage
31
+ taxPercentageDecimal
31
32
  taxCode
32
33
  isBonus
33
34
  minimumQuantity
@@ -188,6 +188,7 @@ fragment OrderTotalsFields on OrderTotals {
188
188
  discountValue
189
189
  taxPercentages {
190
190
  percentage
191
+ percentageDecimal
191
192
  total
192
193
  }
193
194
  }
@@ -218,6 +219,7 @@ fragment OrderItemFields on OrderItem {
218
219
  discount
219
220
  tax
220
221
  taxPercentage
222
+ taxPercentageDecimal
221
223
  taxCode
222
224
  isBonus
223
225
  minimumQuantity
@@ -188,6 +188,7 @@ fragment OrderTotalsFields on OrderTotals {
188
188
  discountValue
189
189
  taxPercentages {
190
190
  percentage
191
+ percentageDecimal
191
192
  total
192
193
  }
193
194
  }
@@ -218,6 +219,7 @@ fragment OrderItemFields on OrderItem {
218
219
  discount
219
220
  tax
220
221
  taxPercentage
222
+ taxPercentageDecimal
221
223
  taxCode
222
224
  isBonus
223
225
  minimumQuantity