1 | |
2 | type SageIntacct = { |
3 | token: string |
4 | } |
5 | |
6 | * Create an Order Entry document |
7 | * Creates a new Order Entry 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 | | 'convertedByLine' |
30 | | 'partiallyConvertedByLine' |
31 | | 'exception' |
32 | isPrinted?: false | true |
33 | isBackordered?: false | true |
34 | subtotal?: string |
35 | subtotalInTxnCurrency?: string |
36 | total?: string |
37 | totalInTxnCurrency?: string |
38 | baseCurrency?: string |
39 | txnCurrency?: string |
40 | exchangeRate?: { |
41 | date?: string |
42 | rate?: string |
43 | typeId?: string |
44 | typeName?: string |
45 | } |
46 | txnDate?: string |
47 | dueDate?: string |
48 | isSystemGeneratedDocument?: false | true |
49 | postingDate?: string |
50 | referenceNumber?: string |
51 | notes?: string |
52 | memo?: string |
53 | contractID?: string |
54 | contractDescription?: string |
55 | paymentStatus?: 'paid' | 'partiallyPaid' | 'open' |
56 | invoiceDate?: string |
57 | customerPONumber?: string |
58 | trackingNumber?: string |
59 | shipByDate?: string |
60 | shippedDate?: string |
61 | serviceDeliveryDate?: string |
62 | cancelAfterDate?: string |
63 | doNotShipBeforeDate?: string |
64 | doNotShipAfterDate?: string |
65 | requestedShippingDate?: string |
66 | retainagePercent?: number |
67 | scope?: string |
68 | inclusions?: string |
69 | exclusions?: string |
70 | terms?: string |
71 | schedule?: { |
72 | scheduledStartDate?: string |
73 | scheduledCompletionDate?: string |
74 | actualStartDate?: string |
75 | actualCompletionDate?: string |
76 | revisedCompletionDate?: string |
77 | substantialCompletionDate?: string |
78 | noticeToProceedDate?: string |
79 | responseDueDate?: string |
80 | executedOnDate?: string |
81 | scheduleImpactNotes?: string |
82 | } |
83 | internalReference?: { |
84 | referenceNumber?: string |
85 | initiatedBy?: { key?: string; id?: string; name?: string; href?: string } |
86 | verbalApprovalBy?: { |
87 | key?: string |
88 | id?: string |
89 | name?: string |
90 | href?: string |
91 | } |
92 | issuedBy?: { key?: string; id?: string; name?: string; href?: string } |
93 | issuedOnDate?: string |
94 | approvedBy?: { key?: string; id?: string; name?: string; href?: string } |
95 | approvedOnDate?: string |
96 | signedBy?: { key?: string; id?: string; name?: string; href?: string } |
97 | signedOnDate?: string |
98 | source?: string |
99 | sourceReferenceNumber?: string |
100 | } |
101 | externalReference?: { |
102 | referenceNumber?: string |
103 | verbalApprovalBy?: { key?: string; id?: string; href?: string } |
104 | approvedBy?: { key?: string; id?: string; href?: string } |
105 | approvedOnDate?: string |
106 | signedBy?: { key?: string; id?: string; href?: string } |
107 | signedOnDate?: string |
108 | } |
109 | performanceBond?: { |
110 | isRequired?: false | true |
111 | isReceived?: false | true |
112 | amount?: string |
113 | vendor?: { key?: string; id?: string; name?: string; href?: string } |
114 | } |
115 | paymentBond?: { |
116 | isRequired?: false | true |
117 | isReceived?: false | true |
118 | amount?: string |
119 | vendor?: { key?: string; id?: string; name?: string; href?: string } |
120 | } |
121 | revision?: { |
122 | isDocumentChanged?: false | true |
123 | revisedTotal?: string |
124 | revisedSubTotal?: string |
125 | revisedTotalInTxnCurrency?: string |
126 | revisedSubTotalInTxnCurrency?: string |
127 | changeLogNumber?: number |
128 | } |
129 | relatedDocumentNumber?: string |
130 | postedChangesTotal?: string |
131 | projectContractBilling?: { |
132 | externalReferenceNumber?: string |
133 | description?: string |
134 | contractDate?: string |
135 | billingThroughDate?: string |
136 | billingApplicationNumber?: string |
137 | } |
138 | billingSummary?: { |
139 | originalContractAmount?: string |
140 | netChangesAmount?: string |
141 | revisedContractAmount?: string |
142 | balanceToFinishAmount?: string |
143 | lessPriorApplicationAmount?: string |
144 | currentDueAmount?: string |
145 | retainage?: { |
146 | previousBalanceAmount?: string |
147 | balanceAmount?: string |
148 | billedAmount?: string |
149 | heldAmount?: string |
150 | completedAmount?: string |
151 | storedMaterialsAmount?: string |
152 | } |
153 | billingTotals?: { |
154 | completedToDateAmount?: string |
155 | storedMaterialsAmount?: string |
156 | heldAmount?: string |
157 | heldToDateAmount?: string |
158 | retainageOnThisInvoiceAmount?: string |
159 | earnedLessRetainageAmount?: string |
160 | lessRetainageHeldAmount?: string |
161 | netChangesAmount?: string |
162 | netChangesAdditionAmount?: string |
163 | netChangesDeductionAmount?: string |
164 | } |
165 | totalChangesApprovedPriorMonth?: { |
166 | additionsAmount?: string |
167 | deductionsAmount?: string |
168 | } |
169 | totalChangesApprovedThisMonth?: { |
170 | additionsAmount?: string |
171 | deductionsAmount?: string |
172 | } |
173 | } |
174 | architect?: { key?: string; id?: string; href?: string } |
175 | projectContract?: { |
176 | key?: string |
177 | id?: string |
178 | name?: string |
179 | href?: string |
180 | } |
181 | contacts?: { |
182 | primary?: { key?: string; id?: string } |
183 | shipTo?: { key?: string; id?: string } |
184 | billTo?: { key?: string; id?: string } |
185 | } |
186 | shippingMethod?: { key?: string; id?: string; href?: string } |
187 | printedByUser?: { key?: string; id?: string; href?: string } |
188 | txnDefinition?: { key?: string; id?: string; href?: string } |
189 | sourceDocument?: { |
190 | key?: string |
191 | id?: string |
192 | documentType?: string |
193 | href?: string |
194 | } |
195 | customer?: { key?: string; id?: string; name?: string; href?: string } |
196 | contract?: { key?: string; id?: string; href?: string } |
197 | paymentTerm?: { href?: string; key?: string; id?: string } |
198 | audit?: { |
199 | createdDateTime?: string |
200 | modifiedDateTime?: string |
201 | createdBy?: string |
202 | modifiedBy?: string |
203 | } & { createdDateTime?: string } |
204 | entity?: { key?: string; id?: string; name?: string; href?: string } |
205 | status?: 'active' | 'inactive' |
206 | taxSolution?: { |
207 | key?: string |
208 | id?: string |
209 | href?: string |
210 | taxCalculationMethod?: 'noTax' | 'simpleTax' | 'advancedTax' | 'avaTax' | 'VAT' |
211 | showMultilineTax?: false | true |
212 | } |
213 | lines?: { |
214 | key?: string |
215 | id?: string |
216 | href?: string |
217 | documentType?: string |
218 | lineNumber?: number |
219 | item?: { key?: string; id?: string; href?: string } |
220 | itemAlias?: { key?: string; id?: string; href?: string } |
221 | memo?: string |
222 | priceCalculationMemo?: string |
223 | unit?: string |
224 | quantity?: string |
225 | unitQuantity?: string |
226 | unitPrice?: string |
227 | price?: string |
228 | quantityConverted?: string |
229 | retailPrice?: string |
230 | audit?: { |
231 | createdDateTime?: string |
232 | modifiedDateTime?: string |
233 | createdBy?: string |
234 | modifiedBy?: string |
235 | } |
236 | status?: 'active' | 'inactive' |
237 | costMethod?: 'standard' | 'average' | 'FIFO' | 'LIFO' |
238 | discountPercent?: string |
239 | multiplier?: number |
240 | sourceDocument?: { |
241 | key?: string |
242 | id?: string |
243 | documentType?: string |
244 | href?: string |
245 | } |
246 | sourceDocumentLine?: { |
247 | key?: string |
248 | id?: string |
249 | documentType?: string |
250 | href?: string |
251 | } |
252 | isPriceProrated?: false | true |
253 | discountMemo?: string |
254 | baseCurrency?: string |
255 | txnCurrency?: string |
256 | priceInTxnCurrency?: string |
257 | isBillable?: false | true |
258 | isBilled?: false | true |
259 | taxRate?: string |
260 | taxInBaseCurrency?: string |
261 | taxInTxnCurrency?: string |
262 | discount?: string |
263 | enableTax?: false | true |
264 | quantityRemaining?: string |
265 | conversionType?: 'quantity' | 'price' |
266 | dimensions?: { |
267 | location?: { key?: string; id?: string; name?: string; href?: string } |
268 | department?: { |
269 | key?: string |
270 | id?: string |
271 | name?: string |
272 | href?: string |
273 | } |
274 | employee?: { key?: string; id?: string; name?: string; href?: string } |
275 | project?: { key?: string; id?: string; name?: string; href?: string } |
276 | customer?: { key?: string; id?: string; name?: string; href?: string } |
277 | vendor?: { key?: string; id?: string; name?: string; href?: string } |
278 | item?: { key?: string; id?: string; name?: string; href?: string } |
279 | warehouse?: { key?: string; id?: string; name?: string; href?: string } |
280 | class?: { key?: string; id?: string; name?: string; href?: string } |
281 | task?: { id?: string; key?: string; name?: string; href?: string } |
282 | costType?: { id?: string; key?: string; name?: string; href?: string } |
283 | asset?: { id?: string; key?: string; name?: string; href?: string } |
284 | contract?: { id?: string; key?: string; name?: string; href?: string } |
285 | affiliateEntity?: { |
286 | key?: string |
287 | id?: string |
288 | href?: string |
289 | name?: string |
290 | } |
291 | } & { |
292 | location?: { key?: string; id?: string; href?: string } |
293 | department?: { key?: string; id?: string; href?: string } |
294 | warehouse?: { key?: string; id?: string; href?: string } |
295 | project?: { key?: string; id?: string; href?: string } |
296 | task?: { id?: string; key?: string; href?: string } |
297 | } |
298 | itemRenewalTemplate?: { key?: string; id?: string; href?: string } |
299 | revenueRecognitionStartDate?: string |
300 | revenueRecognitionEndDate?: string |
301 | requestedShippingDate?: string |
302 | shipByDate?: string |
303 | pickTicketPrintedDate?: string |
304 | cancelAfterDate?: string |
305 | doNotShipBeforeDate?: string |
306 | doNotShipAfterDate?: string |
307 | shippedDate?: string |
308 | allowDropship?: false | true |
309 | allowBuyToOrder?: false | true |
310 | revision?: { |
311 | unitQuantity?: string |
312 | quantity?: string |
313 | unitValue?: string |
314 | value?: string |
315 | valueInTxnCurrency?: string |
316 | price?: string |
317 | unitPrice?: string |
318 | priceInTxnCurrency?: string |
319 | } |
320 | draft?: { |
321 | unitQuantity?: string |
322 | quantity?: string |
323 | price?: string |
324 | basePrice?: string |
325 | } |
326 | posted?: { quantity?: string; price?: string; basePrice?: string } |
327 | addedByChangeDocument?: false | true |
328 | servicePeriodStartDate?: string |
329 | servicePeriodEndDate?: string |
330 | projectContractBilling?: { |
331 | externalReferenceNumber?: string |
332 | description?: string |
333 | billingType?: 'progressBill' | 'timeAndMaterial' |
334 | contractLineValue?: string |
335 | priorApplicationAmount?: string |
336 | completedThisPeriodAmount?: string |
337 | storedMaterialsAmount?: string |
338 | completedToDateAmount?: string |
339 | completedToDatePercent?: string |
340 | balanceRemaining?: string |
341 | totalConvertedAmount?: string |
342 | totalRemainingAmount?: string |
343 | isSummarized?: false | true |
344 | } |
345 | retainage?: { |
346 | percentage?: string |
347 | baseAmountRetained?: string |
348 | txnAmountRetained?: string |
349 | isReleaseLine?: false | true |
350 | previousBalanceAmount?: string |
351 | billAmount?: string |
352 | balanceAmount?: string |
353 | extendedPriceNetAmount?: string |
354 | extendedBasePriceNetAmount?: string |
355 | } |
356 | isReverseConversion?: false | true |
357 | reverseConversion?: { |
358 | price?: string |
359 | quantity?: string |
360 | standardPrice?: string |
361 | standardQuantity?: string |
362 | } |
363 | relatedDocument?: { key?: string; id?: string; href?: string } |
364 | relatedDocumentLine?: { key?: string; id?: string; href?: string } |
365 | projectContract?: { |
366 | key?: string |
367 | id?: string |
368 | name?: string |
369 | href?: string |
370 | } |
371 | projectContractLine?: { |
372 | key?: string |
373 | id?: string |
374 | name?: string |
375 | href?: string |
376 | } |
377 | taxSchedule?: { key?: string; id?: string; href?: string } |
378 | buyToOrderContact?: { key?: string; id?: string } |
379 | trackingDetail?: { |
380 | key?: string |
381 | id?: string |
382 | href?: string |
383 | quantity?: string |
384 | serialNumber?: string |
385 | lotNumber?: string |
386 | expirationDate?: string |
387 | aisle?: { href?: string; key?: string; id?: string } |
388 | bin?: { href?: string; key?: string; id?: string } |
389 | row?: { href?: string; key?: string; id?: string } |
390 | item?: { key?: string; id?: string; href?: string } |
391 | audit?: { |
392 | createdDateTime?: string |
393 | modifiedDateTime?: string |
394 | createdBy?: string |
395 | modifiedBy?: string |
396 | } |
397 | orderEntryDocumentLine?: { |
398 | key?: string |
399 | id?: string |
400 | documentType?: string |
401 | href?: string |
402 | } |
403 | }[] |
404 | documentHeader?: { |
405 | key?: string |
406 | id?: string |
407 | documentType?: string |
408 | href?: string |
409 | } |
410 | lineSubtotals?: { |
411 | key?: string |
412 | id?: string |
413 | href?: string |
414 | description?: string |
415 | absoluteValue?: string |
416 | percentValue?: string |
417 | total?: string |
418 | txnAbsoluteValue?: string |
419 | txnTotal?: string |
420 | enableOverrideTax?: false | true |
421 | taxDetail?: { key?: string; id?: string; href?: string } |
422 | systemTaxDetail?: { key?: string; id?: string; href?: string } |
423 | dimensions?: { |
424 | location?: { |
425 | key?: string |
426 | id?: string |
427 | name?: string |
428 | href?: string |
429 | } |
430 | department?: { |
431 | key?: string |
432 | id?: string |
433 | name?: string |
434 | href?: string |
435 | } |
436 | employee?: { |
437 | key?: string |
438 | id?: string |
439 | name?: string |
440 | href?: string |
441 | } |
442 | project?: { key?: string; id?: string; name?: string; href?: string } |
443 | customer?: { |
444 | key?: string |
445 | id?: string |
446 | name?: string |
447 | href?: string |
448 | } |
449 | vendor?: { key?: string; id?: string; name?: string; href?: string } |
450 | item?: { key?: string; id?: string; name?: string; href?: string } |
451 | warehouse?: { |
452 | key?: string |
453 | id?: string |
454 | name?: string |
455 | href?: string |
456 | } |
457 | class?: { key?: string; id?: string; name?: string; href?: string } |
458 | task?: { id?: string; key?: string; name?: string; href?: string } |
459 | costType?: { |
460 | id?: string |
461 | key?: string |
462 | name?: string |
463 | href?: string |
464 | } |
465 | asset?: { id?: string; key?: string; name?: string; href?: string } |
466 | contract?: { |
467 | id?: string |
468 | key?: string |
469 | name?: string |
470 | href?: string |
471 | } |
472 | affiliateEntity?: { |
473 | key?: string |
474 | id?: string |
475 | href?: string |
476 | name?: string |
477 | } |
478 | } & { |
479 | location?: { |
480 | key?: string |
481 | id?: string |
482 | name?: string |
483 | href?: string |
484 | } |
485 | department?: { |
486 | key?: string |
487 | id?: string |
488 | name?: string |
489 | href?: string |
490 | } |
491 | } |
492 | documentLine?: { |
493 | key?: string |
494 | id?: string |
495 | documentType?: string |
496 | href?: string |
497 | } |
498 | document?: { |
499 | key?: string |
500 | id?: string |
501 | documentType?: string |
502 | href?: string |
503 | } |
504 | status?: 'active' | 'inactive' |
505 | }[] |
506 | }[] |
507 | subtotals?: { |
508 | key?: string |
509 | id?: string |
510 | href?: string |
511 | description?: string |
512 | percentValue?: string |
513 | absoluteValue?: string |
514 | txnAbsoluteValue?: string |
515 | total?: string |
516 | txnTotal?: string |
517 | documentLine?: { |
518 | key?: string |
519 | documentType?: string |
520 | id?: string |
521 | href?: string |
522 | } |
523 | audit?: { |
524 | createdDateTime?: string |
525 | modifiedDateTime?: string |
526 | createdBy?: string |
527 | modifiedBy?: string |
528 | } |
529 | dimensions?: { |
530 | location?: { key?: string; id?: string; name?: string; href?: string } |
531 | department?: { |
532 | key?: string |
533 | id?: string |
534 | name?: string |
535 | href?: string |
536 | } |
537 | employee?: { key?: string; id?: string; name?: string; href?: string } |
538 | project?: { key?: string; id?: string; name?: string; href?: string } |
539 | customer?: { key?: string; id?: string; name?: string; href?: string } |
540 | vendor?: { key?: string; id?: string; name?: string; href?: string } |
541 | item?: { key?: string; id?: string; name?: string; href?: string } |
542 | warehouse?: { key?: string; id?: string; name?: string; href?: string } |
543 | class?: { key?: string; id?: string; name?: string; href?: string } |
544 | task?: { id?: string; key?: string; name?: string; href?: string } |
545 | costType?: { id?: string; key?: string; name?: string; href?: string } |
546 | asset?: { id?: string; key?: string; name?: string; href?: string } |
547 | contract?: { id?: string; key?: string; name?: string; href?: string } |
548 | affiliateEntity?: { |
549 | key?: string |
550 | id?: string |
551 | href?: string |
552 | name?: string |
553 | } |
554 | } & { |
555 | location?: { key?: string; id?: string; href?: string } |
556 | department?: { key?: string; id?: string; href?: string } |
557 | } |
558 | documentHeader?: { |
559 | key?: string |
560 | id?: string |
561 | documentType?: string |
562 | href?: string |
563 | } |
564 | }[] |
565 | history?: { |
566 | key?: string |
567 | id?: string |
568 | href?: string |
569 | convertedFrom?: { |
570 | key?: string |
571 | id?: string |
572 | documentType?: string |
573 | href?: string |
574 | } |
575 | convertedTo?: { |
576 | key?: string |
577 | id?: string |
578 | documentType?: string |
579 | href?: string |
580 | } |
581 | orderEntryDocument?: { |
582 | key?: string |
583 | id?: string |
584 | documentType?: string |
585 | href?: string |
586 | } |
587 | }[] |
588 | } & { customer?: {}; lines?: { dimensions?: {} }[] } |
589 | ) { |
590 | const url = new URL( |
591 | `https://api.intacct.com/ia/api/v1/objects/order-entry/document::${documentName}` |
592 | ) |
593 |
|
594 | const response = await fetch(url, { |
595 | method: 'POST', |
596 | headers: { |
597 | 'Content-Type': 'application/json', |
598 | Authorization: 'Bearer ' + auth.token |
599 | }, |
600 | body: JSON.stringify(body) |
601 | }) |
602 | if (!response.ok) { |
603 | const text = await response.text() |
604 | throw new Error(`${response.status} ${text}`) |
605 | } |
606 | return await response.json() |
607 | } |
608 |
|