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','diesel_amount','shed_amount','type','customer','quantity']; 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, CONCAT_WS(' ', driver.FirstName, driver.LastName) AS driver_name,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_employee_details as driver', 'driver.EmpID = ' . $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('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) ->where('driver.is_driver', 1) ->findAll(); } function checkPayslipDetails($input_driver_id,$month_year){ $builder = $this->db->table('t_driver_payroll') ->where('t_driver_payroll.driver_id', $input_driver_id) ->where('t_driver_payroll.PayOn', $month_year); $query = $builder->get(); $result = $query->getRowArray(); if (!empty($result['id'])) { return $result['id']; }else{ return 0; } } function getInvoiceInfo() { $builder = $this->db->table('ip_invoices') ->select('invoice_number,invoice_id'); $query = $builder->get(); return $query->getResult(); } function getDriverName($id,$flag) { $builder = $this->db->table('t_employee_details') ->select('CONCAT_WS(" ", t_employee_details.FirstName, t_employee_details.LastName) as driver_name,is_driver') ->where('EmpID', $id); $query = $builder->get()->getRow(); if ($flag == 0){ $driver_name = $query ? $query->driver_name : null; return $driver_name; } if ($flag == 1){ $is_driver = $query ? $query->is_driver : null; return $is_driver; } return null; } function gatheredInvoiceCustAndQty($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 gatheredIgrCustAndQty($igr){ $builder = $this->db->table('t_igr_master as mstr') ->select('mstr.IGRNO,mstr.DeliveryChellanOrInvoiceNo,sum(dtls.QuantityAsPerInvoice) as quantity,splr.supplierName as customer') ->join('t_igr_details dtls', 'dtls.IGRNO = mstr.IGRNO', 'left') ->join('t_purchaseorder_master pomstr', 'pomstr.PONO = mstr.PONO', 'left') ->join('t_supplierdetailsn splr', 'splr.SupplierID = pomstr.SupplierID', 'left') ->where('mstr.IGRNO', $igr); $query = $builder->get(); $result = $query->getRowArray(); if (empty($result['IGRNO'])) { return []; }else{ return $result ?: []; } } function driverAttendanceForMonthlyPayInputs($from,$to){ list($year,$month,$date) = explode('-', $from); $t_driver_monthly_pay_inputs_month_year = "$month-$year"; // $new_date_format = "$year-$month-01"; $builder = $this->db->table('t_driver_attendance') ->select('t_driver_attendance.driver_id,driver_details.FirstName as driver_name,driver_details.is_driver,COUNT(DISTINCT t_driver_attendance.date) AS unique_days, DATE_FORMAT(date, "%M-%Y") AS month_year,driver_details.*,t_emp_pay_data.PF_Rate,t_emp_pay_data.ESI_Rate, COUNT(t_driver_attendance.load_type) AS no_of_loads') ->select('SUM(t_driver_attendance.salary_amount) as monthly_salary_amount, SUM(t_driver_attendance.food_amount) as monthly_food_amount, diesel_amount,shed_amount,CONCAT_WS(" ", driver_details.FirstName, driver_details.LastName) AS FullName') ->select('t_loan_master.Loan_ID,Loan_Amount,Loan_Issued_Date,Monthly_Due,Due_Start_Date as DueDate,No_of_Dues,Paid_Due,Remaining_Due,Paid_Amount,t_loan_history.Balance_Amount, t_driver_monthly_pay_inputs.Loan_Recovered') ->join('t_employee_details as driver_details', 'driver_details.EmpID = t_driver_attendance.driver_id', 'left') ->join('t_emp_pay_data','t_emp_pay_data.EmpID=driver_details.EmpID','Left') ->join('t_loan_master','t_loan_master.EmpID = driver_details.EmpID and t_loan_master.Remaining_Due != 0','Left') ->join('t_loan_history','t_loan_history.Loan_ID = t_loan_master.Loan_ID','Left') ->join('t_driver_monthly_pay_inputs', 't_driver_monthly_pay_inputs.driver_id = driver_details.EmpID AND t_driver_monthly_pay_inputs.month_year = "'.$t_driver_monthly_pay_inputs_month_year.'"', 'left' ) ->where('t_driver_attendance.date BETWEEN "'.$from.'" AND "'.$to.'"') // ->where("t_loan_master.Due_Start_Date", $new_date_format) ->groupBy('DATE_FORMAT(t_driver_attendance.date, "%M-%Y"),t_driver_attendance.driver_id'); $query = $builder->get(); // $last_query = $this->db->getLastQuery(); // echo $last_query; 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']);// we need createdby. thats why updatedby unset $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']); // we need updatedby. thats why createdby unset $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 updateDieselAndShedValuesBasedonEmpID($where_arr,$data){ $this->db->table('t_driver_attendance') ->where($where_arr) ->update($data); $i = $this->db->affectedRows(); return $i; } public function getDriverAttendanceTable($input_driver_id,$monthyear){ $builder = $this->db->table('t_driver_attendance') ->where('DATE_FORMAT(`t_driver_attendance`.`date`, "%Y-%m")',$monthyear) ->where('t_driver_attendance.driver_id',$input_driver_id); $query = $builder->get()->getRow(); // $last_query = $this->db->getLastQuery(); // echo $last_query;die; return $query; } 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,driver.EmpID as EmpId,CONCAT_WS(" ", driver.FirstName, driver.LastName) AS FullName') ->join('t_employee_details as driver', 'driver.EmpID = Pay.driver_id and driver.is_driver = 1', 'left'); 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('CONCAT_WS(" ", driver.FirstName, driver.LastName) AS FullName') ->select('MonthlyPay.*,driver.BankAccountNo , driver.PFNO , driver.ESI as ESINO , L.Loan_ID, L.Loan_Amount, L.Loan_Issued_Date, L.Monthly_Due, L.Due_Start_Date, L.No_of_Dues, L.Paid_Due, L.Remaining_Due, L.Paid_Amount') ->join('t_employee_details as driver', 'driver.EmpID = MonthlyPay.driver_id and driver.is_driver = 1', 'left') ->join('t_loan_master as L', 'MonthlyPay.driver_id = L.EmpID and L.is_Active = 1 and L.Remaining_Due != 0', 'left') ->where('MonthlyPay.driver_id', $driver_id) ->where('MonthlyPay.month_year', $PayOn); $query = $builder->get(); return $query->getResult(); } function insertLoanHistory($data) { $builder = $this->db->table('t_loan_history'); $builder->insert($data); $count = $this->db->affectedRows(); return $count; } function updateLoan($LoanID,$EmpID,$data) { $builder = $this->db->table('t_loan_master') ->where('Loan_ID', $LoanID) ->where('EmpID', $EmpID) ->update($data); $count = $this->db->affectedRows(); return $count; } 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.*') ->select('Emp.EmpID,CONCAT_WS(" ", Emp.FirstName, Emp.LastName) as driver_name,Emp.DateofBirth as Dob,Emp.PANNo as Pan,Emp.BankBranchName as BankName,Emp.BankAccountNo as BankAccountNumber,Emp.IFSCCode as IFSCCode,Emp.DateofJoining as DOJ,Emp.AadharNo,Emp.Designation as Designation,Dep.DepartmentName as DeptName,Emp.esi_applicable,Emp.pf_applicable') ->select('t_emp_pay_data.PF_Rate,t_emp_pay_data.ESI_Rate,COUNT(t_driver_attendance.load_type) AS no_of_load') ->select('month.Festival_Bonus,month.BASIC,month.HRA,month.Loan_Recovered,month.total_diesel_amount,month.total_shed_amount') // ->select('month.monthly_salary_amount,month.monthly_food_amount,month.Festival_Bonus,month.final_payment,month.HRA,month.ESI,month.PF,month.Loan_Recovered,month.total_diesel_amount,month.total_shed_amount') ->join('t_employee_details Emp', 'Pay.driver_id = Emp.EmpID') ->join('t_departmentdetails Dep', 'Emp.Departmentcode = Dep.DEPCode') ->join('t_emp_pay_data','t_emp_pay_data.EmpID=Emp.EmpID','Left') ->join('t_driver_monthly_pay_inputs month', 'month.driver_id = Emp.EmpID') ->join('t_driver_attendance','t_driver_attendance.driver_id = Emp.EmpID'); 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(); } } ?>