/** * Store a newly created branch in storage. * * @return Response */ public function store() { $employees = Employee::all(); foreach ($employees as $employee) { $payroll = new Payroll(); $payroll->employee_id = $employee->personal_file_number; $payroll->basic_pay = $employee->basic_pay; $payroll->earning_amount = Payroll::total_benefits($employee->id); $payroll->taxable_income = Payroll::gross($employee->id); $payroll->paye = Payroll::tax($employee->id); $payroll->nssf_amount = Payroll::nssf($employee->id); $payroll->nhif_amount = Payroll::nhif($employee->id); $payroll->other_deductions = Payroll::deductions($employee->id); $payroll->total_deductions = Payroll::total_deductions($employee->id); $payroll->net = Payroll::net($employee->id); $payroll->financial_month_year = Input::get('period'); $payroll->account_id = Input::get('account'); $payroll->save(); } $allws = DB::table('employee_allowances')->join('allowances', 'employee_allowances.allowance_id', '=', 'allowances.id')->join('employee', 'employee_allowances.employee_id', '=', 'employee.id')->join('transact', 'employee.personal_file_number', '=', 'transact.employee_id')->select('employee.id', 'allowance_name', 'allowance_id', 'allowance_amount', 'financial_month_year')->get(); foreach ($allws as $allw) { DB::table('transact_allowances')->insert(['employee_id' => $allw->id, 'allowance_name' => $allw->allowance_name, 'allowance_id' => $allw->allowance_id, 'allowance_amount' => $allw->allowance_amount, 'financial_month_year' => $allw->financial_month_year]); } $deds = DB::table('employee_deductions')->join('deductions', 'employee_deductions.deduction_id', '=', 'deductions.id')->join('employee', 'employee_deductions.employee_id', '=', 'employee.id')->join('transact', 'employee.personal_file_number', '=', 'transact.employee_id')->select('employee.id', 'deduction_name', 'deduction_id', 'deduction_amount', 'financial_month_year')->get(); foreach ($deds as $ded) { DB::table('transact_deductions')->insert(['employee_id' => $ded->id, 'deduction_name' => $ded->deduction_name, 'deduction_id' => $ded->deduction_id, 'deduction_amount' => $ded->deduction_amount, 'financial_month_year' => $ded->financial_month_year]); } $earns = DB::table('earnings')->join('employee', 'earnings.employee_id', '=', 'employee.id')->join('transact', 'employee.personal_file_number', '=', 'transact.employee_id')->select('earnings.employee_id', 'earnings_name', 'financial_month_year', 'earnings_amount')->get(); foreach ($earns as $earn) { DB::table('transact_earnings')->insert(['employee_id' => $earn->employee_id, 'earning_name' => $earn->earnings_name, 'earning_amount' => $earn->earnings_amount, 'financial_month_year' => $earn->financial_month_year]); } $period = Input::get('period'); Audit::logaudit('Payroll', 'process', 'processed payroll for ' . $period); return Redirect::route('payroll.index')->withFlashMessage('Payroll successfully processed!'); }
public function store() { $employee = Employee::find(Input::get('employee_id')); $incomes = Input::get('incomes'); $deductions = Input::get('deductions'); $incomes += $employee->basic_salary + Input::get('teaches_salary'); $salary = $incomes - $deductions; $payroll = new Payroll(); $payroll->location_id = Auth::user()->location_id; $payroll->employee_id = Input::get('employee_id'); $payroll->release_date = Input::get('release_date'); $payroll->incomes = $incomes; $payroll->deductions = $deductions; $payroll->salary = $salary; $payroll->save(); Session::flash('message', 'Sukses membuat perhitungan payroll baru!'); }
function completeAction() { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(TRUE); $session = SessionWrapper::getInstance(); $formvalues = $this->_getAllParams(); // debugMessage($formvalues); exit; $config = Zend_Registry::get("config"); $payroll = new Payroll(); $payroll->populate($this->_getParam('id')); $payroll->setStatus($this->_getParam('status')); // debugMessage($payroll->getStartDate()." - ".$payroll->getEndDate()); $ledger_collection = new Doctrine_Collection(Doctrine_Core::getTable("Ledger")); $timesheet_collection = new Doctrine_Collection(Doctrine_Core::getTable("Timesheet")); $leave_collection = new Doctrine_Collection(Doctrine_Core::getTable("Ledger")); $employees = $payroll->getdetails(); // debugMessage($employees->toArray()); foreach ($employees as $employee) { $results_credits_array = array(); // check of benefit additions if (decode($employee->getbenefitdetails()) != "[]" && $employee->getbenefitdetails() != "W10=") { $results_credits_array = objectToArray(json_decode(decode($employee->getbenefitdetails()))); // debugMessage($results_credits_array); foreach ($results_credits_array as $line) { if (!isArrayKeyAnEmptyString('ids', $line)) { $ids_array = explode(',', $line['ids']); if (count($ids_array) > 0) { foreach ($ids_array as $id) { $ledger = new Ledger(); $ledger->populate($id); $ledger->setPayrollID($employee->getPayrollID()); $ledger_collection->add($ledger); // debugMessage($ledger->toArray()); } } } } } // check for deductions if (decode($employee->getdeductiondetails()) != "[]" && $employee->getdeductiondetails() != "W10=") { $results_debits_array = objectToArray(json_decode(decode($employee->getdeductiondetails()))); // debugMessage($results_credits_array); foreach ($results_debits_array as $line) { if (!isArrayKeyAnEmptyString('ids', $line)) { $ids_array = explode(',', $line['ids']); if (count($ids_array) > 0) { foreach ($ids_array as $id) { $ledger = new Ledger(); $ledger->populate($id); $ledger->setPayrollID($employee->getPayrollID()); $ledger_collection->add($ledger); // debugMessage($ledger->toArray()); } } } } } // fetch timesheets for each employeee $timesheets = $employee->getUser()->getTimesheetDetails($payroll->getStartDate(), $payroll->getEndDate()); if ($timesheets->count() > 0) { // debugMessage($timesheets->toArray()); foreach ($timesheets as $timesheet) { $timesheet->setPayrollID($employee->getPayrollID()); $timesheet_collection->add($timesheet); } } // generate leave accruals for period if ($employee->getLeaveHrs() > '0.00' && $employee->getUser()->getIsTimesheetuser() == 1) { // debugMessage('>'.$employee->getLeaveHrs()); $leave = new Ledger(); $leave_array = array("payrollid" => $payroll->getID(), "userid" => $employee->getUserID(), "ledgertype" => 2, "trxntype" => 1, "leaveid" => 1, "trxndate" => $payroll->getEndDate(), "startdate" => $payroll->getStartDate(), "enddate" => $payroll->getEndDate(), "leavelength" => $employee->getLeaveHrs() * getHoursInDay(), "lengthtype" => 1, "status" => 1, "remarks" => "Auto Accrual from Payroll (" . changeMySQLDateToPageFormat($payroll->getStartDate()) . " - " . changeMySQLDateToPageFormat($payroll->getEndDate()) . ") ", "createdby" => $session->getVar("userid"), "approvedbyid" => $session->getVar("userid"), "dateapproved" => date('Y-m-d'), "payrolltrigger" => 1); $leave->processPost($leave_array); /* debugMessage($leave->toArray()); debugMessage('errors are '.$leave->getErrorStackAsString()); */ if (!$leave->hasError()) { $leave_collection->add($leave); } } if ($employee->getSickHrs() > '0.00' && $employee->getUser()->getIsTimesheetuser() == 1) { // debugMessage('>'.$employee->getLeaveHrs()); $leave = new Ledger(); $leave_array = array("payrollid" => $payroll->getID(), "userid" => $employee->getUserID(), "ledgertype" => 2, "trxntype" => 1, "leaveid" => 2, "trxndate" => $payroll->getEndDate(), "startdate" => $payroll->getStartDate(), "enddate" => $payroll->getEndDate(), "leavelength" => $employee->getSickHrs() * getHoursInDay(), "lengthtype" => 1, "status" => 1, "remarks" => "Auto Accrued from Payroll (" . changeMySQLDateToPageFormat($payroll->getStartDate()) . " - " . changeMySQLDateToPageFormat($payroll->getEndDate()) . ") ", "createdby" => $session->getVar("userid"), "approvedbyid" => $session->getVar("userid"), "dateapproved" => date('Y-m-d'), "payrolltrigger" => 1); $leave->processPost($leave_array); /*debugMessage($leave->toArray()); debugMessage('errors are '.$leave->getErrorStackAsString()); */ if (!$leave->hasError()) { $leave_collection->add($leave); } } // generate recurring monthly benefits $newledgertrxns = array(); if (decode($employee->getrecurringtrxns()) != "[]" && $employee->getrecurringtrxns() != "W10=") { $newledgertrxns = objectToArray(json_decode(decode($employee->getrecurringtrxns()))); // debugMessage($newledgertrxns); foreach ($newledgertrxns as $line) { // debugMessage($line); foreach ($line as $key => $value) { $ledger = new Ledger(); $ledger_array = array("payrollid" => $payroll->getID(), "payrolltrigger" => 1, "userid" => $employee->getUserID(), "ledgertype" => 1, "trxntype" => $value['trxntype'], "benefitid" => $value['benefitid'], "trxndate" => $payroll->getEndDate(), "startdate" => $payroll->getStartDate(), "enddate" => $payroll->getEndDate(), "amount" => $value['amount'], "status" => 1, "remarks" => "Auto Accrued from Payroll (" . changeMySQLDateToPageFormat($payroll->getStartDate()) . " - " . changeMySQLDateToPageFormat($payroll->getEndDate()) . ") ", "createdby" => $session->getVar("userid"), "approvedbyid" => $session->getVar("userid"), "dateapproved" => date('Y-m-d'), "istaxable" => isArrayKeyAnEmptyString('istaxable', $value) ? 0 : $value['istaxable']); $ledger->processPost($ledger_array); /* debugMessage($ledger->toArray()); debugMessage('errors are '.$ledger->getErrorStackAsString()); */ if (!$ledger->hasError()) { $ledger_collection->add($ledger); } } } } // add nssf to benefits if it exists if ($employee->getNssf() > 0) { $ledger = new Ledger(); $ledger_array = array("payrollid" => $payroll->getID(), "payrolltrigger" => 1, "userid" => $employee->getUserID(), "ledgertype" => 1, "trxntype" => 2, "benefitid" => 19, "trxndate" => $payroll->getEndDate(), "startdate" => $payroll->getStartDate(), "enddate" => $payroll->getEndDate(), "amount" => $employee->getNssf(), "status" => 1, "remarks" => "Auto Accrued from Payroll (" . changeMySQLDateToPageFormat($payroll->getStartDate()) . " - " . changeMySQLDateToPageFormat($payroll->getEndDate()) . ") ", "createdby" => $session->getVar("userid"), "approvedbyid" => $session->getVar("userid"), "dateapproved" => date('Y-m-d')); $ledger->processPost($ledger_array); /* debugMessage($ledger->toArray()); debugMessage('errors are '.$ledger->getErrorStackAsString()); */ if (!$ledger->hasError()) { $ledger_collection->add($ledger); } } // add paye to benefits if it exists if ($employee->getPaye() > 0) { $ledger = new Ledger(); $ledger_array = array("payrollid" => $payroll->getID(), "payrolltrigger" => 1, "userid" => $employee->getUserID(), "ledgertype" => 1, "trxntype" => 2, "benefitid" => 20, "trxndate" => $payroll->getEndDate(), "startdate" => $payroll->getStartDate(), "enddate" => $payroll->getEndDate(), "amount" => $employee->getPaye(), "status" => 1, "remarks" => "Auto Accrued from Payroll (" . changeMySQLDateToPageFormat($payroll->getStartDate()) . " - " . changeMySQLDateToPageFormat($payroll->getEndDate()) . ") ", "createdby" => $session->getVar("userid"), "approvedbyid" => $session->getVar("userid"), "dateapproved" => date('Y-m-d')); $ledger->processPost($ledger_array); /* debugMessage($ledger->toArray()); debugMessage('errors are '.$ledger->getErrorStackAsString()); */ if (!$ledger->hasError()) { $ledger_collection->add($ledger); } } } // debugMessage('exiting here'); // exit; // save collection try { // update payroll status $payroll->save(); // update benefits on the payroll if ($ledger_collection->count() > 0) { // debugMessage($ledger_collection->toArray()); $ledger_collection->save(); } // update timesheets on the payroll if ($timesheet_collection->count() > 0) { // debugMessage($timesheet_collection->toArray()); $timesheet_collection->save(); } // assign leave benefits if ($leave_collection->count() > 0) { // debugMessage($leave_collection->toArray()); $leave_collection->save(); } // set success message $msg = "Payroll Successfully Completed and Approved. Please note that this has been locked from any further updates. "; if (!isEmptyString($this->_getParam(SUCCESS_MESSAGE))) { $msg = $this->_getParam($this->_translate->translate($this->_getParam(SUCCESS_MESSAGE))); } $session->setVar(SUCCESS_MESSAGE, $msg); // debugMessage('success '); exit; } catch (Exception $e) { $session->setVar(ERROR_MESSAGE, "Error in saving Payroll. " . $e->getMessage()); // debugMessage('Error in completing payroll. '.$e->getMessage()); exit; } $url = $this->view->baseUrl('payroll/list/id/' . encode($payroll->getID()) . '/issuepayslips/1'); if (!isEmptyString($this->_getParam(URL_SUCCESS))) { $url = decode($this->_getParam(URL_SUCCESS)); } $session->setVar("issuepayslips", '1'); $this->_helper->redirector->gotoUrl($url); }