0

Update a budget

by
Published Oct 17, 2025

Updates an existing budget and its budget details by setting field values.

Script sage_intacct Verified

The script

Submitted by hugo697 Bun
Verified 235 days ago
1
//native
2
type SageIntacct = {
3
	token: string
4
}
5
/**
6
 * Update a budget
7
 * Updates an existing budget and its budget details by setting field values.
8
 */
9
export async function main(
10
	auth: SageIntacct,
11
	key: string,
12
	body: {
13
		key?: string
14
		id?: string
15
		description?: string
16
		isDefault?: false | true
17
		submitterName?: string
18
		status?: 'active' | 'inactive'
19
		consolidateAmounts?: false | true
20
		currency?: string
21
		postProjectEstimate?: false | true
22
		postProjectContract?: false | true
23
		audit?: {
24
			createdDateTime?: string
25
			modifiedDateTime?: string
26
			createdBy?: string
27
			modifiedBy?: string
28
		} & { createdBy?: string; modifiedBy?: string }
29
		entity?: { key?: string; id?: string; name?: string; href?: string }
30
		href?: string
31
		lines?: {
32
			key?: string
33
			id?: string
34
			budget?: { key?: string; id?: string; href?: string }
35
			glAccount?: {
36
				key?: string
37
				id?: string
38
				name?: string
39
				href?: string
40
			} & { key?: string; id?: string; name?: string; href?: string }
41
			dimensions?: {
42
				location?: { key?: string; id?: string; name?: string; href?: string }
43
				department?: {
44
					key?: string
45
					id?: string
46
					name?: string
47
					href?: string
48
				}
49
				employee?: { key?: string; id?: string; name?: string; href?: string }
50
				project?: { key?: string; id?: string; name?: string; href?: string }
51
				customer?: { key?: string; id?: string; name?: string; href?: string }
52
				vendor?: { key?: string; id?: string; name?: string; href?: string }
53
				item?: { key?: string; id?: string; name?: string; href?: string }
54
				warehouse?: { key?: string; id?: string; name?: string; href?: string }
55
				class?: { key?: string; id?: string; name?: string; href?: string }
56
				task?: { id?: string; key?: string; name?: string; href?: string }
57
				costType?: { id?: string; key?: string; name?: string; href?: string }
58
				asset?: { id?: string; key?: string; name?: string; href?: string }
59
				contract?: { id?: string; key?: string; name?: string; href?: string }
60
				affiliateEntity?: {
61
					key?: string
62
					id?: string
63
					href?: string
64
					name?: string
65
				}
66
			} & {
67
				location?: { key?: string; id?: string; name?: string; href?: string }
68
				department?: {
69
					key?: string
70
					id?: string
71
					name?: string
72
					href?: string
73
				}
74
			}
75
			reportingPeriod?: { key?: string; id?: string; href?: string }
76
			notes?: string
77
			budgetGrowth?: {
78
				basedOn?: 'budget' | 'actual' | 'employeeCount'
79
				growBy?: string
80
				perPeriod?: 'actual' | 'percentage'
81
			}
82
			amount?: string
83
			currency?: {
84
				exchangeRateDate?: string
85
				exchangeRateTypeId?: string
86
				exchangeRate?: number
87
				baseCurrency?: string
88
				txnCurrency?: string
89
			}
90
			audit?: {
91
				createdDateTime?: string
92
				modifiedDateTime?: string
93
				createdBy?: string
94
				modifiedBy?: string
95
			}
96
		}[]
97
	} & { id?: {} }
98
) {
99
	const url = new URL(`https://api.intacct.com/ia/api/v1/objects/general-ledger/budget/${key}`)
100

101
	const response = await fetch(url, {
102
		method: 'PATCH',
103
		headers: {
104
			'Content-Type': 'application/json',
105
			Authorization: 'Bearer ' + auth.token
106
		},
107
		body: JSON.stringify(body)
108
	})
109
	if (!response.ok) {
110
		const text = await response.text()
111
		throw new Error(`${response.status} ${text}`)
112
	}
113
	return await response.json()
114
}
115