1 | |
2 | type SageIntacct = { |
3 | token: string |
4 | } |
5 | |
6 | * Update a change request |
7 | * Updates an existing change request by setting field values. Any fields not provided remain unchanged. |
8 |
|
9 |
|
10 | Permissions and other requirements |
11 |
|
12 | SubscriptionConstruction, Project Costing and Billing |
13 | User typeBusiness, Project Manager |
14 | PermissionsList, View, Edit Change requests |
15 |
|
16 |
|
17 |
|
18 |
|
19 | */ |
20 | export async function main( |
21 | auth: SageIntacct, |
22 | key: string, |
23 | body: { |
24 | key?: string |
25 | id?: string |
26 | href?: string |
27 | project?: { key?: string; id?: string; name?: string; href?: string } |
28 | projectCustomer?: { |
29 | key?: string |
30 | id?: string |
31 | name?: string |
32 | href?: string |
33 | } |
34 | changeRequestDate?: string |
35 | description?: string |
36 | changeRequestStatus?: { |
37 | key?: string |
38 | id?: string |
39 | workflowType?: |
40 | | 'none' |
41 | | 'original' |
42 | | 'revision' |
43 | | 'forecast' |
44 | | 'approvedChange' |
45 | | 'pendingChange' |
46 | | 'other' |
47 | href?: string |
48 | } |
49 | changeRequestType?: { key?: string; id?: string; href?: string } |
50 | changeRequestState?: 'draft' | 'posted' |
51 | costEffectiveDate?: string |
52 | priceEffectiveDate?: string |
53 | totalCost?: string |
54 | totalPrice?: string |
55 | projectChangeOrder?: { key?: string; id?: string; href?: string } |
56 | projectContractLineSource?: |
57 | | 'none' |
58 | | 'projectChangeOrder' |
59 | | 'changeRequest' |
60 | | 'changeRequestLine' |
61 | projectContract?: { |
62 | key?: string |
63 | id?: string |
64 | name?: string |
65 | href?: string |
66 | } |
67 | projectContractLine?: { |
68 | key?: string |
69 | id?: string |
70 | name?: string |
71 | href?: string |
72 | } |
73 | scope?: string |
74 | inclusions?: string |
75 | exclusions?: string |
76 | terms?: string |
77 | schedule?: { |
78 | scheduledStartDate?: string |
79 | actualStartDate?: string |
80 | scheduledCompletionDate?: string |
81 | revisedCompletionDate?: string |
82 | substantialCompletionDate?: string |
83 | actualCompletionDate?: string |
84 | noticeToProceedDate?: string |
85 | responseDueDate?: string |
86 | executedOnDate?: string |
87 | scheduleImpact?: string |
88 | } |
89 | internalReference?: { |
90 | referenceNumber?: string |
91 | initiatedBy?: { key?: string; id?: string; name?: string; href?: string } |
92 | verbalApprovalBy?: { |
93 | key?: string |
94 | id?: string |
95 | name?: string |
96 | href?: string |
97 | } |
98 | issuedBy?: { key?: string; id?: string; name?: string; href?: string } |
99 | issuedOnDate?: string |
100 | approvedBy?: { key?: string; id?: string; name?: string; href?: string } |
101 | approvedOnDate?: string |
102 | signedBy?: { key?: string; id?: string; name?: string; href?: string } |
103 | signedOnDate?: string |
104 | source?: string |
105 | sourceReferenceNumber?: string |
106 | } |
107 | externalReference?: { |
108 | referenceNumber?: string |
109 | verbalApprovalBy?: { key?: string; id?: string; href?: string } |
110 | approvedBy?: { key?: string; id?: string; href?: string } |
111 | approvedOnDate?: string |
112 | signedBy?: { key?: string; id?: string; href?: string } |
113 | signedOnDate?: string |
114 | } |
115 | location?: { key?: string; id?: string; name?: string; href?: string } |
116 | changeRequestLines?: { |
117 | key?: string |
118 | id?: string |
119 | href?: string |
120 | changeRequest?: { key?: string; id?: string; href?: string } |
121 | workflowType?: |
122 | | 'none' |
123 | | 'original' |
124 | | 'revision' |
125 | | 'forecast' |
126 | | 'approvedChange' |
127 | | 'pendingChange' |
128 | | 'other' |
129 | dimensions?: { |
130 | location?: { key?: string; id?: string; name?: string; href?: string } |
131 | department?: { |
132 | key?: string |
133 | id?: string |
134 | name?: string |
135 | href?: string |
136 | } |
137 | employee?: { key?: string; id?: string; name?: string; href?: string } |
138 | project?: { key?: string; id?: string; name?: string; href?: string } |
139 | customer?: { key?: string; id?: string; name?: string; href?: string } |
140 | vendor?: { key?: string; id?: string; name?: string; href?: string } |
141 | item?: { key?: string; id?: string; name?: string; href?: string } |
142 | warehouse?: { key?: string; id?: string; name?: string; href?: string } |
143 | class?: { key?: string; id?: string; name?: string; href?: string } |
144 | task?: { id?: string; key?: string; name?: string; href?: string } |
145 | costType?: { id?: string; key?: string; name?: string; href?: string } |
146 | asset?: { id?: string; key?: string; name?: string; href?: string } |
147 | contract?: { id?: string; key?: string; name?: string; href?: string } |
148 | affiliateEntity?: { |
149 | key?: string |
150 | id?: string |
151 | href?: string |
152 | name?: string |
153 | } |
154 | } & { |
155 | location?: { key?: string; id?: string; name?: string; href?: string } |
156 | department?: { |
157 | key?: string |
158 | id?: string |
159 | name?: string |
160 | href?: string |
161 | } |
162 | } |
163 | numberOfProductionUnits?: string |
164 | productionUnitDescription?: string |
165 | quantity?: string |
166 | externalUOM?: string |
167 | unitCost?: string |
168 | cost?: string |
169 | unitPrice?: string |
170 | price?: string |
171 | priceMarkupPercent?: string |
172 | priceMarkupAmount?: string |
173 | linePrice?: string |
174 | projectChangeOrder?: { key?: string; id?: string; href?: string } |
175 | memo?: string |
176 | projectEstimate?: { key?: string; id?: string; href?: string } |
177 | glAccount?: { key?: string; id?: string; name?: string; href?: string } |
178 | projectContract?: { |
179 | key?: string |
180 | id?: string |
181 | name?: string |
182 | href?: string |
183 | } |
184 | projectContractLine?: { |
185 | key?: string |
186 | id?: string |
187 | name?: string |
188 | href?: string |
189 | } |
190 | audit?: { |
191 | createdDateTime?: string |
192 | modifiedDateTime?: string |
193 | createdBy?: string |
194 | modifiedBy?: string |
195 | } |
196 | }[] |
197 | attachment?: { key?: string; id?: string; href?: string } |
198 | audit?: { |
199 | createdDateTime?: string |
200 | modifiedDateTime?: string |
201 | createdBy?: string |
202 | modifiedBy?: string |
203 | } |
204 | entity?: { key?: string; id?: string; name?: string; href?: string } |
205 | } & { id?: {} } |
206 | ) { |
207 | const url = new URL( |
208 | `https://api.intacct.com/ia/api/v1/objects/construction/change-request/${key}` |
209 | ) |
210 |
|
211 | const response = await fetch(url, { |
212 | method: 'PATCH', |
213 | headers: { |
214 | 'Content-Type': 'application/json', |
215 | Authorization: 'Bearer ' + auth.token |
216 | }, |
217 | body: JSON.stringify(body) |
218 | }) |
219 | if (!response.ok) { |
220 | const text = await response.text() |
221 | throw new Error(`${response.status} ${text}`) |
222 | } |
223 | return await response.json() |
224 | } |
225 |
|