1 | |
2 | type SageIntacct = { |
3 | token: string |
4 | } |
5 | |
6 | * Update a project contract line |
7 | * Updates an existing project contract line by setting field values. Any fields not provided remain unchanged. |
8 | */ |
9 | export async function main( |
10 | auth: SageIntacct, |
11 | key: string, |
12 | body: { |
13 | key?: string |
14 | id?: string |
15 | href?: string |
16 | projectContract?: { |
17 | key?: string |
18 | id?: string |
19 | name?: string |
20 | href?: string |
21 | } |
22 | name?: string |
23 | parent?: { key?: string; id?: string; name?: string; href?: string } |
24 | description?: string |
25 | contractLineDate?: string |
26 | glAccount?: { key?: string; id?: string; name?: string; href?: string } |
27 | retainagePercentage?: string |
28 | isBillable?: false | true |
29 | billing?: { |
30 | billedPrice?: string |
31 | previouslyAppliedPrice?: string |
32 | externalReferenceNumber?: string |
33 | billedNetRetainage?: string |
34 | percentBilled?: string |
35 | percentBilledNetRetainage?: string |
36 | retainageHeld?: string |
37 | retainageReleased?: string |
38 | retainageBalance?: string |
39 | paymentsReceived?: string |
40 | } |
41 | billingSetup?: { |
42 | billingType?: 'progressBill' | 'timeAndMaterial' |
43 | maximumBilling?: 'totalPrice' | 'specifiedAmount' | 'noMaximum' |
44 | maximumBillingAmount?: string |
45 | summarizeBill?: false | true |
46 | } |
47 | summary?: { |
48 | originalPrice?: string |
49 | revisionPrice?: string |
50 | forecastPrice?: string |
51 | approvedChangePrice?: string |
52 | pendingChangePrice?: string |
53 | otherPrice?: string |
54 | totalPrice?: string |
55 | } |
56 | dimensions?: { |
57 | location?: { key?: string; id?: string; name?: string; href?: string } |
58 | department?: { key?: string; id?: string; name?: string; href?: string } |
59 | employee?: { key?: string; id?: string; name?: string; href?: string } |
60 | project?: { key?: string; id?: string; name?: string; href?: string } |
61 | customer?: { key?: string; id?: string; name?: string; href?: string } |
62 | vendor?: { key?: string; id?: string; name?: string; href?: string } |
63 | item?: { key?: string; id?: string; name?: string; href?: string } |
64 | warehouse?: { key?: string; id?: string; name?: string; href?: string } |
65 | class?: { key?: string; id?: string; name?: string; href?: string } |
66 | task?: { id?: string; key?: string; name?: string; href?: string } |
67 | costType?: { id?: string; key?: string; name?: string; href?: string } |
68 | asset?: { id?: string; key?: string; name?: string; href?: string } |
69 | contract?: { id?: string; key?: string; name?: string; href?: string } |
70 | affiliateEntity?: { |
71 | key?: string |
72 | id?: string |
73 | href?: string |
74 | name?: string |
75 | } |
76 | } & { |
77 | location?: { key?: string; id?: string; name?: string; href?: string } |
78 | customer?: { key?: string; id?: string; name?: string; href?: string } |
79 | department?: { key?: string; id?: string; name?: string; href?: string } |
80 | } |
81 | excludeFromGLBudget?: false | true |
82 | scope?: string |
83 | inclusions?: string |
84 | exclusions?: string |
85 | terms?: string |
86 | schedule?: { |
87 | scheduledStartDate?: string |
88 | actualStartDate?: string |
89 | scheduledCompletionDate?: string |
90 | revisedCompletionDate?: string |
91 | substantialCompletionDate?: string |
92 | actualCompletionDate?: string |
93 | noticeToProceedDate?: string |
94 | responseDueDate?: string |
95 | executedOnDate?: string |
96 | scheduleImpact?: string |
97 | } |
98 | internalReference?: { |
99 | referenceNumber?: string |
100 | initiatedBy?: { key?: string; id?: string; name?: string; href?: string } |
101 | verbalApprovalBy?: { |
102 | key?: string |
103 | id?: string |
104 | name?: string |
105 | href?: string |
106 | } |
107 | issuedBy?: { key?: string; id?: string; name?: string; href?: string } |
108 | issuedOnDate?: string |
109 | approvedBy?: { key?: string; id?: string; name?: string; href?: string } |
110 | approvedOnDate?: string |
111 | signedBy?: { key?: string; id?: string; name?: string; href?: string } |
112 | signedOnDate?: string |
113 | source?: string |
114 | sourceReferenceNumber?: string |
115 | } |
116 | externalReference?: { |
117 | referenceNumber?: string |
118 | verbalApprovalBy?: { key?: string; id?: string; href?: string } |
119 | approvedBy?: { key?: string; id?: string; href?: string } |
120 | approvedOnDate?: string |
121 | signedBy?: { key?: string; id?: string; href?: string } |
122 | signedOnDate?: string |
123 | } |
124 | rateTables?: { |
125 | default?: { key?: string; id?: string; href?: string } |
126 | timesheet?: { key?: string; id?: string; href?: string } |
127 | purchasing?: { key?: string; id?: string; href?: string } |
128 | ap?: { key?: string; id?: string; href?: string } |
129 | gl?: { key?: string; id?: string; href?: string } |
130 | creditCard?: { key?: string; id?: string; href?: string } |
131 | employeeExpense?: { key?: string; id?: string; href?: string } |
132 | } |
133 | projectContractLineEntries?: { |
134 | key?: string |
135 | id?: string |
136 | href?: string |
137 | projectContractLine?: { key?: string; id?: string; href?: string } |
138 | workflowType?: 'original' | 'revision' | 'forecast' | 'other' |
139 | dimensions?: { |
140 | location?: { key?: string; id?: string; name?: string; href?: string } |
141 | department?: { |
142 | key?: string |
143 | id?: string |
144 | name?: string |
145 | href?: string |
146 | } |
147 | employee?: { key?: string; id?: string; name?: string; href?: string } |
148 | project?: { key?: string; id?: string; name?: string; href?: string } |
149 | customer?: { key?: string; id?: string; name?: string; href?: string } |
150 | vendor?: { key?: string; id?: string; name?: string; href?: string } |
151 | item?: { key?: string; id?: string; name?: string; href?: string } |
152 | warehouse?: { key?: string; id?: string; name?: string; href?: string } |
153 | class?: { key?: string; id?: string; name?: string; href?: string } |
154 | task?: { id?: string; key?: string; name?: string; href?: string } |
155 | costType?: { id?: string; key?: string; name?: string; href?: string } |
156 | asset?: { id?: string; key?: string; name?: string; href?: string } |
157 | contract?: { id?: string; key?: string; name?: string; href?: string } |
158 | affiliateEntity?: { |
159 | key?: string |
160 | id?: string |
161 | href?: string |
162 | name?: string |
163 | } |
164 | } & { |
165 | location?: { key?: string; id?: string; name?: string; href?: string } |
166 | department?: { |
167 | key?: string |
168 | id?: string |
169 | name?: string |
170 | href?: string |
171 | } |
172 | } |
173 | quantity?: string |
174 | externalUOM?: string |
175 | unitPrice?: string |
176 | price?: string |
177 | priceMarkupPercent?: string |
178 | priceMarkupAmount?: string |
179 | linePrice?: string |
180 | memo?: string |
181 | priceEffectiveDate?: string |
182 | audit?: { |
183 | createdDateTime?: string |
184 | modifiedDateTime?: string |
185 | createdBy?: string |
186 | modifiedBy?: string |
187 | } |
188 | }[] |
189 | changeRequestEntries?: { |
190 | key?: string |
191 | id?: string |
192 | href?: string |
193 | changeRequest?: { key?: string; id?: string; href?: string } |
194 | workflowType?: |
195 | | 'original' |
196 | | 'revision' |
197 | | 'forecast' |
198 | | 'other' |
199 | | 'none' |
200 | | 'approvedChange' |
201 | | 'pendingChange' |
202 | dimensions?: { |
203 | location?: { key?: string; id?: string; name?: string; href?: string } |
204 | department?: { |
205 | key?: string |
206 | id?: string |
207 | name?: string |
208 | href?: string |
209 | } |
210 | employee?: { key?: string; id?: string; name?: string; href?: string } |
211 | project?: { key?: string; id?: string; name?: string; href?: string } |
212 | customer?: { key?: string; id?: string; name?: string; href?: string } |
213 | vendor?: { key?: string; id?: string; name?: string; href?: string } |
214 | item?: { key?: string; id?: string; name?: string; href?: string } |
215 | warehouse?: { key?: string; id?: string; name?: string; href?: string } |
216 | class?: { key?: string; id?: string; name?: string; href?: string } |
217 | task?: { id?: string; key?: string; name?: string; href?: string } |
218 | costType?: { id?: string; key?: string; name?: string; href?: string } |
219 | asset?: { id?: string; key?: string; name?: string; href?: string } |
220 | contract?: { id?: string; key?: string; name?: string; href?: string } |
221 | affiliateEntity?: { |
222 | key?: string |
223 | id?: string |
224 | href?: string |
225 | name?: string |
226 | } |
227 | } & { |
228 | location?: { key?: string; id?: string; name?: string; href?: string } |
229 | department?: { |
230 | key?: string |
231 | id?: string |
232 | name?: string |
233 | href?: string |
234 | } |
235 | } |
236 | numberOfProductionUnits?: string |
237 | productionUnitDescription?: string |
238 | quantity?: string |
239 | externalUOM?: string |
240 | unitCost?: string |
241 | cost?: string |
242 | unitPrice?: string |
243 | price?: string |
244 | priceMarkupPercent?: string |
245 | priceMarkupAmount?: string |
246 | linePrice?: string |
247 | projectChangeOrder?: { key?: string; id?: string; href?: string } |
248 | memo?: string |
249 | projectEstimate?: { key?: string; id?: string; href?: string } |
250 | glAccount?: { key?: string; id?: string; name?: string; href?: string } |
251 | projectContract?: { |
252 | key?: string |
253 | id?: string |
254 | name?: string |
255 | href?: string |
256 | } |
257 | projectContractLine?: { |
258 | key?: string |
259 | id?: string |
260 | name?: string |
261 | href?: string |
262 | } |
263 | audit?: { |
264 | createdDateTime?: string |
265 | modifiedDateTime?: string |
266 | createdBy?: string |
267 | modifiedBy?: string |
268 | } |
269 | }[] |
270 | attachment?: { key?: string; id?: string; href?: string } |
271 | status?: 'active' | 'inactive' |
272 | audit?: { |
273 | createdDateTime?: string |
274 | modifiedDateTime?: string |
275 | createdBy?: string |
276 | modifiedBy?: string |
277 | } |
278 | } & { id?: {} } |
279 | ) { |
280 | const url = new URL( |
281 | `https://api.intacct.com/ia/api/v1/objects/construction/project-contract-line/${key}` |
282 | ) |
283 |
|
284 | const response = await fetch(url, { |
285 | method: 'PATCH', |
286 | headers: { |
287 | 'Content-Type': 'application/json', |
288 | Authorization: 'Bearer ' + auth.token |
289 | }, |
290 | body: JSON.stringify(body) |
291 | }) |
292 | if (!response.ok) { |
293 | const text = await response.text() |
294 | throw new Error(`${response.status} ${text}`) |
295 | } |
296 | return await response.json() |
297 | } |
298 |
|