Edits history of script submission #10159 for ' Creates an employee pay slip (xero)'

  • bun
    One script reply has been approved by the moderators
    Ap­pro­ved
    //native
    type Xero = {
    	token: string
    }
    /**
     * Creates an employee pay slip
     *
     */
    export async function main(
    	auth: Xero,
    	PaySlipID: string,
    	Xero_Tenant_Id: string,
    	Idempotency_Key: string,
    	body: {
    		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/PaySlips/${PaySlipID}`)
    
    	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