Skip to content

Instantly share code, notes, and snippets.

Created November 20, 2014 11:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/b4e1590a19d94252fab1 to your computer and use it in GitHub Desktop.
Save anonymous/b4e1590a19d94252fab1 to your computer and use it in GitHub Desktop.
<?php
class ContractForm_Step2 extends MultiFormStep {
protected static $fields;
public static $next_steps = 'ContractForm_Step3';
function Title() {
return _t("ContractForm.StepNum", "Step", array("num" => 2));
}
function Subtitle() {
return "Holidays & Sick Pay";
}
function getFields() {
if(!self::$fields) {
$months = array("January" => "January","February" => "February","March" => "March", "April" => "April", "May" => "May","June" => "June","July" =>"July", "August" => "August","September" => "September", "October" => "October","November" => "November", "December" =>"December");
$yes_no = array('Yes' => _t('Common.Yes'), 'No' => _t('Common.No'));
$lengthOfService = array_combine(range(1, 5), range(1, 5));
$holidayEntitlementIncrease = array_combine(range(1, 10), range(1, 10));
$SPE_Periods = array(
'Weeks' => _t('Common.Weeks'),
'Months' => _t('Common.Months')
);
$SPE_Amounts = array(
'Full' => _t('ContractForm.SPE_Amount_Full'),
'75%' => _t('ContractForm.SPE_Amount_75'),
'50%' => _t('ContractForm.SPE_Amount_50'),
'25%' => _t('ContractForm.SPE_Amount_25')
);
$SPE_Numbers = array_combine(range(1, 52), range(1, 52));
$EntLoS_LoS_Numbers = array_combine(range(1, 12), range(1, 12));
$EntLoS_LoS_Periods = array(
'Weeks' => _t('Common.Weeks'),
'Months' => _t('Common.Months'),
'Years' => _t('Common.Years')
);
$EntLoS_Numbers = $SPE_Numbers;
$EntLoS_Periods = $SPE_Periods;
$EntLoS_Amounts = $SPE_Amounts;
$holiday_days = array(
'28' => '28 days',
'29' => '29 days',
'30' => '30 days',
'31' => '31 days',
'32' => '32 days',
'33' => '33 days',
'34' => '34 days',
'35' => '35 days',
'36' => '36 days',
'37' => '37 days',
'38' => '38 days',
'39' => '39 days',
'40' => '40 days',
'41' => '41 days',
'42' => '42 days',
'43' => '43 days',
'44' => '44 days',
'45' => '45 days'
);
$fields = new FieldList(
HeaderField::create('Section_HolidayEntitlement', _t('ContractForm.Section_HolidayEntitlement')),
FieldGroup::create(
HeaderField::create('HolidayYearFrom', 'Start', 5),
DropdownField::create('HolidayYearStartDay', '', array_combine(range(1, 31), range(1, 31)))
->setValue('1'),
DropdownField::create('HolidayYearStartMonth', '', $months)
->setValue('January'),
HeaderField::create('HolidayYearFrom', 'End', 5),
DropdownField::create('HolidayYearEndDay', '', array_combine(range(1, 31), range(1, 31)))
->setValue('31'),
DropdownField::create('HolidayYearEndMonth', '', $months)
->setValue('December')
)->setName('HolidayYearDates')
->setColumnCount(3),
DropdownField::create('EmployeeFullHolidayEntitlement', 'What is the employee\'s full holiday entitlement', $holiday_days),
HiddenField::create('CanCarryForwardHolidays'),
TextField::create('CarryForwardMaximumDaysNote', 'Max number of days that can be carried forward')
->performReadonlyTransformation()
->displayIf('EmployeeFullHolidayEntitlement')->isNotEqualTo('28')->end(),
HiddenField::create('CarryForwardMaximumDays'),
OptionsetField::create('HolidayArrangement', 'How are holidays arranged?', array(
'All holidays are fixed' => 'All holidays are fixed',
'Employee may request holiday dates' => 'Employee may request holiday dates'
)),
OptionsetField::create('FixedHolidayDates', null, $yes_no)
->displayIf('HolidayArrangement')->isEqualTo("Employee may request holiday dates")->end(),
DropdownField::create('FixedHolidayDatesCount', null, array_combine(range(1, 40), range(1, 40)))
->displayIf('FixedHolidayDates')->isEqualTo("Yes")->andIf('HolidayArrangement')->isEqualTo("Employee may request holiday dates")->end(),
DropdownField::create('HolidayApprovalPeriod', null, array(
'Double the amount of holiday requested' => 'Double the amount of holiday requested',
'One week' => 'One week',
'Two weeks' => 'Two weeks',
'Three weeks' => 'Three weeks',
'Four weeks' => 'Four weeks',
'One month' => 'One month',
'Two months' => 'Two months',
'Three months' => 'Three months'
))->displayIf('HolidayArrangement')->isEqualTo('Employee may request holiday dates')->end(),
OptionsetField::create('HolidayEntitlementIncreasesWithYearsOfService', null, $yes_no),
FieldGroup::create(
HeaderField::create('LengthOfService', _t('ContractForm.LengthOfService'), 6),
HeaderField::create('HolidayEntitlementIncrease', 'New Total Holiday Entitlement', 6),
DropdownField::create('LoS_1', _t('ContractForm.LoS_Before'), $lengthOfService)
->setRightTitle(_t('ContractForm.LoS_After'))->addExtraClass('stacked'),
DropdownField::create('HEI_1', '', $holidayEntitlementIncrease)
->setRightTitle(_t('ContractForm.HEI_After'))->addExtraClass('stacked'),
DropdownField::create('LoS_2', _t('ContractForm.LoS_Before'), $lengthOfService)
->setRightTitle(_t('ContractForm.LoS_After'))->addExtraClass('stacked')->setEmptyString(''),
DropdownField::create('HEI_2', '', $holidayEntitlementIncrease)
->setRightTitle(_t('ContractForm.HEI_After'))->addExtraClass('stacked')->setEmptyString(''),
DropdownField::create('LoS_3', _t('ContractForm.LoS_Before'), $lengthOfService)
->setRightTitle(_t('ContractForm.LoS_After'))->addExtraClass('stacked')->setEmptyString(''),
DropdownField::create('HEI_3', '', $holidayEntitlementIncrease)
->setRightTitle(_t('ContractForm.HEI_After'))->addExtraClass('stacked')->setEmptyString(''),
DropdownField::create('LoS_4', _t('ContractForm.LoS_Before'), $lengthOfService)
->setRightTitle(_t('ContractForm.LoS_After'))->addExtraClass('stacked')->setEmptyString(''),
DropdownField::create('HEI_4', '', $holidayEntitlementIncrease)
->setRightTitle(_t('ContractForm.HEI_After'))->addExtraClass('stacked')->setEmptyString(''),
DropdownField::create('LoS_5', _t('ContractForm.LoS_Before'), $lengthOfService)
->setRightTitle(_t('ContractForm.LoS_After'))->addExtraClass('stacked')->setEmptyString(''),
DropdownField::create('HEI_5', '', $holidayEntitlementIncrease)
->setRightTitle(_t('ContractForm.HEI_After'))->addExtraClass('stacked')->setEmptyString('')
)->setColumnCount(2)->setName('HolidayEntitlementBands')
->displayIf('HolidayEntitlementIncreasesWithYearsOfService')->isEqualTo("Yes")->end(),
DropdownField::create('MaximumHolidaysTakenInOnePeriod', 'What is the maximum number of weeks an employee can take as holiday in one period?', array(
'1 working week' => '1 working week',
'2 working weeks' => '2 working weeks',
'3 working weeks' => '3 working weeks'
))->displayIf('HolidayArrangement')->isEqualTo('Employee may request holiday dates')->end(),
HeaderField::create('Section_SickPay', _t('ContractForm.Section_SickPay')),
DropdownField::create('ReportAbsenceTo', null, array(
'Your Manager/Supervisor' => _t('ContractForm.ReportAbsenceTo_Manager'),
'The HR Department' => _t('ContractForm.ReportAbsenceTo_HR'),
'The Reception' => _t('ContractForm.ReportAbsenceTo_Reception')
)),
DropdownField::create('ReportAbsenceTime', null, array(
'TwoHoursBefore' => _t('ContractForm.ReportAbsenceTime_TwoHoursBefore'),
'OneHourBefore' => _t('ContractForm.ReportAbsenceTime_OneHourBefore'),
'ThirtyMinsBefore' => _t('ContractForm.ReportAbsenceTime_ThirtyMinsBefore'),
'ByStartOfShift' => _t('ContractForm.ReportAbsenceTime_ByStartOfShift'),
'OneHourAfter' => _t('ContractForm.ReportAbsenceTime_OneHourAfter')
)),
OptionsetField::create('EnhancedSickPay', null, $yes_no),
OptionsetField::create('IsSickPayWaitingPeriod', null, $yes_no)
->displayIf('EnhancedSickPay')->isEqualTo('Yes')->end(),
DropdownField::create('SickPayWaitingPeriod', null, array(
'Probation' => _t('ContractForm.SickPayWaitingPeriod_Probation'),
'1 week' => _t('ContractForm.SickPayWaitingPeriod_1w'),
'1 month' => _t('ContractForm.SickPayWaitingPeriod_1m'),
'3 months' => _t('ContractForm.SickPayWaitingPeriod_3m'),
'6 months' => _t('ContractForm.SickPayWaitingPeriod_6m'),
'12 months' => _t('ContractForm.SickPayWaitingPeriod_12m'),
'18 months' => _t('ContractForm.SickPayWaitingPeriod_18m'),
'24 months' => _t('ContractForm.SickPayWaitingPeriod_24m')
))->displayIf('IsSickPayWaitingPeriod')->isEqualTo('Yes')->end(),
FieldGroup::create(
HeaderField::create('SPE_Number', _t('Common.Number'), 6),
HeaderField::create('SPE_Period', _t('Common.Period'), 6),
HeaderField::create('SPE_Amount', _t('Common.Amount'), 6),
DropdownField::create('SPE_1_Number', '', $SPE_Numbers),
DropdownField::create('SPE_1_Period', '', $SPE_Periods),
DropdownField::create('SPE_1_Amount', '', $SPE_Amounts),
DropdownField::create('SPE_2_Number', '', $SPE_Numbers)->setEmptyString(''),
DropdownField::create('SPE_2_Period', '', $SPE_Periods)->setEmptyString(''),
DropdownField::create('SPE_2_Amount', '', $SPE_Amounts)->setEmptyString(''),
DropdownField::create('SPE_3_Number', '', $SPE_Numbers)->setEmptyString(''),
DropdownField::create('SPE_3_Period', '', $SPE_Periods)->setEmptyString(''),
DropdownField::create('SPE_3_Amount', '', $SPE_Amounts)->setEmptyString('')
)->setName('SickPayEntitlement')
->setColumnCount(3)
->displayIf('EnhancedSickPay')->isEqualTo('Yes')->end(),
OptionsetField::create('DoesEntitlementIncreaseWithLoS', null, $yes_no)
->displayIf('EnhancedSickPay')->isEqualTo('Yes')->end(),
FieldGroup::create(
HeaderField::create('EntLoS_EntLoS', _t('ContractForm.EntLoS'), 6),
HeaderField::create('EntLoS_EntLoS_', ' ', 6),
HeaderField::create('EntLoS_Number', _t('Common.Number'), 6),
HeaderField::create('EntLoS_Period', _t('Common.Period'), 6),
HeaderField::create('EntLoS_Amount', _t('Common.Amount'), 6),
DropdownField::create('EntLoS_1_LoS_Number', _t('ContractForm.LoS_Before'), $EntLoS_LoS_Numbers)->addExtraClass('stacked'),
DropdownField::create('EntLoS_1_LoS_Period', '', $EntLoS_LoS_Periods),
DropdownField::create('EntLoS_1_Number', '', $EntLoS_Numbers),
DropdownField::create('EntLoS_1_Period', '', $EntLoS_Periods),
DropdownField::create('EntLoS_1_Amount', '', $EntLoS_Amounts),
DropdownField::create('EntLoS_2_LoS_Number', _t('ContractForm.LoS_Before'), $EntLoS_LoS_Numbers)->addExtraClass('stacked')->setEmptyString(''),
DropdownField::create('EntLoS_2_LoS_Period', '', $EntLoS_LoS_Periods)->setEmptyString(''),
DropdownField::create('EntLoS_2_Number', '', $EntLoS_Numbers)->setEmptyString('')->setEmptyString(''),
DropdownField::create('EntLoS_2_Period', '', $EntLoS_Periods)->setEmptyString(''),
DropdownField::create('EntLoS_2_Amount', '', $EntLoS_Amounts)->setEmptyString(''),
DropdownField::create('EntLoS_3_LoS_Number', _t('ContractForm.LoS_Before'), $EntLoS_LoS_Numbers)->addExtraClass('stacked')->setEmptyString(''),
DropdownField::create('EntLoS_3_LoS_Period', '', $EntLoS_LoS_Periods)->setEmptyString(''),
DropdownField::create('EntLoS_3_Number', '', $EntLoS_Numbers)->setEmptyString(''),
DropdownField::create('EntLoS_3_Period', '', $EntLoS_Periods)->setEmptyString(''),
DropdownField::create('EntLoS_3_Amount', '', $EntLoS_Amounts)->setEmptyString(''),
DropdownField::create('EntLoS_4_LoS_Number', _t('ContractForm.LoS_Before'), $EntLoS_LoS_Numbers)->addExtraClass('stacked')->setEmptyString(''),
DropdownField::create('EntLoS_4_LoS_Period', '', $EntLoS_LoS_Periods)->setEmptyString(''),
DropdownField::create('EntLoS_4_Number', '', $EntLoS_Numbers)->setEmptyString(''),
DropdownField::create('EntLoS_4_Period', '', $EntLoS_Periods)->setEmptyString(''),
DropdownField::create('EntLoS_4_Amount', '', $EntLoS_Amounts)->setEmptyString(''),
DropdownField::create('EntLoS_5_LoS_Number', _t('ContractForm.LoS_Before'), $EntLoS_LoS_Numbers)->addExtraClass('stacked')->setEmptyString(''),
DropdownField::create('EntLoS_5_LoS_Period', '', $EntLoS_LoS_Periods)->setEmptyString(''),
DropdownField::create('EntLoS_5_Number', '', $EntLoS_Numbers)->setEmptyString(''),
DropdownField::create('EntLoS_5_Period', '', $EntLoS_Periods)->setEmptyString(''),
DropdownField::create('EntLoS_5_Amount', '', $EntLoS_Amounts)->setEmptyString(''),
DropdownField::create('EntLoS_6_LoS_Number', _t('ContractForm.LoS_Before'), $EntLoS_LoS_Numbers)->addExtraClass('stacked')->setEmptyString(''),
DropdownField::create('EntLoS_6_LoS_Period', '', $EntLoS_LoS_Periods)->setEmptyString(''),
DropdownField::create('EntLoS_6_Number', '', $EntLoS_Numbers)->setEmptyString(''),
DropdownField::create('EntLoS_6_Period', '', $EntLoS_Periods)->setEmptyString(''),
DropdownField::create('EntLoS_6_Amount', '', $EntLoS_Amounts)->setEmptyString('')
)->setName('EntitlementIncreasesWithLoS')
->setColumnCount(5)
->addExtraClass('stacked')
->displayIf('DoesEntitlementIncreaseWithLoS')->isEqualTo('Yes')
->andIf('EnhancedSickPay')->isEqualTo('Yes')->end(),
HeaderField::create('Section_PensionScheme', _t('ContractForm.PensionScheme'))
->setDescription(_t('ContractForm.PensionScheme_help')),
OptionsetField::create('ProvideStakeholdersPensionScheme', null, $yes_no),
OptionsetField::create('OfferOccupationalPension', null, $yes_no),
OptionsetField::create('AutoEnrolPension', null, $yes_no),
DropdownField::create('ObtainPensionDetailsFrom', null, array(
'LineManager' => _t('Common.CanBeObtainedFrom_LineManager'),
'Office' => _t('Common.CanBeObtainedFrom_Office'),
'HR' => _t('Common.CanBeObtainedFrom_HR'),
//'ThisContract' => _t('Common.CanBeObtainedFrom_ThisContract'),
'FinanceDept' => _t('Common.CanBeObtainedFrom_FinanceDept')
))->displayIf('OfferOccupationalPension')->isEqualTo('Yes')
->orIf('AutoEnrolPension')->isEqualTo('Yes')->end(),
OptionsetField::create('IsPensionSchemeWaitingPeriod', null, $yes_no)
->displayIf('OfferOccupationalPension')->isEqualTo('Yes')
->orIf('AutoEnrolPension')->isEqualTo('Yes')->end(),
DropdownField::create('PensionSchemeWaitingPeriod', null, array(
'Postponement' => 'on completion of the postponement period',
'1w' => 'after 1 week',
'1m' => 'after 1 month',
'3m' => 'after 3 months',
'6m' => 'after 6 months',
'1y' => 'after 1 year',
'2y' => 'after 2 years'
))->displayIf('IsPensionSchemeWaitingPeriod')->isEqualTo('Yes')
->andIf()
->group()
->orIf('OfferOccupationalPension')->isEqualTo('Yes')
->orIf('AutoEnrolPension')->isEqualTo('Yes')
->end(),
OptionsetField::create('EmployeeMustMakeContributionToJoinScheme', null, $yes_no)
->displayIf('OfferOccupationalPension')->isEqualTo('Yes')
->orIf('AutoEnrolPension')->isEqualTo('Yes')->end()
);
foreach ($fields as &$field) {
if($name = _t('ContractForm.'.$field->Name)) {
$field->setTitle($name);
}
if($description = _t('ContractForm.'.$field->Name.'_help')) {
$field->setDescription($description);
}
}
self::$fields = $fields;
}
Requirements::javascript($this->ThemeDir()."/js/holidays.js");
return self::$fields;
}
function getValidator() {
$validator = ZenValidator::create();
$validator->addRequiredFields(array(
'HolidayArrangement'
));
return $validator;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment