//native
type Xero = {
token: string
}
/**
* Updates a specific 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'
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
totalCourtOrders?: number
totalBenefits?: 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
}[]
leaveEarningsLines?: {
earningsRateID?: string
ratePerUnit?: number
numberOfUnits?: number
fixedAmount?: number
amount?: number
isLinkedToTimesheet?: false | true
}[]
timesheetEarningsLines?: {
earningsRateID?: string
ratePerUnit?: number
numberOfUnits?: number
fixedAmount?: number
amount?: number
isLinkedToTimesheet?: false | true
}[]
deductionLines?: {
deductionTypeID?: string
amount?: number
subjectToTax?: false | true
percentage?: number
}[]
reimbursementLines?: {
reimbursementTypeID?: string
description?: string
amount?: number
}[]
leaveAccrualLines?: { leaveTypeID?: string; numberOfUnits?: number }[]
benefitLines?: {
benefitTypeID?: string
displayName?: string
amount?: number
fixedAmount?: number
percentage?: number
}[]
paymentLines?: {
paymentLineID?: string
amount?: number
accountNumber?: string
sortCode?: string
accountName?: string
}[]
employeeTaxLines?: {
taxLineID?: string
description?: string
isEmployerTax?: false | true
amount?: number
globalTaxTypeID?: string
manualAdjustment?: false | true
}[]
employerTaxLines?: {
taxLineID?: string
description?: string
isEmployerTax?: false | true
amount?: number
globalTaxTypeID?: string
manualAdjustment?: false | true
}[]
courtOrderLines?: { courtOrderTypeID?: string; amount?: 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