@sixtyninecommerce/admin 0.10.0 → 0.11.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 (247) hide show
  1. package/README.md +4347 -171
  2. package/dist/catalog/assets.d.ts +120 -8
  3. package/dist/catalog/assets.js +98 -12
  4. package/dist/catalog/collections.d.ts +279 -14
  5. package/dist/catalog/collections.js +246 -15
  6. package/dist/catalog/index.d.ts +9 -2
  7. package/dist/catalog/index.js +4 -0
  8. package/dist/catalog/products.d.ts +159 -19
  9. package/dist/catalog/products.js +88 -13
  10. package/dist/catalog/properties.d.ts +102 -14
  11. package/dist/catalog/properties.js +13 -0
  12. package/dist/catalog/recommendations.d.ts +261 -0
  13. package/dist/catalog/recommendations.js +145 -0
  14. package/dist/catalog/reviews.d.ts +368 -0
  15. package/dist/catalog/reviews.js +318 -0
  16. package/dist/catalog/types.d.ts +17 -1
  17. package/dist/catalog/types.js +10 -0
  18. package/dist/catalog/variant-find.d.ts +136 -0
  19. package/dist/catalog/variant-find.js +239 -0
  20. package/dist/catalog/variants.d.ts +233 -26
  21. package/dist/catalog/variants.js +125 -7
  22. package/dist/catalog/visibility.d.ts +20 -5
  23. package/dist/catalog/visibility.js +19 -1
  24. package/dist/client.d.ts +95 -9
  25. package/dist/client.js +35 -7
  26. package/dist/content/assets.d.ts +286 -0
  27. package/dist/content/assets.js +181 -0
  28. package/dist/content/items.d.ts +269 -0
  29. package/dist/content/items.js +170 -0
  30. package/dist/content/types.d.ts +282 -0
  31. package/dist/content/types.js +100 -0
  32. package/dist/customers/age-verification.d.ts +66 -0
  33. package/dist/customers/age-verification.js +79 -0
  34. package/dist/customers/credit.d.ts +263 -0
  35. package/dist/customers/credit.js +244 -0
  36. package/dist/customers/delivery-preferences.d.ts +120 -0
  37. package/dist/customers/delivery-preferences.js +97 -0
  38. package/dist/customers/groups.d.ts +207 -0
  39. package/dist/customers/groups.js +438 -0
  40. package/dist/customers/index.d.ts +447 -37
  41. package/dist/customers/index.js +313 -40
  42. package/dist/customers/invitation-status.d.ts +57 -0
  43. package/dist/customers/invitation-status.js +21 -0
  44. package/dist/customers/notes.d.ts +67 -0
  45. package/dist/customers/notes.js +51 -0
  46. package/dist/customers/notification-recipients.d.ts +97 -0
  47. package/dist/customers/notification-recipients.js +84 -0
  48. package/dist/customers/saved-lists.d.ts +42 -0
  49. package/dist/customers/saved-lists.js +61 -0
  50. package/dist/customers/vat.d.ts +83 -0
  51. package/dist/customers/vat.js +46 -0
  52. package/dist/customers/wire.d.ts +20 -0
  53. package/dist/customers/wire.js +35 -0
  54. package/dist/documents/ar.d.ts +307 -0
  55. package/dist/documents/ar.js +254 -0
  56. package/dist/documents/index.d.ts +731 -21
  57. package/dist/documents/index.js +436 -24
  58. package/dist/documents/pdf.d.ts +2 -0
  59. package/dist/documents/pdf.js +11 -0
  60. package/dist/fulfillments/create.d.ts +167 -0
  61. package/dist/fulfillments/create.js +216 -0
  62. package/dist/fulfillments/index.d.ts +44 -10
  63. package/dist/fulfillments/index.js +11 -2
  64. package/dist/fulfillments/payment-policy.d.ts +64 -0
  65. package/dist/fulfillments/payment-policy.js +140 -0
  66. package/dist/fulfillments/warehouse.d.ts +724 -0
  67. package/dist/fulfillments/warehouse.js +914 -0
  68. package/dist/geo/index.d.ts +119 -0
  69. package/dist/geo/index.js +107 -0
  70. package/dist/index.d.ts +123 -35
  71. package/dist/index.js +45 -12
  72. package/dist/integrations/afas-actions.d.ts +234 -0
  73. package/dist/integrations/afas-actions.js +310 -0
  74. package/dist/integrations/afas-types.d.ts +483 -0
  75. package/dist/integrations/afas-types.js +5 -0
  76. package/dist/integrations/afas.d.ts +234 -0
  77. package/dist/integrations/afas.js +290 -0
  78. package/dist/integrations/connections.d.ts +103 -0
  79. package/dist/integrations/connections.js +55 -0
  80. package/dist/integrations/esp.d.ts +313 -0
  81. package/dist/integrations/esp.js +169 -0
  82. package/dist/integrations/exact-online-types.d.ts +423 -0
  83. package/dist/integrations/exact-online-types.js +6 -0
  84. package/dist/integrations/exact-online.d.ts +248 -0
  85. package/dist/integrations/exact-online.js +376 -0
  86. package/dist/integrations/index.d.ts +29 -3
  87. package/dist/integrations/index.js +18 -3
  88. package/dist/integrations/pipeline-keys.d.ts +13 -0
  89. package/dist/integrations/pipeline-keys.js +22 -0
  90. package/dist/integrations/pipelines.d.ts +15 -14
  91. package/dist/integrations/pipelines.js +6 -22
  92. package/dist/integrations/types.d.ts +146 -0
  93. package/dist/locations/index.d.ts +66 -0
  94. package/dist/locations/index.js +31 -0
  95. package/dist/meta/index.d.ts +162 -0
  96. package/dist/orders/cancel-with-money.d.ts +227 -0
  97. package/dist/orders/cancel-with-money.js +153 -0
  98. package/dist/orders/commit-edit.d.ts +7 -1
  99. package/dist/orders/commit-edit.js +5 -1
  100. package/dist/orders/drafts.d.ts +800 -0
  101. package/dist/orders/drafts.js +771 -0
  102. package/dist/orders/fields.d.ts +245 -0
  103. package/dist/orders/fields.js +188 -0
  104. package/dist/orders/get.d.ts +29 -19
  105. package/dist/orders/get.js +17 -8
  106. package/dist/orders/index.d.ts +49 -9
  107. package/dist/orders/index.js +22 -2
  108. package/dist/orders/lifecycle.d.ts +128 -0
  109. package/dist/orders/lifecycle.js +158 -0
  110. package/dist/orders/line-price-preview.d.ts +7 -2
  111. package/dist/orders/list.d.ts +222 -0
  112. package/dist/orders/list.js +377 -0
  113. package/dist/orders/manual-pricing.d.ts +5 -0
  114. package/dist/orders/order-entry.d.ts +20 -7
  115. package/dist/orders/plan-edit.d.ts +1 -1
  116. package/dist/orders/plan-edit.js +4 -1
  117. package/dist/orders/settings.d.ts +201 -0
  118. package/dist/orders/settings.js +325 -0
  119. package/dist/orders/status.d.ts +159 -13
  120. package/dist/orders/status.js +21 -0
  121. package/dist/orders/surcharges.d.ts +8 -1
  122. package/dist/orders/surcharges.js +3 -2
  123. package/dist/payments/account-credit.d.ts +30 -0
  124. package/dist/payments/account-credit.js +19 -0
  125. package/dist/payments/ar.d.ts +292 -0
  126. package/dist/payments/ar.js +223 -0
  127. package/dist/payments/connected-account.d.ts +47 -0
  128. package/dist/payments/connected-account.js +61 -0
  129. package/dist/payments/credit-noted-fields.d.ts +12 -0
  130. package/dist/payments/credit-noted-fields.js +37 -0
  131. package/dist/payments/index.d.ts +257 -11
  132. package/dist/payments/index.js +131 -1
  133. package/dist/payments/methods.d.ts +303 -8
  134. package/dist/payments/methods.js +337 -7
  135. package/dist/payments/mollie-methods.d.ts +159 -0
  136. package/dist/payments/mollie-methods.js +141 -0
  137. package/dist/payments/payment-links.d.ts +180 -0
  138. package/dist/payments/payment-links.js +97 -0
  139. package/dist/payments/provider-keys.d.ts +150 -0
  140. package/dist/payments/provider-keys.js +118 -0
  141. package/dist/payments/providers.d.ts +86 -11
  142. package/dist/payments/providers.js +29 -0
  143. package/dist/payments/requests.d.ts +144 -0
  144. package/dist/payments/requests.js +92 -0
  145. package/dist/payments/store-credit-fields.d.ts +15 -0
  146. package/dist/payments/store-credit-fields.js +51 -0
  147. package/dist/pickups/index.d.ts +104 -0
  148. package/dist/pickups/index.js +105 -0
  149. package/dist/platform/channels.d.ts +132 -0
  150. package/dist/platform/channels.js +128 -0
  151. package/dist/platform/geo.d.ts +123 -0
  152. package/dist/platform/geo.js +144 -0
  153. package/dist/platform/tax.d.ts +154 -0
  154. package/dist/platform/tax.js +139 -0
  155. package/dist/pos/anomalies.d.ts +158 -0
  156. package/dist/pos/anomalies.js +64 -0
  157. package/dist/pos/assisted-selling.d.ts +79 -0
  158. package/dist/pos/assisted-selling.js +38 -0
  159. package/dist/pos/exchanges.d.ts +103 -0
  160. package/dist/pos/exchanges.js +22 -0
  161. package/dist/pos/gift-cards.d.ts +135 -0
  162. package/dist/pos/gift-cards.js +47 -0
  163. package/dist/pos/index.d.ts +2125 -32
  164. package/dist/pos/index.js +742 -4
  165. package/dist/pos/no-receipt.d.ts +94 -0
  166. package/dist/pos/no-receipt.js +25 -0
  167. package/dist/pos/offline-sales.d.ts +187 -0
  168. package/dist/pos/offline-sales.js +116 -0
  169. package/dist/pos/pay-by-link.d.ts +143 -0
  170. package/dist/pos/pay-by-link.js +57 -0
  171. package/dist/pos/quick-keys.d.ts +103 -0
  172. package/dist/pos/quick-keys.js +45 -0
  173. package/dist/pos/reports.d.ts +360 -0
  174. package/dist/pos/reports.js +62 -0
  175. package/dist/pos/returns.d.ts +217 -0
  176. package/dist/pos/returns.js +53 -0
  177. package/dist/pricing/bulk-coupons.d.ts +139 -0
  178. package/dist/pricing/bulk-coupons.js +112 -0
  179. package/dist/pricing/index.d.ts +174 -4
  180. package/dist/pricing/index.js +174 -1
  181. package/dist/pricing/price-lists.d.ts +604 -0
  182. package/dist/pricing/price-lists.js +600 -0
  183. package/dist/purchasing/alerts.d.ts +89 -0
  184. package/dist/purchasing/alerts.js +62 -0
  185. package/dist/purchasing/cost.d.ts +110 -0
  186. package/dist/purchasing/cost.js +86 -0
  187. package/dist/purchasing/index.d.ts +36 -0
  188. package/dist/purchasing/index.js +16 -0
  189. package/dist/purchasing/purchase-orders.d.ts +548 -0
  190. package/dist/purchasing/purchase-orders.js +491 -0
  191. package/dist/purchasing/replenishment.d.ts +281 -0
  192. package/dist/purchasing/replenishment.js +240 -0
  193. package/dist/purchasing/settings.d.ts +152 -0
  194. package/dist/purchasing/settings.js +181 -0
  195. package/dist/purchasing/suppliers.d.ts +476 -0
  196. package/dist/purchasing/suppliers.js +438 -0
  197. package/dist/quotes/index.d.ts +501 -0
  198. package/dist/quotes/index.js +439 -0
  199. package/dist/reports/index.d.ts +71 -8
  200. package/dist/reports/index.js +74 -11
  201. package/dist/returns/index.d.ts +614 -21
  202. package/dist/returns/index.js +695 -11
  203. package/dist/search/index.d.ts +76 -1
  204. package/dist/search/index.js +63 -0
  205. package/dist/shipping/definitions.d.ts +29 -0
  206. package/dist/shipping/definitions.js +47 -0
  207. package/dist/shipping/fulfillment-profiles.d.ts +174 -0
  208. package/dist/shipping/fulfillment-profiles.js +104 -0
  209. package/dist/shipping/hendriks.d.ts +97 -0
  210. package/dist/shipping/hendriks.js +50 -0
  211. package/dist/shipping/index.d.ts +48 -0
  212. package/dist/shipping/index.js +25 -0
  213. package/dist/shipping/methods.d.ts +198 -0
  214. package/dist/shipping/methods.js +240 -0
  215. package/dist/shipping/myparcel.d.ts +254 -0
  216. package/dist/shipping/myparcel.js +178 -0
  217. package/dist/shipping/parcel-count-suggestion.d.ts +2 -0
  218. package/dist/shipping/parcel-rule.d.ts +6 -5
  219. package/dist/shipping/parcel-rule.js +21 -23
  220. package/dist/shipping/rate-tables.d.ts +179 -0
  221. package/dist/shipping/rate-tables.js +184 -0
  222. package/dist/stock/index.d.ts +10 -3
  223. package/dist/stock/index.js +3 -0
  224. package/dist/stock/locations.d.ts +144 -0
  225. package/dist/stock/locations.js +168 -0
  226. package/dist/stock/transfers.d.ts +216 -43
  227. package/dist/stock/transfers.js +140 -13
  228. package/dist/stored-value/index.d.ts +214 -4
  229. package/dist/stored-value/index.js +152 -0
  230. package/dist/subscriptions/index.d.ts +682 -0
  231. package/dist/subscriptions/index.js +815 -0
  232. package/dist/tax/index.d.ts +76 -1
  233. package/dist/tax/index.js +50 -0
  234. package/dist/tenant/email-style.d.ts +102 -0
  235. package/dist/tenant/email-style.js +72 -0
  236. package/dist/tenant/email-templates.d.ts +66 -0
  237. package/dist/tenant/email-templates.js +54 -0
  238. package/dist/tenant/notifications.d.ts +23 -17
  239. package/dist/tenant/settings-sources.d.ts +1 -1
  240. package/dist/tenant/time-zone.d.ts +17 -0
  241. package/dist/tenant/time-zone.js +11 -0
  242. package/dist/types.d.ts +50 -3
  243. package/dist/users/index.d.ts +3 -0
  244. package/dist/users/index.js +2 -0
  245. package/dist/users/warehouses.d.ts +50 -0
  246. package/dist/users/warehouses.js +51 -0
  247. package/package.json +2 -2
