1 | |
2 | type Xero = { |
3 | token: string; |
4 | }; |
5 | |
6 | * Creates one or more tax rates |
7 | * |
8 | */ |
9 | export async function main( |
10 | auth: Xero, |
11 | xero_tenant_id: string, |
12 | Idempotency_Key: string, |
13 | body: { |
14 | TaxRates?: { |
15 | Name?: string; |
16 | TaxType?: string; |
17 | TaxComponents?: { |
18 | Name?: string; |
19 | Rate?: number; |
20 | IsCompound?: false | true; |
21 | IsNonRecoverable?: false | true; |
22 | }[]; |
23 | Status?: "ACTIVE" | "DELETED" | "ARCHIVED" | "PENDING"; |
24 | ReportTaxType?: |
25 | | "AVALARA" |
26 | | "BASEXCLUDED" |
27 | | "CAPITALSALESOUTPUT" |
28 | | "CAPITALEXPENSESINPUT" |
29 | | "ECOUTPUT" |
30 | | "ECOUTPUTSERVICES" |
31 | | "ECINPUT" |
32 | | "ECACQUISITIONS" |
33 | | "EXEMPTEXPENSES" |
34 | | "EXEMPTINPUT" |
35 | | "EXEMPTOUTPUT" |
36 | | "GSTONIMPORTS" |
37 | | "INPUT" |
38 | | "INPUTTAXED" |
39 | | "MOSSSALES" |
40 | | "NONE" |
41 | | "NONEOUTPUT" |
42 | | "OUTPUT" |
43 | | "PURCHASESINPUT" |
44 | | "SALESOUTPUT" |
45 | | "EXEMPTCAPITAL" |
46 | | "EXEMPTEXPORT" |
47 | | "CAPITALEXINPUT" |
48 | | "GSTONCAPIMPORTS" |
49 | | "GSTONCAPITALIMPORTS" |
50 | | "REVERSECHARGES" |
51 | | "PAYMENTS" |
52 | | "INVOICE" |
53 | | "CASH" |
54 | | "ACCRUAL" |
55 | | "FLATRATECASH" |
56 | | "FLATRATEACCRUAL" |
57 | | "ACCRUALS" |
58 | | "TXCA" |
59 | | "SRCAS" |
60 | | "DSOUTPUT" |
61 | | "BLINPUT2" |
62 | | "EPINPUT" |
63 | | "IMINPUT2" |
64 | | "MEINPUT" |
65 | | "IGDSINPUT2" |
66 | | "ESN33OUTPUT" |
67 | | "OPINPUT" |
68 | | "OSOUTPUT" |
69 | | "TXN33INPUT" |
70 | | "TXESSINPUT" |
71 | | "TXREINPUT" |
72 | | "TXPETINPUT" |
73 | | "NRINPUT" |
74 | | "ES33OUTPUT" |
75 | | "ZERORATEDINPUT" |
76 | | "ZERORATEDOUTPUT" |
77 | | "DRCHARGESUPPLY" |
78 | | "DRCHARGE" |
79 | | "CAPINPUT" |
80 | | "CAPIMPORTS" |
81 | | "IMINPUT" |
82 | | "INPUT2" |
83 | | "CIUINPUT" |
84 | | "SRINPUT" |
85 | | "OUTPUT2" |
86 | | "SROUTPUT" |
87 | | "CAPOUTPUT" |
88 | | "SROUTPUT2" |
89 | | "CIUOUTPUT" |
90 | | "ZROUTPUT" |
91 | | "ZREXPORT" |
92 | | "ACC28PLUS" |
93 | | "ACCUPTO28" |
94 | | "OTHEROUTPUT" |
95 | | "SHOUTPUT" |
96 | | "ZRINPUT" |
97 | | "BADDEBT" |
98 | | "OTHERINPUT" |
99 | | "BADDEBTRELIEF" |
100 | | "IGDSINPUT3" |
101 | | "SROVR" |
102 | | "TOURISTREFUND" |
103 | | "TXRCN33" |
104 | | "TXRCRE" |
105 | | "TXRCESS" |
106 | | "TXRCTS" |
107 | | "CAPEXINPUT" |
108 | | "UNDEFINED" |
109 | | "CAPEXOUTPUT" |
110 | | "ZEROEXPOUTPUT" |
111 | | "GOODSIMPORT" |
112 | | "NONEINPUT" |
113 | | "NOTREPORTED" |
114 | | "SROVRRS" |
115 | | "SROVRLVG" |
116 | | "SRLVG" |
117 | | "IM" |
118 | | "IMESS" |
119 | | "IMN33" |
120 | | "IMRE" |
121 | | "BADDEBTRECOVERY" |
122 | | "USSALESTAX" |
123 | | "BLINPUT3"; |
124 | CanApplyToAssets?: false | true; |
125 | CanApplyToEquity?: false | true; |
126 | CanApplyToExpenses?: false | true; |
127 | CanApplyToLiabilities?: false | true; |
128 | CanApplyToRevenue?: false | true; |
129 | DisplayTaxRate?: number; |
130 | EffectiveRate?: number; |
131 | }[]; |
132 | }, |
133 | ) { |
134 | const url = new URL(`https://api.xero.com/api.xro/2.0/TaxRates`); |
135 |
|
136 | const response = await fetch(url, { |
137 | method: "PUT", |
138 | headers: { |
139 | Accept: 'application/json', |
140 | "xero-tenant-id": xero_tenant_id, |
141 | "Idempotency-Key": Idempotency_Key, |
142 | "Content-Type": "application/json", |
143 | Authorization: "Bearer " + auth.token, |
144 | }, |
145 | body: JSON.stringify(body), |
146 | }); |
147 | if (!response.ok) { |
148 | const text = await response.text(); |
149 | throw new Error(`${response.status} ${text}`); |
150 | } |
151 | return await response.json(); |
152 | } |
153 |
|