Edits history of script submission #10486 for ' Updates an employee's detail (xero)'

  • bun
    One script reply has been approved by the moderators
    Ap­pro­ved
    //native
    type Xero = {
    	token: string
    }
    /**
     * Updates an employee's detail
     * Update properties on a single employee
     */
    export async function main(
    	auth: Xero,
    	EmployeeID: string,
    	Xero_Tenant_Id: string,
    	Idempotency_Key: string,
    	body: {
    		FirstName: string
    		LastName: string
    		DateOfBirth: string
    		HomeAddress?: {
    			AddressLine1: string
    			AddressLine2?: string
    			City?: string
    			Region?: 'ACT' | 'NSW' | 'NT' | 'QLD' | 'SA' | 'TAS' | 'VIC' | 'WA'
    			PostalCode?: string
    			Country?: string
    		}
    		StartDate?: string
    		Title?: string
    		MiddleNames?: string
    		Email?: string
    		Gender?: 'N' | 'M' | 'F' | 'I'
    		Phone?: string
    		Mobile?: string
    		TwitterUserName?: string
    		IsAuthorisedToApproveLeave?: false | true
    		IsAuthorisedToApproveTimesheets?: false | true
    		JobTitle?: string
    		Classification?: string
    		OrdinaryEarningsRateID?: string
    		PayrollCalendarID?: string
    		EmployeeGroupName?: string
    		EmployeeID?: string
    		TerminationDate?: string
    		TerminationReason?: 'F' | 'I' | 'V' | 'D' | 'R' | 'C' | 'T'
    		BankAccounts?: {
    			StatementText?: string
    			AccountName?: string
    			BSB?: string
    			AccountNumber?: string
    			Remainder?: false | true
    			Amount?: number
    		}[]
    		PayTemplate?: {
    			EarningsLines?: {
    				EarningsRateID: string
    				CalculationType?: 'USEEARNINGSRATE' | 'ENTEREARNINGSRATE' | 'ANNUALSALARY'
    				AnnualSalary?: number
    				NumberOfUnitsPerWeek?: number
    				RatePerUnit?: number
    				NormalNumberOfUnits?: number
    				Amount?: number
    				NumberOfUnits?: number
    				FixedAmount?: number
    			}[]
    			DeductionLines?: {
    				DeductionTypeID: string
    				CalculationType?: 'FIXEDAMOUNT' | 'PRETAX' | 'POSTTAX'
    				Amount?: number
    				Percentage?: number
    				NumberOfUnits?: number
    			}[]
    			SuperLines?: {
    				SuperMembershipID?: string
    				ContributionType?: 'SGC' | 'SALARYSACRIFICE' | 'EMPLOYERADDITIONAL' | 'EMPLOYEE'
    				CalculationType?: 'FIXEDAMOUNT' | 'PERCENTAGEOFEARNINGS' | 'STATUTORY'
    				MinimumMonthlyEarnings?: number
    				ExpenseAccountCode?: string
    				LiabilityAccountCode?: string
    				Percentage?: number
    				Amount?: number
    			}[]
    			ReimbursementLines?: {
    				ReimbursementTypeID?: string
    				Amount?: number
    				Description?: string
    				ExpenseAccount?: string
    			}[]
    			LeaveLines?: {
    				LeaveTypeID?: string
    				CalculationType?:
    					| 'NOCALCULATIONREQUIRED'
    					| 'FIXEDAMOUNTEACHPERIOD'
    					| 'ENTERRATEINPAYTEMPLATE'
    					| 'BASEDONORDINARYEARNINGS'
    				EntitlementFinalPayPayoutType?: 'NOTPAIDOUT' | 'PAIDOUT'
    				EmploymentTerminationPaymentType?: 'R' | 'O'
    				IncludeSuperannuationGuaranteeContribution?: false | true
    				NumberOfUnits?: number
    				AnnualNumberOfUnits?: number
    				FullTimeNumberOfUnitsPerPeriod?: number
    			}[]
    		}
    		OpeningBalances?: {
    			OpeningBalanceDate?: string
    			Tax?: string
    			EarningsLines?: {
    				EarningsRateID: string
    				CalculationType?: 'USEEARNINGSRATE' | 'ENTEREARNINGSRATE' | 'ANNUALSALARY'
    				AnnualSalary?: number
    				NumberOfUnitsPerWeek?: number
    				RatePerUnit?: number
    				NormalNumberOfUnits?: number
    				Amount?: number
    				NumberOfUnits?: number
    				FixedAmount?: number
    			}[]
    			DeductionLines?: {
    				DeductionTypeID: string
    				CalculationType?: 'FIXEDAMOUNT' | 'PRETAX' | 'POSTTAX'
    				Amount?: number
    				Percentage?: number
    				NumberOfUnits?: number
    			}[]
    			SuperLines?: {
    				SuperMembershipID?: string
    				ContributionType?: 'SGC' | 'SALARYSACRIFICE' | 'EMPLOYERADDITIONAL' | 'EMPLOYEE'
    				CalculationType?: 'FIXEDAMOUNT' | 'PERCENTAGEOFEARNINGS' | 'STATUTORY'
    				MinimumMonthlyEarnings?: number
    				ExpenseAccountCode?: string
    				LiabilityAccountCode?: string
    				Percentage?: number
    				Amount?: number
    			}[]
    			ReimbursementLines?: {
    				ReimbursementTypeID?: string
    				Amount?: number
    				Description?: string
    				ExpenseAccount?: string
    			}[]
    			LeaveLines?: {
    				LeaveTypeID?: string
    				CalculationType?:
    					| 'NOCALCULATIONREQUIRED'
    					| 'FIXEDAMOUNTEACHPERIOD'
    					| 'ENTERRATEINPAYTEMPLATE'
    					| 'BASEDONORDINARYEARNINGS'
    				EntitlementFinalPayPayoutType?: 'NOTPAIDOUT' | 'PAIDOUT'
    				EmploymentTerminationPaymentType?: 'R' | 'O'
    				IncludeSuperannuationGuaranteeContribution?: false | true
    				NumberOfUnits?: number
    				AnnualNumberOfUnits?: number
    				FullTimeNumberOfUnitsPerPeriod?: number
    			}[]
    			PaidLeaveEarningsLines?: {
    				LeaveTypeID: string
    				Amount: number
    				SGCAppliedLeaveLoadingAmount?: number
    				SGCExemptedLeaveLoadingAmount?: number
    				ResetSTPCategorisation?: false | true
    			}[]
    		}
    		TaxDeclaration?: {
    			EmployeeID?: string
    			EmploymentBasis?:
    				| 'FULLTIME'
    				| 'PARTTIME'
    				| 'CASUAL'
    				| 'LABOURHIRE'
    				| 'SUPERINCOMESTREAM'
    				| 'NONEMPLOYEE'
    			TFNExemptionType?: 'NOTQUOTED' | 'PENDING' | 'PENSIONER' | 'UNDER18'
    			TaxFileNumber?: string
    			ABN?: string
    			AustralianResidentForTaxPurposes?: false | true
    			ResidencyStatus?: 'AUSTRALIANRESIDENT' | 'FOREIGNRESIDENT' | 'WORKINGHOLIDAYMAKER'
    			TaxScaleType?:
    				| 'WORKINGHOLIDAYMAKER'
    				| 'REGULAR'
    				| 'ACTORSARTISTSENTERTAINERS'
    				| 'HORTICULTURISTORSHEARER'
    				| 'SENIORORPENSIONER'
    				| 'FOREIGN'
    			WorkCondition?: 'PROMOTIONAL' | 'THREELESSPERFORMANCESPERWEEK' | 'NONE'
    			SeniorMaritalStatus?: 'MEMBEROFCOUPLE' | 'MEMBEROFILLNESSSEPARATEDCOUPLE' | 'SINGLE'
    			TaxFreeThresholdClaimed?: false | true
    			TaxOffsetEstimatedAmount?: number
    			HasHELPDebt?: false | true
    			HasSFSSDebt?: false | true
    			HasTradeSupportLoanDebt?: false | true
    			UpwardVariationTaxWithholdingAmount?: number
    			EligibleToReceiveLeaveLoading?: false | true
    			ApprovedWithholdingVariationPercentage?: number
    			HasStudentStartupLoan?: false | true
    			HasLoanOrStudentDebt?: false | true
    			UpdatedDateUTC?: string
    		}
    		IncomeType?:
    			| 'LABOURHIRE'
    			| 'NONEMPLOYEE'
    			| 'WORKINGHOLIDAYMAKER'
    			| 'SALARYANDWAGES'
    			| 'CLOSELYHELDPAYEES'
    		EmploymentType?: 'EMPLOYEE' | 'CONTRACTOR'
    		CountryOfResidence?:
    			| 'SA'
    			| 'AF'
    			| 'AX'
    			| 'AL'
    			| 'DZ'
    			| 'AS'
    			| 'AD'
    			| 'AO'
    			| 'AI'
    			| 'AQ'
    			| 'AG'
    			| 'AR'
    			| 'AM'
    			| 'AW'
    			| 'AU'
    			| 'AT'
    			| 'AZ'
    			| 'BS'
    			| 'BH'
    			| 'BD'
    			| 'BB'
    			| 'BY'
    			| 'BE'
    			| 'BZ'
    			| 'BJ'
    			| 'BM'
    			| 'BT'
    			| 'BO'
    			| 'BA'
    			| 'BW'
    			| 'BV'
    			| 'BR'
    			| 'IO'
    			| 'BN'
    			| 'BG'
    			| 'BF'
    			| 'BI'
    			| 'KH'
    			| 'CM'
    			| 'CA'
    			| 'CV'
    			| 'KY'
    			| 'CF'
    			| 'TD'
    			| 'CL'
    			| 'CN'
    			| 'CX'
    			| 'CC'
    			| 'CO'
    			| 'KM'
    			| 'CG'
    			| 'CD'
    			| 'CK'
    			| 'CR'
    			| 'CI'
    			| 'HR'
    			| 'CU'
    			| 'CY'
    			| 'CZ'
    			| 'DK'
    			| 'DJ'
    			| 'DM'
    			| 'DO'
    			| 'EC'
    			| 'EG'
    			| 'SV'
    			| 'GQ'
    			| 'ER'
    			| 'EE'
    			| 'ET'
    			| 'FK'
    			| 'FO'
    			| 'FJ'
    			| 'FI'
    			| 'FR'
    			| 'GF'
    			| 'PF'
    			| 'TF'
    			| 'GA'
    			| 'GM'
    			| 'GE'
    			| 'DE'
    			| 'GH'
    			| 'GI'
    			| 'GR'
    			| 'GL'
    			| 'GD'
    			| 'GP'
    			| 'GU'
    			| 'GT'
    			| 'GG'
    			| 'GN'
    			| 'GW'
    			| 'GY'
    			| 'HT'
    			| 'HM'
    			| 'VA'
    			| 'HN'
    			| 'HK'
    			| 'HU'
    			| 'IS'
    			| 'IN'
    			| 'ID'
    			| 'IR'
    			| 'IQ'
    			| 'IE'
    			| 'IM'
    			| 'IL'
    			| 'IT'
    			| 'JM'
    			| 'JP'
    			| 'JE'
    			| 'JO'
    			| 'KZ'
    			| 'KE'
    			| 'KI'
    			| 'KP'
    			| 'KR'
    			| 'KW'
    			| 'KG'
    			| 'LA'
    			| 'LV'
    			| 'LB'
    			| 'LS'
    			| 'LR'
    			| 'LY'
    			| 'LI'
    			| 'LT'
    			| 'LU'
    			| 'MO'
    			| 'MK'
    			| 'MG'
    			| 'MW'
    			| 'MY'
    			| 'MV'
    			| 'ML'
    			| 'MT'
    			| 'MH'
    			| 'MQ'
    			| 'MR'
    			| 'MU'
    			| 'YT'
    			| 'MX'
    			| 'FM'
    			| 'MD'
    			| 'MC'
    			| 'MN'
    			| 'ME'
    			| 'MS'
    			| 'MA'
    			| 'MZ'
    			| 'MM'
    			| 'NA'
    			| 'NR'
    			| 'NP'
    			| 'NL'
    			| 'AN'
    			| 'NC'
    			| 'NZ'
    			| 'NI'
    			| 'NE'
    			| 'NG'
    			| 'NU'
    			| 'NF'
    			| 'MP'
    			| 'NO'
    			| 'OM'
    			| 'PK'
    			| 'PW'
    			| 'PS'
    			| 'PA'
    			| 'PG'
    			| 'PY'
    			| 'PE'
    			| 'PH'
    			| 'PN'
    			| 'PL'
    			| 'PT'
    			| 'PR'
    			| 'QA'
    			| 'RE'
    			| 'RO'
    			| 'RU'
    			| 'RW'
    			| 'BL'
    			| 'SH'
    			| 'KN'
    			| 'LC'
    			| 'MF'
    			| 'PM'
    			| 'VC'
    			| 'WS'
    			| 'SM'
    			| 'ST'
    			| 'SN'
    			| 'RS'
    			| 'SC'
    			| 'SL'
    			| 'SG'
    			| 'SK'
    			| 'SI'
    			| 'SB'
    			| 'SO'
    			| 'ZA'
    			| 'GS'
    			| 'ES'
    			| 'LK'
    			| 'SD'
    			| 'SR'
    			| 'SJ'
    			| 'SZ'
    			| 'SE'
    			| 'CH'
    			| 'SY'
    			| 'TW'
    			| 'TJ'
    			| 'TZ'
    			| 'TH'
    			| 'TL'
    			| 'TG'
    			| 'TK'
    			| 'TO'
    			| 'TT'
    			| 'TN'
    			| 'TR'
    			| 'TM'
    			| 'TC'
    			| 'TV'
    			| 'UG'
    			| 'UA'
    			| 'AE'
    			| 'GB'
    			| 'US'
    			| 'UM'
    			| 'UY'
    			| 'UZ'
    			| 'VU'
    			| 'VE'
    			| 'VN'
    			| 'VG'
    			| 'VI'
    			| 'WF'
    			| 'EH'
    			| 'YE'
    			| 'ZM'
    			| 'ZW'
    			| 'BQ'
    			| 'CW'
    			| 'SX'
    			| 'SS'
    		IsSTP2Qualified?: false | true
    		LeaveBalances?: {
    			LeaveName?: string
    			LeaveTypeID?: string
    			NumberOfUnits?: number
    			TypeOfUnits?: string
    		}[]
    		LeaveLines?: {
    			LeaveTypeID?: string
    			CalculationType?:
    				| 'NOCALCULATIONREQUIRED'
    				| 'FIXEDAMOUNTEACHPERIOD'
    				| 'ENTERRATEINPAYTEMPLATE'
    				| 'BASEDONORDINARYEARNINGS'
    			EntitlementFinalPayPayoutType?: 'NOTPAIDOUT' | 'PAIDOUT'
    			EmploymentTerminationPaymentType?: 'R' | 'O'
    			IncludeSuperannuationGuaranteeContribution?: false | true
    			NumberOfUnits?: number
    			AnnualNumberOfUnits?: number
    			FullTimeNumberOfUnitsPerPeriod?: number
    		}[]
    		SuperMemberships?: {
    			SuperMembershipID?: string
    			SuperFundID: string
    			EmployeeNumber: string
    		}[]
    		Status?: 'ACTIVE' | 'TERMINATED'
    		UpdatedDateUTC?: string
    		ValidationErrors?: { Message?: string }[]
    	}[]
    ) {
    	const url = new URL(`https://api.xero.com/payroll.xro/1.0/Employees/${EmployeeID}`)
    
    	const response = await fetch(url, {
    		method: 'POST',
    		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