@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.
Files changed (302) hide show
  1. package/README.md +5772 -118
  2. package/dist/auth/index.d.ts +7 -1
  3. package/dist/auth/index.js +8 -1
  4. package/dist/catalog/assets.d.ts +120 -8
  5. package/dist/catalog/assets.js +98 -12
  6. package/dist/catalog/collections.d.ts +279 -14
  7. package/dist/catalog/collections.js +246 -15
  8. package/dist/catalog/documents.d.ts +142 -0
  9. package/dist/catalog/documents.js +114 -0
  10. package/dist/catalog/index.d.ts +54 -6
  11. package/dist/catalog/index.js +10 -1
  12. package/dist/catalog/metadata.d.ts +244 -0
  13. package/dist/catalog/metadata.js +220 -0
  14. package/dist/catalog/products.d.ts +159 -19
  15. package/dist/catalog/products.js +88 -13
  16. package/dist/catalog/properties.d.ts +140 -14
  17. package/dist/catalog/properties.js +65 -1
  18. package/dist/catalog/recommendations.d.ts +288 -0
  19. package/dist/catalog/recommendations.js +237 -0
  20. package/dist/catalog/reviews.d.ts +381 -0
  21. package/dist/catalog/reviews.js +325 -0
  22. package/dist/catalog/types.d.ts +17 -1
  23. package/dist/catalog/types.js +10 -0
  24. package/dist/catalog/variant-find.d.ts +136 -0
  25. package/dist/catalog/variant-find.js +239 -0
  26. package/dist/catalog/variants.d.ts +293 -26
  27. package/dist/catalog/variants.js +164 -7
  28. package/dist/catalog/visibility.d.ts +38 -7
  29. package/dist/catalog/visibility.js +19 -1
  30. package/dist/client.d.ts +121 -9
  31. package/dist/client.js +53 -14
  32. package/dist/content/assets.d.ts +285 -0
  33. package/dist/content/assets.js +181 -0
  34. package/dist/content/forms.d.ts +332 -1
  35. package/dist/content/forms.js +140 -4
  36. package/dist/content/items.d.ts +292 -0
  37. package/dist/content/items.js +170 -0
  38. package/dist/content/menus.d.ts +254 -0
  39. package/dist/content/menus.js +70 -0
  40. package/dist/content/strings.d.ts +137 -0
  41. package/dist/content/strings.js +82 -0
  42. package/dist/content/types.d.ts +282 -0
  43. package/dist/content/types.js +100 -0
  44. package/dist/customers/age-verification.d.ts +66 -0
  45. package/dist/customers/age-verification.js +79 -0
  46. package/dist/customers/credit.d.ts +263 -0
  47. package/dist/customers/credit.js +244 -0
  48. package/dist/customers/delivery-preferences.d.ts +120 -0
  49. package/dist/customers/delivery-preferences.js +97 -0
  50. package/dist/customers/delivery-terms.d.ts +44 -0
  51. package/dist/customers/delivery-terms.js +32 -0
  52. package/dist/customers/groups.d.ts +207 -0
  53. package/dist/customers/groups.js +438 -0
  54. package/dist/customers/index.d.ts +462 -37
  55. package/dist/customers/index.js +317 -40
  56. package/dist/customers/invitation-status.d.ts +57 -0
  57. package/dist/customers/invitation-status.js +21 -0
  58. package/dist/customers/notes.d.ts +67 -0
  59. package/dist/customers/notes.js +51 -0
  60. package/dist/customers/notification-recipients.d.ts +97 -0
  61. package/dist/customers/notification-recipients.js +84 -0
  62. package/dist/customers/saved-lists.d.ts +42 -0
  63. package/dist/customers/saved-lists.js +61 -0
  64. package/dist/customers/vat.d.ts +83 -0
  65. package/dist/customers/vat.js +46 -0
  66. package/dist/customers/wire.d.ts +20 -0
  67. package/dist/customers/wire.js +35 -0
  68. package/dist/documents/ar.d.ts +307 -0
  69. package/dist/documents/ar.js +254 -0
  70. package/dist/documents/emails.d.ts +150 -0
  71. package/dist/documents/emails.js +220 -0
  72. package/dist/documents/index.d.ts +744 -21
  73. package/dist/documents/index.js +438 -24
  74. package/dist/documents/pdf.d.ts +2 -0
  75. package/dist/documents/pdf.js +11 -0
  76. package/dist/fulfillments/create.d.ts +167 -0
  77. package/dist/fulfillments/create.js +216 -0
  78. package/dist/fulfillments/index.d.ts +163 -11
  79. package/dist/fulfillments/index.js +135 -6
  80. package/dist/fulfillments/payment-policy.d.ts +64 -0
  81. package/dist/fulfillments/payment-policy.js +140 -0
  82. package/dist/fulfillments/warehouse.d.ts +724 -0
  83. package/dist/fulfillments/warehouse.js +914 -0
  84. package/dist/geo/index.d.ts +119 -0
  85. package/dist/geo/index.js +107 -0
  86. package/dist/index.d.ts +147 -39
  87. package/dist/index.js +51 -12
  88. package/dist/integrations/afas-actions.d.ts +234 -0
  89. package/dist/integrations/afas-actions.js +310 -0
  90. package/dist/integrations/afas-types.d.ts +483 -0
  91. package/dist/integrations/afas-types.js +5 -0
  92. package/dist/integrations/afas.d.ts +234 -0
  93. package/dist/integrations/afas.js +290 -0
  94. package/dist/integrations/connections.d.ts +103 -0
  95. package/dist/integrations/connections.js +55 -0
  96. package/dist/integrations/esp.d.ts +313 -0
  97. package/dist/integrations/esp.js +169 -0
  98. package/dist/integrations/exact-online-types.d.ts +965 -0
  99. package/dist/integrations/exact-online-types.js +6 -0
  100. package/dist/integrations/exact-online.d.ts +784 -0
  101. package/dist/integrations/exact-online.js +1089 -0
  102. package/dist/integrations/index.d.ts +44 -3
  103. package/dist/integrations/index.js +23 -3
  104. package/dist/integrations/pipeline-discoveries.d.ts +65 -0
  105. package/dist/integrations/pipeline-discoveries.js +65 -0
  106. package/dist/integrations/pipeline-keys.d.ts +13 -0
  107. package/dist/integrations/pipeline-keys.js +22 -0
  108. package/dist/integrations/pipeline-runs.d.ts +119 -0
  109. package/dist/integrations/pipeline-runs.js +87 -0
  110. package/dist/integrations/pipelines.d.ts +87 -15
  111. package/dist/integrations/pipelines.js +41 -22
  112. package/dist/integrations/price-import.d.ts +223 -0
  113. package/dist/integrations/price-import.js +124 -0
  114. package/dist/integrations/types.d.ts +367 -3
  115. package/dist/integrations/types.js +4 -3
  116. package/dist/locations/index.d.ts +66 -0
  117. package/dist/locations/index.js +31 -0
  118. package/dist/meta/index.d.ts +172 -0
  119. package/dist/metafields/index.d.ts +8 -1
  120. package/dist/metafields/index.js +10 -0
  121. package/dist/orders/cancel-with-money.d.ts +237 -0
  122. package/dist/orders/cancel-with-money.js +155 -0
  123. package/dist/orders/commit-edit.d.ts +23 -1
  124. package/dist/orders/commit-edit.js +19 -2
  125. package/dist/orders/deposit-policy.d.ts +3 -1
  126. package/dist/orders/drafts.d.ts +800 -0
  127. package/dist/orders/drafts.js +771 -0
  128. package/dist/orders/fields.d.ts +245 -0
  129. package/dist/orders/fields.js +188 -0
  130. package/dist/orders/get.d.ts +29 -19
  131. package/dist/orders/get.js +17 -8
  132. package/dist/orders/index.d.ts +66 -15
  133. package/dist/orders/index.js +25 -2
  134. package/dist/orders/lifecycle.d.ts +128 -0
  135. package/dist/orders/lifecycle.js +158 -0
  136. package/dist/orders/line-price-preview.d.ts +7 -2
  137. package/dist/orders/list.d.ts +243 -0
  138. package/dist/orders/list.js +487 -0
  139. package/dist/orders/manual-discounts.d.ts +13 -5
  140. package/dist/orders/manual-pricing.d.ts +5 -0
  141. package/dist/orders/money-view.d.ts +149 -0
  142. package/dist/orders/money-view.js +99 -0
  143. package/dist/orders/order-entry.d.ts +20 -7
  144. package/dist/orders/plan-edit.d.ts +34 -2
  145. package/dist/orders/plan-edit.js +112 -11
  146. package/dist/orders/settings.d.ts +201 -0
  147. package/dist/orders/settings.js +325 -0
  148. package/dist/orders/status.d.ts +159 -13
  149. package/dist/orders/status.js +21 -0
  150. package/dist/orders/surcharges.d.ts +20 -1
  151. package/dist/orders/surcharges.js +37 -11
  152. package/dist/payments/account-credit.d.ts +46 -0
  153. package/dist/payments/account-credit.js +42 -0
  154. package/dist/payments/ar.d.ts +292 -0
  155. package/dist/payments/ar.js +223 -0
  156. package/dist/payments/connected-account.d.ts +47 -0
  157. package/dist/payments/connected-account.js +61 -0
  158. package/dist/payments/credit-noted-fields.d.ts +19 -0
  159. package/dist/payments/credit-noted-fields.js +69 -0
  160. package/dist/payments/customer-consent.d.ts +30 -0
  161. package/dist/payments/customer-consent.js +49 -0
  162. package/dist/payments/index.d.ts +340 -19
  163. package/dist/payments/index.js +151 -1
  164. package/dist/payments/methods.d.ts +303 -8
  165. package/dist/payments/methods.js +337 -7
  166. package/dist/payments/mollie-methods.d.ts +159 -0
  167. package/dist/payments/mollie-methods.js +141 -0
  168. package/dist/payments/payment-links.d.ts +180 -0
  169. package/dist/payments/payment-links.js +97 -0
  170. package/dist/payments/provider-keys.d.ts +150 -0
  171. package/dist/payments/provider-keys.js +118 -0
  172. package/dist/payments/providers.d.ts +86 -11
  173. package/dist/payments/providers.js +29 -0
  174. package/dist/payments/requests.d.ts +147 -0
  175. package/dist/payments/requests.js +93 -0
  176. package/dist/payments/store-credit-fields.d.ts +15 -0
  177. package/dist/payments/store-credit-fields.js +51 -0
  178. package/dist/pickups/index.d.ts +106 -0
  179. package/dist/pickups/index.js +108 -0
  180. package/dist/platform/channels.d.ts +132 -0
  181. package/dist/platform/channels.js +128 -0
  182. package/dist/platform/email-gateways.d.ts +165 -0
  183. package/dist/platform/email-gateways.js +78 -0
  184. package/dist/platform/geo.d.ts +123 -0
  185. package/dist/platform/geo.js +144 -0
  186. package/dist/platform/tax.d.ts +162 -0
  187. package/dist/platform/tax.js +169 -0
  188. package/dist/pos/anomalies.d.ts +158 -0
  189. package/dist/pos/anomalies.js +64 -0
  190. package/dist/pos/assisted-selling.d.ts +79 -0
  191. package/dist/pos/assisted-selling.js +38 -0
  192. package/dist/pos/exchanges.d.ts +108 -0
  193. package/dist/pos/exchanges.js +22 -0
  194. package/dist/pos/gift-cards.d.ts +135 -0
  195. package/dist/pos/gift-cards.js +47 -0
  196. package/dist/pos/index.d.ts +2370 -58
  197. package/dist/pos/index.js +854 -7
  198. package/dist/pos/no-receipt.d.ts +94 -0
  199. package/dist/pos/no-receipt.js +25 -0
  200. package/dist/pos/offline-sales.d.ts +228 -0
  201. package/dist/pos/offline-sales.js +170 -0
  202. package/dist/pos/pay-by-link.d.ts +143 -0
  203. package/dist/pos/pay-by-link.js +57 -0
  204. package/dist/pos/quick-keys.d.ts +103 -0
  205. package/dist/pos/quick-keys.js +45 -0
  206. package/dist/pos/reports.d.ts +360 -0
  207. package/dist/pos/reports.js +62 -0
  208. package/dist/pos/returns.d.ts +244 -0
  209. package/dist/pos/returns.js +83 -0
  210. package/dist/pricing/bulk-coupons.d.ts +139 -0
  211. package/dist/pricing/bulk-coupons.js +112 -0
  212. package/dist/pricing/index.d.ts +174 -4
  213. package/dist/pricing/index.js +174 -1
  214. package/dist/pricing/price-lists.d.ts +606 -0
  215. package/dist/pricing/price-lists.js +600 -0
  216. package/dist/purchasing/alerts.d.ts +104 -0
  217. package/dist/purchasing/alerts.js +88 -0
  218. package/dist/purchasing/backorders.d.ts +61 -0
  219. package/dist/purchasing/backorders.js +92 -0
  220. package/dist/purchasing/cost.d.ts +110 -0
  221. package/dist/purchasing/cost.js +86 -0
  222. package/dist/purchasing/index.d.ts +54 -0
  223. package/dist/purchasing/index.js +24 -0
  224. package/dist/purchasing/links.d.ts +263 -0
  225. package/dist/purchasing/links.js +192 -0
  226. package/dist/purchasing/purchase-orders.d.ts +551 -0
  227. package/dist/purchasing/purchase-orders.js +491 -0
  228. package/dist/purchasing/receipts.d.ts +396 -0
  229. package/dist/purchasing/receipts.js +287 -0
  230. package/dist/purchasing/replenishment.d.ts +281 -0
  231. package/dist/purchasing/replenishment.js +240 -0
  232. package/dist/purchasing/returns.d.ts +273 -0
  233. package/dist/purchasing/returns.js +229 -0
  234. package/dist/purchasing/settings.d.ts +152 -0
  235. package/dist/purchasing/settings.js +181 -0
  236. package/dist/purchasing/suppliers.d.ts +476 -0
  237. package/dist/purchasing/suppliers.js +438 -0
  238. package/dist/quotes/index.d.ts +518 -0
  239. package/dist/quotes/index.js +439 -0
  240. package/dist/reports/index.d.ts +71 -8
  241. package/dist/reports/index.js +74 -11
  242. package/dist/returns/index.d.ts +675 -21
  243. package/dist/returns/index.js +756 -11
  244. package/dist/search/index.d.ts +76 -1
  245. package/dist/search/index.js +63 -0
  246. package/dist/seo/config.d.ts +128 -0
  247. package/dist/seo/config.js +95 -0
  248. package/dist/seo/redirects.d.ts +125 -0
  249. package/dist/seo/redirects.js +60 -1
  250. package/dist/seo/settings.d.ts +147 -0
  251. package/dist/seo/settings.js +209 -0
  252. package/dist/shipping/definitions.d.ts +29 -0
  253. package/dist/shipping/definitions.js +47 -0
  254. package/dist/shipping/fulfillment-profiles.d.ts +174 -0
  255. package/dist/shipping/fulfillment-profiles.js +104 -0
  256. package/dist/shipping/hendriks.d.ts +97 -0
  257. package/dist/shipping/hendriks.js +50 -0
  258. package/dist/shipping/index.d.ts +54 -0
  259. package/dist/shipping/index.js +27 -0
  260. package/dist/shipping/methods.d.ts +205 -0
  261. package/dist/shipping/methods.js +240 -0
  262. package/dist/shipping/myparcel.d.ts +668 -0
  263. package/dist/shipping/myparcel.js +466 -0
  264. package/dist/shipping/parcel-count-suggestion.d.ts +2 -0
  265. package/dist/shipping/parcel-rule.d.ts +6 -5
  266. package/dist/shipping/parcel-rule.js +21 -23
  267. package/dist/shipping/rate-tables.d.ts +324 -0
  268. package/dist/shipping/rate-tables.js +390 -0
  269. package/dist/shipping/ship-to-countries.d.ts +75 -0
  270. package/dist/shipping/ship-to-countries.js +47 -0
  271. package/dist/stock/by-location.d.ts +86 -0
  272. package/dist/stock/by-location.js +94 -0
  273. package/dist/stock/index.d.ts +18 -4
  274. package/dist/stock/index.js +7 -0
  275. package/dist/stock/locations.d.ts +144 -0
  276. package/dist/stock/locations.js +168 -0
  277. package/dist/stock/settings.d.ts +106 -0
  278. package/dist/stock/settings.js +103 -0
  279. package/dist/stock/transfers.d.ts +386 -52
  280. package/dist/stock/transfers.js +222 -17
  281. package/dist/stored-value/index.d.ts +312 -11
  282. package/dist/stored-value/index.js +223 -4
  283. package/dist/subscriptions/index.d.ts +682 -0
  284. package/dist/subscriptions/index.js +815 -0
  285. package/dist/tax/display-policy.d.ts +105 -0
  286. package/dist/tax/display-policy.js +84 -0
  287. package/dist/tax/index.d.ts +79 -1
  288. package/dist/tax/index.js +52 -0
  289. package/dist/tenant/email-style.d.ts +102 -0
  290. package/dist/tenant/email-style.js +72 -0
  291. package/dist/tenant/email-templates.d.ts +287 -0
  292. package/dist/tenant/email-templates.js +271 -0
  293. package/dist/tenant/notifications.d.ts +23 -17
  294. package/dist/tenant/settings-sources.d.ts +1 -1
  295. package/dist/tenant/time-zone.d.ts +17 -0
  296. package/dist/tenant/time-zone.js +11 -0
  297. package/dist/types.d.ts +50 -3
  298. package/dist/users/index.d.ts +3 -0
  299. package/dist/users/index.js +2 -0
  300. package/dist/users/warehouses.d.ts +50 -0
  301. package/dist/users/warehouses.js +51 -0
  302. 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
+ }