@@ -0,0 +1,548 @@
1
+ import { type Page, type Transport } from '@sixtyninecommerce/core';
2
+ import type { Call, ListOptions } from '../types.js';
3
+ /**
4
+ * A purchase order's status (purchase-orders spec §7.3). The transitions are served by the meta
5
+ * catalog (`admin.meta.catalog()` → `transitions.purchase_order`). A string on the wire: more
6
+ * values may come.
7
+ */
8
+ export type PurchaseOrderStatus = 'draft' | 'pending_approval' | 'approved' | 'sent' | 'handed_off' | 'closed' | 'cancelled' | (string & {});
9
+ /**
10
+ * How far the supplier confirmed a purchase order (spec §7.3), derived from its lines:
11
+ * `confirmed` when every line still ordering anything is confirmed in full, `unconfirmed` when
12
+ * none is, `partial` between. A string on the wire: more values may come.
13
+ */
14
+ export type PurchaseOrderConfirmation = 'unconfirmed' | 'partial' | 'confirmed' | (string & {});
15
+ /** The supplier a purchase order is raised to, as it is now. */
16
+ export interface PurchaseOrderSupplier {
17
+ id: string;
18
+ code: string;
19
+ name: string;
20
+ status: 'active' | 'archived' | (string & {});
21
+ }
22
+ /** The stock location a purchase order delivers to. */
23
+ export interface PurchaseOrderLocation {
24
+ id: string;
25
+ name: string;
26
+ }
27
+ /**
28
+ * One line of a purchase order: a variant in purchase units. `sku` and `name` are snapshots
29
+ * taken when the line was added. Amounts are minor units of the order's currency, net of VAT.
30
+ */
31
+ export interface PurchaseOrderLine {
32
+ id: string;
33
+ purchaseOrderId: string;
34
+ /** 1-based order on the document; a removed line leaves a gap. */
35
+ position: number;
36
+ productVariantId: string;
37
+ /** The supplier item the line buys from; null for an off-catalog line. */
38
+ supplierItemId: string | null;
39
+ sku: string;
40
+ name: string;
41
+ supplierSku: string | null;
42
+ /** The unit the supplier sells in (a carton); null for the base unit. */
43
+ purchaseUnitLabel: string | null;
44
+ /** Base (stock) units per purchase unit. */
45
+ purchaseUnitFactor: number;
46
+ /** In purchase units. */
47
+ orderedQuantity: number;
48
+ /** In base units: `orderedQuantity × purchaseUnitFactor`. */
49
+ orderedBaseQuantity: number;
50
+ cancelledBaseQuantity: number;
51
+ receivedBaseQuantity: number;
52
+ returnedForReplacementBaseQuantity: number;
53
+ /** Per purchase unit; null until the line is priced. */
54
+ unitPrice: number | null;
55
+ /** Basis points (100 = 1%). */
56
+ discountBps: number;
57
+ /** `catalog` or `manual`; null while the line has no price. */
58
+ priceSource: 'catalog' | 'manual' | (string & {}) | null;
59
+ /** Informational VAT in basis points; null when none applies here (import VAT, unknown). */
60
+ vatRateBps: number | null;
61
+ /** Net: quantity × unit price less the discount, rounded once; null while unpriced. */
62
+ lineTotal: number | null;
63
+ /** `YYYY-MM-DD` in the destination location's time zone. */
64
+ requestedOn: string | null;
65
+ /** Base units the supplier confirmed (`confirm`); null until it confirms the line. */
66
+ confirmedBaseQuantity: number | null;
67
+ /** The day the supplier confirmed, `YYYY-MM-DD` in the destination location's time zone. */
68
+ confirmedOn: string | null;
69
+ /** ISO-8601 UTC: when the line's confirmation was last recorded. */
70
+ confirmedAt: string | null;
71
+ externalLineId: string | null;
72
+ createdAt: string;
73
+ updatedAt: string;
74
+ }
75
+ /** One move of a purchase order's status, oldest first. */
76
+ export interface PurchaseOrderStatusEntry {
77
+ id: string;
78
+ /** Null on the entry that records the order's creation. */
79
+ fromStatus: PurchaseOrderStatus | null;
80
+ status: PurchaseOrderStatus;
81
+ /** Who made the move: `<kind>:<id>` (`user:…`, `api_token:…`). */
82
+ actorRef: string | null;
83
+ /** Staff's reason: a rejection's (always), a cancellation's. */
84
+ reason: string | null;
85
+ /** The facts the move was decided on: a submit's total, threshold and exchange rate. */
86
+ metadata: Record<string, unknown> | null;
87
+ /** ISO-8601 UTC. */
88
+ createdAt: string;
89
+ }
90
+ /** How a purchase order reaches its supplier (D74): emailed by the platform, or by staff. */
91
+ export type PurchaseOrderSendVia = 'email' | 'manual';
92
+ /**
93
+ * A numbered revision of a purchase order (purchase-orders spec §8.4.4). Revision 0 is the
94
+ * original as first sent; each later one is a change set of the sent order.
95
+ */
96
+ export interface PurchaseOrderRevision {
97
+ id: string;
98
+ /** The number the order carries once it is applied; 0 is the original. */
99
+ revision: number;
100
+ state: 'staged' | 'pending_approval' | 'applied' | 'discarded' | (string & {});
101
+ /**
102
+ * The change set: `header` (each field `{ from, to }`), `lines.added` / `changed` / `removed`,
103
+ * `totalBefore`, the `approval` it was decided on, and `approved` / `discarded` (who, when).
104
+ * Empty for revision 0.
105
+ */
106
+ diff: Record<string, unknown>;
107
+ /** Net, minor units of the order's currency, once applied. */
108
+ totalAfter: number | null;
109
+ createdByRef: string | null;
110
+ /** ISO-8601 UTC. */
111
+ createdAt: string;
112
+ appliedAt: string | null;
113
+ /** When its document went to the supplier; null until sent. */
114
+ sentAt: string | null;
115
+ sentVia: PurchaseOrderSendVia | (string & {}) | null;
116
+ }
117
+ /** A five-minute link to a purchase order's PDF. */
118
+ export interface PurchaseOrderDocumentUrl {
119
+ url: string;
120
+ /** ISO-8601 UTC. */
121
+ expiresAt: string;
122
+ filename: string;
123
+ /** The revision the document shows. */
124
+ revision: number;
125
+ }
126
+ /**
127
+ * A purchase order of the active store's PURCHASING SCOPE (purchase-orders spec §7.1): its legal
128
+ * entity, shared by every store of that entity, or a sandbox store's own scope. Cancelled, never
129
+ * deleted.
130
+ */
131
+ export interface PurchaseOrder {
132
+ id: string;
133
+ /** The legal entity's id, or `sandbox:<channelId>` for a sandbox store. */
134
+ scopeId: string;
135
+ /** The legal entity (Seller) id; null for a sandbox store's own scope. */
136
+ legalEntityId: string | null;
137
+ /** The store that raised it; its `purchase_order.*` events are filed under it. */
138
+ originChannelId: string;
139
+ /** The purchase-order number, unique in the legal entity (`PO-2026-0001`). */
140
+ code: string;
141
+ /** `standard` or `drop_ship`. */
142
+ kind: 'standard' | 'drop_ship' | (string & {});
143
+ status: PurchaseOrderStatus;
144
+ supplierId: string;
145
+ /** The supplier as it is now. */
146
+ supplier: PurchaseOrderSupplier | null;
147
+ destinationStockLocationId: string | null;
148
+ /** The destination as it is now; null for a drop-ship order or a location since removed. */
149
+ destinationStockLocation: PurchaseOrderLocation | null;
150
+ /** ISO 4217: what the supplier is paid in; the unit prices are stated in it. */
151
+ currencyCode: string;
152
+ /** Applied revisions; 0 for the original. */
153
+ revision: number;
154
+ approvedRevision: number | null;
155
+ /** The net total last approved, minor units; null until approved. */
156
+ approvedAmount: number | null;
157
+ /** `YYYY-MM-DD` in the destination location's time zone. */
158
+ requestedDeliveryOn: string | null;
159
+ supplierReference: string | null;
160
+ /** Printed on the purchase order the supplier receives. */
161
+ notesToSupplier: string | null;
162
+ /** Staff only; never sent to the supplier. */
163
+ internalNotes: string | null;
164
+ /** The purchasing provider that manages it; null in Standalone mode. */
165
+ managedBy: string | null;
166
+ externalId: string | null;
167
+ externalNumber: string | null;
168
+ externalApprovalStatus: string | null;
169
+ sentAt: string | null;
170
+ closedAt: string | null;
171
+ closeReason: string | null;
172
+ /** Who raised it: `<kind>:<id>`. */
173
+ createdByRef: string | null;
174
+ /** Net, minor units: the sum of the priced lines. */
175
+ total: number;
176
+ lineCount: number;
177
+ /** How far the supplier confirmed it. */
178
+ confirmation: PurchaseOrderConfirmation;
179
+ lines: PurchaseOrderLine[];
180
+ /** Every move of its status, oldest first. */
181
+ statusHistory: PurchaseOrderStatusEntry[];
182
+ /** Its revisions, oldest first (empty in a list page: read one with `get`). */
183
+ revisions: PurchaseOrderRevision[];
184
+ /** ISO-8601 UTC. */
185
+ createdAt: string;
186
+ updatedAt: string;
187
+ }
188
+ /** A line to add. The quantity is in purchase units. */
189
+ export interface PurchaseOrderLineInput {
190
+ productVariantId: string;
191
+ /** 1 to 1,000,000 purchase units. */
192
+ orderedQuantity: number;
193
+ /**
194
+ * Minor units per purchase unit (`priceSource: 'manual'`). Left out: the supplier catalogue's
195
+ * price applies when it has one, else the line starts unpriced and must be priced before submit.
196
+ */
197
+ unitPrice?: number;
198
+ /** 0 to 10,000 basis points; 0 when left out. */
199
+ discountBps?: number;
200
+ /** `YYYY-MM-DD`. */
201
+ requestedOn?: string;
202
+ }
203
+ export interface PurchaseOrderHeaderFields {
204
+ /** `YYYY-MM-DD` in the destination location's time zone; `null` clears it. */
205
+ requestedDeliveryOn?: string | null;
206
+ /** At most 255 characters; `null` clears it. */
207
+ supplierReference?: string | null;
208
+ /** At most 5000 characters; `null` clears it. */
209
+ notesToSupplier?: string | null;
210
+ /** At most 5000 characters; `null` clears it. */
211
+ internalNotes?: string | null;
212
+ }
213
+ export interface CreatePurchaseOrderInput extends PurchaseOrderHeaderFields {
214
+ /** An active supplier of the purchasing scope. */
215
+ supplierId: string;
216
+ /**
217
+ * A stock location of this store owned by its legal entity. Left out: the call's
218
+ * `tenant.location` (`x-location`), else the store's only stock location.
219
+ */
220
+ destinationStockLocationId?: string;
221
+ /** Defaults to the supplier's currency. Fixed once created. */
222
+ currencyCode?: string;
223
+ /** At most 100 lines in one call, 500 on one order. */
224
+ lines?: PurchaseOrderLineInput[];
225
+ }
226
+ /** A PATCH of a draft's header. The supplier and the currency are fixed when it is created. */
227
+ export interface UpdatePurchaseOrderInput extends PurchaseOrderHeaderFields {
228
+ destinationStockLocationId?: string;
229
+ }
230
+ /** A PATCH of a draft's line. `unitPrice: null` takes the price away again. */
231
+ export interface UpdatePurchaseOrderLineInput {
232
+ orderedQuantity?: number;
233
+ unitPrice?: number | null;
234
+ discountBps?: number;
235
+ requestedOn?: string | null;
236
+ }
237
+ export interface PurchaseOrderListOptions extends ListOptions {
238
+ /** Any of these statuses; every status when left out. */
239
+ statuses?: PurchaseOrderStatus[];
240
+ supplierId?: string;
241
+ destinationStockLocationId?: string;
242
+ /** Matches the number or the supplier's reference, case-insensitively, as typed. */
243
+ term?: string;
244
+ }
245
+ /** A cancellation, with the staff's reason kept in the order's status history. */
246
+ export interface PurchaseOrderCancelOptions extends Call {
247
+ reason?: string;
248
+ /**
249
+ * `true` emails a SENT order's supplier the cancellation ("Purchase Order Cancelled", to the
250
+ * order contact, else the order email); left out or `false`, nothing is emailed (tell the
251
+ * supplier yourself). A draft or an approved order never reached the supplier, so nothing is
252
+ * emailed for it either way. Needs an engine with purchase-order cancellation emails when given.
253
+ */
254
+ notifySupplier?: boolean;
255
+ }
256
+ /** A reopen or a revision's discard, with the staff's optional reason. */
257
+ export interface PurchaseOrderReasonOptions extends Call {
258
+ reason?: string;
259
+ }
260
+ /** Which revision's document (`document`); the latest sent one when left out. */
261
+ export interface PurchaseOrderDocumentOptions extends Call {
262
+ revision?: number;
263
+ }
264
+ /**
265
+ * A revision of a SENT purchase order (spec §8.4.4), as one change set. A field left out is kept.
266
+ * The supplier, the currency and staff's own fields (`supplierReference`, `internalNotes`) are not
267
+ * revised.
268
+ */
269
+ export interface PurchaseOrderRevisionInput {
270
+ destinationStockLocationId?: string;
271
+ /** `YYYY-MM-DD`; `null` clears it. */
272
+ requestedDeliveryOn?: string | null;
273
+ /** `null` clears it. */
274
+ notesToSupplier?: string | null;
275
+ /** New lines; each must state its `unitPrice` (a sent order has no unpriced line). */
276
+ addLines?: PurchaseOrderLineInput[];
277
+ /** A PATCH per line, by its id; `unitPrice` may not be cleared. */
278
+ updateLines?: Array<UpdatePurchaseOrderLineInput & {
279
+ id: string;
280
+ }>;
281
+ /** Lines to take off the order (refused for a line with receipts). */
282
+ removeLineIds?: string[];
283
+ }
284
+ /** One line of a supplier's confirmation (spec §8.5). */
285
+ export interface PurchaseOrderLineConfirmationInput {
286
+ lineId: string;
287
+ /**
288
+ * Base units the supplier confirmed, 0 included (it cannot deliver it now), at most what the
289
+ * line still orders; `null` withdraws the line's confirmation.
290
+ */
291
+ confirmedBaseQuantity: number | null;
292
+ /** `YYYY-MM-DD`; left out: the supplier gave no day. */
293
+ confirmedOn?: string | null;
294
+ }
295
+ /**
296
+ * A supplier's confirmation of a SENT order. A line named is confirmed whole (its quantity and day
297
+ * replace what it had); a line not named keeps its confirmation.
298
+ */
299
+ export interface PurchaseOrderConfirmationInput {
300
+ /** The supplier's own reference (its order number), at most 255 characters; `null` clears it. */
301
+ supplierReference?: string | null;
302
+ lines?: PurchaseOrderLineConfirmationInput[];
303
+ }
304
+ /** A line import (`lines.import`): `dryRun` answers what it would do and writes nothing. */
305
+ export interface PurchaseOrderLineImportOptions extends Call {
306
+ dryRun?: boolean;
307
+ }
308
+ /** What one row of a line import did. */
309
+ export interface PurchaseOrderLineImportRow {
310
+ /** The row's line in the file (the header is line 1). */
311
+ row: number;
312
+ sku: string | null;
313
+ supplierSku: string | null;
314
+ outcome: 'created' | 'updated' | 'unchanged' | 'failed' | (string & {});
315
+ /** The line the row created or matched; null for a failed row, and a created one on a dry run. */
316
+ lineId: string | null;
317
+ /** Why the row failed: `PURCHASE_ORDER_INVALID`, `PURCHASING_VARIANT_NOT_FOUND`. */
318
+ errorCode: string | null;
319
+ message: string | null;
320
+ }
321
+ /** What a line import did, row by row, and the order after it. */
322
+ export interface PurchaseOrderLineImportResult {
323
+ dryRun: boolean;
324
+ /** sha256 of the file as read: the same file imported again changes nothing. */
325
+ contentHash: string;
326
+ /** Header cells the import does not know, as the file spells them. */
327
+ ignoredColumns: string[];
328
+ totalRows: number;
329
+ created: number;
330
+ updated: number;
331
+ unchanged: number;
332
+ failed: number;
333
+ rows: PurchaseOrderLineImportRow[];
334
+ purchaseOrder: PurchaseOrder;
335
+ }
336
+ /** A call that must carry its idempotency key (spec §10.1: `approve` requires one). */
337
+ export type PurchaseOrderKeyedCall = Call & {
338
+ idempotencyKey: string;
339
+ };
340
+ export declare const PURCHASE_ORDER_LINE_FIELDS = "\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";
341
+ /**
342
+ * The header and lines, without the status history, which the engine reads per order: what the
343
+ * list selects, so a page stays one round of reads.
344
+ */
345
+ export declare const PURCHASE_ORDER_SUMMARY_FIELDS = "\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";
346
+ /**
347
+ * A whole purchase order, its status history and revisions included: what `get` and every write
348
+ * answer.
349
+ */
350
+ export declare const PURCHASE_ORDER_FIELDS = "\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";
351
+ export declare const PURCHASE_ORDERS_QUERY = "\n query PurchaseOrders($options: PurchaseOrderListOptions) {\n purchaseOrders(options: $options) {\n totalItems\n items { \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 }\n }\n";
352
+ export declare const PURCHASE_ORDER_QUERY = "\n query PurchaseOrder($id: ID!) {\n purchaseOrder(id: $id) { \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";
353
+ export declare const CREATE_PURCHASE_ORDER_MUTATION = "\n mutation CreatePurchaseOrder($input: CreatePurchaseOrderInput!, $idempotencyKey: String) {\n createPurchaseOrder(input: $input, idempotencyKey: $idempotencyKey) {\n \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";
354
+ export declare const UPDATE_PURCHASE_ORDER_MUTATION = "\n mutation UpdatePurchaseOrder($input: UpdatePurchaseOrderInput!, $idempotencyKey: String) {\n updatePurchaseOrder(input: $input, idempotencyKey: $idempotencyKey) {\n \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";
355
+ export declare const ADD_PURCHASE_ORDER_LINES_MUTATION = "\n mutation AddPurchaseOrderLines(\n $purchaseOrderId: ID!\n $lines: [PurchaseOrderLineInput!]!\n $idempotencyKey: String\n ) {\n addPurchaseOrderLines(\n purchaseOrderId: $purchaseOrderId\n lines: $lines\n idempotencyKey: $idempotencyKey\n ) {\n \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";
356
+ export declare const UPDATE_PURCHASE_ORDER_LINE_MUTATION = "\n mutation UpdatePurchaseOrderLine(\n $input: UpdatePurchaseOrderLineInput!\n $idempotencyKey: String\n ) {\n updatePurchaseOrderLine(input: $input, idempotencyKey: $idempotencyKey) {\n \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";
357
+ export declare const REMOVE_PURCHASE_ORDER_LINE_MUTATION = "\n mutation RemovePurchaseOrderLine($id: ID!, $idempotencyKey: String) {\n removePurchaseOrderLine(id: $id, idempotencyKey: $idempotencyKey) {\n \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";
358
+ export declare const SUBMIT_PURCHASE_ORDER_MUTATION = "\n mutation SubmitPurchaseOrder($id: ID!, $idempotencyKey: String) {\n submitPurchaseOrder(id: $id, idempotencyKey: $idempotencyKey) { \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";
359
+ export declare const APPROVE_PURCHASE_ORDER_MUTATION = "\n mutation ApprovePurchaseOrder($id: ID!, $idempotencyKey: String) {\n approvePurchaseOrder(id: $id, idempotencyKey: $idempotencyKey) { \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";
360
+ export declare const REJECT_PURCHASE_ORDER_MUTATION = "\n mutation RejectPurchaseOrder($id: ID!, $reason: String!, $idempotencyKey: String) {\n rejectPurchaseOrder(id: $id, reason: $reason, idempotencyKey: $idempotencyKey) {\n \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";
361
+ export declare const CANCEL_PURCHASE_ORDER_MUTATION = "\n mutation CancelPurchaseOrder($id: ID!, $reason: String, $idempotencyKey: String) {\n cancelPurchaseOrder(id: $id, reason: $reason, idempotencyKey: $idempotencyKey) {\n \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";
362
+ /**
363
+ * The cancel that states whether the supplier is emailed: sent only when `notifySupplier` is
364
+ * given, so a cancel without it still reaches an engine from before the cancellation email.
365
+ */
366
+ export declare const CANCEL_PURCHASE_ORDER_NOTIFYING_MUTATION = "\n mutation CancelPurchaseOrderNotifying(\n $id: ID!\n $reason: String\n $notifySupplier: Boolean\n $idempotencyKey: String\n ) {\n cancelPurchaseOrder(\n id: $id\n reason: $reason\n notifySupplier: $notifySupplier\n idempotencyKey: $idempotencyKey\n ) {\n \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";
367
+ export declare const SEND_PURCHASE_ORDER_MUTATION = "\n mutation SendPurchaseOrder($id: ID!, $via: String!, $idempotencyKey: String) {\n sendPurchaseOrder(id: $id, via: $via, idempotencyKey: $idempotencyKey) {\n \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";
368
+ export declare const REVISE_PURCHASE_ORDER_MUTATION = "\n mutation RevisePurchaseOrder($input: RevisePurchaseOrderInput!, $idempotencyKey: String) {\n revisePurchaseOrder(input: $input, idempotencyKey: $idempotencyKey) {\n \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";
369
+ export declare const APPROVE_PURCHASE_ORDER_REVISION_MUTATION = "\n mutation ApprovePurchaseOrderRevision($purchaseOrderId: ID!, $idempotencyKey: String) {\n approvePurchaseOrderRevision(\n purchaseOrderId: $purchaseOrderId\n idempotencyKey: $idempotencyKey\n ) {\n \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";
370
+ export declare const DISCARD_PURCHASE_ORDER_REVISION_MUTATION = "\n mutation DiscardPurchaseOrderRevision(\n $purchaseOrderId: ID!\n $reason: String\n $idempotencyKey: String\n ) {\n discardPurchaseOrderRevision(\n purchaseOrderId: $purchaseOrderId\n reason: $reason\n idempotencyKey: $idempotencyKey\n ) {\n \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";
371
+ export declare const CLOSE_PURCHASE_ORDER_MUTATION = "\n mutation ClosePurchaseOrder($id: ID!, $reason: String!, $idempotencyKey: String) {\n closePurchaseOrder(id: $id, reason: $reason, idempotencyKey: $idempotencyKey) {\n \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";
372
+ export declare const REOPEN_PURCHASE_ORDER_MUTATION = "\n mutation ReopenPurchaseOrder($id: ID!, $reason: String, $idempotencyKey: String) {\n reopenPurchaseOrder(id: $id, reason: $reason, idempotencyKey: $idempotencyKey) {\n \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";
373
+ export declare const CREATE_PURCHASE_ORDER_DOCUMENT_URL_MUTATION = "\n mutation CreatePurchaseOrderDocumentUrl($purchaseOrderId: ID!, $revision: Int) {\n createPurchaseOrderDocumentUrl(purchaseOrderId: $purchaseOrderId, revision: $revision) {\n url\n expiresAt\n filename\n revision\n }\n }\n";
374
+ export declare const CONFIRM_PURCHASE_ORDER_MUTATION = "\n mutation ConfirmPurchaseOrder($input: ConfirmPurchaseOrderInput!, $idempotencyKey: String) {\n confirmPurchaseOrder(input: $input, idempotencyKey: $idempotencyKey) {\n \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";
375
+ export declare const DUPLICATE_PURCHASE_ORDER_MUTATION = "\n mutation DuplicatePurchaseOrder($id: ID!, $idempotencyKey: String) {\n duplicatePurchaseOrder(id: $id, idempotencyKey: $idempotencyKey) { \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";
376
+ export declare const IMPORT_PURCHASE_ORDER_LINES_MUTATION = "\n mutation ImportPurchaseOrderLines(\n $input: ImportPurchaseOrderLinesInput!\n $idempotencyKey: String\n ) {\n importPurchaseOrderLines(input: $input, idempotencyKey: $idempotencyKey) {\n dryRun\n contentHash\n ignoredColumns\n totalRows\n created\n updated\n unchanged\n failed\n rows { row sku supplierSku outcome lineId errorCode message }\n purchaseOrder { \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";
377
+ /** A draft's lines. Each write needs `UpdatePurchaseOrder` on every store of the legal entity. */
378
+ export interface PurchaseOrderLinesModule {
379
+ /**
380
+ * Adds lines after the last one (at most 100 per call, 500 on an order) and answers the order.
381
+ * Refusals: `PURCHASE_ORDER_NOT_FOUND` (404), `PURCHASING_VARIANT_NOT_FOUND` (404, a variant
382
+ * not in this store), `PURCHASE_ORDER_NOT_EDITABLE` (422, not a draft),
383
+ * `PURCHASE_ORDER_INVALID` (400).
384
+ */
385
+ add(purchaseOrderId: string, lines: PurchaseOrderLineInput[], call?: Call): Promise<PurchaseOrder>;
386
+ /**
387
+ * Changes one line (a PATCH) and answers the order. Refusals: `PURCHASE_ORDER_LINE_NOT_FOUND`
388
+ * (404), `PURCHASE_ORDER_NOT_EDITABLE` (422), `PURCHASE_ORDER_INVALID` (400).
389
+ */
390
+ update(lineId: string, input: UpdatePurchaseOrderLineInput, call?: Call): Promise<PurchaseOrder>;
391
+ /**
392
+ * Removes one line and answers the order. Refusals: `PURCHASE_ORDER_LINE_NOT_FOUND` (404),
393
+ * `PURCHASE_ORDER_NOT_EDITABLE` (422).
394
+ */
395
+ remove(lineId: string, call?: Call): Promise<PurchaseOrder>;
396
+ /**
397
+ * Imports lines into a draft from CSV (spec §8.2): a header row names the columns, `sku` or
398
+ * `supplierSku` (the supplier's, through its catalog) per row, `quantity` in purchase units, and
399
+ * optionally `unitPrice` (a decimal of the order's currency per purchase unit; `12,50` reads in a
400
+ * `;` or tab file) and `requestedOn`. Each row adds the line for its variant, or changes the
401
+ * order's line for it, so the same file imported again changes nothing (every row
402
+ * `unchanged`). A bad row fails alone (`rows[].errorCode`); the rest apply. Refused whole,
403
+ * `PURCHASE_ORDER_INVALID` (400): a file that is no line list, or one taking the order past
404
+ * 500 lines; `PURCHASE_ORDER_NOT_EDITABLE` (422) for an order no longer a draft.
405
+ */
406
+ import(purchaseOrderId: string, content: string, options?: PurchaseOrderLineImportOptions): Promise<PurchaseOrderLineImportResult>;
407
+ }
408
+ /**
409
+ * A sent order's revision waiting for approval (spec §8.3). Each write answers the order.
410
+ */
411
+ export interface PurchaseOrderRevisionsModule {
412
+ /**
413
+ * Approves the revision waiting for approval and applies it; its total becomes the approved
414
+ * amount (`ApprovePurchaseOrder` on every store of the legal entity). Refusals:
415
+ * `PURCHASE_ORDER_REVISION_NOT_FOUND` (404, none waits), `LINE_BELOW_RECEIVED` (422, goods
416
+ * arrived meanwhile).
417
+ */
418
+ approve(purchaseOrderId: string, call?: Call): Promise<PurchaseOrder>;
419
+ /**
420
+ * Discards the revision waiting for approval: an approver rejecting it or staff withdrawing it
421
+ * (`UpdatePurchaseOrder` or `ApprovePurchaseOrder`). The order keeps its last applied revision.
422
+ * Refusal: `PURCHASE_ORDER_REVISION_NOT_FOUND` (404).
423
+ */
424
+ discard(purchaseOrderId: string, options?: PurchaseOrderReasonOptions): Promise<PurchaseOrder>;
425
+ }
426
+ /**
427
+ * `admin.purchasing.purchaseOrders` (purchase-orders spec §7.3, §8.2, §8.3, §10.1). Every method
428
+ * needs the Purchasing plugin on the store AND purchasing switched on for its legal entity
429
+ * (`PURCHASING_NOT_ENABLED`, 422; `PLUGIN_ACCESS_DENIED`, 403, for an ordinary caller without the
430
+ * plugin), and a store that purchases (`HUB_HAS_NO_PURCHASING`, `LEGAL_ENTITY_REQUIRED`, 422).
431
+ *
432
+ * Reads need `ReadPurchaseOrder`. The purchase orders are every store's of the legal entity, so
433
+ * every write needs its permission on EVERY store of it (`SHARED_SELLER_NOT_ALLOWED`, 403; a
434
+ * sandbox store is its own scope): `CreatePurchaseOrder` to create, `UpdatePurchaseOrder` to
435
+ * change a draft and submit it, `ApprovePurchaseOrder` to approve or reject, `DeletePurchaseOrder`
436
+ * to cancel. There is no hard delete.
437
+ *
438
+ * Every write takes `{ idempotencyKey?, tenant? }` (`approve` requires the key): a repeat under
439
+ * one key answers the first call's result, a different body under it `IDEMPOTENCY_CONFLICT`
440
+ * (409). An intent the order's status does not allow is `PURCHASE_ORDER_INVALID_TRANSITION`
441
+ * (422); `details[0]` (`field: 'status'`, `code: 'INVALID_TRANSITION'`) names the intents the
442
+ * status does allow (the meta catalog's `transitions.purchase_order` is the machine).
443
+ */
444
+ export interface PurchasingPurchaseOrdersModule {
445
+ /**
446
+ * The scope's purchase orders, newest first, without their status history (`statusHistory` is
447
+ * empty: read one with `get`). Pages default to 50; a `limit` above 100 is refused
448
+ * `PURCHASE_ORDER_INVALID` (400); walking on with `.next()` or `for await` reaches every one.
449
+ */
450
+ list(options?: PurchaseOrderListOptions): Promise<Page<PurchaseOrder>>;
451
+ /** Null when the scope has no purchase order with that id (another legal entity's included). */
452
+ get(id: string, call?: Call): Promise<PurchaseOrder | null>;
453
+ /**
454
+ * Creates a draft numbered from the scope's `purchase_order` series. Refusals:
455
+ * `SUPPLIER_NOT_FOUND` (404), `SUPPLIER_ARCHIVED` (422),
456
+ * `LOCATION_NOT_IN_CHANNEL` (400), `STOCK_LOCATION_REQUIRED` (422, several locations and none
457
+ * named), `LOCATION_NOT_ALLOWED` (403, a credential restricted away from it),
458
+ * `LOCATION_NOT_OWNED_BY_ENTITY`, `LOCATION_OWNER_AMBIGUOUS` (422),
459
+ * `PURCHASING_VARIANT_NOT_FOUND` (404), `PURCHASE_ORDER_INVALID` (400).
460
+ */
461
+ create(input: CreatePurchaseOrderInput, call?: Call): Promise<PurchaseOrder>;
462
+ /** Changes a draft's header (a PATCH). Refusals as `create`, plus `PURCHASE_ORDER_NOT_EDITABLE`. */
463
+ update(id: string, input: UpdatePurchaseOrderInput, call?: Call): Promise<PurchaseOrder>;
464
+ lines: PurchaseOrderLinesModule;
465
+ /**
466
+ * Submits a draft: with an approval threshold (`settings.approvalThreshold`) a net total above
467
+ * it, in the purchasing currency at the platform rate of the submit day, waits for an approver
468
+ * (`pending_approval`); at or below it, or with approval off, it is `approved`. Refusals:
469
+ * `PURCHASE_ORDER_INCOMPLETE` (422: no lines, or lines without a price; `details` has one entry
470
+ * per unpriced line, `field: 'lines/<lineId>'`, `code: 'UNPRICED'`),
471
+ * `FX_RATE_UNAVAILABLE` (422: no rate for a foreign currency).
472
+ */
473
+ submit(id: string, call?: Call): Promise<PurchaseOrder>;
474
+ /** Approves an order waiting for approval (`ApprovePurchaseOrder`); its creator may approve it. */
475
+ approve(id: string, call: PurchaseOrderKeyedCall): Promise<PurchaseOrder>;
476
+ /** Sends an order waiting for approval back to draft, with the reason (required). */
477
+ reject(id: string, reason: string, call?: Call): Promise<PurchaseOrder>;
478
+ /**
479
+ * Cancels a draft, an approved order, or a sent one with nothing received
480
+ * (`DeletePurchaseOrder`); it stays, with its history. A sent order with receipts is refused
481
+ * `PURCHASE_ORDER_HAS_RECEIPTS` (422): `close` it instead. With `notifySupplier: true` a sent
482
+ * order's supplier is emailed the cancellation; that email is checked before anything changes,
483
+ * as `send`'s is: `SUPPLIER_HAS_NO_ORDER_EMAIL` or `SUPPLIER_EMAIL_UNDELIVERABLE` (422,
484
+ * `details[0]` with `field: 'notifySupplier'`).
485
+ */
486
+ cancel(id: string, options?: PurchaseOrderCancelOptions): Promise<PurchaseOrder>;
487
+ /**
488
+ * Sends the order to its supplier (`UpdatePurchaseOrder`; spec §8.4.1, D74, D75). `email`: the
489
+ * platform emails the PDF to the supplier's order contact, else its order email; `manual`:
490
+ * marked sent without email, staff send the PDF themselves (`document`). An approved order
491
+ * moves to `sent`; on a sent order it sends the revision applied since the last send, or
492
+ * emails the current one again. Refusals, before anything changes:
493
+ * `SUPPLIER_HAS_NO_ORDER_EMAIL` and `SUPPLIER_EMAIL_UNDELIVERABLE` (422, by email: the store's
494
+ * "Purchase Order Sent" email is off or has no recipient), `PRIVATE_STORAGE_UNCONFIGURED`
495
+ * (422, the deployment cannot store the PDF), `PURCHASE_ORDER_INVALID_TRANSITION` (422).
496
+ * The key is required (spec §10.1).
497
+ */
498
+ send(id: string, via: PurchaseOrderSendVia, call: PurchaseOrderKeyedCall): Promise<PurchaseOrder>;
499
+ /**
500
+ * Revises a SENT order (`UpdatePurchaseOrder`; spec §8.3, §8.4.4): within the approved amount
501
+ * the revision applies at once; above it the threshold decides again (a foreign currency at the
502
+ * platform rate of the day) and above the threshold it waits (`revisions[].state
503
+ * 'pending_approval'`) for `revisions.approve`. Applied revisions reach the supplier through
504
+ * `send`. Refusals: `PURCHASE_ORDER_REVISION_PENDING` (422, one already waits),
505
+ * `LINE_BELOW_RECEIVED` (422; `details` names each line), `PURCHASE_ORDER_LINE_NOT_FOUND`
506
+ * (404), `FX_RATE_UNAVAILABLE` (422), `PURCHASE_ORDER_INVALID` (400, a revision that changes
507
+ * nothing included).
508
+ */
509
+ revise(id: string, input: PurchaseOrderRevisionInput, call?: Call): Promise<PurchaseOrder>;
510
+ revisions: PurchaseOrderRevisionsModule;
511
+ /**
512
+ * Records the supplier's confirmation of a SENT order (`UpdatePurchaseOrder`; spec §8.5): its
513
+ * reference, and per named line the base units and the day it confirmed (a re-confirmation
514
+ * replaces the line's; `confirmedBaseQuantity: null` withdraws it). Only confirmed quantities
515
+ * still to come are incoming stock; each change publishes `purchase_order.confirmed`, and a
516
+ * confirmation restating what is stored changes nothing. Refusals: `CONFIRMED_ABOVE_ORDERED`
517
+ * (422, a line confirmed above what it still orders; `details` names each),
518
+ * `PURCHASE_ORDER_LINE_NOT_FOUND` (404), `PURCHASE_ORDER_INVALID_TRANSITION` (422, not sent),
519
+ * `PURCHASE_ORDER_INVALID` (400).
520
+ */
521
+ confirm(id: string, input: PurchaseOrderConfirmationInput, call?: Call): Promise<PurchaseOrder>;
522
+ /**
523
+ * Duplicates an order, in any status, into a new draft (`CreatePurchaseOrder`): the same
524
+ * supplier, destination, currency, notes to the supplier and lines; a manual price is kept, a
525
+ * catalogue one taken again on today's break. A line whose variant the store no longer holds is
526
+ * left out (the copy's creation entry in `statusHistory` names it). Refusals:
527
+ * `PURCHASE_ORDER_NOT_FOUND` (404), `SUPPLIER_ARCHIVED` (422), the destination's location
528
+ * refusals.
529
+ */
530
+ duplicate(id: string, call?: Call): Promise<PurchaseOrder>;
531
+ /**
532
+ * Closes a sent order short (`UpdatePurchaseOrder`; spec §8.8): every remainder is cancelled,
533
+ * the order is `closed` with the reason (required).
534
+ */
535
+ close(id: string, reason: string, call?: Call): Promise<PurchaseOrder>;
536
+ /**
537
+ * Reopens a closed order that is not fully received (`UpdatePurchaseOrder`; spec §7.3): what
538
+ * the close cancelled is open again. A fully received order is refused
539
+ * `PURCHASE_ORDER_INVALID_TRANSITION` (`details[0].code: 'RECEIPT_COMPLETE'`).
540
+ */
541
+ reopen(id: string, options?: PurchaseOrderReasonOptions): Promise<PurchaseOrder>;
542
+ /**
543
+ * A five-minute link to a sent revision's PDF (`ReadPurchaseOrder`), the latest sent one when
544
+ * `revision` is left out. Refusal: `PURCHASE_ORDER_DOCUMENT_NOT_FOUND` (404, never sent).
545
+ */
546
+ document(id: string, options?: PurchaseOrderDocumentOptions): Promise<PurchaseOrderDocumentUrl>;
547
+ }
548
+ export declare function createPurchasingPurchaseOrdersModule(transport: Transport): PurchasingPurchaseOrdersModule;