Example #1
0
 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;
 }