Skip to main content

Interface: CalculatePayInput

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

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:119

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. The loaders route approvals through overageApprovalWeekToPayWeek, which snaps each stored week_start forward to its Monday (identity for new unified weeks, +1 for the legacy Sunday tail — ADR-0049).


assignmentEffectiveDate?​

readonly optional assignmentEffectiveDate?: CalendarDate

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

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:132

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 [max(first settling Monday, effective_date), end_date] — rate × (activeDays/periodDays) × min(1, worked/FTE-for-active-days); an end date before that window yields a zero-pay row (no active days). The window opens at the first settling Monday so the prior period's unsettled tail days ride along (ADR-0057, #163), and the contractor's last days are never dropped by the next run (which excludes the ended assignment) — 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:107

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:111

Selects the pricing model — see ContractorType.


holidaysConfig?​

readonly optional holidaysConfig?: HolidaysConfig

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

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:94

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


period​

readonly period: BiMonthlyPeriod

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

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:92

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


weeklyContractedHours​

readonly weeklyContractedHours: number

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

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.