public static function CommitPayroll($month) { $payroll = new Payroll($month); $employees = Employee::GetAllEmployees(); foreach ($employees as $employee) { $slip = new PaySlip($employee, $month); try { $d = explode('/', $month); $ustamp = $d[1] . $d[0] . '31239999' + 1; $lstamp = $d[1] . $d[0] . '00999999' + 1; self::PostSalary($employee->id, $employee->salary->amount, $month); self::RecoverAdvance($employee->id, $month); //stamp >= '.$lstamp.' AND stamp <= '.$ustamp.' $sql = 'SELECT * FROM payroll_entries WHERE party_id = ' . $employee->id . ' AND status <> 2 AND type <> "Salary Payment" ORDER BY type ASC, id DESC'; $entries = DatabaseHandler::GetAll($sql); foreach ($entries as $entry) { if ($entry['type'] != 'Basic Salary') { $slip->includeEntry($entry['type'], $entry['effect'], $entry['amount']); } $sql = 'UPDATE payroll_entries SET status = 2, month = "' . $month . '" WHERE id = ' . $entry['id']; DatabaseHandler::Execute($sql); } } catch (Exception $e) { //Logger::Log('Payroll', 'Failed', 'Allowance for employee id: '.$employee->id.' for '.$month.'could not be posted'); return false; } $slip->compile(); $slip->commit(); $payroll->addPayslip($slip); } $payroll->setStatus('COMMITED'); return $payroll; }