function getAmountSumByUserIdAndEntryNameIdAndDate($id, $entry_name_id, $date = NULL, $exclude_id = NULL, $where = NULL, $order = NULL) { if ($id == '') { return FALSE; } if ($entry_name_id == '') { return FALSE; } if ($date == '') { $date = TTDate::getTime(); } $pplf = new PayPeriodListFactory(); $pslf = new PayStubListFactory(); $psalf = new PayStubAmendmentListFactory(); $ph = array('date' => $this->db->BindTimeStamp($date), 'user_id' => $id, 'entry_name_id' => $entry_name_id, 'exclude_id' => (int) $exclude_id, 'user_id2' => $id, 'entry_name_id2' => $entry_name_id, 'date2' => $date); $query = ' select sum(amount) as amount, sum(units) as units from ( select sum(amount) as amount, sum(units) as units from ' . $this->getTable() . ' as a, ' . $pslf->getTable() . ' as b where a.pay_stub_id = b.id AND b.pay_period_id in (select id from ' . $pplf->getTable() . ' as y where y.pay_period_schedule_id = ( select pay_period_schedule_id from ' . $pplf->getTable() . ' as z where z.id = b.pay_period_id ) AND y.start_date < ? AND y.deleted=0) AND b.user_id = ? AND a.pay_stub_entry_name_id = ? AND a.id != ? AND a.deleted = 0 AND b.deleted=0 UNION select sum(amount) as amount, sum(units) as units from ' . $psalf->getTable() . ' as m where m.user_id = ? AND m.ytd_adjustment = 1 AND m.pay_stub_entry_name_id = ? AND m.effective_date < ? AND m.deleted=0 ) as tmp_table '; $query .= $this->getWhereSQL($where); $query .= $this->getSortSQL($order); $row = $this->db->GetRow($query, $ph); if ($row['amount'] === NULL) { $row['amount'] = 0; } if ($row['units'] === NULL) { $row['units'] = 0; } Debug::Arr($ph, 'Place Holders ', __FILE__, __LINE__, __METHOD__, 10); Debug::text('Over All Sum for ' . $entry_name_id . ': Amount ' . $row['amount'] . ' Units: ' . $row['units'], __FILE__, __LINE__, __METHOD__, 10); return $row; }
function getAmountSumByUserIdAndTypeIdAndAuthorizedAndStartDateAndEndDate($user_id, $type_id, $authorized, $start_date, $end_date, $where = NULL, $order = NULL) { $psalf = new PayStubAmendmentListFactory(); $psalf->getByUserIdAndTypeIdAndAuthorizedAndStartDateAndEndDate($user_id, $type_id, $authorized, $start_date, $end_date, $where, $order); if ($psalf->getRecordCount() > 0) { $sum = 0; Debug::text('Record Count: ' . $psalf->getRecordCount(), __FILE__, __LINE__, __METHOD__, 10); foreach ($psalf as $psa_obj) { $amount = $psa_obj->getCalculatedAmount(); Debug::text('PS Amendment Amount: ' . $amount, __FILE__, __LINE__, __METHOD__, 10); $sum += $amount; } return $sum; } Debug::text('No PS Amendments found...', __FILE__, __LINE__, __METHOD__, 10); return FALSE; }
function handlePayStubAmendmentStatuses() { //Mark all PS amendments as 'PAID' if this status is paid. //Mark as NEW if the PS is deleted? if ($this->getStatus() == 40) { $ps_amendment_status_id = 55; //PAID } else { $ps_amendment_status_id = 52; //INUSE } //Loop through each entry in current pay stub, if they have //a PS amendment ID assigned to them, change the status. if (is_array($this->tmp_data['current_pay_stub'])) { foreach ($this->tmp_data['current_pay_stub'] as $entry_arr) { if (isset($entry_arr['pay_stub_amendment_id']) and $entry_arr['pay_stub_amendment_id'] != '') { Debug::Text('aFound PS Amendments to change status on...', __FILE__, __LINE__, __METHOD__, 10); $ps_amendment_ids[] = $entry_arr['pay_stub_amendment_id']; } } unset($entry_arr); } elseif ($this->getStatus() != 10) { //Instead of loading the current pay stub entries, just run a query instead. $pself = new PayStubEntryListFactory(); $pself->getByPayStubId($this->getId()); foreach ($pself as $pay_stub_entry_obj) { if ($pay_stub_entry_obj->getPayStubAmendment() != FALSE) { Debug::Text('bFound PS Amendments to change status on...', __FILE__, __LINE__, __METHOD__, 10); $ps_amendment_ids[] = $pay_stub_entry_obj->getPayStubAmendment(); } } } if (isset($ps_amendment_ids) and is_array($ps_amendment_ids)) { Debug::Text('cFound PS Amendments to change status on...', __FILE__, __LINE__, __METHOD__, 10); foreach ($ps_amendment_ids as $ps_amendment_id) { //Set PS amendment status to match Pay stub. $psalf = new PayStubAmendmentListFactory(); $psalf->getById($ps_amendment_id); if ($psalf->getRecordCount() == 1) { Debug::Text('Changing Status of PS Amendment: ' . $ps_amendment_id, __FILE__, __LINE__, __METHOD__, 10); $ps_amendment_obj = $psalf->getCurrent(); $ps_amendment_obj->setStatus($ps_amendment_status_id); $ps_amendment_obj->Save(); unset($ps_amendment_obj); } unset($psalf); } unset($ps_amendment_ids); } return TRUE; }
function createPayStubAmendments($epoch = NULL) { //Get all recurring pay stub amendments and generate single pay stub amendments if appropriate. if ($epoch == '') { $epoch = TTDate::getTime(); } $ulf = new UserListFactory(); Debug::text('Recurring PS Amendment ID: ' . $this->getId() . ' Frequency: ' . $this->getFrequency(), __FILE__, __LINE__, __METHOD__, 10); $this->StartTransaction(); $tmp_user_ids = $this->getUser(); if ($tmp_user_ids[0] == -1) { $ulf->getByCompanyIdAndStatus($this->getCompany(), 10); foreach ($ulf as $user_obj) { $user_ids[] = $user_obj->getId(); } unset($user_obj); } else { $user_ids = $this->getUser(); } unset($tmp_user_ids); Debug::text('Total User IDs: ' . count($user_ids), __FILE__, __LINE__, __METHOD__, 10); if (is_array($user_ids) and count($user_ids) > 0) { //Make the PS amendment duplicate check start/end date separate //Make the PS amendment effective date separate. switch ($this->getFrequency()) { case 10: //Get all open pay periods $pplf = new PayPeriodListFactory(); //FIXME: Get all non-closed pay periods AFTER the start date. $pplf->getByUserIdListAndNotStatusAndStartDateAndEndDate($user_ids, 20, $this->getStartDate(), $this->getEndDate()); //All non-closed pay periods Debug::text('Found Open Pay Periods: ' . $pplf->getRecordCount(), __FILE__, __LINE__, __METHOD__, 10); foreach ($pplf as $pay_period_obj) { Debug::text('Working on Pay Period: ' . $pay_period_obj->getId(), __FILE__, __LINE__, __METHOD__, 10); //If near the end of a pay period, or a pay period is already ended, add PS amendment if //it does not already exist. if ($epoch >= $pay_period_obj->getEndDate() and $this->checkTimeFrame($epoch)) { Debug::text('After end of pay period.', __FILE__, __LINE__, __METHOD__, 10); $psalf = new PayStubAmendmentListFactory(); //Loop through each user of this Pay Period Schedule adding PS amendments if they don't already exist. $pay_period_schedule_users = $pay_period_obj->getPayPeriodScheduleObject()->getUser(); Debug::text(' Pay Period Schedule Users: ' . count($pay_period_schedule_users), __FILE__, __LINE__, __METHOD__, 10); foreach ($pay_period_schedule_users as $user_id) { //Make sure schedule user is in the PS amendment user list and user is active. Debug::text(' Pay Period Schedule User: '******' Recurring PS Amendment Selected Users: ', __FILE__, __LINE__, __METHOD__,10); if ($ulf->getById($user_id)->getCurrent()->getStatus() == 10 and in_array($user_id, $user_ids)) { //Check to see if the amendment was added already. if ($psalf->getByUserIdAndRecurringPayStubAmendmentIdAndStartDateAndEndDate($user_id, $this->getId(), $pay_period_obj->getStartDate(), $pay_period_obj->getEndDate())->getRecordCount() == 0) { //No amendment, good to insert one Debug::text('Inserting Recurring PS Amendment for User: '******'Recurring PS Amendment already inserted for User: '******'Skipping User because they are INACTIVE or are not on the Recurring PS Amendment User List - ID: ' . $user_id, __FILE__, __LINE__, __METHOD__, 10); //continue; } } } else { Debug::text('Not in TimeFrame, not inserting amendments: Epoch: ' . $epoch . ' Pay Period End Date: ' . $pay_period_obj->getEndDate(), __FILE__, __LINE__, __METHOD__, 10); } } break; case 30: //Weekly //Weekly case 40: //Monthly //Monthly case 70: //Annually switch ($this->getFrequency()) { case 30: $trigger_date = TTDate::getDateOfNextDayOfWeek(TTDate::getBeginWeekEpoch($epoch), $this->getStartDate()); $start_date = TTDate::getBeginWeekEpoch($epoch); $end_date = TTDate::getEndWeekEpoch($epoch); break; case 40: $trigger_date = TTDate::getDateOfNextDayOfMonth(TTDate::getBeginMonthEpoch($epoch), $this->getStartDate()); //$monthly_date = TTDate::getDateOfNextDayOfMonth( TTDate::getBeginMonthEpoch($epoch), $this->getStartDate() ); $start_date = TTDate::getBeginMonthEpoch($epoch); $end_date = TTDate::getEndMonthEpoch($epoch); break; case 70: $trigger_date = TTDate::getDateOfNextYear($this->getStartDate()); $start_date = TTDate::getBeginYearEpoch($epoch); $end_date = TTDate::getEndYearEpoch($epoch); break; } Debug::text('Trigger Date: ' . TTDate::getDate('DATE', $trigger_date), __FILE__, __LINE__, __METHOD__, 10); if ($epoch >= $trigger_date and $this->checkTimeFrame($epoch)) { Debug::text('After end of pay period.', __FILE__, __LINE__, __METHOD__, 10); foreach ($user_ids as $user_id) { //Make sure schedule user is in the PS amendment user list and user is active. if ($ulf->getById($user_id)->getCurrent()->getStatus() != 10 and !in_array($user_id, $user_ids)) { Debug::text('Skipping User because they are INACTIVE or are not on the Recurring PS Amendment User List - ID: ' . $user_id, __FILE__, __LINE__, __METHOD__, 10); continue; } $psalf = new PayStubAmendmentListFactory(); if ($psalf->getByUserIdAndRecurringPayStubAmendmentIdAndStartDateAndEndDate($user_id, $this->getId(), $start_date, $end_date)->getRecordCount() == 0) { //No amendment, good to insert one Debug::text('Inserting Recurring PS Amendment for User: '******'Recurring PS Amendment already inserted for User: ' . $user_id, __FILE__, __LINE__, __METHOD__, 10); } } } break; } } //$this->FailTransaction(); $this->CommitTransaction(); return TRUE; }
function getPayStubAmendmentDeductions() { //Get pay stub amendments here. $psalf = new PayStubAmendmentListFactory(); if ($this->getAdvance() == TRUE) { //For advances, any PS amendment effective BEFORE the advance end date is considered in full. //Any AFTER the advance end date, is considered half. //$pay_period_end_date = $this->getPayPeriodObject()->getAdvanceEndDate(); $advance_neg_sum = $psalf->getAmountSumByUserIdAndTypeIdAndAuthorizedAndStartDateAndEndDate($this->getUser(), 20, TRUE, $this->getPayPeriodObject()->getStartDate(), $this->getPayPeriodObject()->getAdvanceEndDate()); Debug::text('Pay Stub Amendment Advance Deductions: ' . $advance_neg_sum, __FILE__, __LINE__, __METHOD__, 10); $full_neg_sum = $psalf->getAmountSumByUserIdAndTypeIdAndAuthorizedAndStartDateAndEndDate($this->getUser(), 20, TRUE, $this->getPayPeriodObject()->getAdvanceEndDate(), $this->getPayPeriodObject()->getEndDate()); Debug::text('Pay Stub Amendment Full Deductions: ' . $full_neg_sum, __FILE__, __LINE__, __METHOD__, 10); //Take the full amount of PS amendments BEFORE the advance end date, and half of any AFTER the advance end date. //$neg_sum = $advance_neg_sum + ($full_neg_sum / 2); $neg_sum = bcadd($advance_neg_sum, bcdiv($full_neg_sum, 2)); } else { //$pay_period_end_date = $neg_sum = $psalf->getAmountSumByUserIdAndTypeIdAndAuthorizedAndStartDateAndEndDate($this->getUser(), 20, TRUE, $this->getPayPeriodObject()->getStartDate(), $this->getPayPeriodObject()->getEndDate()); } //$neg_sum = $psalf->getAmountSumByUserIdAndTypeIdAndTaxExemptAndAuthorizedAndStartDateAndEndDate( $this->getUser(), 20, FALSE, TRUE, $this->getPayPeriodObject()->getStartDate(), $this->getPayPeriodObject()->getEndDate() )*-1; Debug::text('Pay Stub Amendment Total Deductions: ' . $neg_sum, __FILE__, __LINE__, __METHOD__, 10); return bcmul($neg_sum, -1); }
if ($e_obj->getColumn('severity_id') == 30) { $high_severity_exceptions = $e_obj->getColumn('count'); } } } else { Debug::Text(' No Exceptions!', __FILE__, __LINE__, __METHOD__, 10); } //Get all pending requests $pending_requests = 0; $rlf = new RequestListFactory(); $rlf->getSumByPayPeriodIdAndStatus($pay_period_obj->getId(), 30); if ($rlf->getRecordCount() > 0) { $pending_requests = $rlf->getCurrent()->getColumn('total'); } //Get PS Amendments. $psalf = new PayStubAmendmentListFactory(); $psalf->getByUserIdAndAuthorizedAndStartDateAndEndDate($pay_period_schedule->getUser(), TRUE, $pay_period_obj->getStartDate(), $pay_period_obj->getEndDate()); $total_ps_amendments = 0; if (is_object($psalf)) { $total_ps_amendments = $psalf->getRecordCount(); } //Get verified timesheets $pptsvlf = new PayPeriodTimeSheetVerifyListFactory(); $pptsvlf->getByPayPeriodIdAndCompanyId($pay_period_obj->getId(), $current_company->getId()); $verified_time_sheets = 0; $pending_time_sheets = 0; if ($pptsvlf->getRecordCount() > 0) { foreach ($pptsvlf as $pptsv_obj) { if ($pptsv_obj->getAuthorized() == TRUE) { $verified_time_sheets++; } elseif ($pptsv_obj->getStatus() == 30) {
function setPayStubAmendment($id) { $id = trim($id); Debug::text('PS Amendment ID: ' . $id, __FILE__, __LINE__, __METHOD__, 10); $psalf = new PayStubAmendmentListFactory(); $result = $psalf->getById($id); if ($this->Validator->isResultSetWithRows('pay_stub_amendment_id', $result, TTi18n::gettext('Invalid Pay Stub Amendment Id'))) { //Debug::text('TRUE: '. $id .' -: '. $result->getCurrent()->getId() , __FILE__, __LINE__, __METHOD__,10); $this->data['pay_stub_amendment_id'] = $result->getCurrent()->getId(); return TRUE; } return FALSE; }
function calculate($epoch = NULL) { if ($this->getUserObject() == FALSE or $this->getUserObject()->getStatus() !== 10) { return FALSE; } $generic_queue_status_label = $this->getUserObject()->getFullName(TRUE) . ' - ' . TTi18n::gettext('Pay Stub'); if ($epoch == NULL or $epoch == '') { $epoch = TTDate::getTime(); } if ($this->getPayPeriodObject() == FALSE) { return FALSE; } Debug::text('bbUser Id: ' . $this->getUser() . ' Pay Period End Date: ' . TTDate::getDate('DATE+TIME', $this->getPayPeriodObject()->getEndDate()), __FILE__, __LINE__, __METHOD__, 10); $pay_stub = new PayStubFactory(); $pay_stub->StartTransaction(); $old_pay_stub_id = NULL; if ($this->getEnableCorrection() == TRUE) { Debug::text('Correction Enabled!', __FILE__, __LINE__, __METHOD__, 10); $pay_stub->setTemp(TRUE); //Check for current pay stub ID so we can compare against it. $pslf = new PayStubListFactory(); $pslf->getByUserIdAndPayPeriodId($this->getUser(), $this->getPayPeriod()); if ($pslf->getRecordCount() > 0) { $old_pay_stub_id = $pslf->getCurrent()->getId(); Debug::text('Comparing Against Pay Stub ID: ' . $old_pay_stub_id, __FILE__, __LINE__, __METHOD__, 10); } } $pay_stub->setUser($this->getUser()); $pay_stub->setPayPeriod($this->getPayPeriod()); $pay_stub->setCurrency($this->getUserObject()->getCurrency()); $pay_stub->setStatus('NEW'); //Use User Termination Date instead of ROE. if ($this->getUserObject()->getTerminationDate() != '' and $this->getUserObject()->getTerminationDate() >= $this->getPayPeriodObject()->getStartDate() and $this->getUserObject()->getTerminationDate() <= $this->getPayPeriodObject()->getEndDate()) { Debug::text('User has been terminated in this pay period!', __FILE__, __LINE__, __METHOD__, 10); $is_terminated = TRUE; } else { $is_terminated = FALSE; } if ($is_terminated == TRUE) { Debug::text('User is Terminated, assuming final pay, setting End Date to terminated date: ' . TTDate::getDate('DATE+TIME', $this->getUserObject()->getTerminationDate()), __FILE__, __LINE__, __METHOD__, 10); $pay_stub->setStartDate($pay_stub->getPayPeriodObject()->getStartDate()); $pay_stub->setEndDate($this->getUserObject()->getTerminationDate()); //Use the PS generation date instead of terminated date... //Unlikely they would pay someone before the pay stub is generated. //Perhaps still use the pay period transaction date for this too? //Anything we set won't be correct for everyone. Maybe a later date is better though? //Perhaps add to the user factory under Termination Date a: "Final Transaction Date" for this purpose? //Use the end of the current date for the transaction date, as if the employee is terminated //on the same day they are generating the pay stub, the transaction date could be before the end date //as the end date is at 11:59PM $pay_stub->setTransactionDate(TTDate::getEndDayEpoch(TTDate::getTime())); } else { Debug::text('User Termination Date is NOT set, assuming normal pay.', __FILE__, __LINE__, __METHOD__, 10); $pay_stub->setDefaultDates(); } //This must go after setting advance if ($this->getEnableCorrection() == FALSE and $pay_stub->IsUniquePayStub() == FALSE) { Debug::text('Pay Stub already exists', __FILE__, __LINE__, __METHOD__, 10); $this->CommitTransaction(); UserGenericStatusFactory::queueGenericStatus($generic_queue_status_label, 20, TTi18n::gettext('Pay Stub for this employee already exists, skipping...'), NULL); return FALSE; } if ($pay_stub->isValid() == TRUE) { $pay_stub->Save(FALSE); $pay_stub->setStatus('Open'); } else { Debug::text('Pay Stub isValid failed!', __FILE__, __LINE__, __METHOD__, 10); UserGenericStatusFactory::queueGenericStatus($generic_queue_status_label, 10, $pay_stub->Validator->getTextErrors(), NULL); $this->FailTransaction(); $this->CommitTransaction(); return FALSE; } $pay_stub->loadPreviousPayStub(); $user_date_total_arr = $this->getWageObject()->getUserDateTotalArray(); if (isset($user_date_total_arr['entries']) and is_array($user_date_total_arr['entries'])) { foreach ($user_date_total_arr['entries'] as $udt_arr) { //Allow negative amounts so flat rate premium policies can reduce an employees wage if need be. if ($udt_arr['amount'] != 0) { Debug::text('Adding Pay Stub Entry: ' . $udt_arr['pay_stub_entry'] . ' Amount: ' . $udt_arr['amount'], __FILE__, __LINE__, __METHOD__, 10); $pay_stub->addEntry($udt_arr['pay_stub_entry'], $udt_arr['amount'], TTDate::getHours($udt_arr['total_time']), $udt_arr['rate']); } else { Debug::text('NOT Adding ($0 amount) Pay Stub Entry: ' . $udt_arr['pay_stub_entry'] . ' Amount: ' . $udt_arr['amount'], __FILE__, __LINE__, __METHOD__, 10); } } } else { //No Earnings, CHECK FOR PS AMENDMENTS next for earnings. Debug::text('NO TimeSheet EARNINGS ON PAY STUB... Checking for PS amendments', __FILE__, __LINE__, __METHOD__, 10); } //Get all PS amendments and Tax / Deductions so we can determine the proper order to calculate them in. $psalf = new PayStubAmendmentListFactory(); $psalf->getByUserIdAndAuthorizedAndStartDateAndEndDate($this->getUser(), TRUE, $this->getPayPeriodObject()->getStartDate(), $this->getPayPeriodObject()->getEndDate()); $udlf = new UserDeductionListFactory(); $udlf->getByCompanyIdAndUserId($this->getUserObject()->getCompany(), $this->getUserObject()->getId()); $deduction_order_arr = $this->getOrderedDeductionAndPSAmendment($udlf, $psalf); if (is_array($deduction_order_arr) and count($deduction_order_arr) > 0) { foreach ($deduction_order_arr as $calculation_order => $data_arr) { Debug::text('Found PS Amendment/Deduction: Type: ' . $data_arr['type'] . ' Name: ' . $data_arr['name'] . ' Order: ' . $calculation_order, __FILE__, __LINE__, __METHOD__, 10); if (isset($data_arr['obj']) and is_object($data_arr['obj'])) { if ($data_arr['type'] == 'UserDeductionListFactory') { $ud_obj = $data_arr['obj']; //Determine if this deduction is valid based on start/end dates. //Determine if this deduction is valid based on min/max length of service. if ($ud_obj->getCompanyDeductionObject()->isActiveDate($pay_stub->getPayPeriodObject()->getEndDate()) == TRUE and $ud_obj->getCompanyDeductionObject()->isActiveLengthOfService($this->getUserObject(), $pay_stub->getPayPeriodObject()->getEndDate()) == TRUE) { $amount = $ud_obj->getDeductionAmount($this->getUserObject()->getId(), $pay_stub, $this->getPayPeriodObject()); Debug::text('User Deduction: ' . $ud_obj->getCompanyDeductionObject()->getName() . ' Amount: ' . $amount . ' Calculation Order: ' . $ud_obj->getCompanyDeductionObject()->getCalculationOrder(), __FILE__, __LINE__, __METHOD__, 10); //Allow negative amounts, so they can reduce previously calculated deductions or something. if (isset($amount) and $amount != 0) { $pay_stub->addEntry($ud_obj->getCompanyDeductionObject()->getPayStubEntryAccount(), $amount); } else { Debug::text('Amount is 0, skipping...', __FILE__, __LINE__, __METHOD__, 10); } } unset($amount, $ud_obj); } elseif ($data_arr['type'] == 'PayStubAmendmentListFactory') { $psa_obj = $data_arr['obj']; Debug::text('Found Pay Stub Amendment: ID: ' . $psa_obj->getID() . ' Entry Name ID: ' . $psa_obj->getPayStubEntryNameId() . ' Type: ' . $psa_obj->getType(), __FILE__, __LINE__, __METHOD__, 10); $amount = $psa_obj->getCalculatedAmount($pay_stub); if (isset($amount) and $amount != 0) { Debug::text('Pay Stub Amendment Amount: ' . $amount, __FILE__, __LINE__, __METHOD__, 10); $pay_stub->addEntry($psa_obj->getPayStubEntryNameId(), $amount, $psa_obj->getUnits(), $psa_obj->getRate(), $psa_obj->getDescription(), $psa_obj->getID(), NULL, NULL, $psa_obj->getYTDAdjustment()); //Keep in mind this causes pay stubs to be re-generated every time, as this modifies the updated time //to slightly more then the pay stub creation time. $psa_obj->setStatus('IN USE'); $psa_obj->Save(); } else { Debug::text('bPay Stub Amendment Amount is not set...', __FILE__, __LINE__, __METHOD__, 10); } unset($amount, $psa_obj); } } } } unset($deduction_order_arr, $calculation_order, $data_arr); $pay_stub_id = $pay_stub->getId(); $pay_stub->setEnableProcessEntries(TRUE); $pay_stub->processEntries(); if ($pay_stub->isValid() == TRUE) { Debug::text('Pay Stub is valid, final save.', __FILE__, __LINE__, __METHOD__, 10); $pay_stub->Save(); if ($this->getEnableCorrection() == TRUE) { if (isset($old_pay_stub_id)) { Debug::text('bCorrection Enabled - Doing Comparison here', __FILE__, __LINE__, __METHOD__, 10); PayStubFactory::CalcDifferences($pay_stub_id, $old_pay_stub_id); } //Delete newly created temp paystub. //This used to be in the above IF block that depended on $old_pay_stub_id //being set, however in cases where the old pay stub didn't exist //TimeTrex wouldn't delete these temporary pay stubs. //Moving this code outside that IF statement so it only depends on EnableCorrection() //to be TRUE should fix that issue. $pslf = new PayStubListFactory(); $pslf->getById($pay_stub_id); if ($pslf->getRecordCount() > 0) { $tmp_ps_obj = $pslf->getCurrent(); $tmp_ps_obj->setDeleted(TRUE); $tmp_ps_obj->Save(); unset($tmp_ps_obj); } } $pay_stub->CommitTransaction(); UserGenericStatusFactory::queueGenericStatus($generic_queue_status_label, 30, NULL, NULL); return TRUE; } Debug::text('Pay Stub is NOT valid returning FALSE', __FILE__, __LINE__, __METHOD__, 10); UserGenericStatusFactory::queueGenericStatus($generic_queue_status_label, 10, $pay_stub->Validator->getTextErrors(), NULL); $pay_stub->FailTransaction(); //Reduce transaction count by one. //$pay_stub->FailTransaction(); //Reduce transaction count by one. $pay_stub->CommitTransaction(); return FALSE; }
$fail_transaction = TRUE; break; } } if ($fail_transaction == FALSE) { //$pf->FailTransaction(); $psaf->CommitTransaction(); Redirect::Page(URLBuilder::getURL(array('user_id' => $user_id), 'PayStubAmendmentList.php')); break; } else { $psaf->FailTransaction(); } default: BreadCrumb::setCrumb($title); if (isset($id)) { $psalf = new PayStubAmendmentListFactory(); //$uwlf->GetByUserIdAndCompanyId($current_user->getId(), $current_company->getId() ); $psalf->GetById($id); foreach ($psalf as $pay_stub_amendment) { //Debug::Arr($station,'Department', __FILE__, __LINE__, __METHOD__,10); $user_id = $pay_stub_amendment->getUser(); $pay_stub_amendment_data = array('id' => $pay_stub_amendment->getId(), 'filter_user_id' => $pay_stub_amendment->getUser(), 'pay_stub_entry_name_id' => $pay_stub_amendment->getPayStubEntryNameId(), 'status_id' => $pay_stub_amendment->getStatus(), 'effective_date' => $pay_stub_amendment->getEffectiveDate(), 'type_id' => $pay_stub_amendment->getType(), 'rate' => $pay_stub_amendment->getRate(), 'units' => $pay_stub_amendment->getUnits(), 'amount' => $pay_stub_amendment->getAmount(), 'percent_amount' => $pay_stub_amendment->getPercentAmount(), 'percent_amount_entry_name_id' => $pay_stub_amendment->getPercentAmountEntryNameId(), 'description' => $pay_stub_amendment->getDescription(), 'authorized' => $pay_stub_amendment->getAuthorized(), 'ytd_adjustment' => $pay_stub_amendment->getYTDAdjustment(), 'created_date' => $pay_stub_amendment->getCreatedDate(), 'created_by' => $pay_stub_amendment->getCreatedBy(), 'updated_date' => $pay_stub_amendment->getUpdatedDate(), 'updated_by' => $pay_stub_amendment->getUpdatedBy(), 'deleted_date' => $pay_stub_amendment->getDeletedDate(), 'deleted_by' => $pay_stub_amendment->getDeletedBy()); } } else { if ($pay_stub_amendment_data['effective_date'] == '') { $pay_stub_amendment_data['effective_date'] = TTDate::getTime(); $pay_stub_amendment_data['user_id'] = $user_id; } } //Select box options; $status_options_filter = array(50);
extract(UserGenericDataFactory::getSearchFormData($saved_search_id, $sort_column)); Debug::Text('Sort Column: ' . $sort_column, __FILE__, __LINE__, __METHOD__, 10); Debug::Text('Saved Search ID: ' . $saved_search_id, __FILE__, __LINE__, __METHOD__, 10); if (isset($filter_user_id) and $filter_user_id != '') { $filter_data['user_id'] = $filter_user_id; } if (isset($recurring_ps_amendment_id) and $recurring_ps_amendment_id != '') { $filter_data['recurring_ps_amendment_id'] = $recurring_ps_amendment_id; } $sort_array = NULL; if ($sort_column != '') { $sort_array = array(Misc::trimSortPrefix($sort_column) => $sort_order); } URLBuilder::setURL($_SERVER['SCRIPT_NAME'], array('sort_column' => Misc::trimSortPrefix($sort_column), 'sort_order' => $sort_order, 'saved_search_id' => $saved_search_id, 'page' => $page)); $ulf = new UserListFactory(); $psalf = new PayStubAmendmentListFactory(); if ($permission->Check('pay_stub_amendment', 'view') == FALSE) { if ($permission->Check('pay_stub_amendment', 'view_child')) { $filter_data['permission_children_ids'] = $permission_children_ids; } if ($permission->Check('pay_stub_amendment', 'view_own')) { $filter_data['permission_children_ids'][] = $current_user->getId(); } } $filter_data['start_date'] = NULL; $filter_data['end_date'] = NULL; if (isset($filter_data['pay_period_id']) and $filter_data['pay_period_id'] != '-1') { //Get Pay Period Start/End dates $pplf->getByIdAndCompanyId(Misc::trimSortPrefix($filter_data['pay_period_id']), $current_company->getId()); if ($pplf->getRecordCount() > 0) { $pp_obj = $pplf->getCurrent();