$ppsf = new PayPeriodScheduleFactory();
$action = Misc::findSubmitButton();
$action = strtolower($action);
switch ($action) {
    case 'submit':
        //Debug::setVerbosity(11);
        Debug::Text('Submit!', __FILE__, __LINE__, __METHOD__, 10);
        $ppsf->StartTransaction();
        $ppsf->setId($pay_period_schedule_data['id']);
        $ppsf->setCompany($current_company->getId());
        $ppsf->setName($pay_period_schedule_data['name']);
        $ppsf->setDescription($pay_period_schedule_data['description']);
        $ppsf->setType($pay_period_schedule_data['type']);
        $ppsf->setStartWeekDay($pay_period_schedule_data['start_week_day_id']);
        if ($pay_period_schedule_data['type'] == 5) {
            $ppsf->setAnnualPayPeriods($pay_period_schedule_data['annual_pay_periods']);
        }
        if ($pay_period_schedule_data['type'] == 10 or $pay_period_schedule_data['type'] == 20) {
            $ppsf->setStartDayOfWeek($pay_period_schedule_data['start_day_of_week']);
            $ppsf->setTransactionDate($pay_period_schedule_data['transaction_date']);
        } elseif ($pay_period_schedule_data['type'] == 30) {
            $ppsf->setPrimaryDayOfMonth($pay_period_schedule_data['primary_day_of_month']);
            $ppsf->setSecondaryDayOfMonth($pay_period_schedule_data['secondary_day_of_month']);
            $ppsf->setPrimaryTransactionDayOfMonth($pay_period_schedule_data['primary_transaction_day_of_month']);
            $ppsf->setSecondaryTransactionDayOfMonth($pay_period_schedule_data['secondary_transaction_day_of_month']);
        } elseif ($pay_period_schedule_data['type'] == 50) {
            $ppsf->setPrimaryDayOfMonth($pay_period_schedule_data['primary_day_of_month']);
            $ppsf->setPrimaryTransactionDayOfMonth($pay_period_schedule_data['primary_transaction_day_of_month']);
        }
        if (isset($pay_period_schedule_data['anchor_date'])) {
            $ppsf->setAnchorDate($pay_period_schedule_data['anchor_date']);