1 |
|
2 | type Xero = { |
3 | token: string; |
4 | }; |
5 |
|
6 | * Deletes a specific repeating invoice template |
7 | * |
8 | */ |
9 | export async function main( |
10 | auth: Xero, |
11 | RepeatingInvoiceID: string, |
12 | xero_tenant_id: string, |
13 | Idempotency_Key: string, |
14 | body: { |
15 | RepeatingInvoices?: { |
16 | Type?: "ACCPAY" | "ACCREC"; |
17 | Contact?: { |
18 | ContactID?: string; |
19 | MergedToContactID?: string; |
20 | ContactNumber?: string; |
21 | AccountNumber?: string; |
22 | ContactStatus?: "ACTIVE" | "ARCHIVED" | "GDPRREQUEST"; |
23 | Name?: string; |
24 | FirstName?: string; |
25 | LastName?: string; |
26 | CompanyNumber?: string; |
27 | EmailAddress?: string; |
28 | ContactPersons?: { |
29 | FirstName?: string; |
30 | LastName?: string; |
31 | EmailAddress?: string; |
32 | IncludeInEmails?: false | true; |
33 | }[]; |
34 | BankAccountDetails?: string; |
35 | TaxNumber?: string; |
36 | AccountsReceivableTaxType?: string; |
37 | AccountsPayableTaxType?: string; |
38 | Addresses?: { |
39 | AddressType?: "POBOX" | "STREET"; |
40 | AddressLine1?: string; |
41 | AddressLine2?: string; |
42 | AddressLine3?: string; |
43 | AddressLine4?: string; |
44 | City?: string; |
45 | Region?: string; |
46 | PostalCode?: string; |
47 | Country?: string; |
48 | AttentionTo?: string; |
49 | }[]; |
50 | Phones?: { |
51 | PhoneType?: "DEFAULT" | "DDI" | "MOBILE" | "FAX" | "OFFICE"; |
52 | PhoneNumber?: string; |
53 | PhoneAreaCode?: string; |
54 | PhoneCountryCode?: string; |
55 | }[]; |
56 | IsSupplier?: false | true; |
57 | IsCustomer?: false | true; |
58 | SalesDefaultLineAmountType?: "INCLUSIVE" | "EXCLUSIVE" | "NONE"; |
59 | PurchasesDefaultLineAmountType?: "INCLUSIVE" | "EXCLUSIVE" | "NONE"; |
60 | DefaultCurrency?: |
61 | | "AED" |
62 | | "AFN" |
63 | | "ALL" |
64 | | "AMD" |
65 | | "ANG" |
66 | | "AOA" |
67 | | "ARS" |
68 | | "AUD" |
69 | | "AWG" |
70 | | "AZN" |
71 | | "BAM" |
72 | | "BBD" |
73 | | "BDT" |
74 | | "BGN" |
75 | | "BHD" |
76 | | "BIF" |
77 | | "BMD" |
78 | | "BND" |
79 | | "BOB" |
80 | | "BRL" |
81 | | "BSD" |
82 | | "BTN" |
83 | | "BWP" |
84 | | "BYN" |
85 | | "BYR" |
86 | | "BZD" |
87 | | "CAD" |
88 | | "CDF" |
89 | | "CHF" |
90 | | "CLF" |
91 | | "CLP" |
92 | | "CNY" |
93 | | "COP" |
94 | | "CRC" |
95 | | "CUC" |
96 | | "CUP" |
97 | | "CVE" |
98 | | "CZK" |
99 | | "DJF" |
100 | | "DKK" |
101 | | "DOP" |
102 | | "DZD" |
103 | | "EEK" |
104 | | "EGP" |
105 | | "ERN" |
106 | | "ETB" |
107 | | "EUR" |
108 | | "FJD" |
109 | | "FKP" |
110 | | "GBP" |
111 | | "GEL" |
112 | | "GHS" |
113 | | "GIP" |
114 | | "GMD" |
115 | | "GNF" |
116 | | "GTQ" |
117 | | "GYD" |
118 | | "HKD" |
119 | | "HNL" |
120 | | "HRK" |
121 | | "HTG" |
122 | | "HUF" |
123 | | "IDR" |
124 | | "ILS" |
125 | | "INR" |
126 | | "IQD" |
127 | | "IRR" |
128 | | "ISK" |
129 | | "JMD" |
130 | | "JOD" |
131 | | "JPY" |
132 | | "KES" |
133 | | "KGS" |
134 | | "KHR" |
135 | | "KMF" |
136 | | "KPW" |
137 | | "KRW" |
138 | | "KWD" |
139 | | "KYD" |
140 | | "KZT" |
141 | | "LAK" |
142 | | "LBP" |
143 | | "LKR" |
144 | | "LRD" |
145 | | "LSL" |
146 | | "LTL" |
147 | | "LVL" |
148 | | "LYD" |
149 | | "MAD" |
150 | | "MDL" |
151 | | "MGA" |
152 | | "MKD" |
153 | | "MMK" |
154 | | "MNT" |
155 | | "MOP" |
156 | | "MRO" |
157 | | "MRU" |
158 | | "MUR" |
159 | | "MVR" |
160 | | "MWK" |
161 | | "MXN" |
162 | | "MXV" |
163 | | "MYR" |
164 | | "MZN" |
165 | | "NAD" |
166 | | "NGN" |
167 | | "NIO" |
168 | | "NOK" |
169 | | "NPR" |
170 | | "NZD" |
171 | | "OMR" |
172 | | "PAB" |
173 | | "PEN" |
174 | | "PGK" |
175 | | "PHP" |
176 | | "PKR" |
177 | | "PLN" |
178 | | "PYG" |
179 | | "QAR" |
180 | | "RON" |
181 | | "RSD" |
182 | | "RUB" |
183 | | "RWF" |
184 | | "SAR" |
185 | | "SBD" |
186 | | "SCR" |
187 | | "SDG" |
188 | | "SEK" |
189 | | "SGD" |
190 | | "SHP" |
191 | | "SKK" |
192 | | "SLE" |
193 | | "SLL" |
194 | | "SOS" |
195 | | "SRD" |
196 | | "STD" |
197 | | "STN" |
198 | | "SVC" |
199 | | "SYP" |
200 | | "SZL" |
201 | | "THB" |
202 | | "TJS" |
203 | | "TMT" |
204 | | "TND" |
205 | | "TOP" |
206 | | "TRY" |
207 | | "TTD" |
208 | | "TWD" |
209 | | "TZS" |
210 | | "UAH" |
211 | | "UGX" |
212 | | "USD" |
213 | | "UYU" |
214 | | "UZS" |
215 | | "VEF" |
216 | | "VES" |
217 | | "VND" |
218 | | "VUV" |
219 | | "WST" |
220 | | "XAF" |
221 | | "XCD" |
222 | | "XOF" |
223 | | "XPF" |
224 | | "YER" |
225 | | "ZAR" |
226 | | "ZMW" |
227 | | "ZMK" |
228 | | "ZWD"; |
229 | XeroNetworkKey?: string; |
230 | SalesDefaultAccountCode?: string; |
231 | PurchasesDefaultAccountCode?: string; |
232 | SalesTrackingCategories?: { |
233 | TrackingCategoryName?: string; |
234 | TrackingOptionName?: string; |
235 | }[]; |
236 | PurchasesTrackingCategories?: { |
237 | TrackingCategoryName?: string; |
238 | TrackingOptionName?: string; |
239 | }[]; |
240 | TrackingCategoryName?: string; |
241 | TrackingCategoryOption?: string; |
242 | PaymentTerms?: { |
243 | Bills?: { |
244 | Day?: number; |
245 | Type?: |
246 | | "DAYSAFTERBILLDATE" |
247 | | "DAYSAFTERBILLMONTH" |
248 | | "OFCURRENTMONTH" |
249 | | "OFFOLLOWINGMONTH"; |
250 | }; |
251 | Sales?: { |
252 | Day?: number; |
253 | Type?: |
254 | | "DAYSAFTERBILLDATE" |
255 | | "DAYSAFTERBILLMONTH" |
256 | | "OFCURRENTMONTH" |
257 | | "OFFOLLOWINGMONTH"; |
258 | }; |
259 | }; |
260 | UpdatedDateUTC?: string; |
261 | ContactGroups?: { |
262 | Name?: string; |
263 | Status?: "ACTIVE" | "DELETED"; |
264 | ContactGroupID?: string; |
265 | Contacts?: {}[]; |
266 | }[]; |
267 | Website?: string; |
268 | BrandingTheme?: { |
269 | BrandingThemeID?: string; |
270 | Name?: string; |
271 | LogoUrl?: string; |
272 | Type?: "INVOICE"; |
273 | SortOrder?: number; |
274 | CreatedDateUTC?: string; |
275 | }; |
276 | BatchPayments?: { |
277 | BankAccountNumber?: string; |
278 | BankAccountName?: string; |
279 | Details?: string; |
280 | Code?: string; |
281 | Reference?: string; |
282 | }; |
283 | Discount?: number; |
284 | Balances?: { |
285 | AccountsReceivable?: { Outstanding?: number; Overdue?: number }; |
286 | AccountsPayable?: { Outstanding?: number; Overdue?: number }; |
287 | }; |
288 | Attachments?: { |
289 | AttachmentID?: string; |
290 | FileName?: string; |
291 | Url?: string; |
292 | MimeType?: string; |
293 | ContentLength?: number; |
294 | IncludeOnline?: false | true; |
295 | }[]; |
296 | HasAttachments?: never; |
297 | ValidationErrors?: { Message?: string }[]; |
298 | HasValidationErrors?: never; |
299 | StatusAttributeString?: string; |
300 | }; |
301 | Schedule?: { |
302 | Period?: number; |
303 | Unit?: "WEEKLY" | "MONTHLY"; |
304 | DueDate?: number; |
305 | DueDateType?: |
306 | | "DAYSAFTERBILLDATE" |
307 | | "DAYSAFTERBILLMONTH" |
308 | | "OFCURRENTMONTH" |
309 | | "OFFOLLOWINGMONTH" |
310 | | "DAYSAFTERINVOICEDATE" |
311 | | "DAYSAFTERINVOICEMONTH"; |
312 | StartDate?: string; |
313 | NextScheduledDate?: string; |
314 | EndDate?: string; |
315 | }; |
316 | LineItems?: { |
317 | LineItemID?: string; |
318 | Description?: string; |
319 | Quantity?: number; |
320 | UnitAmount?: number; |
321 | ItemCode?: string; |
322 | AccountCode?: string; |
323 | AccountID?: string; |
324 | TaxType?: string; |
325 | TaxAmount?: number; |
326 | Item?: { Code?: string; Name?: string; ItemID?: string }; |
327 | LineAmount?: number; |
328 | Tracking?: { |
329 | TrackingCategoryID?: string; |
330 | TrackingOptionID?: string; |
331 | Name?: string; |
332 | Option?: string; |
333 | }[]; |
334 | DiscountRate?: number; |
335 | DiscountAmount?: number; |
336 | RepeatingInvoiceID?: string; |
337 | Taxability?: |
338 | | "TAXABLE" |
339 | | "NON_TAXABLE" |
340 | | "EXEMPT" |
341 | | "PART_TAXABLE" |
342 | | "NOT_APPLICABLE"; |
343 | SalesTaxCodeId?: number; |
344 | TaxBreakdown?: { |
345 | TaxComponentId?: string; |
346 | Type?: |
347 | | "SYSGST/USCOUNTRY" |
348 | | "SYSGST/USSTATE" |
349 | | "SYSGST/USCOUNTY" |
350 | | "SYSGST/USCITY" |
351 | | "SYSGST/USSPECIAL"; |
352 | Name?: string; |
353 | TaxPercentage?: number; |
354 | TaxAmount?: number; |
355 | TaxableAmount?: number; |
356 | NonTaxableAmount?: number; |
357 | ExemptAmount?: number; |
358 | StateAssignedNo?: string; |
359 | JurisdictionRegion?: string; |
360 | }[]; |
361 | }[]; |
362 | LineAmountTypes?: "Exclusive" | "Inclusive" | "NoTax"; |
363 | Reference?: string; |
364 | BrandingThemeID?: string; |
365 | CurrencyCode?: |
366 | | "AED" |
367 | | "AFN" |
368 | | "ALL" |
369 | | "AMD" |
370 | | "ANG" |
371 | | "AOA" |
372 | | "ARS" |
373 | | "AUD" |
374 | | "AWG" |
375 | | "AZN" |
376 | | "BAM" |
377 | | "BBD" |
378 | | "BDT" |
379 | | "BGN" |
380 | | "BHD" |
381 | | "BIF" |
382 | | "BMD" |
383 | | "BND" |
384 | | "BOB" |
385 | | "BRL" |
386 | | "BSD" |
387 | | "BTN" |
388 | | "BWP" |
389 | | "BYN" |
390 | | "BYR" |
391 | | "BZD" |
392 | | "CAD" |
393 | | "CDF" |
394 | | "CHF" |
395 | | "CLF" |
396 | | "CLP" |
397 | | "CNY" |
398 | | "COP" |
399 | | "CRC" |
400 | | "CUC" |
401 | | "CUP" |
402 | | "CVE" |
403 | | "CZK" |
404 | | "DJF" |
405 | | "DKK" |
406 | | "DOP" |
407 | | "DZD" |
408 | | "EEK" |
409 | | "EGP" |
410 | | "ERN" |
411 | | "ETB" |
412 | | "EUR" |
413 | | "FJD" |
414 | | "FKP" |
415 | | "GBP" |
416 | | "GEL" |
417 | | "GHS" |
418 | | "GIP" |
419 | | "GMD" |
420 | | "GNF" |
421 | | "GTQ" |
422 | | "GYD" |
423 | | "HKD" |
424 | | "HNL" |
425 | | "HRK" |
426 | | "HTG" |
427 | | "HUF" |
428 | | "IDR" |
429 | | "ILS" |
430 | | "INR" |
431 | | "IQD" |
432 | | "IRR" |
433 | | "ISK" |
434 | | "JMD" |
435 | | "JOD" |
436 | | "JPY" |
437 | | "KES" |
438 | | "KGS" |
439 | | "KHR" |
440 | | "KMF" |
441 | | "KPW" |
442 | | "KRW" |
443 | | "KWD" |
444 | | "KYD" |
445 | | "KZT" |
446 | | "LAK" |
447 | | "LBP" |
448 | | "LKR" |
449 | | "LRD" |
450 | | "LSL" |
451 | | "LTL" |
452 | | "LVL" |
453 | | "LYD" |
454 | | "MAD" |
455 | | "MDL" |
456 | | "MGA" |
457 | | "MKD" |
458 | | "MMK" |
459 | | "MNT" |
460 | | "MOP" |
461 | | "MRO" |
462 | | "MRU" |
463 | | "MUR" |
464 | | "MVR" |
465 | | "MWK" |
466 | | "MXN" |
467 | | "MXV" |
468 | | "MYR" |
469 | | "MZN" |
470 | | "NAD" |
471 | | "NGN" |
472 | | "NIO" |
473 | | "NOK" |
474 | | "NPR" |
475 | | "NZD" |
476 | | "OMR" |
477 | | "PAB" |
478 | | "PEN" |
479 | | "PGK" |
480 | | "PHP" |
481 | | "PKR" |
482 | | "PLN" |
483 | | "PYG" |
484 | | "QAR" |
485 | | "RON" |
486 | | "RSD" |
487 | | "RUB" |
488 | | "RWF" |
489 | | "SAR" |
490 | | "SBD" |
491 | | "SCR" |
492 | | "SDG" |
493 | | "SEK" |
494 | | "SGD" |
495 | | "SHP" |
496 | | "SKK" |
497 | | "SLE" |
498 | | "SLL" |
499 | | "SOS" |
500 | | "SRD" |
501 | | "STD" |
502 | | "STN" |
503 | | "SVC" |
504 | | "SYP" |
505 | | "SZL" |
506 | | "THB" |
507 | | "TJS" |
508 | | "TMT" |
509 | | "TND" |
510 | | "TOP" |
511 | | "TRY" |
512 | | "TTD" |
513 | | "TWD" |
514 | | "TZS" |
515 | | "UAH" |
516 | | "UGX" |
517 | | "USD" |
518 | | "UYU" |
519 | | "UZS" |
520 | | "VEF" |
521 | | "VES" |
522 | | "VND" |
523 | | "VUV" |
524 | | "WST" |
525 | | "XAF" |
526 | | "XCD" |
527 | | "XOF" |
528 | | "XPF" |
529 | | "YER" |
530 | | "ZAR" |
531 | | "ZMW" |
532 | | "ZMK" |
533 | | "ZWD"; |
534 | Status?: "DELETED" | "DRAFT" | "AUTHORISED"; |
535 | SubTotal?: number; |
536 | TotalTax?: number; |
537 | Total?: number; |
538 | RepeatingInvoiceID?: string; |
539 | ID?: string; |
540 | HasAttachments?: never; |
541 | Attachments?: { |
542 | AttachmentID?: string; |
543 | FileName?: string; |
544 | Url?: string; |
545 | MimeType?: string; |
546 | ContentLength?: number; |
547 | IncludeOnline?: false | true; |
548 | }[]; |
549 | ApprovedForSending?: never; |
550 | SendCopy?: never; |
551 | MarkAsSent?: never; |
552 | IncludePDF?: never; |
553 | }[]; |
554 | }, |
555 | ) { |
556 | const url = new URL( |
557 | `https://api.xero.com/api.xro/2.0/RepeatingInvoices/${RepeatingInvoiceID}`, |
558 | ); |
559 |
|
560 | const response = await fetch(url, { |
561 | method: "POST", |
562 | headers: { |
563 | Accept: 'application/json', |
564 | "xero-tenant-id": xero_tenant_id, |
565 | "Idempotency-Key": Idempotency_Key, |
566 | "Content-Type": "application/json", |
567 | Authorization: "Bearer " + auth.token, |
568 | }, |
569 | body: JSON.stringify(body), |
570 | }); |
571 | if (!response.ok) { |
572 | const text = await response.text(); |
573 | throw new Error(`${response.status} ${text}`); |
574 | } |
575 | return await response.json(); |
576 | } |
577 |
|