@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,287 @@
1
+ import { pageFromVendureList, readOffsetCursor, } from '@sixtyninecommerce/core';
2
+ export const GOODS_RECEIPT_LINE_FIELDS = /* GraphQL */ `
3
+ id
4
+ goodsReceiptId
5
+ purchaseOrderId
6
+ purchaseOrderCode
7
+ purchaseOrderLineId
8
+ reversesLineId
9
+ productVariantId
10
+ sku
11
+ name
12
+ supplierSku
13
+ purchaseUnitLabel
14
+ purchaseUnitFactor
15
+ acceptedBaseQuantity
16
+ rejectedBaseQuantity
17
+ rejectReason
18
+ overReceiptReason
19
+ cancelledBaseQuantity
20
+ reversedBaseQuantity
21
+ returnedBaseQuantity
22
+ returnedRejectedBaseQuantity
23
+ supplierCurrencyCode
24
+ unitCostSupplierCurrency
25
+ fxRate
26
+ fxRateSource
27
+ fxRateDate
28
+ unitCostEntityCurrency
29
+ landedUnitCost
30
+ traceability { lot expiresOn serials }
31
+ stockMovementId
32
+ externalLineId
33
+ createdAt
34
+ `;
35
+ export const GOODS_RECEIPT_FIELDS = /* GraphQL */ `
36
+ id
37
+ scopeId
38
+ legalEntityId
39
+ originChannelId
40
+ code
41
+ kind
42
+ reversesReceiptId
43
+ reversesReceiptCode
44
+ supplierId
45
+ supplier { id code name status }
46
+ stockLocationId
47
+ stockLocation { id name }
48
+ receivedOn
49
+ receivedAt
50
+ currencyCode
51
+ supplierDeliveryRef
52
+ reason
53
+ managedBy
54
+ externalId
55
+ externalNumber
56
+ actorRef
57
+ createdByRef
58
+ reversals { id code createdAt }
59
+ lines { ${GOODS_RECEIPT_LINE_FIELDS} }
60
+ createdAt
61
+ `;
62
+ export const LANDED_CHARGE_FIELDS = /* GraphQL */ `
63
+ id
64
+ goodsReceiptId
65
+ purchaseOrderId
66
+ kind
67
+ label
68
+ payeeSupplierId
69
+ payeeSupplier { id code name status }
70
+ payeeName
71
+ currencyCode
72
+ amount
73
+ allocation
74
+ incurredOn
75
+ fxRate
76
+ fxRateSource
77
+ fxRateDate
78
+ amountEntityCurrency
79
+ allocations { goodsReceiptLineId productVariantId baseQuantity basis amount unitCostDelta }
80
+ appliedAt
81
+ removedAt
82
+ removeReason
83
+ removedByRef
84
+ createdByRef
85
+ createdAt
86
+ `;
87
+ /** A receipt with its landed charges: `get` and the charge writes. */
88
+ export const GOODS_RECEIPT_DETAIL_FIELDS = /* GraphQL */ `
89
+ ${GOODS_RECEIPT_FIELDS}
90
+ charges { ${LANDED_CHARGE_FIELDS} }
91
+ `;
92
+ export const RECEIVABLE_LINE_FIELDS = /* GraphQL */ `
93
+ purchaseOrderId
94
+ purchaseOrderCode
95
+ purchaseOrderLineId
96
+ position
97
+ supplierId
98
+ supplier { id code name status }
99
+ stockLocationId
100
+ productVariantId
101
+ sku
102
+ name
103
+ supplierSku
104
+ supplierBarcode
105
+ gtin
106
+ purchaseUnitLabel
107
+ purchaseUnitFactor
108
+ orderedBaseQuantity
109
+ cancelledBaseQuantity
110
+ receivedBaseQuantity
111
+ returnedForReplacementBaseQuantity
112
+ remainingBaseQuantity
113
+ toleranceBaseQuantity
114
+ maxAcceptedBaseQuantity
115
+ confirmedBaseQuantity
116
+ expectedOn
117
+ `;
118
+ export const GOODS_RECEIPTS_QUERY = /* GraphQL */ `
119
+ query GoodsReceipts($options: GoodsReceiptListOptions) {
120
+ goodsReceipts(options: $options) {
121
+ items { ${GOODS_RECEIPT_FIELDS} }
122
+ totalItems
123
+ }
124
+ }
125
+ `;
126
+ export const GOODS_RECEIPT_QUERY = /* GraphQL */ `
127
+ query GoodsReceipt($id: ID!) {
128
+ goodsReceipt(id: $id) { ${GOODS_RECEIPT_DETAIL_FIELDS} }
129
+ }
130
+ `;
131
+ export const RECEIVABLE_PURCHASE_ORDER_LINES_QUERY = /* GraphQL */ `
132
+ query ReceivablePurchaseOrderLines($options: ReceivablePurchaseOrderLinesOptions) {
133
+ receivablePurchaseOrderLines(options: $options) { ${RECEIVABLE_LINE_FIELDS} }
134
+ }
135
+ `;
136
+ export const POST_GOODS_RECEIPT_MUTATION = /* GraphQL */ `
137
+ mutation PostGoodsReceipt($input: PostGoodsReceiptInput!, $idempotencyKey: String!) {
138
+ postGoodsReceipt(input: $input, idempotencyKey: $idempotencyKey) { ${GOODS_RECEIPT_FIELDS} }
139
+ }
140
+ `;
141
+ export const REVERSE_GOODS_RECEIPT_MUTATION = /* GraphQL */ `
142
+ mutation ReverseGoodsReceipt($input: ReverseGoodsReceiptInput!, $idempotencyKey: String!) {
143
+ reverseGoodsReceipt(input: $input, idempotencyKey: $idempotencyKey) {
144
+ ${GOODS_RECEIPT_FIELDS}
145
+ }
146
+ }
147
+ `;
148
+ export const ADD_GOODS_RECEIPT_CHARGE_MUTATION = /* GraphQL */ `
149
+ mutation AddGoodsReceiptCharge($input: AddGoodsReceiptChargeInput!, $idempotencyKey: String) {
150
+ addGoodsReceiptCharge(input: $input, idempotencyKey: $idempotencyKey) {
151
+ ${GOODS_RECEIPT_DETAIL_FIELDS}
152
+ }
153
+ }
154
+ `;
155
+ export const REMOVE_GOODS_RECEIPT_CHARGE_MUTATION = /* GraphQL */ `
156
+ mutation RemoveGoodsReceiptCharge(
157
+ $input: RemoveGoodsReceiptChargeInput!
158
+ $idempotencyKey: String
159
+ ) {
160
+ removeGoodsReceiptCharge(input: $input, idempotencyKey: $idempotencyKey) {
161
+ ${GOODS_RECEIPT_DETAIL_FIELDS}
162
+ }
163
+ }
164
+ `;
165
+ const DEFAULT_PAGE_SIZE = 25;
166
+ const LIST_FILTERS = ['purchaseOrderId', 'supplierId', 'stockLocationId', 'kind', 'term'];
167
+ const RECEIVABLE_FILTERS = ['supplierId', 'stockLocationId', 'purchaseOrderId'];
168
+ const LINE_INPUT_FIELDS = [
169
+ 'purchaseOrderLineId',
170
+ 'acceptedBaseQuantity',
171
+ 'rejectedBaseQuantity',
172
+ 'rejectReason',
173
+ 'overReceiptReason',
174
+ 'traceability',
175
+ ];
176
+ const CHARGE_INPUT_FIELDS = [
177
+ 'goodsReceiptId',
178
+ 'kind',
179
+ 'label',
180
+ 'payeeSupplierId',
181
+ 'payeeName',
182
+ 'currencyCode',
183
+ 'amount',
184
+ 'allocation',
185
+ 'incurredOn',
186
+ 'fxRate',
187
+ ];
188
+ const POST_INPUT_FIELDS = [
189
+ 'supplierId',
190
+ 'stockLocationId',
191
+ 'receivedOn',
192
+ 'supplierDeliveryRef',
193
+ 'fxRates',
194
+ ];
195
+ function picked(input, fields) {
196
+ const out = {};
197
+ for (const field of fields) {
198
+ const value = input[field];
199
+ if (value !== undefined)
200
+ out[field] = value;
201
+ }
202
+ return out;
203
+ }
204
+ export function createPurchasingReceiptsModule(transport) {
205
+ const listPage = async (skip, take, options) => {
206
+ const filters = options ? picked(options, LIST_FILTERS) : {};
207
+ const data = await transport.graphql({
208
+ api: 'admin',
209
+ query: GOODS_RECEIPTS_QUERY,
210
+ variables: { options: { skip, take, ...filters } },
211
+ }, options);
212
+ return pageFromVendureList(data.goodsReceipts, skip, take, (cursor) => listPage(readOffsetCursor(cursor), take, options));
213
+ };
214
+ return {
215
+ async list(options) {
216
+ const take = options?.limit ?? DEFAULT_PAGE_SIZE;
217
+ const skip = options?.after === undefined ? 0 : readOffsetCursor(options.after);
218
+ return listPage(skip, take, options);
219
+ },
220
+ async get(id, call) {
221
+ const data = await transport.graphql({ api: 'admin', query: GOODS_RECEIPT_QUERY, variables: { id } }, call);
222
+ return data.goodsReceipt;
223
+ },
224
+ async receivable(options) {
225
+ const filters = options ? picked(options, RECEIVABLE_FILTERS) : {};
226
+ const data = await transport.graphql({
227
+ api: 'admin',
228
+ query: RECEIVABLE_PURCHASE_ORDER_LINES_QUERY,
229
+ variables: Object.keys(filters).length > 0 ? { options: filters } : {},
230
+ }, options);
231
+ return data.receivablePurchaseOrderLines;
232
+ },
233
+ async post(input, call) {
234
+ const data = await transport.graphql({
235
+ api: 'admin',
236
+ query: POST_GOODS_RECEIPT_MUTATION,
237
+ variables: {
238
+ input: {
239
+ ...picked(input, POST_INPUT_FIELDS),
240
+ lines: input.lines.map((line) => picked(line, LINE_INPUT_FIELDS)),
241
+ },
242
+ idempotencyKey: call.idempotencyKey,
243
+ },
244
+ }, call);
245
+ return data.postGoodsReceipt;
246
+ },
247
+ async reverse(input, call) {
248
+ const data = await transport.graphql({
249
+ api: 'admin',
250
+ query: REVERSE_GOODS_RECEIPT_MUTATION,
251
+ variables: {
252
+ input: {
253
+ goodsReceiptId: input.goodsReceiptId,
254
+ reason: input.reason,
255
+ ...(input.lines === undefined ? {} : { lines: input.lines }),
256
+ },
257
+ idempotencyKey: call.idempotencyKey,
258
+ },
259
+ }, call);
260
+ return data.reverseGoodsReceipt;
261
+ },
262
+ charges: {
263
+ async add(input, call) {
264
+ const data = await transport.graphql({
265
+ api: 'admin',
266
+ query: ADD_GOODS_RECEIPT_CHARGE_MUTATION,
267
+ variables: {
268
+ input: picked(input, CHARGE_INPUT_FIELDS),
269
+ idempotencyKey: call?.idempotencyKey,
270
+ },
271
+ }, call);
272
+ return data.addGoodsReceiptCharge;
273
+ },
274
+ async remove(input, call) {
275
+ const data = await transport.graphql({
276
+ api: 'admin',
277
+ query: REMOVE_GOODS_RECEIPT_CHARGE_MUTATION,
278
+ variables: {
279
+ input: { chargeId: input.chargeId, reason: input.reason },
280
+ idempotencyKey: call?.idempotencyKey,
281
+ },
282
+ }, call);
283
+ return data.removeGoodsReceiptCharge;
284
+ },
285
+ },
286
+ };
287
+ }
@@ -0,0 +1,281 @@
1
+ import { type Page, type Transport } from '@sixtyninecommerce/core';
2
+ import type { Call, ListOptions } from '../types.js';
3
+ import { type PurchaseOrder } from './purchase-orders.js';
4
+ /** The variant a rule or suggestion names, as the active store sees it. */
5
+ export interface ReplenishmentVariant {
6
+ id: string;
7
+ sku: string;
8
+ name: string;
9
+ }
10
+ /** The stock location a rule or suggestion names. */
11
+ export interface ReplenishmentLocation {
12
+ id: string;
13
+ name: string;
14
+ }
15
+ /**
16
+ * A reorder rule for one variant at one stock location of the legal entity (purchase-orders spec
17
+ * §8.13): a reorder point and an order-up-to level, or only the days of demand a sales-velocity
18
+ * suggestion covers. Quantities in base units (the variant's stock units).
19
+ */
20
+ export interface ReplenishmentRule {
21
+ id: string;
22
+ /** The legal entity's id, or `sandbox:<channelId>` for a sandbox store, which purchases alone. */
23
+ scopeId: string;
24
+ legalEntityId: string | null;
25
+ productVariantId: string;
26
+ /** Null when the active store does not hold the variant (another store of the entity set it). */
27
+ productVariant: ReplenishmentVariant | null;
28
+ stockLocationId: string;
29
+ /** Null when the location has been removed since. */
30
+ stockLocation: ReplenishmentLocation | null;
31
+ /** At or below it the pair is reordered up to `maxQuantity`. */
32
+ minQuantity: number | null;
33
+ maxQuantity: number | null;
34
+ /** Days of demand a velocity suggestion covers; ignored when the min/max pair is set. */
35
+ coverDays: number | null;
36
+ /** A switched-off rule is computed as if there were none (the sales-velocity fallback). */
37
+ enabled: boolean;
38
+ /** ISO-8601 UTC. */
39
+ createdAt: string;
40
+ updatedAt: string;
41
+ }
42
+ /**
43
+ * A rule's terms (a PUT): the quantities given replace the rule's, one left out or null is unset,
44
+ * `enabled` is true unless given. `minQuantity` and `maxQuantity` go together.
45
+ */
46
+ export interface ReplenishmentRuleFields {
47
+ minQuantity?: number | null;
48
+ maxQuantity?: number | null;
49
+ coverDays?: number | null;
50
+ enabled?: boolean;
51
+ }
52
+ export interface ReplenishmentRuleListOptions extends ListOptions {
53
+ productVariantId?: string;
54
+ stockLocationId?: string;
55
+ enabled?: boolean;
56
+ }
57
+ /** The preferred supplier of a suggestion. */
58
+ export interface ReplenishmentSupplier {
59
+ id: string;
60
+ code: string;
61
+ name: string;
62
+ status: string;
63
+ currencyCode: string;
64
+ }
65
+ /**
66
+ * A reorder suggestion: what the last compute found short at one stock location for one variant,
67
+ * grouped by the preferred supplier (`supplierId` null: choose one) and the location.
68
+ */
69
+ export interface ReplenishmentSuggestion {
70
+ id: string;
71
+ scopeId: string;
72
+ legalEntityId: string | null;
73
+ stockLocationId: string;
74
+ /** Null when the location has been removed since. */
75
+ stockLocation: ReplenishmentLocation | null;
76
+ productVariantId: string;
77
+ productVariant: ReplenishmentVariant | null;
78
+ supplierId: string | null;
79
+ supplier: ReplenishmentSupplier | null;
80
+ supplierItemId: string | null;
81
+ /** `min_max` or `velocity`. A string on the wire: more methods may come. */
82
+ method: 'min_max' | 'velocity' | (string & {});
83
+ /** On hand minus allocated at the location. */
84
+ available: number;
85
+ /**
86
+ * On order at the location: every sent purchase order's remainder, confirmed or not, and the
87
+ * open lines an ERP mirrors (`stock.position`'s `onOrder`).
88
+ */
89
+ onOrder: number;
90
+ /** Open backorders attributed to the location. */
91
+ backordered: number;
92
+ /**
93
+ * Base units already on this legal entity's purchase orders for the pair that are not with the
94
+ * supplier yet (draft, awaiting approval, approved): shown, never subtracted. Read when the
95
+ * suggestion is answered.
96
+ */
97
+ inDraft: number;
98
+ target: number;
99
+ /** What the suggested order brings in: the purchase quantity times the purchase unit. */
100
+ suggestedBaseQuantity: number;
101
+ /** In the preferred supplier item's purchase units, rounded up to its minimum and multiple. */
102
+ suggestedPurchaseQuantity: number;
103
+ /**
104
+ * Every input of the maths (`version` 1): `stock`, `demand`, `rule`, `velocity`, `leadTime`,
105
+ * `reorderPoint`, `target`, `need`, `supplier`, `purchaseUnit`, `rounding`.
106
+ */
107
+ explanation: Record<string, unknown>;
108
+ /** Not suggested by the previous compute, or its quantity rose since. */
109
+ isNew: boolean;
110
+ /** ISO-8601 UTC. */
111
+ computedAt: string;
112
+ /** `YYYY-MM-DD` in the legal entity's zone: dismissed through that day; null when not. */
113
+ dismissedUntil: string | null;
114
+ }
115
+ export interface ReplenishmentSuggestionListOptions extends ListOptions {
116
+ stockLocationId?: string;
117
+ supplierId?: string;
118
+ /** Only the suggestions without a supplier (the "Choose supplier" group). */
119
+ withoutSupplier?: boolean;
120
+ productVariantId?: string;
121
+ /** Dismissed suggestions too; they are left out by default. */
122
+ includeDismissed?: boolean;
123
+ }
124
+ /** What a compute found. */
125
+ export interface ReplenishmentComputeResult {
126
+ /** ISO-8601 UTC. */
127
+ computedAt: string;
128
+ /** `YYYY-MM-DD` in the legal entity's zone. */
129
+ localDay: string;
130
+ timeZone: string;
131
+ locations: number;
132
+ suggestions: number;
133
+ newSuggestions: number;
134
+ dismissed: number;
135
+ /** Locations the compute could not plan for (`LOCATION_OWNER_AMBIGUOUS`). */
136
+ skippedLocations: Array<{
137
+ stockLocationId: string;
138
+ reason: string;
139
+ }>;
140
+ }
141
+ /** One suggestion to order, with the quantity that replaces the suggested one. */
142
+ export interface ReplenishmentDraftLine {
143
+ suggestionId: string;
144
+ /** Purchase units of the suggestion's supplier item; the suggested quantity when left out. */
145
+ purchaseQuantity?: number;
146
+ }
147
+ /** What `suggestions.createDrafts` raised. */
148
+ export interface ReplenishmentDrafts {
149
+ /**
150
+ * The draft purchase orders, one per supplier and stock location, in the supplier's currency,
151
+ * each line priced from its supplier item's break for the quantity (unpriced when none
152
+ * applies). They stay drafts.
153
+ */
154
+ purchaseOrders: PurchaseOrder[];
155
+ /** How many suggestions they order (one line each). */
156
+ lines: number;
157
+ }
158
+ /** `rules.import`: reorder rules as CSV text (purchase-orders D100). */
159
+ export interface ReplenishmentRuleImportInput {
160
+ /**
161
+ * The file's text: a header row naming the columns `sku`, `location`, `minQuantity`,
162
+ * `maxQuantity`, `coverDays`, `enabled` (any case; `min_quantity` and `Min Quantity` read as
163
+ * `minQuantity`), then one rule per row, the whole rule of a variant at a stock location.
164
+ * `location` is a stock location's id or name. Comma, semicolon or tab separated. At most 5000
165
+ * rows.
166
+ */
167
+ content: string;
168
+ /** Check every row as the import would, write nothing. */
169
+ dryRun?: boolean;
170
+ }
171
+ /** One row of a reorder-rule import. */
172
+ export interface ReplenishmentRuleImportRow {
173
+ /** The row's line in the file; the header is line 1. */
174
+ row: number;
175
+ sku: string | null;
176
+ location: string | null;
177
+ /** A string on the wire: more outcomes may come. */
178
+ outcome: 'created' | 'updated' | 'unchanged' | 'failed' | (string & {});
179
+ /** The rule the row set; null when it failed before one existed. */
180
+ ruleId: string | null;
181
+ /** Why the row failed: a refusal code (`REPLENISHMENT_INVALID`, `REPLENISHMENT_VARIANT_NOT_FOUND`, …). */
182
+ errorCode: string | null;
183
+ message: string | null;
184
+ }
185
+ /** What a reorder-rule import did, row by row. */
186
+ export interface ReplenishmentRuleImportResult {
187
+ dryRun: boolean;
188
+ /** `sha256` (hex) of the file as read, so a caller can recognise one it already sent. */
189
+ contentHash: string;
190
+ /** Header columns the import does not know and did not read (a typo shows up here). */
191
+ ignoredColumns: string[];
192
+ totalRows: number;
193
+ created: number;
194
+ updated: number;
195
+ unchanged: number;
196
+ failed: number;
197
+ /** Every row, in file order. */
198
+ rows: ReplenishmentRuleImportRow[];
199
+ }
200
+ export declare const REPLENISHMENT_RULE_FIELDS = "\n id\n scopeId\n legalEntityId\n productVariantId\n productVariant { id sku name }\n stockLocationId\n stockLocation { id name }\n minQuantity\n maxQuantity\n coverDays\n enabled\n createdAt\n updatedAt\n";
201
+ export declare const REPLENISHMENT_SUGGESTION_FIELDS = "\n id\n scopeId\n legalEntityId\n stockLocationId\n stockLocation { id name }\n productVariantId\n productVariant { id sku name }\n supplierId\n supplier { id code name status currencyCode }\n supplierItemId\n method\n available\n onOrder\n backordered\n inDraft\n target\n suggestedBaseQuantity\n suggestedPurchaseQuantity\n explanation\n isNew\n computedAt\n dismissedUntil\n";
202
+ export declare const REPLENISHMENT_RULES_QUERY = "\n query ReplenishmentRules($options: ReplenishmentRuleListOptions) {\n replenishmentRules(options: $options) {\n totalItems\n items { \n id\n scopeId\n legalEntityId\n productVariantId\n productVariant { id sku name }\n stockLocationId\n stockLocation { id name }\n minQuantity\n maxQuantity\n coverDays\n enabled\n createdAt\n updatedAt\n }\n }\n }\n";
203
+ export declare const UPSERT_REPLENISHMENT_RULE_MUTATION = "\n mutation UpsertReplenishmentRule($input: UpsertReplenishmentRuleInput!, $idempotencyKey: String) {\n upsertReplenishmentRule(input: $input, idempotencyKey: $idempotencyKey) { \n id\n scopeId\n legalEntityId\n productVariantId\n productVariant { id sku name }\n stockLocationId\n stockLocation { id name }\n minQuantity\n maxQuantity\n coverDays\n enabled\n createdAt\n updatedAt\n }\n }\n";
204
+ export declare const DELETE_REPLENISHMENT_RULE_MUTATION = "\n mutation DeleteReplenishmentRule($id: ID!, $idempotencyKey: String) {\n deleteReplenishmentRule(id: $id, idempotencyKey: $idempotencyKey)\n }\n";
205
+ export declare const REPLENISHMENT_SUGGESTIONS_QUERY = "\n query ReplenishmentSuggestions($options: ReplenishmentSuggestionListOptions) {\n replenishmentSuggestions(options: $options) {\n totalItems\n items { \n id\n scopeId\n legalEntityId\n stockLocationId\n stockLocation { id name }\n productVariantId\n productVariant { id sku name }\n supplierId\n supplier { id code name status currencyCode }\n supplierItemId\n method\n available\n onOrder\n backordered\n inDraft\n target\n suggestedBaseQuantity\n suggestedPurchaseQuantity\n explanation\n isNew\n computedAt\n dismissedUntil\n }\n }\n }\n";
206
+ export declare const COMPUTE_REPLENISHMENT_SUGGESTIONS_MUTATION = "\n mutation ComputeReplenishmentSuggestions($idempotencyKey: String) {\n computeReplenishmentSuggestions(idempotencyKey: $idempotencyKey) {\n computedAt\n localDay\n timeZone\n locations\n suggestions\n newSuggestions\n dismissed\n skippedLocations { stockLocationId reason }\n }\n }\n";
207
+ export declare const DISMISS_REPLENISHMENT_SUGGESTION_MUTATION = "\n mutation DismissReplenishmentSuggestion($id: ID!, $until: String, $idempotencyKey: String) {\n dismissReplenishmentSuggestion(id: $id, until: $until, idempotencyKey: $idempotencyKey) {\n \n id\n scopeId\n legalEntityId\n stockLocationId\n stockLocation { id name }\n productVariantId\n productVariant { id sku name }\n supplierId\n supplier { id code name status currencyCode }\n supplierItemId\n method\n available\n onOrder\n backordered\n inDraft\n target\n suggestedBaseQuantity\n suggestedPurchaseQuantity\n explanation\n isNew\n computedAt\n dismissedUntil\n\n }\n }\n";
208
+ export declare const CREATE_REPLENISHMENT_DRAFTS_MUTATION = "\n mutation CreateReplenishmentDrafts(\n $input: CreateReplenishmentDraftsInput!\n $idempotencyKey: String\n ) {\n createReplenishmentDrafts(input: $input, idempotencyKey: $idempotencyKey) {\n lines\n purchaseOrders { \n \n id\n scopeId\n legalEntityId\n originChannelId\n code\n kind\n status\n supplierId\n supplier { id code name status }\n destinationStockLocationId\n destinationStockLocation { id name }\n currencyCode\n revision\n approvedRevision\n approvedAmount\n requestedDeliveryOn\n supplierReference\n notesToSupplier\n internalNotes\n managedBy\n externalId\n externalNumber\n externalApprovalStatus\n sentAt\n closedAt\n closeReason\n createdByRef\n total\n lineCount\n confirmation\n lines { \n id\n purchaseOrderId\n position\n productVariantId\n supplierItemId\n sku\n name\n supplierSku\n purchaseUnitLabel\n purchaseUnitFactor\n orderedQuantity\n orderedBaseQuantity\n cancelledBaseQuantity\n receivedBaseQuantity\n returnedForReplacementBaseQuantity\n unitPrice\n discountBps\n priceSource\n vatRateBps\n lineTotal\n requestedOn\n confirmedBaseQuantity\n confirmedOn\n confirmedAt\n externalLineId\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n\n statusHistory { id fromStatus status actorRef reason metadata createdAt }\n revisions {\n id\n revision\n state\n diff\n totalAfter\n createdByRef\n createdAt\n appliedAt\n sentAt\n sentVia\n }\n }\n }\n }\n";
209
+ export declare const IMPORT_REPLENISHMENT_RULES_MUTATION = "\n mutation ImportReplenishmentRules(\n $input: ImportReplenishmentRulesInput!\n $idempotencyKey: String\n ) {\n importReplenishmentRules(input: $input, idempotencyKey: $idempotencyKey) {\n dryRun\n contentHash\n ignoredColumns\n totalRows\n created\n updated\n unchanged\n failed\n rows { row sku location outcome ruleId errorCode message }\n }\n }\n";
210
+ export interface ReplenishmentRulesModule {
211
+ /**
212
+ * The legal entity's reorder rules, by location then variant SKU. Pages default to 50; walking
213
+ * on with `.next()` or `for await` reaches every one. A credential restricted to locations sees
214
+ * only theirs.
215
+ */
216
+ list(options?: ReplenishmentRuleListOptions): Promise<Page<ReplenishmentRule>>;
217
+ /**
218
+ * Sets the rule of one variant at one stock location (a PUT). Refusals:
219
+ * `REPLENISHMENT_VARIANT_NOT_FOUND` and `REPLENISHMENT_LOCATION_NOT_FOUND` (404),
220
+ * `REPLENISHMENT_INVALID` (400), `LOCATION_OWNER_AMBIGUOUS` (422), `LOCATION_NOT_ALLOWED` and
221
+ * `SHARED_SELLER_NOT_ALLOWED` (403).
222
+ */
223
+ upsert(productVariantId: string, stockLocationId: string, fields: ReplenishmentRuleFields, call?: Call): Promise<ReplenishmentRule>;
224
+ /** True once removed. Refusals: `REPLENISHMENT_RULE_NOT_FOUND` (404). */
225
+ delete(id: string, call?: Call): Promise<boolean>;
226
+ /**
227
+ * Sets reorder rules from a CSV file (purchase-orders D100), each row the whole rule of a
228
+ * variant at a stock location, through the same rules as `upsert`. Every row is answered
229
+ * `created`, `updated`, `unchanged` or `failed` with its code (`REPLENISHMENT_VARIANT_NOT_FOUND`,
230
+ * `REPLENISHMENT_LOCATION_NOT_FOUND`, `REPLENISHMENT_INVALID`, `LOCATION_OWNER_AMBIGUOUS`,
231
+ * `LOCATION_NOT_ALLOWED`); a failed row fails alone. Importing the same file again answers every
232
+ * row `unchanged` and writes nothing. Refusals of the whole file: `REPLENISHMENT_INVALID` (400:
233
+ * not CSV, no `sku` or `location` column, a column twice, no rows, more than 5000 rows).
234
+ */
235
+ import(input: ReplenishmentRuleImportInput, call?: Call): Promise<ReplenishmentRuleImportResult>;
236
+ }
237
+ export interface ReplenishmentSuggestionsModule {
238
+ /**
239
+ * The legal entity's reorder suggestions from its last compute, grouped by supplier (the
240
+ * "Choose supplier" group last) then location. Dismissed ones are left out unless
241
+ * `includeDismissed`. Pages default to 50.
242
+ */
243
+ list(options?: ReplenishmentSuggestionListOptions): Promise<Page<ReplenishmentSuggestion>>;
244
+ /** Computes the suggestions now, replacing the last compute's (the nightly run does the same). */
245
+ compute(call?: Call): Promise<ReplenishmentComputeResult>;
246
+ /**
247
+ * Dismisses a suggestion through a day (`YYYY-MM-DD` in the legal entity's zone, today to a year
248
+ * ahead); later computes keep it. `null` undoes it. Refusals: `REPLENISHMENT_SUGGESTION_NOT_FOUND`
249
+ * (404), `REPLENISHMENT_INVALID` (400).
250
+ */
251
+ dismiss(id: string, until: string | null, call?: Call): Promise<ReplenishmentSuggestion>;
252
+ /**
253
+ * Raises draft purchase orders from suggestions (purchase-orders D101): one per supplier and
254
+ * stock location of the active store, each line the suggestion's purchase quantity (or the one
255
+ * given) in its supplier item's unit, priced from the item's price break for that quantity in
256
+ * the supplier's currency (unpriced when no break applies). The drafts stay drafts; the
257
+ * suggestions now show the quantities as `inDraft`. Needs `CreatePurchaseOrder`.
258
+ *
259
+ * Without `idempotencyKey` the selection itself is the key: sending the same suggestions with
260
+ * the same quantities again (in any order) answers the same drafts instead of raising more, for
261
+ * 24 hours or until the next compute, even when those drafts were cancelled since; a refused
262
+ * selection is not kept (fix the cause and send it again). To raise a selection again on
263
+ * purpose, send a key of your own per attempt.
264
+ *
265
+ * Refusals: `REPLENISHMENT_SUGGESTION_NOT_FOUND` (404: a compute replaced it; list again),
266
+ * `REPLENISHMENT_INVALID` (400: a suggestion in the Choose supplier group, no lines, more than
267
+ * 500, a quantity out of range), `LOCATION_NOT_IN_CHANNEL` (400: a location the active store
268
+ * does not hold; draft it from a store that does), `LOCATION_NOT_ALLOWED` and
269
+ * `SHARED_SELLER_NOT_ALLOWED` (403), `SUPPLIER_ARCHIVED` (422).
270
+ */
271
+ createDrafts(lines: ReplenishmentDraftLine[], call?: Call): Promise<ReplenishmentDrafts>;
272
+ }
273
+ /**
274
+ * `admin.purchasing.replenishment`: the legal entity's reorder rules (with the CSV import) and
275
+ * its reorder suggestions (with the draft purchase orders they raise).
276
+ */
277
+ export interface PurchasingReplenishmentModule {
278
+ rules: ReplenishmentRulesModule;
279
+ suggestions: ReplenishmentSuggestionsModule;
280
+ }
281
+ export declare function createPurchasingReplenishmentModule(transport: Transport): PurchasingReplenishmentModule;