//native
type Xero = {
token: string
}
/**
* Updates a pay run
*
*/
export async function main(
auth: Xero,
PayRunID: string,
Xero_Tenant_Id: string,
Idempotency_Key: string,
body: {
payRunID?: string
payrollCalendarID?: string
periodStartDate?: string
periodEndDate?: string
paymentDate?: string
totalCost?: number
totalPay?: number
payRunStatus?: 'Draft' | 'Posted'
payRunType?: 'Scheduled' | 'Unscheduled' | 'EarlierYearUpdate'
calendarType?:
| 'Weekly'
| 'Fortnightly'
| 'FourWeekly'
| 'Monthly'
| 'Annual'
| 'Quarterly'
| 'TwiceMonthly'
postedDateTime?: string
paySlips?: {
paySlipID?: string
employeeID?: string
payRunID?: string
lastEdited?: string
firstName?: string
lastName?: string
totalEarnings?: number
grossEarnings?: number
totalPay?: number
totalEmployerTaxes?: number
totalEmployeeTaxes?: number
totalDeductions?: number
totalReimbursements?: number
totalStatutoryDeductions?: number
totalSuperannuation?: number
bacsHash?: string
paymentMethod?: 'Cheque' | 'Electronically' | 'Manual'
earningsLines?: {
earningsLineID?: string
earningsRateID?: string
displayName?: string
ratePerUnit?: number
numberOfUnits?: number
fixedAmount?: number
amount?: number
isLinkedToTimesheet?: false | true
isAverageDailyPayRate?: false | true
isSystemGenerated?: false | true
}[]
leaveEarningsLines?: {
earningsLineID?: string
earningsRateID?: string
displayName?: string
ratePerUnit?: number
numberOfUnits?: number
fixedAmount?: number
amount?: number
isLinkedToTimesheet?: false | true
isAverageDailyPayRate?: false | true
isSystemGenerated?: false | true
}[]
timesheetEarningsLines?: {
earningsLineID?: string
earningsRateID?: string
displayName?: string
ratePerUnit?: number
numberOfUnits?: number
fixedAmount?: number
amount?: number
isLinkedToTimesheet?: false | true
isAverageDailyPayRate?: false | true
isSystemGenerated?: false | true
}[]
deductionLines?: {
deductionTypeID?: string
displayName?: string
amount?: number
subjectToTax?: false | true
percentage?: number
}[]
reimbursementLines?: {
reimbursementTypeID?: string
description?: string
amount?: number
ratePerUnit?: number
numberOfUnits?: number
}[]
leaveAccrualLines?: { leaveTypeID?: string; numberOfUnits?: number }[]
superannuationLines?: {
superannuationTypeID?: string
displayName?: string
amount?: number
fixedAmount?: number
percentage?: number
manualAdjustment?: false | true
}[]
paymentLines?: {
paymentLineID?: string
amount?: number
accountNumber?: string
sortCode?: string
accountName?: string
}[]
employeeTaxLines?: {
taxLineID?: string
description?: string
amount?: number
globalTaxTypeID?: string
manualAdjustment?: false | true
}[]
employerTaxLines?: {
taxLineID?: string
description?: string
amount?: number
globalTaxTypeID?: string
manualAdjustment?: false | true
}[]
statutoryDeductionLines?: {
statutoryDeductionTypeID?: string
amount?: number
fixedAmount?: number
manualAdjustment?: false | true
}[]
taxSettings?: {
periodUnits?: number
periodType?: 'weeks' | 'months'
taxCode?:
| 'ND'
| 'M'
| 'ME'
| 'MSL'
| 'MESL'
| 'SB'
| 'S'
| 'SH'
| 'ST'
| 'SBSL'
| 'SSL'
| 'SHSL'
| 'STSL'
| 'WT'
| 'CAE'
| 'EDW'
| 'NSW'
| 'STC'
| 'STCSL'
specialTaxRate?: string
lumpSumTaxCode?: string
lumpSumAmount?: string
}
grossEarningsHistory?: { daysPaid?: number; unpaidWeeks?: number }
}[]
}
) {
const url = new URL(`https://api.xero.com/payroll.xro/2.0/PayRuns/${PayRunID}`)
const response = await fetch(url, {
method: 'PUT',
headers: {
Accept: 'application/json',
'Xero-Tenant-Id': Xero_Tenant_Id,
'Idempotency-Key': Idempotency_Key,
'Content-Type': 'application/json',
Authorization: 'Bearer ' + auth.token
},
body: JSON.stringify(body)
})
if (!response.ok) {
const text = await response.text()
throw new Error(`${response.status} ${text}`)
}
return await response.json()
}
Submitted by hugo697 515 days ago