0

Create a purchasing document

by
Published Oct 17, 2025

Creates a new purchasing document.

Script sage_intacct Verified

The script

Submitted by hugo697 Bun
Verified 235 days ago
1
//native
2
type SageIntacct = {
3
	token: string
4
}
5
/**
6
 * Create a purchasing document
7
 * Creates a new purchasing document.
8
 */
9
export async function main(
10
	auth: SageIntacct,
11
	documentName: string,
12
	body: {
13
		key?: string
14
		id?: string
15
		href?: string
16
		documentNumber?: string
17
		documentType?: string
18
		state?:
19
			| 'submitted'
20
			| 'approved'
21
			| 'partiallyApproved'
22
			| 'declined'
23
			| 'draft'
24
			| 'pending'
25
			| 'closed'
26
			| 'inProgress'
27
			| 'converted'
28
			| 'partiallyConverted'
29
			| 'exception'
30
			| 'analyzing'
31
		isPrinted?: false | true
32
		isBackordered?: false | true
33
		subtotal?: string
34
		subtotalInTxnCurrency?: string
35
		total?: string
36
		totalInTxnCurrency?: string
37
		baseCurrency?: string
38
		txnCurrency?: string
39
		exchangeRate?: {
40
			date?: string
41
			rate?: string
42
			typeId?: string
43
			typeName?: string
44
		}
45
		txnDate?: string
46
		dueDate?: string
47
		isSystemGeneratedDocument?: false | true
48
		postingDate?: string
49
		referenceNumber?: string
50
		vendorDocumentNumber?: string
51
		notes?: string
52
		memo?: string
53
		paymentStatus?: 'paid' | 'partiallyPaid' | 'selected' | 'open'
54
		cancelAfterDate?: string
55
		doNotShipBeforeDate?: string
56
		doNotShipAfterDate?: string
57
		requestedShippingDate?: string
58
		promisedDate?: string
59
		contractStartDate?: string
60
		contractEndDate?: string
61
		retainagePercent?: string
62
		contacts?: {
63
			primary?: { key?: string; id?: string }
64
			shipTo?: { key?: string; id?: string }
65
			billTo?: { key?: string; id?: string }
66
			deliverTo?: { key?: string; id?: string }
67
		}
68
		shippingMethod?: { key?: string; id?: string; href?: string }
69
		paymentTerm?: { href?: string; key?: string; id?: string }
70
		txnDefinition?: { key?: string; id?: string; href?: string }
71
		sourceDocument?: {
72
			key?: string
73
			id?: string
74
			documentType?: string
75
			href?: string
76
		}
77
		taxSolution?: {
78
			key?: string
79
			id?: string
80
			href?: string
81
			taxCalculationMethod?: 'noTax' | 'simpleTax' | 'advancedTax' | 'avaTax' | 'VAT'
82
			showMultilineTax?: false | true
83
		}
84
		vendor?: { key?: string; id?: string; name?: string; href?: string }
85
		audit?: {
86
			createdDateTime?: string
87
			modifiedDateTime?: string
88
			createdBy?: string
89
			modifiedBy?: string
90
		} & { createdDateTime?: string }
91
		entity?: { key?: string; id?: string; name?: string; href?: string }
92
		status?: 'active' | 'inactive'
93
		lines?: {
94
			key?: string
95
			id?: string
96
			href?: string
97
			documentType?: string
98
			lineNumber?: number
99
			item?: { key?: string; id?: string; href?: string }
100
			memo?: string
101
			unit?: string
102
			quantity?: string
103
			unitQuantity?: string
104
			unitPrice?: string
105
			price?: string
106
			quantityConverted?: string
107
			retailPrice?: string
108
			priceConverted?: string
109
			quantityToleranceVariance?: string
110
			priceToleranceVariance?: string
111
			audit?: {
112
				createdDateTime?: string
113
				modifiedDateTime?: string
114
				createdBy?: string
115
				modifiedBy?: string
116
			}
117
			status?: 'active' | 'inactive'
118
			costMethod?: 'standard' | 'average' | 'FIFO' | 'LIFO'
119
			sourceDocument?: {
120
				key?: string
121
				id?: string
122
				documentType?: string
123
				href?: string
124
			}
125
			sourceDocumentLine?: {
126
				key?: string
127
				id?: string
128
				documentType?: string
129
				href?: string
130
			}
131
			baseCurrency?: string
132
			txnCurrency?: string
133
			priceInTxnCurrency?: string
134
			isBillable?: false | true
135
			isBilled?: false | true
136
			taxRate?: string
137
			taxInBaseCurrency?: string
138
			taxInTxnCurrency?: string
139
			discount?: string
140
			enableTax?: false | true
141
			quantityRemaining?: string
142
			conversionType?: 'quantity' | 'price'
143
			dimensions?: {
144
				location?: { key?: string; id?: string; name?: string; href?: string }
145
				department?: {
146
					key?: string
147
					id?: string
148
					name?: string
149
					href?: string
150
				}
151
				employee?: { key?: string; id?: string; name?: string; href?: string }
152
				project?: { key?: string; id?: string; name?: string; href?: string }
153
				customer?: { key?: string; id?: string; name?: string; href?: string }
154
				vendor?: { key?: string; id?: string; name?: string; href?: string }
155
				item?: { key?: string; id?: string; name?: string; href?: string }
156
				warehouse?: { key?: string; id?: string; name?: string; href?: string }
157
				class?: { key?: string; id?: string; name?: string; href?: string }
158
				task?: { id?: string; key?: string; name?: string; href?: string }
159
				costType?: { id?: string; key?: string; name?: string; href?: string }
160
				asset?: { id?: string; key?: string; name?: string; href?: string }
161
				contract?: { id?: string; key?: string; name?: string; href?: string }
162
				affiliateEntity?: {
163
					key?: string
164
					id?: string
165
					href?: string
166
					name?: string
167
				}
168
			} & {
169
				location?: { key?: string; id?: string; href?: string }
170
				department?: { key?: string; id?: string; href?: string }
171
				warehouse?: { key?: string; id?: string; href?: string }
172
				project?: { key?: string; id?: string; href?: string }
173
				task?: { id?: string; key?: string; href?: string }
174
			}
175
			requestedShippingDate?: string
176
			shipByDate?: string
177
			cancelAfterDate?: string
178
			doNotShipBeforeDate?: string
179
			doNotShipAfterDate?: string
180
			deliveryDueDate?: string
181
			orderConfirmationDate?: string
182
			allocation?: { key?: string; id?: string; href?: string }
183
			trackingDetail?: {
184
				key?: string
185
				id?: string
186
				href?: string
187
				quantity?: string
188
				serialNumber?: string
189
				lotNumber?: string
190
				expirationDate?: string
191
				aisle?: { href?: string; key?: string; id?: string }
192
				bin?: { href?: string; key?: string; id?: string }
193
				row?: { href?: string; key?: string; id?: string }
194
				item?: { key?: string; id?: string; href?: string }
195
				audit?: {
196
					createdDateTime?: string
197
					modifiedDateTime?: string
198
					createdBy?: string
199
					modifiedBy?: string
200
				}
201
				purchasingDocumentLine?: {
202
					key?: string
203
					id?: string
204
					documentType?: string
205
					href?: string
206
				}
207
			}[]
208
			documentHeader?: {
209
				key?: string
210
				id?: string
211
				documentType?: string
212
				href?: string
213
			}
214
			lineSubtotals?: {
215
				key?: string
216
				id?: string
217
				href?: string
218
				description?: string
219
				absoluteValue?: string
220
				percentValue?: string
221
				total?: string
222
				txnAbsoluteValue?: string
223
				txnTotal?: string
224
				enableOverrideTax?: false | true
225
				taxDetail?: { key?: string; id?: string; href?: string }
226
				systemTaxDetail?: { key?: string; id?: string; href?: string }
227
				dimensions?: {
228
					location?: {
229
						key?: string
230
						id?: string
231
						name?: string
232
						href?: string
233
					}
234
					department?: {
235
						key?: string
236
						id?: string
237
						name?: string
238
						href?: string
239
					}
240
					employee?: {
241
						key?: string
242
						id?: string
243
						name?: string
244
						href?: string
245
					}
246
					project?: { key?: string; id?: string; name?: string; href?: string }
247
					customer?: {
248
						key?: string
249
						id?: string
250
						name?: string
251
						href?: string
252
					}
253
					vendor?: { key?: string; id?: string; name?: string; href?: string }
254
					item?: { key?: string; id?: string; name?: string; href?: string }
255
					warehouse?: {
256
						key?: string
257
						id?: string
258
						name?: string
259
						href?: string
260
					}
261
					class?: { key?: string; id?: string; name?: string; href?: string }
262
					task?: { id?: string; key?: string; name?: string; href?: string }
263
					costType?: {
264
						id?: string
265
						key?: string
266
						name?: string
267
						href?: string
268
					}
269
					asset?: { id?: string; key?: string; name?: string; href?: string }
270
					contract?: {
271
						id?: string
272
						key?: string
273
						name?: string
274
						href?: string
275
					}
276
					affiliateEntity?: {
277
						key?: string
278
						id?: string
279
						href?: string
280
						name?: string
281
					}
282
				} & {
283
					location?: {
284
						key?: string
285
						id?: string
286
						name?: string
287
						href?: string
288
					}
289
					department?: {
290
						key?: string
291
						id?: string
292
						name?: string
293
						href?: string
294
					}
295
				}
296
				documentLine?: {
297
					key?: string
298
					id?: string
299
					documentType?: string
300
					href?: string
301
				}
302
				document?: {
303
					key?: string
304
					id?: string
305
					documentType?: string
306
					href?: string
307
				}
308
				status?: 'active' | 'inactive'
309
			}[]
310
		}[]
311
		subtotals?: {
312
			key?: string
313
			id?: string
314
			href?: string
315
			description?: string
316
			absoluteValue?: string
317
			percentValue?: string
318
			txnAbsoluteValue?: string
319
			total?: string
320
			txnTotal?: string
321
			documentLine?: {
322
				key?: string
323
				documentType?: string
324
				id?: string
325
				href?: string
326
			}
327
			dimensions?: {
328
				location?: { key?: string; id?: string; name?: string; href?: string }
329
				department?: {
330
					key?: string
331
					id?: string
332
					name?: string
333
					href?: string
334
				}
335
				employee?: { key?: string; id?: string; name?: string; href?: string }
336
				project?: { key?: string; id?: string; name?: string; href?: string }
337
				customer?: { key?: string; id?: string; name?: string; href?: string }
338
				vendor?: { key?: string; id?: string; name?: string; href?: string }
339
				item?: { key?: string; id?: string; name?: string; href?: string }
340
				warehouse?: { key?: string; id?: string; name?: string; href?: string }
341
				class?: { key?: string; id?: string; name?: string; href?: string }
342
				task?: { id?: string; key?: string; name?: string; href?: string }
343
				costType?: { id?: string; key?: string; name?: string; href?: string }
344
				asset?: { id?: string; key?: string; name?: string; href?: string }
345
				contract?: { id?: string; key?: string; name?: string; href?: string }
346
				affiliateEntity?: {
347
					key?: string
348
					id?: string
349
					href?: string
350
					name?: string
351
				}
352
			} & {
353
				location?: { key?: string; id?: string; href?: string }
354
				department?: { key?: string; id?: string; href?: string }
355
			}
356
			documentHeader?: {
357
				key?: string
358
				id?: string
359
				documentType?: string
360
				href?: string
361
			}
362
			audit?: {
363
				createdDateTime?: string
364
				modifiedDateTime?: string
365
				createdBy?: string
366
				modifiedBy?: string
367
			}
368
		}[]
369
		history?: {
370
			key?: string
371
			id?: string
372
			href?: string
373
			convertedFrom?: {
374
				key?: string
375
				id?: string
376
				documentType?: string
377
				href?: string
378
			}
379
			convertedTo?: {
380
				key?: string
381
				id?: string
382
				documentType?: string
383
				href?: string
384
			}
385
			purchasingDocument?: {
386
				key?: string
387
				id?: string
388
				documentType?: string
389
				href?: string
390
			}
391
		}[]
392
	} & { vendor?: {}; lines?: { dimensions?: {} }[] }
393
) {
394
	const url = new URL(
395
		`https://api.intacct.com/ia/api/v1/objects/purchasing/document::${documentName}`
396
	)
397

398
	const response = await fetch(url, {
399
		method: 'POST',
400
		headers: {
401
			'Content-Type': 'application/json',
402
			Authorization: 'Bearer ' + auth.token
403
		},
404
		body: JSON.stringify(body)
405
	})
406
	if (!response.ok) {
407
		const text = await response.text()
408
		throw new Error(`${response.status} ${text}`)
409
	}
410
	return await response.json()
411
}
412