Sets the chart of accounts, the conversion date and conversion balances

Script xero Verified

by hugo697 ยท 12/20/2024

The script

Submitted by hugo697 Bun
Verified 515 days ago
1
//native
2
type Xero = {
3
	token: string
4
}
5
/**
6
 * Sets the chart of accounts, the conversion date and conversion balances
7
 *
8
 */
9
export async function main(
10
	auth: Xero,
11
	xero_tenant_id: string,
12
	Idempotency_Key: string,
13
	body: {
14
		ConversionDate?: { Month?: number; Year?: number }
15
		ConversionBalances?: {
16
			AccountCode?: string
17
			Balance?: number
18
			BalanceDetails?: {
19
				Balance?: number
20
				CurrencyCode?: string
21
				CurrencyRate?: number
22
			}[]
23
		}[]
24
		Accounts?: {
25
			Code?: string
26
			Name?: string
27
			AccountID?: string
28
			Type?:
29
				| 'BANK'
30
				| 'CURRENT'
31
				| 'CURRLIAB'
32
				| 'DEPRECIATN'
33
				| 'DIRECTCOSTS'
34
				| 'EQUITY'
35
				| 'EXPENSE'
36
				| 'FIXED'
37
				| 'INVENTORY'
38
				| 'LIABILITY'
39
				| 'NONCURRENT'
40
				| 'OTHERINCOME'
41
				| 'OVERHEADS'
42
				| 'PREPAYMENT'
43
				| 'REVENUE'
44
				| 'SALES'
45
				| 'TERMLIAB'
46
				| 'PAYG'
47
			BankAccountNumber?: string
48
			Status?: 'ACTIVE' | 'ARCHIVED' | 'DELETED'
49
			Description?: string
50
			BankAccountType?: '' | 'BANK' | 'CREDITCARD' | 'PAYPAL' | 'NONE'
51
			CurrencyCode?:
52
				| 'AED'
53
				| 'AFN'
54
				| 'ALL'
55
				| 'AMD'
56
				| 'ANG'
57
				| 'AOA'
58
				| 'ARS'
59
				| 'AUD'
60
				| 'AWG'
61
				| 'AZN'
62
				| 'BAM'
63
				| 'BBD'
64
				| 'BDT'
65
				| 'BGN'
66
				| 'BHD'
67
				| 'BIF'
68
				| 'BMD'
69
				| 'BND'
70
				| 'BOB'
71
				| 'BRL'
72
				| 'BSD'
73
				| 'BTN'
74
				| 'BWP'
75
				| 'BYN'
76
				| 'BYR'
77
				| 'BZD'
78
				| 'CAD'
79
				| 'CDF'
80
				| 'CHF'
81
				| 'CLF'
82
				| 'CLP'
83
				| 'CNY'
84
				| 'COP'
85
				| 'CRC'
86
				| 'CUC'
87
				| 'CUP'
88
				| 'CVE'
89
				| 'CZK'
90
				| 'DJF'
91
				| 'DKK'
92
				| 'DOP'
93
				| 'DZD'
94
				| 'EEK'
95
				| 'EGP'
96
				| 'ERN'
97
				| 'ETB'
98
				| 'EUR'
99
				| 'FJD'
100
				| 'FKP'
101
				| 'GBP'
102
				| 'GEL'
103
				| 'GHS'
104
				| 'GIP'
105
				| 'GMD'
106
				| 'GNF'
107
				| 'GTQ'
108
				| 'GYD'
109
				| 'HKD'
110
				| 'HNL'
111
				| 'HRK'
112
				| 'HTG'
113
				| 'HUF'
114
				| 'IDR'
115
				| 'ILS'
116
				| 'INR'
117
				| 'IQD'
118
				| 'IRR'
119
				| 'ISK'
120
				| 'JMD'
121
				| 'JOD'
122
				| 'JPY'
123
				| 'KES'
124
				| 'KGS'
125
				| 'KHR'
126
				| 'KMF'
127
				| 'KPW'
128
				| 'KRW'
129
				| 'KWD'
130
				| 'KYD'
131
				| 'KZT'
132
				| 'LAK'
133
				| 'LBP'
134
				| 'LKR'
135
				| 'LRD'
136
				| 'LSL'
137
				| 'LTL'
138
				| 'LVL'
139
				| 'LYD'
140
				| 'MAD'
141
				| 'MDL'
142
				| 'MGA'
143
				| 'MKD'
144
				| 'MMK'
145
				| 'MNT'
146
				| 'MOP'
147
				| 'MRO'
148
				| 'MRU'
149
				| 'MUR'
150
				| 'MVR'
151
				| 'MWK'
152
				| 'MXN'
153
				| 'MXV'
154
				| 'MYR'
155
				| 'MZN'
156
				| 'NAD'
157
				| 'NGN'
158
				| 'NIO'
159
				| 'NOK'
160
				| 'NPR'
161
				| 'NZD'
162
				| 'OMR'
163
				| 'PAB'
164
				| 'PEN'
165
				| 'PGK'
166
				| 'PHP'
167
				| 'PKR'
168
				| 'PLN'
169
				| 'PYG'
170
				| 'QAR'
171
				| 'RON'
172
				| 'RSD'
173
				| 'RUB'
174
				| 'RWF'
175
				| 'SAR'
176
				| 'SBD'
177
				| 'SCR'
178
				| 'SDG'
179
				| 'SEK'
180
				| 'SGD'
181
				| 'SHP'
182
				| 'SKK'
183
				| 'SLE'
184
				| 'SLL'
185
				| 'SOS'
186
				| 'SRD'
187
				| 'STD'
188
				| 'STN'
189
				| 'SVC'
190
				| 'SYP'
191
				| 'SZL'
192
				| 'THB'
193
				| 'TJS'
194
				| 'TMT'
195
				| 'TND'
196
				| 'TOP'
197
				| 'TRY'
198
				| 'TTD'
199
				| 'TWD'
200
				| 'TZS'
201
				| 'UAH'
202
				| 'UGX'
203
				| 'USD'
204
				| 'UYU'
205
				| 'UZS'
206
				| 'VEF'
207
				| 'VES'
208
				| 'VND'
209
				| 'VUV'
210
				| 'WST'
211
				| 'XAF'
212
				| 'XCD'
213
				| 'XOF'
214
				| 'XPF'
215
				| 'YER'
216
				| 'ZAR'
217
				| 'ZMW'
218
				| 'ZMK'
219
				| 'ZWD'
220
			TaxType?: string
221
			EnablePaymentsToAccount?: false | true
222
			ShowInExpenseClaims?: false | true
223
			Class?: 'EQUITY' | 'EXPENSE' | 'LIABILITY' | 'REVENUE' | 'ASSET'
224
			SystemAccount?:
225
				| ''
226
				| 'DEBTORS'
227
				| 'CREDITORS'
228
				| 'BANKCURRENCYGAIN'
229
				| 'GST'
230
				| 'GSTONIMPORTS'
231
				| 'HISTORICAL'
232
				| 'REALISEDCURRENCYGAIN'
233
				| 'RETAINEDEARNINGS'
234
				| 'ROUNDING'
235
				| 'TRACKINGTRANSFERS'
236
				| 'UNPAIDEXPCLM'
237
				| 'UNREALISEDCURRENCYGAIN'
238
				| 'WAGEPAYABLES'
239
				| 'CISASSETS'
240
				| 'CISASSET'
241
				| 'CISLABOUR'
242
				| 'CISLABOUREXPENSE'
243
				| 'CISLABOURINCOME'
244
				| 'CISLIABILITY'
245
				| 'CISMATERIALS'
246
			ReportingCode?: string
247
			ReportingCodeName?: string
248
			HasAttachments?: never
249
			UpdatedDateUTC?: string
250
			AddToWatchlist?: false | true
251
			ValidationErrors?: { Message?: string }[]
252
		}[]
253
	}
254
) {
255
	const url = new URL(`https://api.xero.com/api.xro/2.0/Setup`)
256

257
	const response = await fetch(url, {
258
		method: 'POST',
259
		headers: {
260
			Accept: 'application/json',
261
			'xero-tenant-id': xero_tenant_id,
262
			'Idempotency-Key': Idempotency_Key,
263
			'Content-Type': 'application/json',
264
			Authorization: 'Bearer ' + auth.token
265
		},
266
		body: JSON.stringify(body)
267
	})
268
	if (!response.ok) {
269
		const text = await response.text()
270
		throw new Error(`${response.status} ${text}`)
271
	}
272
	return await response.json()
273
}
274