0

Create an inventory document

by
Published Oct 17, 2025

Creates a new Inventory Control 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 an inventory document
7
 * Creates a new Inventory Control document.
8
 */
9
export async function main(
10
	auth: SageIntacct,
11
	documentName: string,
12
	body: {
13
		key?: string
14
		id?: string
15
		documentNumber?: string
16
		documentType?: string
17
		isPrinted?: false | true
18
		subTotal?: string
19
		total?: string
20
		subtotalInTxnCurrency?: string
21
		totalInTxnCurrency?: string
22
		state?:
23
			| 'draft'
24
			| 'pending'
25
			| 'closed'
26
			| 'inProgress'
27
			| 'converted'
28
			| 'partiallyConverted'
29
			| 'convertedByLine'
30
			| 'partiallyConvertedByLine'
31
			| 'exception'
32
		referenceNumber?: string
33
		memo?: string
34
		exchangeRate?: {
35
			date?: string
36
			rate?: string
37
			typeId?: string
38
			typeName?: string
39
		}
40
		transactionDate?: string
41
		lastPrintedDate?: string
42
		isAdjustmentDocument?: false | true
43
		baseCurrency?: string
44
		txnCurrency?: string
45
		txnDefinition?: {
46
			href?: string
47
			key?: string
48
			id?: string
49
			documentType?: string
50
			txnDefinitionTemplateClass?: string
51
			updatesInventory?: 'no' | 'quantity' | 'value' | 'quantityAndValue'
52
			increaseOrDecreaseInventory?: 'increase' | 'decrease'
53
		}
54
		sourceDocument?: { key?: string; id?: string; href?: string }
55
		attachment?: { key?: string; id?: string; href?: string }
56
		printedBy?: { href?: string; key?: string; id?: string }
57
		warehouse?: {
58
			key?: string
59
			id?: string
60
			defaultWarehouse?: string
61
			href?: string
62
		}
63
		href?: string
64
		entity?: { key?: string; id?: string; name?: string; href?: string }
65
		audit?: {
66
			createdDateTime?: string
67
			modifiedDateTime?: string
68
			createdBy?: string
69
			modifiedBy?: string
70
		} & { createdDateTime?: string }
71
		lines?: {
72
			key?: string
73
			id?: string
74
			href?: string
75
			documentType?: string
76
			memo?: string
77
			lineDescription?: string
78
			unitOfMeasure?: { key?: string; id?: string; href?: string }
79
			unitQuantity?: string
80
			quantity?: string
81
			quantityConverted?: string
82
			quantityRemaining?: string
83
			cost?: string
84
			unitCost?: string
85
			extendedCost?: string
86
			totalCost?: string
87
			lineNumber?: number
88
			costMethod?: 'average' | 'standard' | 'FIFO' | 'LIFO'
89
			txnCurrency?: string
90
			baseCurrency?: string
91
			conversionType?: 'quantity' | 'price'
92
			convertedPrice?: string
93
			trackingDetail?: {
94
				key?: string
95
				id?: string
96
				href?: string
97
				quantity?: string
98
				serialNumber?: string
99
				lotNumber?: string
100
				expirationDate?: string
101
				aisle?: { href?: string; key?: string; id?: string }
102
				bin?: { href?: string; key?: string; id?: string }
103
				row?: { href?: string; key?: string; id?: string }
104
				item?: { key?: string; id?: string; href?: string }
105
				componentItem?: { key?: string; id?: string; href?: string }
106
				audit?: {
107
					createdDateTime?: string
108
					modifiedDateTime?: string
109
					createdBy?: string
110
					modifiedBy?: string
111
				}
112
				inventoryDocumentLine?: {
113
					key?: string
114
					id?: string
115
					documentType?: string
116
					href?: string
117
				}
118
			}[]
119
			documentHeader?: {
120
				href?: string
121
				key?: string
122
				id?: string
123
				documentNumber?: string
124
				documentType?: string
125
			}
126
			dimensions?: {
127
				location?: { key?: string; id?: string; name?: string; href?: string }
128
				department?: {
129
					key?: string
130
					id?: string
131
					name?: string
132
					href?: string
133
				}
134
				employee?: { key?: string; id?: string; name?: string; href?: string }
135
				project?: { key?: string; id?: string; name?: string; href?: string }
136
				customer?: { key?: string; id?: string; name?: string; href?: string }
137
				vendor?: { key?: string; id?: string; name?: string; href?: string }
138
				item?: { key?: string; id?: string; name?: string; href?: string }
139
				warehouse?: { key?: string; id?: string; name?: string; href?: string }
140
				class?: { key?: string; id?: string; name?: string; href?: string }
141
				task?: { id?: string; key?: string; name?: string; href?: string }
142
				costType?: { id?: string; key?: string; name?: string; href?: string }
143
				asset?: { id?: string; key?: string; name?: string; href?: string }
144
				contract?: { id?: string; key?: string; name?: string; href?: string }
145
				affiliateEntity?: {
146
					key?: string
147
					id?: string
148
					href?: string
149
					name?: string
150
				}
151
			} & {
152
				location?: { key?: string; id?: string; href?: string }
153
				department?: { key?: string; id?: string; href?: string }
154
				warehouse?: { key?: string; id?: string; href?: string }
155
				project?: { key?: string; id?: string; href?: string }
156
				task?: { id?: string; key?: string; href?: string }
157
			}
158
			sourceDocument?: {
159
				href?: string
160
				id?: string
161
				documentType?: string
162
				key?: string
163
			}
164
			sourceDocumentLine?: {
165
				href?: string
166
				id?: string
167
				key?: string
168
				documentType?: string
169
			}
170
			audit?: {
171
				createdDateTime?: string
172
				modifiedDateTime?: string
173
				createdBy?: string
174
				modifiedBy?: string
175
			} & { createdDateTime?: string }
176
			status?: 'active' | 'inactive'
177
		}[]
178
		history?: {
179
			key?: string
180
			id?: string
181
			href?: string
182
			convertedFrom?: {
183
				key?: string
184
				id?: string
185
				documentType?: string
186
				href?: string
187
			}
188
			convertedTo?: {
189
				key?: string
190
				id?: string
191
				documentType?: string
192
				href?: string
193
			}
194
			inventoryDocument?: {
195
				key?: string
196
				id?: string
197
				documentType?: string
198
				href?: string
199
			}
200
		}[]
201
		subtotals?: {
202
			key?: string
203
			id?: string
204
			href?: string
205
			description?: string
206
			percentValue?: string
207
			absoluteValue?: string
208
			txnAbsoluteValue?: string
209
			isValueEditable?: false | true
210
			isPercentEditable?: false | true
211
			total?: string
212
			txnTotal?: string
213
			documentLine?: {
214
				href?: string
215
				key?: string
216
				id?: string
217
				documentType?: string
218
			}
219
			dimensions?: {
220
				location?: { key?: string; id?: string; name?: string; href?: string }
221
				department?: {
222
					key?: string
223
					id?: string
224
					name?: string
225
					href?: string
226
				}
227
				employee?: { key?: string; id?: string; name?: string; href?: string }
228
				project?: { key?: string; id?: string; name?: string; href?: string }
229
				customer?: { key?: string; id?: string; name?: string; href?: string }
230
				vendor?: { key?: string; id?: string; name?: string; href?: string }
231
				item?: { key?: string; id?: string; name?: string; href?: string }
232
				warehouse?: { key?: string; id?: string; name?: string; href?: string }
233
				class?: { key?: string; id?: string; name?: string; href?: string }
234
				task?: { id?: string; key?: string; name?: string; href?: string }
235
				costType?: { id?: string; key?: string; name?: string; href?: string }
236
				asset?: { id?: string; key?: string; name?: string; href?: string }
237
				contract?: { id?: string; key?: string; name?: string; href?: string }
238
				affiliateEntity?: {
239
					key?: string
240
					id?: string
241
					href?: string
242
					name?: string
243
				}
244
			} & {
245
				location?: { key?: string; id?: string; href?: string }
246
				department?: { key?: string; id?: string; href?: string }
247
			}
248
			documentHeader?: {
249
				href?: string
250
				key?: string
251
				documentType?: string
252
				id?: string
253
			}
254
			audit?: {
255
				createdDateTime?: string
256
				modifiedDateTime?: string
257
				createdBy?: string
258
				modifiedBy?: string
259
			}
260
		}[]
261
		postingSummary?: { key?: string; id?: string; href?: string }
262
		journalEntry?: { key?: string; id?: string; href?: string }
263
		status?: 'active' | 'inactive'
264
	} & { lines?: { dimensions?: {} }[] }
265
) {
266
	const url = new URL(
267
		`https://api.intacct.com/ia/api/v1/objects/inventory-control/document::${documentName}`
268
	)
269

270
	const response = await fetch(url, {
271
		method: 'POST',
272
		headers: {
273
			'Content-Type': 'application/json',
274
			Authorization: 'Bearer ' + auth.token
275
		},
276
		body: JSON.stringify(body)
277
	})
278
	if (!response.ok) {
279
		const text = await response.text()
280
		throw new Error(`${response.status} ${text}`)
281
	}
282
	return await response.json()
283
}
284