Skip to main content

Interface: CalculatePayInput

Defined in: src/lib/pay/index.ts:95

Everything calculateContractorPay needs to price one contractor for one bi-monthly period. Callers fetch time entries for the wider settling-week span (see settlingWeekRange), which may reach into the prior month for outsourced workers; in-house pay re-filters to in-period entries.

Properties

approvedOverageWeeks?

readonly optional approvedOverageWeeks?: ReadonlySet<string>

Defined in: src/lib/pay/index.ts:124

Outsourced only: ISO YYYY-MM-DD Monday week-starts whose overage has been APPROVED. A week in this set is paid on its full worked hours (uncapped); otherwise hours over contracted are withheld until approved. Keyed by the ISO week's Monday so it matches the settling-week boundary. Overage approvals are stored on the Sunday billing week; the loaders translate them to this Monday key via overageApprovalWeekToPayWeek (billing weeks are Sunday, pay weeks Monday, offset by one day).


assignmentEffectiveDate?

readonly optional assignmentEffectiveDate?: CalendarDate

Defined in: src/lib/pay/index.ts:138

Outsourced only: the assignment's effective_date; refines the active-window START when an assignment also begins mid-period (the rare start-and-end-in-one-period case).


assignmentEndDate?

readonly optional assignmentEndDate?: CalendarDate

Defined in: src/lib/pay/index.ts:135

Outsourced only: the assignment's end_date. When it falls on or before the period end (assignmentEndDate <= period.end), pay switches from whole-week settlement to day-proration of the active window — rate × (activeDays/periodDays) × min(1, worked/FTE-for-active-days); an end date before the period yields a zero-pay row (no active days). So the contractor's last days are never dropped by the next run (which excludes the ended assignment) and they're paid for the fraction of the period they were active (ADR-0044 §5). Omit/undefined for ongoing assignments.


bimonthlyRate

readonly bimonthlyRate: Centavos

Defined in: src/lib/pay/index.ts:112

The full bi-monthly (half-month) rate in integer PHP Centavos for a full-time worker. A worker who renders their full-time expectation every settling week earns exactly this. Must be >= 0, else validation fails with invalid_rate.


contractorType

readonly contractorType: ContractorType

Defined in: src/lib/pay/index.ts:116

Selects the pricing model — see ContractorType.


holidaysConfig?

readonly optional holidaysConfig?: HolidaysConfig

Defined in: src/lib/pay/index.ts:126

In-house only: which holidays the company observes (defaults to all standard holidays).


leaveRequests

readonly leaveRequests: readonly PayLeaveRequest[]

Defined in: src/lib/pay/index.ts:99

Leave requests; only approved 'holiday' PTO affects in-house pay (ignored for outsourced).


period

readonly period: BiMonthlyPeriod

Defined in: src/lib/pay/index.ts:114

The bi-monthly half being paid (1st–15th or 16th–end). Defines settling weeks and proration.


timeEntries

readonly timeEntries: readonly PayTimeEntry[]

Defined in: src/lib/pay/index.ts:97

Logged work for the fetched span. Negative hours fail validation with invalid_hours.


weeklyContractedHours

readonly weeklyContractedHours: number

Defined in: src/lib/pay/index.ts:106

Contracted hours per week (the per-week overage cap for outsourced). Must be > 0, else validation fails with invalid_contracted_hours. Note pay is measured against the full-time FULL_TIME_WEEKLY_HOURS denominator, NOT this value — a part-timer (e.g. 30h) caps their paid hours here but still earns the worked fraction of 40h.