Appearance
Contractor Offer Wizard
Five-step wizard for creating a new contractor engagement offer. Structurally parallel to the employee wizard but with contractor-specific fields for pay rate, time unit, and agreement period.
Route
/organisations/:organisationId/create-eorinstance/contractor
Progress Line Steps
The step labels in the progress line are: Contractor, Location, Role, Schedule, Rate.
Steps
Step 1: Contractor (Contractor Details)
Collects the contractor's personal information using the shared CandidateDetails component. Includes an AddTeamForm component for optionally assigning the contractor to a team at creation time. Team form fields:
- Team Name (required)
- Manager Name (required; combobox of available managers)
Step 2: Location (Job Location)
Contractor-specific JobLocation component. Country and region selection. On completion, fetches job constraints for the selected country/region and sets the default currency.
Step 3: Role (Job Description)
Contractor-specific JobDetailsForm component. Fields:
- Job Title (required; max 50 characters; combobox with custom value allowed; populated from
fetchedJobDescriptions) - Role Description (Markdown editor; required; minimum 3 characters)
- Option to write a custom description or select a preset description (stepper to cycle through available presets)
- Preset descriptions are loaded from
fetchedJobDescriptionsmatching the selected title
Step 4: Schedule (Work Schedule)
Contractor-specific WorkSchedule component. Working hours, days per week, and schedule type configuration. The schedule type (e.g. On Demand) affects available time units in the next step.
Step 5: Start Date, Pay Rate & Agreement Period
StartDateAndSalaryForm component. Fields:
- Start Date (required; date picker; minimum date calculated from
estimatedPrepTimeInBusinessDaysplus bank holidays) - Contract Length -- when
showOpenEndedOptionForContractorsis enabled and the country allows open-ended contracts:- Fixed Term (radio option)
- Open Ended (radio option; disabled when
allowOpenEndedis false)
- End Date / Agreement Period -- for fixed-term contracts, a radio group:
- Set End Date -- date picker with minimum end date derived from
minimumContractorAgreementPeriodmonths after start date; maximum limited bymaxFixedPeriodMonths - Agreement Period -- number field for months (min:
minimumContractorAgreementPeriod; max:maximumContractorAgreementPeriodor 36)
- Set End Date -- date picker with minimum end date derived from
- Billing Entity (required; select dropdown; "Add Billing Entity" option navigates to entity creation)
- Time Unit (required; Hourly, Daily, or Monthly; Monthly is excluded for On Demand schedule type)
- Currency (required; combobox; always includes the engagement country's currency, the organisation country's currency, EUR, USD, GBP; billing entity currency added when selected)
- Pay Rate (required when pricing is enabled; validated against country minimum rates per time unit, adjusted by exchange rate):
- Hourly: minimum is
minimumHourlyPayRate * exchangeRate - Daily: minimum is
minimumDailyPayRate * exchangeRate - Monthly: minimum is
minimumMonthlyPayRate * exchangeRate - Maximum: 1,000,000,000
- Monthly pay rate uses integer input; hourly/daily use decimal input
- Hourly: minimum is
- Remaining Holiday (required when pricing is disabled; integer 0-30)
- Enable Pricing checkbox (shown when
allowDisablePricingis true)
Differences from Employee Wizard
- Uses pay rate with time unit (Hourly/Daily/Monthly) instead of annual salary.
- Agreement period can be specified as months or an explicit end date.
- Open-ended contract option is available (conditional on feature flag and country).
- Minimum pay rates are validated per time unit with exchange rate adjustment.
- INR currency is excluded for India engagements under certain tenants (
ecolab).
Submission Process
Same eight-step process as the employee wizard, with the following differences:
- Job constraints are fetched via
getContractorJobConstraintsByCountryAndOrganisationId(contractor-specific endpoint). - Regional standards use
submitContractorRegionalStandardswith the minimum initial period calculated fromgetMinimumInitialPeriod. - Pricing uses
submitContractorPricingRequestandsubmitContractorPriceCondition. - Regional holidays are submitted with a holiday count of
0and a contractor flag. - On success, redirects to
/organisations/:organisationId/contractor-quote/:eorId(notcontract-quote).
Wizard State Persistence
Same as the employee wizard: state persisted to local storage, cleared on successful submission.
Behavior notes
- Currency exchange rate is fetched via
getExchangeRatewhen the selected currency differs from the engagement country's currency. - Start date validation accounts for business days and bank holidays.
- The "Get Quote" button is disabled until all required fields are valid.