Edits history of script submission #10151 for ' Creates a payroll employee (xero)'

  • bun
    One script reply has been approved by the moderators
    Ap­pro­ved
    //native
    type Xero = {
      token: string;
    };
    /**
     * Creates a payroll employee
     *
     */
    export async function main(
      auth: Xero,
      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`);
    
      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