function addPayStubAmendments()
 {
     //Regular FIXED PS amendment
     $psaf = new PayStubAmendmentFactory();
     $psaf->setUser($this->user_id);
     $psaf->setPayStubEntryNameId(CompanyDeductionFactory::getPayStubEntryAccountByCompanyIDAndTypeAndFuzzyName($this->company_id, 10, 'Bonus'));
     $psaf->setStatus(50);
     //Active
     $psaf->setType(10);
     $psaf->setRate(10);
     $psaf->setUnits(10);
     $psaf->setDescription('Test Fixed PS Amendment');
     $psaf->setEffectiveDate($this->pay_period_objs[0]->getEndDate());
     $psaf->setAuthorized(TRUE);
     if ($psaf->isValid()) {
         $psaf->Save();
     }
     //Regular percent PS amendment
     $psaf = new PayStubAmendmentFactory();
     $psaf->setUser($this->user_id);
     $psaf->setPayStubEntryNameId(CompanyDeductionFactory::getPayStubEntryAccountByCompanyIDAndTypeAndFuzzyName($this->company_id, 10, 'Other'));
     $psaf->setStatus(50);
     //Active
     $psaf->setType(20);
     $psaf->setPercentAmount(10);
     //10%
     $psaf->setPercentAmountEntryNameId(CompanyDeductionFactory::getPayStubEntryAccountByCompanyIDAndTypeAndFuzzyName($this->company_id, 10, 'Regular Time'));
     $psaf->setDescription('Test Percent PS Amendment');
     $psaf->setEffectiveDate($this->pay_period_objs[0]->getEndDate());
     $psaf->setAuthorized(TRUE);
     if ($psaf->isValid()) {
         $psaf->Save();
     }
     //Vacation Accrual Release percent PS amendment
     $psaf = new PayStubAmendmentFactory();
     $psaf->setUser($this->user_id);
     $psaf->setPayStubEntryNameId(CompanyDeductionFactory::getPayStubEntryAccountByCompanyIDAndTypeAndFuzzyName($this->company_id, 10, 'Vacation Accrual Release'));
     $psaf->setStatus(50);
     //Active
     $psaf->setType(20);
     $psaf->setPercentAmount(50);
     //50% - Leave some balance to check against.
     $psaf->setPercentAmountEntryNameId(CompanyDeductionFactory::getPayStubEntryAccountByCompanyIDAndTypeAndFuzzyName($this->company_id, 50, 'Vacation Accrual'));
     $psaf->setDescription('Test Vacation Release Percent PS Amendment');
     $psaf->setEffectiveDate($this->pay_period_objs[0]->getEndDate());
     $psaf->setAuthorized(TRUE);
     if ($psaf->isValid()) {
         $psaf->Save();
     }
     //YTD Adjustment FIXED PS amendment
     $psaf = new PayStubAmendmentFactory();
     $psaf->setUser($this->user_id);
     $psaf->setPayStubEntryNameId(CompanyDeductionFactory::getPayStubEntryAccountByCompanyIDAndTypeAndFuzzyName($this->company_id, 10, 'Premium 2'));
     $psaf->setStatus(50);
     //Active
     $psaf->setType(10);
     $psaf->setAmount(1.99);
     $psaf->setYTDAdjustment(TRUE);
     $psaf->setDescription('Test YTD PS Amendment');
     $psaf->setEffectiveDate($this->pay_period_objs[0]->getEndDate());
     $psaf->setAuthorized(TRUE);
     if ($psaf->isValid()) {
         $psaf->Save();
     }
     //YTD Adjustment FIXED PS amendment
     $psaf = new PayStubAmendmentFactory();
     $psaf->setUser($this->user_id);
     $psaf->setPayStubEntryNameId(CompanyDeductionFactory::getPayStubEntryAccountByCompanyIDAndTypeAndFuzzyName($this->company_id, 10, 'Other'));
     $psaf->setStatus(50);
     //Active
     $psaf->setType(10);
     //$psaf->setAmount( 0.09 );
     $psaf->setAmount(1000);
     //Increase this so Union Dues are closer to the maximum earnings and are calculated to be less.
     $psaf->setYTDAdjustment(TRUE);
     $psaf->setDescription('Test YTD (2) PS Amendment');
     $psaf->setEffectiveDate($this->pay_period_objs[0]->getEndDate());
     $psaf->setAuthorized(TRUE);
     if ($psaf->isValid()) {
         $psaf->Save();
     }
     //YTD Adjustment FIXED PS amendment for testing Maximum EI contribution
     $psaf = new PayStubAmendmentFactory();
     $psaf->setUser($this->user_id);
     $psaf->setPayStubEntryNameId(CompanyDeductionFactory::getPayStubEntryAccountByCompanyIDAndTypeAndFuzzyName($this->company_id, 20, 'EI'));
     $psaf->setStatus(50);
     //Active
     $psaf->setType(10);
     $psaf->setAmount(700.0);
     $psaf->setYTDAdjustment(TRUE);
     $psaf->setDescription('Test EI YTD PS Amendment');
     $psaf->setEffectiveDate($this->pay_period_objs[0]->getEndDate());
     $psaf->setAuthorized(TRUE);
     if ($psaf->isValid()) {
         $psaf->Save();
     }
     //YTD Adjustment FIXED PS amendment for testing Maximum CPP contribution
     $psaf = new PayStubAmendmentFactory();
     $psaf->setUser($this->user_id);
     $psaf->setPayStubEntryNameId(CompanyDeductionFactory::getPayStubEntryAccountByCompanyIDAndTypeAndFuzzyName($this->company_id, 20, 'CPP'));
     $psaf->setStatus(50);
     //Active
     $psaf->setType(10);
     $psaf->setAmount(1900.0);
     $psaf->setYTDAdjustment(TRUE);
     $psaf->setDescription('Test CPP YTD PS Amendment');
     $psaf->setEffectiveDate($this->pay_period_objs[0]->getEndDate());
     $psaf->setAuthorized(TRUE);
     if ($psaf->isValid()) {
         $psaf->Save();
     }
     //YTD Adjustment FIXED PS amendment for testing Vacation Accrual totaling issues.
     $psaf = new PayStubAmendmentFactory();
     $psaf->setUser($this->user_id);
     $psaf->setPayStubEntryNameId(CompanyDeductionFactory::getPayStubEntryAccountByCompanyIDAndTypeAndFuzzyName($this->company_id, 50, 'Vacation Accrual'));
     $psaf->setStatus(50);
     //Active
     $psaf->setType(10);
     $psaf->setAmount(99.01000000000001);
     $psaf->setYTDAdjustment(TRUE);
     $psaf->setDescription('Test Vacation Accrual YTD PS Amendment');
     $psaf->setEffectiveDate($this->pay_period_objs[0]->getEndDate());
     $psaf->setAuthorized(TRUE);
     if ($psaf->isValid()) {
         $psaf->Save();
     }
     //
     // Add EARNING PS amendments for a pay period that has no Punch hours.
     // Include a regular time adjustment so we can test Wage Base amounts for some tax/deductions.
     //Regular FIXED PS amendment as regular time.
     $psaf = new PayStubAmendmentFactory();
     $psaf->setUser($this->user_id);
     $psaf->setPayStubEntryNameId(CompanyDeductionFactory::getPayStubEntryAccountByCompanyIDAndTypeAndFuzzyName($this->company_id, 10, 'Regular Time'));
     $psaf->setStatus(50);
     //Active
     $psaf->setType(10);
     $psaf->setRate(33.33);
     $psaf->setUnits(3);
     $psaf->setDescription('Test Fixed PS Amendment (1)');
     $psaf->setEffectiveDate($this->pay_period_objs[1]->getEndDate());
     $psaf->setAuthorized(TRUE);
     if ($psaf->isValid()) {
         $psaf->Save();
     }
     //Regular FIXED PS amendment as Bonus
     $psaf = new PayStubAmendmentFactory();
     $psaf->setUser($this->user_id);
     $psaf->setPayStubEntryNameId(CompanyDeductionFactory::getPayStubEntryAccountByCompanyIDAndTypeAndFuzzyName($this->company_id, 10, 'Bonus'));
     $psaf->setStatus(50);
     //Active
     $psaf->setType(10);
     $psaf->setRate(10);
     $psaf->setUnits(30);
     $psaf->setDescription('Test Fixed PS Amendment (2)');
     $psaf->setEffectiveDate($this->pay_period_objs[1]->getEndDate());
     $psaf->setAuthorized(TRUE);
     if ($psaf->isValid()) {
         $psaf->Save();
     }
     return TRUE;
 }
 $psaf->setUser($user_id);
 $psaf->setPayStubEntryNameId($pay_stub_amendment_data['pay_stub_entry_name_id']);
 $psaf->setStatus($pay_stub_amendment_data['status_id']);
 $psaf->setType($pay_stub_amendment_data['type_id']);
 if ($pay_stub_amendment_data['type_id'] == 10) {
     $psaf->setRate($pay_stub_amendment_data['rate']);
     $psaf->setUnits($pay_stub_amendment_data['units']);
     if (isset($pay_stub_amendment_data['amount'])) {
         $psaf->setAmount($pay_stub_amendment_data['amount']);
     }
 } else {
     $psaf->setPercentAmount($pay_stub_amendment_data['percent_amount']);
     $psaf->setPercentAmountEntryNameId($pay_stub_amendment_data['percent_amount_entry_name_id']);
 }
 if (isset($pay_stub_amendment_data['ytd_adjustment'])) {
     $psaf->setYTDAdjustment(TRUE);
 } else {
     $psaf->setYTDAdjustment(FALSE);
 }
 $psaf->setDescription($pay_stub_amendment_data['description']);
 $psaf->setEffectiveDate($pay_stub_amendment_data['effective_date']);
 //Authorize them all for now.
 $psaf->setAuthorized(TRUE);
 if ($psaf->isValid()) {
     if ($psaf->Save() === FALSE) {
         $fail_transaction = TRUE;
         break;
     }
 } else {
     $fail_transaction = TRUE;
     break;