318 lines
13 KiB
PHP
Executable File
318 lines
13 KiB
PHP
Executable File
<?php
|
|
namespace App\Models;
|
|
|
|
use CodeIgniter\Model;
|
|
|
|
class Driver_model extends Model
|
|
{
|
|
protected $table;
|
|
protected $primaryKey;
|
|
protected $allowedFields;
|
|
|
|
public function useDriverTable()
|
|
{
|
|
$this->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'];
|
|
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,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_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('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)
|
|
->where('driver.is_driver', 1)
|
|
->findAll();
|
|
|
|
}
|
|
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 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,driver_details.FirstName as driver_name,driver_details.is_driver,
|
|
DATE_FORMAT(date, "%M-%Y") AS month_year,COUNT(t_driver_attendance.load_type) AS no_of_loads,driver_details.*,t_emp_pay_data.PF_Rate,t_emp_pay_data.ESI_Rate')
|
|
->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','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','Left')
|
|
->where('t_driver_attendance.date BETWEEN "'.$from.'" AND "'.$to.'"')
|
|
->groupBy('DATE_FORMAT(t_driver_attendance.date, "%M-%Y")');
|
|
|
|
$query = $builder->get();
|
|
// $last_query = $this->db->getLastQuery();
|
|
// echo $last_query;die;
|
|
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();
|
|
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', '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')
|
|
->select('month.Festival_Bonus,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');
|
|
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();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
?>
|