ria/app/Models/Driver_model.php
2025-04-17 10:53:05 +00:00

357 lines
15 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','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();
}
}
?>