table = 't_driver'; $this->primaryKey = 'driver_id'; $this->allowedFields = ['driver_id', 'driver_name', 'driver_mobile','created_on','created_by','updated_on','updated_by','isactive']; return $this; } public function useDriverAttendanceTable() { $this->table = 't_driver_attendance'; $this->primaryKey = 'driver_attendance_id'; $this->allowedFields = ['driver_attendance_id','date','driver_id','invoice_number','vehicle_number','load_type','salary_amount','food_amount','created_on','created_by','updated_on','updated_by','isactive']; return $this; } public function getDriverList() { if (empty($this->allowedFields)) { return []; } $fields = implode(', ', array_map(function($field) { return $this->table . '.' . $field; }, $this->allowedFields)); $selectFields = "CONCAT_WS(' ', t_employee_details.FirstName, t_employee_details.LastName) AS FullName, t_employee_details.IsActive as employee_isactive, " . $fields; return $this->select($selectFields) ->join('tbl_users', 'tbl_users.userId = ' . $this->table . '.created_by', 'left') ->join('t_employee_details', 'tbl_users.EmpID = t_employee_details.EmpID', 'left') ->findAll(); } public function getDriverAttendanceList($driver_id,$from,$to){ if (empty($this->allowedFields)) { return []; } $fields = implode(', ', array_map(function($field) { return $this->table . '.' . $field; }, $this->allowedFields)); $selectFields = "CONCAT_WS(' ', t_employee_details.FirstName, t_employee_details.LastName) AS FullName, t_employee_details.IsActive as employee_isactive, t_driver.driver_name,ip_clients.client_name as customer,ip_invoices.received_qty as quantity,t_driver_payroll.id as payroll_id,t_driver_payroll.PayOn," . $fields; $month_year = get_date_time_dynamical_format('Y-m-d','m-Y',"$from"); return $this->select($selectFields) ->join('t_driver', 't_driver.driver_id = ' . $this->table . '.driver_id', 'left') ->join('tbl_users', 'tbl_users.userId = ' . $this->table . '.created_by', 'left') ->join('t_employee_details', 'tbl_users.EmpID = t_employee_details.EmpID', 'left') ->join('ip_invoices', 'ip_invoices.invoice_number = ' . $this->table . '.invoice_number', 'left') ->join('ip_clients', 'ip_clients.client_id = ip_invoices.client_id', 'left') ->join('t_driver_payroll', 't_driver_payroll.driver_id = '.$this->table.'.driver_id and t_driver_payroll.PayOn = "'.$month_year.'"', 'left') ->where($this->table.'.date BETWEEN "'.$from.'" AND "'.$to.'"') ->where($this->table . '.driver_id', $driver_id) ->where($this->table . '.isactive', 1) ->findAll(); } function getInvoiceInfo() { $builder = $this->db->table('ip_invoices') ->select('invoice_number,invoice_id'); $query = $builder->get(); return $query->getResult(); } function getDriverName($id) { $builder = $this->db->table('t_driver') ->select('driver_name') ->where('driver_id', $id); $query = $builder->get()->getRow(); $driver_name = $query ? $query->driver_name : null; return $driver_name; } function gatheredCustAndQty($invoice){ $builder = $this->db->table('ip_invoices') ->select('invoice_number,received_qty as quantity,ip_clients.client_name as customer') ->join('ip_clients', 'ip_clients.client_id = ip_invoices.client_id', 'left') ->where('invoice_number', $invoice); $query = $builder->get(); return $query->getRowArray() ?: []; } function driverAttendanceForMonthlyPayInputs($from,$to){ $builder = $this->db->table('t_driver_attendance') ->select('t_driver_attendance.driver_id,SUM(t_driver_attendance.salary_amount) as driver_monthly_salary_amount,SUM(t_driver_attendance.food_amount) as driver_monthly_food_amount,t_driver.driver_name, DATE_FORMAT(date, "%M-%Y") AS month_year,SUM(salary_amount + food_amount) AS driver_earnings_amount,COUNT(t_driver_attendance.load_type) AS no_of_loads') ->join('t_driver', 't_driver.driver_id = t_driver_attendance.driver_id and t_driver.isactive = 1', 'left') ->where('t_driver_attendance.date BETWEEN "'.$from.'" AND "'.$to.'"') ->groupBy('t_driver.driver_id, DATE_FORMAT(t_driver_attendance.date, "%M-%Y")'); $query = $builder->get(); return $query->getResult(); } function driverMonthlyPayInputs($monthYear){ $builder = $this->db->table('t_driver_monthly_pay_inputs'); $builder->select('t_driver_monthly_pay_inputs.*, t_driver_payroll.id as payroll_id'); $builder->join('t_driver_payroll', 't_driver_payroll.driver_id = t_driver_monthly_pay_inputs.driver_id', 'left'); $builder->where('t_driver_monthly_pay_inputs.month_year', $monthYear); $builder->groupBy('t_driver_monthly_pay_inputs.driver_id, t_driver_monthly_pay_inputs.month_year'); $query = $builder->get(); $result = $query->getResult(); return $result; } function saveMonthlyData($data) { $month = $data['month_year']; $drid = $data['driver_id']; $count = 0; $builder = $this->db->table('t_driver_monthly_pay_inputs')->select('count(*) as count') ->where('month_year', $month) ->where('driver_id', $drid); $isExits = $builder->get(); $res = $isExits->getResultArray(); if (!empty($res)) { $count = $res[0]['count']; } if ($count == 0) { unset($data['updated_by']); $builder = $this->db->table('t_driver_monthly_pay_inputs'); $builder->insert($data); $i = $this->db->affectedRows(); return $i; } elseif ($count == 1) { unset($data['created_by']); $this->db->table('t_driver_monthly_pay_inputs') ->where('driver_id', $data['driver_id']) ->where('month_year', $data['month_year']) ->update($data); $i = $this->db->affectedRows(); return $i; } } function getPayOn() { $builder = $this->db->table('t_driver_monthly_pay_inputs') ->select('DISTINCT(month_year)') ->orderBy("month_year", "desc"); $query = $builder->get(); return $query->getResult(); } function getDriverlist2($Payon = '') { $builder = $this->db->table('t_driver_monthly_pay_inputs Pay') ->select('Pay.driver_id as driver_id,driver.driver_name as name') ->join('t_driver driver', 'Pay.driver_id = driver.driver_id'); if ($Payon != '') { $builder->where('Pay.month_year', $Payon); } $builder->orderBy("Pay.driver_id", "asc"); $query = $builder->get(); return $query->getResult(); } function checkDriverExistPay($driver_id, $payon) { $builder = $this->db->table('t_driver_payroll') ->select('PayOn,driver_id') ->where('PayOn', $payon) ->where('driver_id', $driver_id); $query = $builder->get(); return $query->getResult(); } function getMonthlyPayDetails($driver_id, $PayOn) { $builder = $this->db->table('t_driver_monthly_pay_inputs MonthlyPay ') ->select('MonthlyPay.*') ->where('MonthlyPay.driver_id', $driver_id) ->where('MonthlyPay.month_year', $PayOn); $query = $builder->get(); return $query->getResult(); } function insertPayroll($data) { $builder = $this->db->table('t_driver_payroll'); $builder->insert($data); $count = $this->db->affectedRows(); return $count; } function getEmpAll($Payon = '') { $builder = $this->db->table('t_payroll Pay') ->select('Pay.EmpID as EmpId,Emp.FirstName as Fname,Emp.LastName as Lname') ->join('t_employee_details Emp', 'Pay.EmpID = Emp.EmpID'); if ($Payon != '') { $builder->where('Pay.PayOn', $Payon); } $builder->orderBy("Pay.EmpID", "asc"); $query = $builder->get(); return $query->getResultArray(); } function GetPayslipdata($PayOn = '', $EmpId = '') { //echo "FROM MODEL" . $PayOn . $EmpId; $builder = $this->db->table('t_driver_payroll Pay')->select('Pay.*,driver.driver_name as name ') ->join('t_driver driver', 'Pay.driver_id = driver.driver_id'); if ($PayOn != '') { $builder->where('Pay.PayOn', $PayOn); } if ($EmpId != '') { $builder->where('Pay.driver_id', $EmpId); } if ($PayOn != '') { $builder->orderBy("Pay.driver_id", "asc"); } if ($PayOn == '' && $EmpId == '') { $builder->orderBy("Pay.PayOn", "desc"); } $query = $builder->get(); return $query->getResult(); } } ?>