1 | |
2 | type SageIntacct = { |
3 | token: string |
4 | } |
5 | |
6 | * Create a document line |
7 | * Creates a new purchasing document line. |
8 |
|
9 |
|
10 | Permissions and other requirements |
11 |
|
12 | SubscriptionPurchasing |
13 | User typeBusiness, Employee, Project Manager, Warehouse |
14 | PermissionsList, View, Add Purchasing documents |
15 |
|
16 |
|
17 |
|
18 |
|
19 | */ |
20 | export async function main( |
21 | auth: SageIntacct, |
22 | documentName: string, |
23 | body: { |
24 | key?: string |
25 | id?: string |
26 | href?: string |
27 | documentType?: string |
28 | lineNumber?: number |
29 | item?: { key?: string; id?: string; href?: string } |
30 | memo?: string |
31 | unit?: string |
32 | quantity?: string |
33 | unitQuantity?: string |
34 | unitPrice?: string |
35 | price?: string |
36 | quantityConverted?: string |
37 | retailPrice?: string |
38 | priceConverted?: string |
39 | quantityToleranceVariance?: string |
40 | priceToleranceVariance?: string |
41 | audit?: { |
42 | createdDateTime?: string |
43 | modifiedDateTime?: string |
44 | createdBy?: string |
45 | modifiedBy?: string |
46 | } |
47 | status?: 'active' | 'inactive' |
48 | costMethod?: 'standard' | 'average' | 'FIFO' | 'LIFO' |
49 | sourceDocument?: { |
50 | key?: string |
51 | id?: string |
52 | documentType?: string |
53 | href?: string |
54 | } |
55 | sourceDocumentLine?: { |
56 | key?: string |
57 | id?: string |
58 | documentType?: string |
59 | href?: string |
60 | } |
61 | baseCurrency?: string |
62 | txnCurrency?: string |
63 | priceInTxnCurrency?: string |
64 | isBillable?: false | true |
65 | isBilled?: false | true |
66 | taxRate?: string |
67 | taxInBaseCurrency?: string |
68 | taxInTxnCurrency?: string |
69 | discount?: string |
70 | enableTax?: false | true |
71 | quantityRemaining?: string |
72 | conversionType?: 'quantity' | 'price' |
73 | dimensions?: { |
74 | location?: { key?: string; id?: string; name?: string; href?: string } |
75 | department?: { key?: string; id?: string; name?: string; href?: string } |
76 | employee?: { key?: string; id?: string; name?: string; href?: string } |
77 | project?: { key?: string; id?: string; name?: string; href?: string } |
78 | customer?: { key?: string; id?: string; name?: string; href?: string } |
79 | vendor?: { key?: string; id?: string; name?: string; href?: string } |
80 | item?: { key?: string; id?: string; name?: string; href?: string } |
81 | warehouse?: { key?: string; id?: string; name?: string; href?: string } |
82 | class?: { key?: string; id?: string; name?: string; href?: string } |
83 | task?: { id?: string; key?: string; name?: string; href?: string } |
84 | costType?: { id?: string; key?: string; name?: string; href?: string } |
85 | asset?: { id?: string; key?: string; name?: string; href?: string } |
86 | contract?: { id?: string; key?: string; name?: string; href?: string } |
87 | affiliateEntity?: { |
88 | key?: string |
89 | id?: string |
90 | href?: string |
91 | name?: string |
92 | } |
93 | } & { |
94 | location?: { key?: string; id?: string; href?: string } |
95 | department?: { key?: string; id?: string; href?: string } |
96 | warehouse?: { key?: string; id?: string; href?: string } |
97 | project?: { key?: string; id?: string; href?: string } |
98 | task?: { id?: string; key?: string; href?: string } |
99 | } |
100 | requestedShippingDate?: string |
101 | shipByDate?: string |
102 | cancelAfterDate?: string |
103 | doNotShipBeforeDate?: string |
104 | doNotShipAfterDate?: string |
105 | deliveryDueDate?: string |
106 | orderConfirmationDate?: string |
107 | allocation?: { key?: string; id?: string; href?: string } |
108 | trackingDetail?: { |
109 | key?: string |
110 | id?: string |
111 | href?: string |
112 | quantity?: string |
113 | serialNumber?: string |
114 | lotNumber?: string |
115 | expirationDate?: string |
116 | aisle?: { href?: string; key?: string; id?: string } |
117 | bin?: { href?: string; key?: string; id?: string } |
118 | row?: { href?: string; key?: string; id?: string } |
119 | item?: { key?: string; id?: string; href?: string } |
120 | audit?: { |
121 | createdDateTime?: string |
122 | modifiedDateTime?: string |
123 | createdBy?: string |
124 | modifiedBy?: string |
125 | } |
126 | purchasingDocumentLine?: { |
127 | key?: string |
128 | id?: string |
129 | documentType?: string |
130 | href?: string |
131 | } |
132 | }[] |
133 | documentHeader?: { |
134 | key?: string |
135 | id?: string |
136 | documentType?: string |
137 | href?: string |
138 | } |
139 | lineSubtotals?: { |
140 | key?: string |
141 | id?: string |
142 | href?: string |
143 | description?: string |
144 | absoluteValue?: string |
145 | percentValue?: string |
146 | total?: string |
147 | txnAbsoluteValue?: string |
148 | txnTotal?: string |
149 | enableOverrideTax?: false | true |
150 | taxDetail?: { key?: string; id?: string; href?: string } |
151 | systemTaxDetail?: { key?: string; id?: string; href?: string } |
152 | dimensions?: { |
153 | location?: { key?: string; id?: string; name?: string; href?: string } |
154 | department?: { |
155 | key?: string |
156 | id?: string |
157 | name?: string |
158 | href?: string |
159 | } |
160 | employee?: { key?: string; id?: string; name?: string; href?: string } |
161 | project?: { key?: string; id?: string; name?: string; href?: string } |
162 | customer?: { key?: string; id?: string; name?: string; href?: string } |
163 | vendor?: { key?: string; id?: string; name?: string; href?: string } |
164 | item?: { key?: string; id?: string; name?: string; href?: string } |
165 | warehouse?: { key?: string; id?: string; name?: string; href?: string } |
166 | class?: { key?: string; id?: string; name?: string; href?: string } |
167 | task?: { id?: string; key?: string; name?: string; href?: string } |
168 | costType?: { id?: string; key?: string; name?: string; href?: string } |
169 | asset?: { id?: string; key?: string; name?: string; href?: string } |
170 | contract?: { id?: string; key?: string; name?: string; href?: string } |
171 | affiliateEntity?: { |
172 | key?: string |
173 | id?: string |
174 | href?: string |
175 | name?: string |
176 | } |
177 | } & { |
178 | location?: { key?: string; id?: string; name?: string; href?: string } |
179 | department?: { |
180 | key?: string |
181 | id?: string |
182 | name?: string |
183 | href?: string |
184 | } |
185 | } |
186 | documentLine?: { |
187 | key?: string |
188 | id?: string |
189 | documentType?: string |
190 | href?: string |
191 | } |
192 | document?: { |
193 | key?: string |
194 | id?: string |
195 | documentType?: string |
196 | href?: string |
197 | } |
198 | status?: 'active' | 'inactive' |
199 | }[] |
200 | } & { dimensions?: {}; documentHeader?: {} } |
201 | ) { |
202 | const url = new URL( |
203 | `https://api.intacct.com/ia/api/v1/objects/purchasing/document-line::${documentName}` |
204 | ) |
205 |
|
206 | const response = await fetch(url, { |
207 | method: 'POST', |
208 | headers: { |
209 | 'Content-Type': 'application/json', |
210 | Authorization: 'Bearer ' + auth.token |
211 | }, |
212 | body: JSON.stringify(body) |
213 | }) |
214 | if (!response.ok) { |
215 | const text = await response.text() |
216 | throw new Error(`${response.status} ${text}`) |
217 | } |
218 | return await response.json() |
219 | } |
220 |
|