HEX
Server: Apache/2.4.41 (Amazon) OpenSSL/1.0.2k-fips PHP/5.6.40
System: Linux ip-172-31-40-18 4.14.146-93.123.amzn1.x86_64 #1 SMP Tue Sep 24 00:45:23 UTC 2019 x86_64
User: apache (48)
PHP: 5.6.40
Disabled: NONE
Upload Files
File: /var/www/html/pmw24/driver_settlement/application/controllers/admin/DriverSettlement.php
<?php 
defined('BASEPATH') OR exit('No direct script access allowed');

class DriverSettlement extends MY_Controller {
	public function __construct() {
		parent::__construct();
		//$this->redirect_guest();
		$this->admin=$this->session->userdata('admin');
		$this->load->helper('download');	
		$this->load->model('admin/mdriver');
		$this->load->model('admin/mreport');
		
		$this->load->model('admin/Mdriversettlement');
		define('UPLOAD_DIR', './public/upload_image/temp_payin_images/');
		define('UPLOAD_SETTLEMENT_DIR', './public/upload_image/payin_images/');

		
	}
	public function  index($driver_id = null,$shift_id = null) { 
		//$this->session->unset_userdata('driver_settlement');
		//echo $this->session->userdata('email');die;
		$this->_load_list_view_new_driver($driver_id,$shift_id);		
	}	
	private function _load_list_view_new_driver($driver_id,$shift_id) {
	 // FUNCTION WRIITTEN IN COMMON HELPER
		$data					=  array();
		$data['content'] 		= 'admin/driver_settlement/driver_settlement';
		$data['driver_list'] 	= $this->mdriver->get_driver_list('1','1');	
		$data['docket_list']    =$this->mcommon->getDetails('master_docket',array('is_active'=>1));
		$data['expense_list']   =$this->mcommon->getDetails('master_expense',array('is_active'=>1));
		$data['driver_id']      =$driver_id;
		$data['shift_id']      =$shift_id;
		//pr($data['docket_list']);
		$this->load->view('admin/layouts/index', $data);
		
	}

	public function bulk_settlement() {
		// FUNCTION WRIITTEN IN COMMON HELPER
		   $data					=  array();
		   $data['content'] 		= 'admin/driver_settlement/bulk_settlement';
		   $data['driver_list'] 	= $this->mdriver->get_driver_list('1','1');	
		   $payment_options  	= $this->mcommon->getFullDetails('master_payment_method');
			if(!empty($payment_options)){
				$data['payment_options']	= $payment_options;
			}
		   //pr($data['docket_list']);
		   $this->load->view('admin/layouts/index', $data);
		   
	   }
	public function ajaxDriverShiftDetails(){
		$shift_details		= array();
		$data				= array();
		$shift_data			= array();
		$drv_shift_data		= array();
		$week_array			= array();
		$shift_roster 		= array();
		$shift_roster_data	= array();
		$order_type			= '';
	 	$order				= '';
		$driver_id			= $this->input->post('driver_id');
		$shift_id			= $this->input->post('shift_id');
		
		
	
		$current_dt 		= date('Y-m-d');
		$current_strtime 	= strtotime(date('Y-m-d'));
		
		$previous_week = strtotime("-1 week +1 day");
		$start_week = strtotime("last sunday midnight",$previous_week);
		$end_week = strtotime("next saturday",$start_week);
		$first_of_week = date("Y-m-d",$start_week);
		$end_week = date("Y-m-d",$end_week);
		
		for($i=0 ;$i < 7; $i++) {
			$week_dt = date('Y-m-d', strtotime($first_of_week."+ $i day"));
			$tmp_week_strtime	= strtotime($first_of_week."+ $i day");
		    if(strtotime($end_week) < $tmp_week_strtime){

		    	$shift_roster_data['day']				=	strtoupper(date('D', $tmp_week_strtime));
		    	$shift_roster_data['shift_start_time']	=	' ';
		    	$shift_roster_data['shift_name']		=	' ';
		    }
		    else{
		    	
		    	$roster_joindata   = array('select'    		=>'roster.day_date,RSM.shift_name,DSD.shift_start_time,dsp.shift_payin_id',
					                        'first_table'   =>'roster_driver_maping RDM',
					                        'second_table'  =>'roster',
					                        'dependency1'   =>'RDM.roster_id = roster.roster_id',
					                        'join_type1'    =>'LEFT',
					                        /**********************************/                
				                            'third_table'   =>'roster_shift_maping RSM',
				                            'dependency2'   =>'RSM.roster_id = RDM.roster_id',
				                            'join_type2'    =>'LEFT',
				                            /********************************/
				                            'forth_table'   =>'driver_shift_payin dsp',
				                            'dependency3'   =>'dsp.roster_driver_id = RDM.roster_driver_id',
											'join_type3'    =>'LEFT',
											/********************************/
											'fifth_table'   =>'driver_shift_details DSD',
				                            'dependency4'   =>'DSD.roster_driver_id = RDM.roster_driver_id AND DSD.shift_status = 1',
				                            'join_type4'    =>'LEFT'
                            
										  );
										  
				$shift_roster_cond		= array('RDM.driver_id' => $driver_id,'roster.day_date' =>$week_dt);
      			$shift_roster_list 		= $this->mcommon->joinQuery($roster_joindata,$shift_roster_cond,'result',$order,$order_type);
      			//pr($shift_roster_list,0);
      			if(!empty($shift_roster_list)){
      				foreach($shift_roster_list as $val_sft){      					
      					$shift_roster_data['day']				=	strtoupper(date('D', $tmp_week_strtime));		    			
						
						if(!empty($val_sft['shift_start_time']) || !empty($val_sft['shift_payin_id'])){
		    				$shift_roster_data['shift_start_time']	=	'OK';
		    			}
		    			else{
		    				$shift_roster_data['shift_start_time']	=	'NO';
		    			}
		    			$shift_roster_data['shift_name']		=	$val_sft['shift_name'];
      				}
      				
      			}
      			else{
      					$shift_roster_data['day']					=	strtoupper(date('D', $tmp_week_strtime));
		    			$shift_roster_data['shift_start_time']		=	' ';
		    			$shift_roster_data['shift_name']			=	' ';
      			}
		    }
		    $shift_roster[]				= $shift_roster_data;
		}
		
		
		$data['shift_roster']  = $shift_roster;
		
	 	$joindata   = array(
			'select'    	=>'master_user.dc_no,user_profile.dr_rental,user_profile.profile_photo,user_profile.dr_licence_expiry,user_profile.dr_dc_expiry,driver_shift_details.shift_no ,driver_shift_details.shift_id ,roster.*,master_car.registration_no as car_no',
            'first_table'   =>'roster_driver_maping RDM',
            'second_table'  =>'roster',
            'dependency1'   =>'RDM.roster_id = roster.roster_id',
            'join_type1'    =>'INNER',
            /**********************************/      
            'third_table'   =>'master_car',
            'dependency2'   =>'master_car.car_id = roster.car_id',
            'join_type2'    =>'INNER',
            /********************************/
            'forth_table'   =>'master_user',
            'dependency3'   =>'master_user.user_id = RDM.driver_id',
            'join_type3'    =>'INNER',
            /********************************/
            'fifth_table'   =>'user_profile',
            'dependency4'   =>'user_profile.user_id = master_user.user_id',
            'join_type4'    =>'INNER',
             /********************************/
      		'sixth_table'   =>'driver_shift_details',
            'dependency5'   =>'driver_shift_details.roster_driver_id = RDM.roster_driver_id',
            'join_type5'    =>'INNER'	

         );			
	 	$cond			= array('RDM.driver_id' => $driver_id,'driver_shift_details.shift_status' => 2);
      	$shift_lists 	= $this->mcommon->joinQuery($joindata,$cond,'result','roster.day_date','DESC');
      	//pr($shift_lists,0);
      	if(!empty($shift_lists)){$shift_details['driver_shift_data']  = '1';
      		foreach($shift_lists as $val){
      			$shift_data['dc']					= $val['dc_no'];
      			$shift_data['dr_dc_expiry']			= date('d/m/Y',STRTOTIME($val['dr_dc_expiry']));
      			$shift_data['dr_licence_expiry']	= date('d/m/Y',STRTOTIME($val['dr_licence_expiry']));
      			$shift_data['dr_rental']			= $val['dr_rental'];
      			$shift_data['shift_id'] 			= $val['shift_id'];
      			$shift_data['shift_no'] 			= $val['shift_no'];
      			$shift_data['car_no'] 				= $val['car_no'];
      			$shift_data['shift_date'] 			= date('d/m/Y',STRTOTIME($val['day_date']));
      			$shift_data['profile_photo'] 		= $val['profile_photo'];

      			$cond_shift		= array('shift_id' => $val['shift_id'],'driver_id' =>$driver_id,'driver_settlement_flag !=' =>'1');
      			$payin_lists 	= $this->mcommon->getROW('payin',$cond_shift);
      			if(!empty($payin_lists)){
					  $shift_data['payin_payout_amt']	= $payin_lists['total_payin_payout'];
					  $shift_data['settlement_amt'] 		= $payin_lists['settlement_amt'];
					  $shift_data['final_due_amt'] 		= $payin_lists['final_due_amt'];
					  $shift_data['rental_commission_flag'] = $payin_lists['rental_commission_flag'];
					  $driver_settlement_details = $this->mcommon->getRow('driver_settlement',array('payin_id'=>$payin_lists['payin_id']));
					  $shift_data['dr_settlement_id'] = !empty($driver_settlement_details)?$driver_settlement_details['dr_settlement_id']:'';

      			}
      			else{
					  $shift_data['payin_payout_amt']	= '';
					  $shift_data['settlement_amt'] 		= '';
					  $shift_data['final_due_amt'] 		= '';
					  $shift_data['rental_commission_flag'] = '';
					  $shift_data['dr_settlement_id']='';
					  $shift_details['driver_shift_data']  = '0';
      			}
      			$drv_shift_data[]  	= $shift_data;
      		}
      		$data['drv_shift_data']	= $drv_shift_data;
      		
      	}
      	else{
      		$data['drv_shift_data']	= '';
      		$shift_details['driver_shift_data']  = '0';
		  }
		$data['shift_id'] = $shift_id; 
      	//pr($drv_shift_data);
      	//echo $this->load->view('admin/driver_settlement/ajax_driver_shift_details',$data,true);exit;
      	$shift_details['html']  = $this->load->view('admin/driver_settlement/ajax_driver_shift_details',$data,true);
		echo json_encode($shift_details);exit;
	}


	public function ajaxDriverShiftDetailsBulk(){
		$driver_id = $this->input->post('driver_id');
		$shift_list = $this->Mdriversettlement->get_shift_details_bulk($driver_id);
		//print_r($shift_list);die;
		
		$data['drv_shift_data'] = $shift_list;
		$shift_details['html']  = $this->load->view('admin/driver_settlement/ajax_driver_shift_details_bulk',$data,true);
		echo json_encode($shift_details);exit;
	}
	public function get_levy_report($start_date = null, $end_date = null, $driver_id = null, $company_id = null,$levy_settled_flag=null){
        
        if (!empty($start_date)  && !empty($end_date)) {
            $start_date = date('Y-m-d', strtotime(str_replace('/', '-', $start_date)));
            $end_date = date('Y-m-d', strtotime(str_replace('/', '-', $end_date)));
        }

        return $this->mreport->get_levy_report($start_date, $end_date, $driver_id, $company_id,$levy_settled_flag);
    }
	public function ajaxDriverSettlement(){
	//$this->session->unset_userdata('driver_settlement');
	//pr($this->session->userdata('driver_settlement'));
		$data 				= array();
		$driver_settlement	= array();
		$drv_shift_data		= array();
		$week_array			= array();
		$driver_expense 	= array();
		$driver_dockets 	= array();
		$settlement_details = array();
		$payment_options 	= array();
		$drv_dockets 		= array();
		$drv_dockets_data	= array();
		$shift_id			= $this->input->post('shift_id');
		$driver_id			= $this->input->post('driver_id');
		$dr_settlement_id	= $this->input->post('dr_settlement_id');
		$order_type			= '';
	 	$order				= '';
	 	$payment_options  	= $this->mcommon->getFullDetails('master_payment_method');
	 	if(!empty($payment_options)){
	 		$data['payment_options']	= $payment_options;
	 	}

	 	//******************* Driver settlement set session  ******************//
		$user_profile	= $this->mcommon->getRow('user_profile',array('user_id'=>$driver_id));
		$driver_settlement['dr_rental'] = 	$user_profile['dr_rental'];
		$this->session->unset_userdata('driver_settlement');
		//if($this->session->userdata('driver_settlement') ==''){
	 		getdatafromdb:$cond 		= array('driver_id' => $driver_id,'shift_id' =>$shift_id);
	 		//echo "fjaklsjl";exit;
			
			$driver_settlement_data_updated  	= $this->mcommon->getRow('driver_settlement',$cond);
			if(empty($driver_settlement_data_updated)){
				$driver_settlement_data  	= $this->mcommon->getRow('payin',$cond);
			
					if(!empty($driver_settlement_data)){
						$driver_settlement['payin_id'] 				= $driver_settlement_data['payin_id'];
						$driver_settlement['shift_id'] 				= $shift_id;
						$driver_settlement['total_extra_start'] 	= $driver_settlement_data['total_extra_start'];
						$driver_settlement['total_extra_end'] 		= $driver_settlement_data['total_extra_end'];
						$driver_settlement['paid_km_start'] 		= $driver_settlement_data['paid_km_start'];
						$driver_settlement['paid_km_end'] 			= $driver_settlement_data['paid_km_end'];
						$driver_settlement['total_km_start'] 		= $driver_settlement_data['total_km_start'];
						$driver_settlement['total_km_end'] 			= $driver_settlement_data['total_km_end'];
						$driver_settlement['no_of_hiring_start'] 	= $driver_settlement_data['no_of_hiring_start']; 
						$driver_settlement['no_of_hiring_end'] 		= $driver_settlement_data['no_of_hiring_end'];
						$driver_settlement['extra_start'] 			= $driver_settlement_data['extra_start'];
						$driver_settlement['extra_end'] 			= $driver_settlement_data['extra_end'];
						$driver_settlement['speedo_reading_start'] 	= $driver_settlement_data['speedo_reading_start'];
						$driver_settlement['speedo_reading_end'] 	= $driver_settlement_data['speedo_reading_end'];
						$driver_settlement['bond_charges'] 			= $driver_settlement_data['bond_charges'];
						$driver_settlement['levy'] 					= $driver_settlement_data['levy'];
						$driver_settlement['no_of_whl'] 			= $driver_settlement_data['no_of_whl'];
						$driver_settlement['payin_reference_doc'] 	= $driver_settlement_data['payin_reference_doc'];
						$driver_settlement['payin_lifetime_total'] 	= $driver_settlement_data['payin_lifetime_total'];
						$driver_settlement['settlement_amt'] 		= $driver_settlement_data['settlement_amt'];
						$driver_settlement['final_due_amt'] 		= $driver_settlement_data['final_due_amt'];
						$driver_settlement['rental_commission_flag'] = $driver_settlement_data['rental_commission_flag'];
						$driver_settlement['discount']  = 0;
						$driver_settlement['other']  			 	 = 0;
						
						
						
					/*************** Driver Dockets ***************/
					//echo $driver_settlement['payin_id'];exit;
					$joindata   = array('select'    	=>'payin_dockets.*,master_docket.docket_name',
										'first_table'   =>'payin_dockets',
										'second_table'  =>'master_docket',
										'dependency1'   =>'payin_dockets.docket_id = master_docket.docket_id',
										'join_type1'    =>'left'
									);

					$cond_dockets 		= array('payin_id' => $driver_settlement_data['payin_id']);
					$driver_dockets  	= $this->mcommon->joinQuery($joindata,$cond_dockets,'result',$order,$order_type);
					if(!empty($driver_dockets)){
						foreach($driver_dockets as $dockets){
							$drv_dockets['payin_dockets_id']	= $dockets['payin_dockets_id'];
							$drv_dockets['docket_name']			= $dockets['docket_name'];
							$drv_dockets['docket_amount']		= $dockets['value'];
							$drv_dockets['docket_img']			= $dockets['doc_link'];

							$driver_settlement['driver_dockets'][]	= $drv_dockets;
						}
					}
					else{
						$driver_settlement['driver_dockets'] = array();
					}

					/*************** Driver Expense ***************/
					//pr($driver_settlement_data);
					$expense_joindata   = array('select'    	=>'payin_expenses.*,master_expense.expense_name',
												'first_table'   =>'payin_expenses',
												'second_table'  =>'master_expense',
												'dependency1'   =>'payin_expenses.expense_id = master_expense.expense_id',
												'join_type1'    =>'left'
											);

					$cond_expense 		= array('payin_id' => $driver_settlement_data['payin_id']);
					$driver_expense  	= $this->mcommon->joinQuery($expense_joindata,$cond_expense,'result',$order,$order_type);
					if(!empty($driver_expense)){
						foreach($driver_expense as $expenses){
							$drv_expenses['payin_expense_id']	= $expenses['payin_expense_id'];
							$drv_expenses['expense_name']		= $expenses['expense_name'];
							$drv_expenses['expense_amount']		= $expenses['value'];
							$drv_expenses['expense_img']		= $expenses['doc_link'];

							$driver_settlement['driver_expense'][]	= $drv_expenses;
						}
					}
					else{
						$driver_settlement['driver_expense'] = array();
					}
				}
			
			
			} else {
				$cond 		= array('driver_settlement.driver_id' => $driver_id,'driver_settlement.shift_id' =>$shift_id);
				$joindata   = array('select'    	=>'driver_settlement.*,payin.rental_commission_flag,payin.settlement_amt,payin.payin_reference_doc,payin.payin_lifetime_total',
									'first_table'   =>'driver_settlement',
									'second_table'  =>'payin',
									'dependency1'   =>'driver_settlement.payin_id = payin.payin_id',
									'join_type1'    =>'inner'
								);

				
				$driver_settlement_data  	= $this->mcommon->joinQuery($joindata,$cond,'row',$order,$order_type);
				
				

				if(!empty($driver_settlement_data)){
					$driver_settlement['payin_id'] 				 = $driver_settlement_data['payin_id'];
					$driver_settlement['shift_id'] 				 = $shift_id;
					$driver_settlement['total_extra_start'] 	 = $driver_settlement_data['total_extra_start'];
					$driver_settlement['total_extra_end'] 		 = $driver_settlement_data['total_extra_end'];
					$driver_settlement['paid_km_start'] 		 = $driver_settlement_data['paid_km_start'];
					$driver_settlement['paid_km_end'] 			 = $driver_settlement_data['paid_km_end'];
					$driver_settlement['total_km_start'] 		 = $driver_settlement_data['total_km_start'];
					$driver_settlement['total_km_end'] 			 = $driver_settlement_data['total_km_end'];
					$driver_settlement['no_of_hiring_start'] 	 = $driver_settlement_data['no_of_hiring_start']; 
					$driver_settlement['no_of_hiring_end'] 		 = $driver_settlement_data['no_of_hiring_end'];
					$driver_settlement['extra_start'] 			 = $driver_settlement_data['extra_start'];
					$driver_settlement['extra_end'] 			 = $driver_settlement_data['extra_end'];
					$driver_settlement['speedo_reading_start'] 	 = $driver_settlement_data['speedo_reading_start'];
					$driver_settlement['speedo_reading_end'] 	 = $driver_settlement_data['speedo_reading_end'];
					$driver_settlement['bond_charges'] 			 = $driver_settlement_data['bond_installment'];
					$driver_settlement['levy'] 					 = $driver_settlement_data['shift_levy'];
					$driver_settlement['no_of_whl'] 			 = $driver_settlement_data['no_of_whl'];
					$driver_settlement['payin_reference_doc'] 	 = $driver_settlement_data['payin_reference_doc'];
					$driver_settlement['payin_lifetime_total'] 	 = $driver_settlement_data['payin_lifetime_total'];
					$driver_settlement['settlement_amt'] 		 = $driver_settlement_data['settlement_amt'];
					$driver_settlement['final_due_amt'] 		 = $driver_settlement_data['final_due_amt'];
					$driver_settlement['rental_commission_flag'] = $driver_settlement_data['rental_commission_flag'];
					$driver_settlement['discount']  			 = $driver_settlement_data['discount'];
					$driver_settlement['other']  			 	 = $driver_settlement_data['other'];
					
					
					
				/*************** Driver Dockets ***************/
				//echo $driver_settlement['payin_id'];exit;
				$joindata   = array('select'    	=>'dr_settlement_docket.*,master_docket.docket_name,payin_dockets.doc_link',
									'first_table'   =>'dr_settlement_docket',
									'second_table'  =>'payin_dockets',
									'third_table'  =>'master_docket',
									'dependency1'   =>'dr_settlement_docket.payin_docket_id = payin_dockets.payin_dockets_id',
									'join_type1'    =>'left',
									'dependency2'   =>'payin_dockets.docket_id = master_docket.docket_id',
									'join_type2'    =>'left'
								);

				$cond_dockets 		= array('dr_settlement_id' => $driver_settlement_data['dr_settlement_id']);
				$driver_dockets  	= $this->mcommon->joinQuery($joindata,$cond_dockets,'result',$order,$order_type);
				if(!empty($driver_dockets)){
					foreach($driver_dockets as $dockets){
						$drv_dockets['payin_dockets_id']	= $dockets['payin_docket_id'];
						$drv_dockets['docket_name']			= $dockets['docket_name'];
						$drv_dockets['docket_amount']		= $dockets['docket_settlement_amt'];
						$drv_dockets['docket_img']			= $dockets['doc_link'];

						$driver_settlement['driver_dockets'][]	= $drv_dockets;
					}
				}
				else{
					$driver_settlement['driver_dockets'] = array();
				}

				/*************** Driver Expense ***************/
				//pr($driver_settlement_data);
				
				
				$expense_joindata   = array('select'    	=>'dr_settlement_expense.*,master_expense.expense_name,payin_expenses.doc_link',
											'first_table'   =>'dr_settlement_expense',
											'second_table'  =>'payin_expenses',
											'third_table'  =>'master_expense',
											'dependency1'   =>'dr_settlement_expense.payin_expense_id = payin_expenses.payin_expense_id',
											'join_type1'    =>'left',
											'dependency2'   =>'payin_expenses.expense_id = master_expense.expense_id',
											'join_type2'    =>'left'
										);

				$cond_expense 		= array('dr_settlement_id' => $driver_settlement_data['dr_settlement_id']);
				$driver_expense  	= $this->mcommon->joinQuery($expense_joindata,$cond_expense,'result',$order,$order_type);
				//echo '<pre>';print_r($driver_expense);die;
				if(!empty($driver_expense)){
					foreach($driver_expense as $expenses){
						$drv_expenses['payin_expense_id']	= $expenses['payin_expense_id'];
						$drv_expenses['expense_name']		= $expenses['expense_name'];
						$drv_expenses['expense_amount']		= $expenses['expense_settlement_amt'];
						$drv_expenses['expense_img']		= $expenses['doc_link'];

						$driver_settlement['driver_expense'][]	= $drv_expenses;
					}
				}
				else{
					$driver_settlement['driver_expense'] = array();
				}
			}




			}
			
			
			
			$this->session->set_userdata('driver_settlement', $driver_settlement);
			$payin_id  	= $driver_settlement_data['payin_id'];
	 	
		//******************* Driver Settlement Set Session End ******************//
		$total_settlement   	= $this->settlementCalculation($payin_id,$driver_id,$shift_id,$accident_installment_rental= 0,$driver_settlement['bond_charges'],$driver_settlement['discount'],$driver_settlement['other'],$flag = 0,$amount_paid_rental = 0,$driver_settlement['rental_commission_flag'],$driver_settlement['dr_rental'],$accident_installment_com = 0,$driver_settlement['bond_charges'],$driver_settlement['discount'],$driver_settlement['other'],$amount_paid_com = 0);
		
		
		
		
		
		//pr($total_settlement);
		if(!empty($total_settlement)){
			$data['total_settlement']	= $total_settlement;
		}

		$cond_bond  		= array('driver_id' => $driver_id);
		$bond_data 			= $this->mcommon->getRow('master_bond',$cond_bond);
		$data['bond_data']	= $bond_data;

		$unsettled_levy 	= $this->get_levy_report('', '',$driver_id,'',0);
		//echo '<pre>';print_r($unsettled_levy);die;
		if(!empty($unsettled_levy)){
			if ((isset($unsettled_levy[0]['levy']) && isset($unsettled_levy[0]['levy_gst']))) {
				$levy_with_gst = $unsettled_levy[0]['levy'];
			}
			else{
				$levy_with_gst = "0.00";
			}
			$data['total_levy_accumulate'] = $levy_with_gst;
		}
		else{
			$data['total_levy_accumulate'] = "0.00";
		}
		$cond_accident_installment 	= array('master_accident.driver_id' => $driver_id);
		$accident_data  			= $this->Mdriversettlement->GetAccidentData($cond_accident_installment);
		$data['accident_data']		= $accident_data;
		//pr($accident_data);
		$data['driver_id']			= $driver_id;
		$data['shift_id']			= $shift_id;
		$data['payin_id']			= $payin_id;
		$data['dr_settlement_id']	=$dr_settlement_id;
		$data['docket_list']    =$this->mcommon->getDetails('master_docket',array('is_active'=>1));
		$data['expense_list']    =$this->mcommon->getDetails('master_expense',array('is_active'=>1));

		$settlement_details['html']	= $this->load->view('admin/driver_settlement/ajax_driver_settlement',$data,true);
		echo json_encode($settlement_details);exit;
	}

	public function settlementCalculation($payin,$driver_id,$shift_id,$accident_installment_rental= 0,$bond_total_rental=0,$discount_rental = 0,$other_rental = 0,$flag =0,$amount_paid_rental = 0,$rental_commission='',$rental_hidden_val = 0,$accident_installment_com = 0,$bond_total_com = 0,$discount_com = 0,$other_com = 0,$amount_paid_com = 0){

		
	//PR($this->session->userdata('driver_settlement'));
		$total_dockets			= 0;
		$total_expense			= 0;
		$dr_commission			= 0.00;
		$total_extra_amount		= 0.00;
		$levy_total				= 0.00;
		$no_of_whl				= 0.00; 
		$amount_due				= 0.00;
		$total 					= 0.00;
		$settlement_calculation	= array();
		$cond_payin 			= array('payin_id' => $payin);
		if($this->session->userdata('driver_settlement') !=''){
			$driver_settlement = $this->session->userdata('driver_settlement');
		}
		//echo '<pre>';print_r($driver_settlement);die;
		/****************** total Dockets ***************/
			//$settlement_calculation['total_dockets']	= number_format($total_dockets,2);

			if(!empty($driver_settlement['driver_dockets'])){
				foreach($driver_settlement['driver_dockets'] as $dockets_val){					
					$total_dockets	+= $dockets_val['docket_amount'];
				}
			}
			$settlement_calculation['total_dockets']	= number_format($total_dockets,2,'.','');  

		/****************** total Expense ***************/
			if(!empty($driver_settlement['driver_expense'])){
				foreach($driver_settlement['driver_expense'] as $expense_val){					
					$total_expense	= $total_expense+$expense_val['expense_amount'];
				}
			}
			$settlement_calculation['total_expense']	= number_format($total_expense,2,'.','');

		/******************* total Accident Installment ***************/
			if($flag == 0){
				$cond_accident_installment 	= array('master_accident.driver_id' => $driver_id,'master_accident.shift_id' => $shift_id);
				$accident_installment  		= $this->Mdriversettlement->AccidentInstallment($cond_accident_installment);
				$bond_total					= $driver_settlement['bond_charges'];
			}
		/******************* Driver comission ***************************/
			$commission_cond 	= array('user_id' => $driver_id);
			$dr_commission		= $this->Mdriversettlement->getCommission($commission_cond);

		/******************* Levy rate ***************************/
			
			

			$ongoing_shift_details = $this->Mdriversettlement->get_ongoing_shift_details($shift_id);
          
			$levy_rate = 0;
			if(!empty($ongoing_shift_details['levy_applicable']) && ($ongoing_shift_details['levy_applicable'] == 1)){
				$levy_data			= $this->mcommon->getFullDetails('master_levy')[0];			
				$levy_rate			= $levy_data['levy_rate'];
			}
		/******************* other total***************************/
			
			if(!empty($driver_settlement)){
				//echo '<pre>';print_r($driver_settlement['no_of_hiring_end']);die;
				$total_extra_amount = ($driver_settlement['total_extra_end'] - $driver_settlement['total_extra_start'])*($dr_commission/100);
				$levy_total			= ($driver_settlement['no_of_hiring_end'] - $driver_settlement['no_of_hiring_start'])*$levy_rate;
				
				$lifting_share=$this->mcommon->getRow('master_lifting_fee',array());
				$driver_settlement_db_data = $this->mcommon->getRow('driver_settlement',$cond_payin);
				if(empty($driver_settlement_db_data)){
					$no_of_whl			= $driver_settlement['no_of_whl'] * $lifting_share['gtn_share'];
				} else {

					$no_of_whl = $driver_settlement_db_data['no_of_whl'];
				}
				if(!empty($total_extra_amount)){
					$settlement_calculation['total_extra_amount']	= number_format($total_extra_amount,2,'.','');
				}
				else{
					$settlement_calculation['total_extra_amount']	= '0.00';
				}
				if(!empty($levy_total)){
					$settlement_calculation['levy_total']	= number_format($levy_total,2,'.','');
				}
				else{
					$settlement_calculation['levy_total']	= '0.00';
				}
				if(!empty($no_of_whl)){
					$settlement_calculation['no_of_whl']	= number_format($no_of_whl,2,'.','');
				}
				else{
					$settlement_calculation['no_of_whl']	= '0';
				}
				
				
				$settlement_calculation['accident_installment_com'] = !empty($accident_installment_com)?number_format($accident_installment_com,2,'.',''):0;
				$settlement_calculation['bond_total_com'] = !empty($bond_total_com)?number_format($bond_total_com,2,'.',''):0;
				$settlement_calculation['discount_com'] = !empty($discount_com)?number_format($discount_com,2,'.',''):0;
				$settlement_calculation['other_com'] = !empty($other_com)?number_format($other_com,2,'.',''):0;
				$settlement_calculation['amount_paid_com'] = !empty($amount_paid_com)?number_format($amount_paid_com,2,'.',''):0;
				
				$settlement_calculation['accident_installment_rental'] = !empty($accident_installment_rental)?number_format($accident_installment_rental,2,'.',''):0;
				$settlement_calculation['bond_total_rental'] = !empty($bond_total_rental)?number_format($bond_total_rental,2,'.',''):0;
				$settlement_calculation['discount_rental'] = !empty($discount_rental)?number_format($discount_rental,2,'.',''):0;
				$settlement_calculation['other_rental'] = !empty($other_rental)?number_format($other_rental,2,'.',''):0;
				$settlement_calculation['amount_paid_rental'] = !empty($amount_paid_rental)?number_format($amount_paid_rental,2,'.',''):0;
				
				
				$payin_details = $this->mcommon->getRow('payin',array('payin_id'=>$payin));
				
				if($rental_hidden_val > 0){
					
					$amount_paid_rental = (empty($amount_paid_rental))?($payin_details['settlement_amt'] - $payin_details['final_due_amt']) : $amount_paid_rental;
					
					$rental_payout = ($rental_hidden_val - $total_dockets + $levy_total + $bond_total_rental + $accident_installment_rental + $other_rental - $amount_paid_rental);
					$amount_due_rental = $rental_payout;
					$total_rental = $rental_payout;

					
					$amount_paid_com = 0;
					$discount_com = 0;
					$amount_due_com			= (($total_extra_amount + $levy_total+$accident_installment_com+$bond_total_com+$no_of_whl) - ($total_dockets + 
					$total_expense  + $amount_paid_com));
					$total_com 				= $amount_due_com;
					//echo $amount_due_com;die;

					$discount_rental = $amount_due_com - $payin_details['settlement_amt'];
					
				} else {
					
					$amount_paid_rental = 0;
					$rental_payout = 0;
					$discount_rental = 0;
					$amount_due_rental = 0;
					$total_rental = 0;

					$amount_paid_com = (empty($amount_paid_com))?($payin_details['settlement_amt'] - $payin_details['final_due_amt']) : $amount_paid_com;
					$discount_com = !empty($discount_com)?$discount_com:'0';
					$amount_due_com			= (($total_extra_amount + $levy_total+$accident_installment_com+$bond_total_com+$no_of_whl) - ($total_dockets + 
					$total_expense + $other_com + $discount_com + $amount_paid_com));
					$total_com 				= $amount_due_com;
					
				}

				$settlement_calculation['settlement_amt'] 		= $driver_settlement['settlement_amt'];
				$settlement_calculation['final_due_amt'] 		= $driver_settlement['final_due_amt'];
				$settlement_calculation['other']  			 	= $driver_settlement['other'];
				$settlement_calculation['rental_commission_flag'] = $driver_settlement['rental_commission_flag'];
				
				
				$settlement_calculation['amount_paid_rental'] = !empty($amount_paid_rental)?number_format($amount_paid_rental,2,'.',''):0;
				$settlement_calculation['amount_paid_com'] = !empty($amount_paid_com)?number_format($amount_paid_com,2,'.',''):0;
				
				
				$settlement_calculation['amount_due_rental']	= !empty($amount_due_rental)?$this->custom_round($amount_due_rental,2):0;    
				$settlement_calculation['amount_due_com']	= !empty($amount_due_com)?$this->custom_round($amount_due_com,2):0;
				
				$settlement_calculation['discount_rental']	= !empty($discount_rental)?number_format($discount_rental,2,'.',''):0;    
				$settlement_calculation['discount_com']	= !empty($discount_com)?number_format($discount_com,2,'.',''):0;
				
				$settlement_calculation['total_rental']	= !empty($total_rental)?$this->custom_round($total_rental):0;    
				$settlement_calculation['total_com']	= !empty($total_com)?$this->custom_round($total_com):0;
				   
			}	
		//pr($settlement_calculation);
		return 	$settlement_calculation;
	}

	
	public function custom_round($number){

		$round_num = round($number / 0.05) * 0.05;
		return number_format($round_num,2,'.','');

	}
	public function saveDriverSettlement(){
		$respons_arr		= array();
		$driver_settlement  = array();
		$payin_id		= $this->input->post('payin_id');
		$start_value	= $this->input->post('start_value');
		$end_value		= $this->input->post('end_value');
		$start_colmn	= $this->input->post('start_colmn');
		$end_colmn		= $this->input->post('end_colmn');
		$condition		= array('payin_id' => $payin_id);
		$updateArr		= array($start_colmn => $start_value,
								$end_colmn	 => $end_value,
								'updated_ts' => date('Y-m-d h:i:s'),
								'updated_by' =>	$this->session->userdata('user_data')
							);
		//$update_Settlement	= $this->mcommon->update('payin',$condition,$updateArr);
		if($this->session->userdata('driver_settlement') !=''){
			$driver_settlement = $this->session->userdata('driver_settlement');
			$driver_settlement[$start_colmn] 	= $start_value;
			$driver_settlement[$end_colmn] 		= $end_value;						
		}
		
		$this->session->set_userdata('driver_settlement', $driver_settlement);

		// if($update_Settlement) {
			
			$respons_arr['process'] = 'success';
		// }
		// else{
		// 	$respons_arr['process'] = "failed";
		// }
		$driver_id				= $this->input->post('driver_id');
		$shift_id				= $this->input->post('shift_id');
		$payin_id				= $this->input->post('payin_id');


		$discount_rental 				= $this->input->post('discount_rental');
		$other_rental 					= $this->input->post('other_rental');
		$accident_installment_rental 	= $this->input->post('accident_installment_rental');
		$bond_total_rental 			= $this->input->post('bond_total_rental');
		$amount_paid_rental			= $this->input->post('amount_paid_rental');

		$discount_com 				= $this->input->post('discount_com');
		$other_com 					= $this->input->post('other_com');
		$accident_installment_com 	= $this->input->post('accident_installment_com');
		$bond_total_com 			= $this->input->post('bond_total_com');
		$amount_paid_com			= $this->input->post('amount_paid_com');


		$rental_commission		= $this->input->post('rental_commission');
		$flag 					= $this->input->post('flag');
		$rental_hidden_val		=$this->input->post('rental_hidden_val');
		$respons_arr['total_settlement']   	= $this->settlementCalculation($payin_id,$driver_id,$shift_id,$accident_installment_rental,$bond_total_rental,$discount_rental,$other_rental,$flag,$amount_paid_rental,$rental_commission,$rental_hidden_val,$accident_installment_com,$bond_total_com,$discount_com,$other_com,$amount_paid_com);
		echo json_encode($respons_arr);exit;
	}
	public function saveDriverDocket(){
		//echo '<pre>';print_r($this->session->userdata('driver_settlement'));die;
		$respons_arr		= array();
		$payin_dockets_id	= $this->input->post('payin_dockets_id');
		$driver_docket_pr	= $this->input->post('driver_docket_pr');
		$docket_id	= $this->input->post('docket_id');
		$docket_image = $this->input->post('docket_image');
		//$docket_image_file = $this->input->post('docket_image_file');
		$docket_image_type = $this->input->post('docket_image_type');
		$docket_identification_id = $this->input->post('docket_identification_id');
		$docket_name = $this->mcommon->getRow('master_docket',array('docket_id'=>$docket_id));
		$doc_link ='';
		if($docket_image_type == 'C'){
			if (!empty($docket_image) && file_exists(UPLOAD_DIR.$docket_image)) {
				$target_path = './public/upload_image/payin_images/'.$docket_image;
				
				if (copy(UPLOAD_DIR.$docket_image,$target_path)){
					$doc_link = $docket_image;
				}
			}
		}
		elseif($docket_image_type == 'F'){
			if(isset($_FILES['docket_image_file']['name']) && !empty($_FILES['docket_image_file']['name'])){

				$path = './public/upload_image/payin_images/';
				$upload_file = $this->single_image_upload($path, $_FILES['docket_image_file'],'docket_image_file');
				
				if($upload_file['status']==1){
					$doc_link=$upload_file['result'];
				} else {

					$doc_link ='';
				}
			}

		} else{
			if(file_exists(UPLOAD_SETTLEMENT_DIR.$docket_image) || file_exists(UPLOAD_DIR.$docket_image)){
				$doc_link = $docket_image;
			}
		}
		if(empty($payin_dockets_id)){
			$payin_data['docket_id'] = $docket_id;
			$payin_data['payin_id'] = $this->input->post('payin_id');
			$payin_data['value'] = $driver_docket_pr;
			$payin_data['doc_link']=$doc_link;
			
			
			$payin_dockets_id='';
			//$payin_dockets_id = $this->mcommon->insert('payin_dockets',$payin_data);
			
			$drv_dockets['payin_dockets_id']	= $payin_dockets_id;
			$drv_dockets['docket_id']			= $docket_id;
			$drv_dockets['docket_name']			= !empty($docket_name)?$docket_name['docket_name']:'';
			$drv_dockets['docket_amount']		= $driver_docket_pr;
			$drv_dockets['docket_img']			= $payin_data['doc_link'];
				


			$driver_settlement = $this->session->userdata('driver_settlement');
			
			if(empty($docket_identification_id)){
				$docket_identification_id = "payin_dockets_".time();
				$drv_dockets['docket_identification_id']			= $docket_identification_id;
				$driver_settlement['driver_dockets'][]	= $drv_dockets;
				
			} else{
				
				if(!empty($driver_settlement['driver_dockets'])){
					foreach($driver_settlement['driver_dockets'] as $key => $value) {
						
						if(isset($value['docket_identification_id']) && ($value['docket_identification_id'] == $docket_identification_id)){
							$drv_dockets['docket_identification_id']			= $docket_identification_id;
							$driver_settlement['driver_dockets'][$key]	= $drv_dockets;
						} 
					}
				}
			}
			$this->session->set_userdata('driver_settlement', $driver_settlement);
			
			
		} else{

			if($this->session->userdata('driver_settlement') !=''){
				$driver_settlement = $this->session->userdata('driver_settlement');
				if(!empty($driver_settlement['driver_dockets'])){
					foreach($driver_settlement['driver_dockets'] as $key => $value) {
						if(isset($value['payin_dockets_id']) && $value['payin_dockets_id'] == $payin_dockets_id){
							$driver_settlement['driver_dockets'][$key]['docket_amount'] = $driver_docket_pr;
							$driver_settlement['driver_dockets'][$key]['docket_img'] = $doc_link;
						}
					}
				}
				$this->session->set_userdata('driver_settlement', $driver_settlement);
				//echo '<pre>';print_r($driver_settlement);die;
			}

		}
		// $driver_settlement = $this->session->userdata('driver_settlement');
		// echo '<pre>';print_r($driver_settlement);die;
		$respons_arr['process'] = 'success';
		$respons_arr['image_link'] = $doc_link;
		$respons_arr['docket_identification_id']=$docket_identification_id;
		$driver_id						= $this->input->post('driver_id');
		$shift_id						= $this->input->post('shift_id');
		$payin_id						= $this->input->post('payin_id');
		$discount_rental 				= $this->input->post('discount_rental');
		$other_rental 					= $this->input->post('other_rental');
		$accident_installment_rental 	= $this->input->post('accident_installment_rental');
		$bond_total_rental 				= $this->input->post('bond_total_rental');
		$amount_paid_rental				= $this->input->post('amount_paid_rental');

		$discount_com 					= $this->input->post('discount_com');
		$other_com 						= $this->input->post('other_com');
		$accident_installment_com 		= $this->input->post('accident_installment_com');
		$bond_total_com 				= $this->input->post('bond_total_com');
		$amount_paid_com				= $this->input->post('amount_paid_com');
		$rental_commission				= $this->input->post('rental_commission');
		$flag 							= $this->input->post('flag');
		$rental_hidden_val				=$this->input->post('rental_hidden_val');

		
		$respons_arr['total_settlement']   	= $this->settlementCalculation($payin_id,$driver_id,$shift_id,$accident_installment_rental,$bond_total_rental,$discount_rental,$other_rental,$flag,$amount_paid_rental,$rental_commission,$rental_hidden_val,$accident_installment_com,$bond_total_com,$discount_com,$other_com,$amount_paid_com);
		//pr($respons_arr);
		echo json_encode($respons_arr);exit;
	}
	
	public function saveDriverExpense(){
		
		$respons_arr		= array();
		$payin_expense_id	= $this->input->post('payin_expense_id');
		$driver_expense_pr	= $this->input->post('driver_expense_pr');
		$expense_id	= $this->input->post('expense_id');
		$expense_image	= $this->input->post('expense_image');
		$expense_image_type = $this->input->post('expense_image_type');
		$expense_identification_id = $this->input->post('expense_identification_id');
		$expense_name = $this->mcommon->getRow('master_expense',array('expense_id'=>$expense_id));
		$doc_link ='';
		
		if($expense_image_type == 'C'){
			if (!empty($expense_image) && file_exists(UPLOAD_DIR.$expense_image)) {
				$target_path = './public/upload_image/payin_images/'.$expense_image;
				
				if (copy(UPLOAD_DIR.$expense_image,$target_path)){
					$doc_link = $expense_image;
				}
			}
		}
		elseif($expense_image_type == 'F'){
			if(isset($_FILES['expense_image_file']['name']) && !empty($_FILES['expense_image_file']['name'])){

				$path = './public/upload_image/payin_images/';
				$upload_file = $this->single_image_upload($path, $_FILES['expense_image_file'],'expense_image_file');
				
				if($upload_file['status']==1){
					$doc_link=$upload_file['result'];
				} else {

					$doc_link ='';
				}
			}

		} else{
			if(file_exists(UPLOAD_SETTLEMENT_DIR.$expense_image) || file_exists(UPLOAD_DIR.$expense_image)){
				$doc_link = $expense_image;
			}
		}
		
		
		
		
		
		
		if(empty($payin_expense_id)){
			$payin_data['expense_id'] = $expense_id;
			$payin_data['payin_id'] = $this->input->post('payin_id');
			$payin_data['value'] = $driver_expense_pr;
			$payin_data['doc_link']=$doc_link;
			
			
			
			
			// if(isset($_FILES['expense_image']['name']) && !empty($_FILES['expense_image']['name'])){

			// 	$path = './public/upload_image/payin_images/';
			// 	$upload_file = $this->single_image_upload($path, $_FILES['expense_image'],'expense_image');
				
			// 	if($upload_file['status']==1){
			// 		$payin_data['doc_link']=$upload_file['result'];
			// 	} else {

			// 		$payin_data['doc_link'] ='';
			// 	}
			// }
			$payin_expense_id='';
			//$payin_dockets_id = $this->mcommon->insert('payin_dockets',$payin_data);
			$drv_expense=array();
			$drv_expense['payin_expense_id']	= $payin_expense_id;
			$drv_expense['expense_id']			= $expense_id;
			$drv_expense['expense_name']			= !empty($expense_name)?$expense_name['expense_name']:'';
			$drv_expense['expense_amount']		= $driver_expense_pr;
			$drv_expense['expense_img']			= $payin_data['doc_link'];

			$driver_settlement = $this->session->userdata('driver_settlement');
			//print_r($driver_settlement);die;
			if(empty($expense_identification_id)){
				$expense_identification_id = "payin_expense_".time();
				$drv_expense['expense_identification_id']			= $expense_identification_id;
				$driver_settlement['driver_expense'][]	= $drv_expense;
				
			} else{
				
				if(!empty($driver_settlement['driver_expense'])){
					foreach($driver_settlement['driver_expense'] as $key => $value) {
						
						if(isset($value['expense_identification_id']) && ($value['expense_identification_id'] == $expense_identification_id)){
							$drv_expense['expense_identification_id']			= $expense_identification_id;
							$driver_settlement['driver_expense'][$key]	= $drv_expense;
						} 
					}
				}
			}
			$this->session->set_userdata('driver_settlement', $driver_settlement);
		}
		// if($this->session->userdata('driver_settlement') !=''){
		// 	$driver_settlement = $this->session->userdata('driver_settlement');
		// 	if(!empty($driver_settlement['driver_expense'])){
		// 		foreach($driver_settlement['driver_expense'] as $key => $value) {
		// 			if(isset($value['payin_expense_id']) && $value['payin_expense_id'] == $payin_expense_id){
		// 				$driver_settlement['driver_expense'][$key]['expense_amount'] = $driver_expense_pr;
		// 			}
		// 		}
		// 	}
		// 	$this->session->set_userdata('driver_settlement', $driver_settlement);
		// 	$respons_arr['process'] = 'success';
		// }
		// else{
		// 	$respons_arr['process'] = "failed";
		// }
		else{

			
			
			if($this->session->userdata('driver_settlement') !=''){
				$driver_settlement = $this->session->userdata('driver_settlement');
				if(!empty($driver_settlement['driver_expense'])){
					foreach($driver_settlement['driver_expense'] as $key => $value) {
						if(isset($value['payin_expense_id']) && $value['payin_expense_id'] == $payin_expense_id){
							$driver_settlement['driver_expense'][$key]['expense_amount'] = $driver_expense_pr;
							$driver_settlement['driver_expense'][$key]['expense_img'] = $doc_link;
						}
					}
				}
				$this->session->set_userdata('driver_settlement', $driver_settlement);
				//echo '<pre>';print_r($driver_settlement);die;
			}

		}
		
		$respons_arr['process'] = 'success';
		$respons_arr['expense_identification_id']=$expense_identification_id;
		$respons_arr['image_link']=$doc_link;

		$driver_id				= $this->input->post('driver_id');
		$shift_id				= $this->input->post('shift_id');
		$payin_id				= $this->input->post('payin_id');
		$discount_rental 				= $this->input->post('discount_rental');
		$other_rental 					= $this->input->post('other_rental');
		$accident_installment_rental 	= $this->input->post('accident_installment_rental');
		$bond_total_rental 			= $this->input->post('bond_total_rental');
		$amount_paid_rental			= $this->input->post('amount_paid_rental');

		$discount_com 				= $this->input->post('discount_com');
		$other_com 					= $this->input->post('other_com');
		$accident_installment_com 	= $this->input->post('accident_installment_com');
		$bond_total_com 			= $this->input->post('bond_total_com');
		$amount_paid_com			= $this->input->post('amount_paid_com');
		$rental_commission		= $this->input->post('rental_commission');
		$flag 					= $this->input->post('flag');
		$rental_hidden_val		=$this->input->post('rental_hidden_val');

		
		$respons_arr['total_settlement']   	= $this->settlementCalculation($payin_id,$driver_id,$shift_id,$accident_installment_rental,$bond_total_rental,$discount_rental,$other_rental,$flag,$amount_paid_rental,$rental_commission,$rental_hidden_val,$accident_installment_com,$bond_total_com,$discount_com,$other_com,$amount_paid_com);
		//pr($respons_arr);
		echo json_encode($respons_arr);exit;
		
		// $payin_expense_id	= $this->input->post('payin_expense_id');
		// $driver_expense_pr	= $this->input->post('driver_expense_pr');
		// if($this->session->userdata('driver_settlement') !=''){
		// 	$driver_settlement = $this->session->userdata('driver_settlement');
		// 	if(!empty($driver_settlement['driver_expense'])){
		// 		foreach($driver_settlement['driver_expense'] as $key => $value) {
		// 			if($value['payin_expense_id'] == $payin_expense_id){
		// 				$driver_settlement['driver_expense'][$key]['expense_amount'] = $driver_expense_pr;
		// 			}
		// 		}
		// 	}
		// 	$this->session->set_userdata('driver_settlement', $driver_settlement);
		// 	$respons_arr['process'] = 'success';
		// }
		// else{
		// 	$respons_arr['process'] = "failed";
		// }
		// $driver_id				= $this->input->post('driver_id');
		// $shift_id				= $this->input->post('shift_id');
		// $payin_id				= $this->input->post('payin_id');
		// $discount_rental 				= $this->input->post('discount_rental');
		// $other_rental 					= $this->input->post('other_rental');
		// $accident_installment_rental 	= $this->input->post('accident_installment_rental');
		// $bond_total_rental 			= $this->input->post('bond_total_rental');
		// $amount_paid_rental			= $this->input->post('amount_paid_rental');

		// $discount_com 				= $this->input->post('discount_com');
		// $other_com 					= $this->input->post('other_com');
		// $accident_installment_com 	= $this->input->post('accident_installment_com');
		// $bond_total_com 			= $this->input->post('bond_total_com');
		// $amount_paid_com			= $this->input->post('amount_paid_com');
		// $rental_commission		= $this->input->post('rental_commission');
		// $flag 					= $this->input->post('flag');
		// $rental_hidden_val		=$this->input->post('rental_hidden_val');
		// $respons_arr['total_settlement']   	= $this->settlementCalculation($payin_id,$driver_id,$shift_id,$accident_installment_rental,$bond_total_rental,$discount_rental,$other_rental,$flag,$amount_paid_rental,$rental_commission,$rental_hidden_val,$accident_installment_com,$bond_total_com,$discount_com,$other_com,$amount_paid_com);
		// echo json_encode($respons_arr);exit;
	}
	public function  calculateDiscount(){
		$total_settlement			= array();
		$driver_id					= $this->input->post('driver_id');
		$shift_id					= $this->input->post('shift_id');
		$payin_id					= $this->input->post('payin_id');
		$discount_rental 				= $this->input->post('discount_rental');
		$other_rental 					= $this->input->post('other_rental');
		$accident_installment_rental 	= $this->input->post('accident_installment_rental');
		$bond_total_rental 			= $this->input->post('bond_total_rental');
		$amount_paid_rental			= $this->input->post('amount_paid_rental');

		$discount_com 				= $this->input->post('discount_com');
		$other_com 					= $this->input->post('other_com');
		$accident_installment_com 	= $this->input->post('accident_installment_com');
		$bond_total_com 			= $this->input->post('bond_total_com');
		$amount_paid_com			= $this->input->post('amount_paid_com');
		$rental_commission			= $this->input->post('rental_commission');
		$flag 						= $this->input->post('flag');
		$rental_hidden_val		=$this->input->post('rental_hidden_val');

		//echo $driver_id."<br>".$shift_id."<br>".$payin_id."<br>".$discount."<br>".$other."<br>".$accident_installment."<br>".$bond_total."<br>".$flag;exit;
		$total_settlement   		= $this->settlementCalculation($payin_id,$driver_id,$shift_id,$accident_installment_rental,$bond_total_rental,$discount_rental,$other_rental,$flag,$amount_paid_rental,$rental_commission,$rental_hidden_val,$accident_installment_com,$bond_total_com,$discount_com,$other_com,$amount_paid_com);
		//pr($total_settlement);
		echo json_encode($total_settlement);exit;
	}
	public function calculateDriverSettlement(){
		//echo '<pre>';print_r($this->session->userdata('driver_settlement'));die;
		$dr_settlement_id = $this->input->post('dr_settlement_id');
		$driver_settlement = $this->session->userdata('driver_settlement');
		
		$life_time_total_image=$this->input->post('life_time_total_image');
		$update_payin			= array(); 
		if (!empty($life_time_total_image) && file_exists(UPLOAD_DIR.$life_time_total_image)) {
			$target_path = './public/upload_image/payin_images/'.$life_time_total_image;
			
			if (copy(UPLOAD_DIR.$life_time_total_image,$target_path)){
				$update_payin['payin_lifetime_total'] = $life_time_total_image;
			}
		} 
		

		$shift_total_image=$this->input->post('shift_total_image'); 
		if (!empty($shift_total_image) && file_exists(UPLOAD_DIR.$shift_total_image)) {
			$target_path = './public/upload_image/payin_images/'.$shift_total_image;
			if (copy(UPLOAD_DIR.$shift_total_image,$target_path)){
				$update_payin['payin_reference_doc'] = $shift_total_image;
			}
		}
		
		
		if(empty($dr_settlement_id)){
			if($this->session->userdata('driver_settlement') !=''){
				$driver_settlement = $this->session->userdata('driver_settlement');
				$settlement_inst	= array(
					'payin_id' 				=> $driver_settlement['payin_id'],
					'total_extra_start' 	=> $driver_settlement['total_extra_start'],
					'total_extra_end' 		=> $driver_settlement['total_extra_end'],
					'paid_km_start' 		=> $driver_settlement['paid_km_start'],
					'paid_km_end' 			=> $driver_settlement['paid_km_end'],
					'total_km_start' 		=> $driver_settlement['total_km_start'],
					'total_km_end' 			=> $driver_settlement['total_km_end'],
					'no_of_hiring_start' 	=> $driver_settlement['no_of_hiring_start'],
					'no_of_hiring_end' 		=> $driver_settlement['no_of_hiring_end'],
					'extra_start' 			=> $driver_settlement['extra_start'],
					'extra_end'	 			=> $driver_settlement['extra_end'],
					'speedo_reading_start' 	=> $driver_settlement['speedo_reading_start'],
					'speedo_reading_end' 	=> $driver_settlement['speedo_reading_end']	
				);
			}
			$settlement_inst['driver_id']				= $this->input->post('driver_id');
			$settlement_inst['shift_id']				= $this->input->post('shift_id');
			$settlement_inst['total_docket']			= $this->input->post('total_dockets');
			$settlement_inst['total_expense']			= $this->input->post('total_expense');
			$settlement_inst['shift_levy']				= $this->input->post('levy_total');
			$settlement_inst['no_of_whl']				= $this->input->post('no_of_whl');
			
			$settlement_inst['accident_installment']	= $this->input->post('accident_installment');
			$settlement_inst['bond_installment']		= $this->input->post('bond_total');
			$settlement_inst['other']					= $this->input->post('other');
			
			$amount_due= $this->input->post('amount_due');
			$settlement_inst['amount_due']				= $this->input->post('amount_due');
			$settlement_inst['discount']				= $this->input->post('discount');
			
			$settlement_inst['credit_card_amt']			= (($amount_due < 0)? '-' : '').$this->input->post('credit_card_amt');
			$settlement_inst['bank_transfer_amt']		= (($amount_due < 0)? '-' : '').$this->input->post('bank_transfer_amt');
			$settlement_inst['cash_amt']				= (($amount_due < 0)? '-' : '').$this->input->post('cash_amt');
			$settlement_inst['final_settlement_amt']	= (($amount_due < 0)? '-' : '').$this->input->post('admin_total_payment');
			$settlement_inst['bulk_settlement_flag']    = ($this->input->post('button_type') == 'bulk')?1:0;
			
			$admin_total_payment=$this->input->post('admin_total_payment');
			
			$final_due_amount = (($amount_due < 0)? ($this->input->post('final_due_amount') + $admin_total_payment) : ($this->input->post('final_due_amount') - $admin_total_payment));
			//echo $final_due_amount;die;
			$settlement_inst['final_due_amt']		= $final_due_amount;
			$settlement_inst['created_by']          = $this->session->userdata('user_data');
			$settlement_inst['created_on']			= date('Y-m-d H:i:s');
			$settlement_inst['updated_on']			= date('Y-m-d H:i:s');
			
			//echo '<pre>';print_r($settlement_inst);die;
			$insert_id		= $this->mcommon->insert('driver_settlement',$settlement_inst);

			if(!empty($driver_settlement['driver_dockets'])){
				foreach($driver_settlement['driver_dockets'] as $key => $value) {
					$payin_data =array();
					if(empty($value['payin_dockets_id'])){
						$payin_data['docket_id'] = $value['docket_id'];
						$payin_data['payin_id'] = $driver_settlement['payin_id'];
						$payin_data['value'] = $value['docket_amount'];
						$payin_data['doc_link']=$value['docket_img'];

						$payin_dockets_id = $this->mcommon->insert('payin_dockets',$payin_data);
						$value['payin_dockets_id']=$payin_dockets_id;
					} else {
						
						$payin_data['doc_link']=$value['docket_img'];
						$this->mcommon->update('payin_dockets',array('payin_dockets_id'=>$value['payin_dockets_id']),$payin_data);
					}
					
					$insrt_docket_arr	= array('dr_settlement_id' 		=> $insert_id,
												'payin_docket_id'		=> $value['payin_dockets_id'],
												'docket_settlement_amt'	=> $value['docket_amount']
										);
					$this->mcommon->insert('dr_settlement_docket',$insrt_docket_arr);
				}
			}


			if(!empty($driver_settlement['driver_expense'])){
				foreach($driver_settlement['driver_expense'] as $key => $value) {
					$payin_data=array();
					if(empty($value['payin_expense_id'])){
						$payin_data['expense_id'] = $value['expense_id'];
						$payin_data['payin_id'] = $driver_settlement['payin_id'];
						$payin_data['value'] = $value['expense_amount'];
						$payin_data['doc_link']=$value['expense_img'];

						$payin_expense_id = $this->mcommon->insert('payin_expenses',$payin_data);
						$value['payin_expense_id']=$payin_expense_id;
					}else {
						
						$payin_data['doc_link']=$value['expense_img'];
						$this->mcommon->update('payin_expenses',array('payin_expense_id'=>$value['payin_expense_id']),$payin_data);
					}
					
					$insrt_expense_arr	= array('dr_settlement_id' 		=> $insert_id,
												'payin_expense_id'		=> $value['payin_expense_id'],
												'expense_settlement_amt'	=> $value['expense_amount']
										);
					$this->mcommon->insert('dr_settlement_expense',$insrt_expense_arr);
				}
			}


			/******************** SREELA(12/11/19) update - bond installment amount paid ********************************/

			$conds_bond 			= array('driver_id' => $this->input->post('driver_id'));
			$bond_datas				= $this->mcommon->getRow('master_bond',$conds_bond);
			if(!empty($bond_datas)){
				$bond_installment_amt_paid	= $this->input->post('bond_total') + $bond_datas['installment_amt_paid'];
				$total_paid_amt	= $this->input->post('bond_total') + $bond_datas['total_paid_amt'];
				$bond_accumulated_amt	= $bond_datas['bond_accumulated_amt'] - $this->input->post('bond_total');
				$bond_settlement_flag = 0;
				if($bond_accumulated_amt <= 0){

					$bond_settlement_flag = 1;
				}
				
				$bond_update_data			= array('installment_amt_paid' => $bond_installment_amt_paid,'total_paid_amt'=>$total_paid_amt,'bond_accumulated_amt'=>$bond_accumulated_amt,'bond_settlement_flag'=>$bond_settlement_flag,'updated_by' =>$this->session->userdata('user_data'),'updated_on' => date('Y-m-d'));
				$update_payin_result		= $this->mcommon->update('master_bond',$conds_bond,$bond_update_data);
			}

			/******************** SREELA(12/11/19) end ********************************/ 


			$settlement_history['dr_settlement_id']	= $insert_id;
			$settlement_history['driver_id']	= $this->input->post('driver_id');
			$settlement_history['shift_id']	= $this->input->post('shift_id');
			$settlement_history['payin_id']	=  $driver_settlement['payin_id'];
			$settlement_history['accident_installment']	= $this->input->post('accident_installment'); 
			$settlement_history['bond_installment']		= $this->input->post('bond_total');
			$settlement_history['other']					= $this->input->post('other');
			$settlement_history['amount_due']				= $this->input->post('amount_due');
			$settlement_history['discount']				= $this->input->post('discount');
			
			$amount_due= $this->input->post('amount_due');
			$settlement_history['credit_card_amt']			=  (($amount_due < 0)? '-' : '').$this->input->post('credit_card_amt');
			$settlement_history['bank_transfer_amt']		= (($amount_due < 0)? '-' : '').$this->input->post('bank_transfer_amt');
			$settlement_history['cash_amt']				= (($amount_due < 0)? '-' : '').$this->input->post('cash_amt');
			$settlement_history['final_settlement_amt']	= (($amount_due < 0)? '-' : '').$this->input->post('admin_total_payment');
			$settlement_history['created_by']          = $this->session->userdata('user_data');
			$settlement_history['created_on']			= date('Y-m-d');
			
			$this->mcommon->insert('driver_settlement_history',$settlement_history);

			
			$update_payin['settlement_amt'] = $this->input->post('amount_due');
		} else {
			
			$update_condition =array('dr_settlement_id'=>$dr_settlement_id);
			$driver_settlement_data = $this->mcommon->getRow('driver_settlement',$update_condition);
			
			$settlement_inst['accident_installment']	= $this->input->post('accident_installment');
			$settlement_inst['bond_installment']		= $this->input->post('bond_total');
			$settlement_inst['other']					= $this->input->post('other');
			$settlement_inst['amount_due']				= $this->input->post('amount_due');
			$settlement_inst['discount']				= $this->input->post('discount');
			
			$amount_due= $this->input->post('amount_due');
			
			$settlement_inst['credit_card_amt']			= (($amount_due <= 0)? ($driver_settlement_data['credit_card_amt'] - $this->input->post('credit_card_amt')) : ($driver_settlement_data['credit_card_amt'] + $this->input->post('credit_card_amt')));
			
			$settlement_inst['bank_transfer_amt']		= (($amount_due <= 0)? ($driver_settlement_data['bank_transfer_amt'] - $this->input->post('bank_transfer_amt')) : ($driver_settlement_data['bank_transfer_amt'] + $this->input->post('bank_transfer_amt')));
			
			$settlement_inst['cash_amt']				= (($amount_due <= 0)? ($driver_settlement_data['cash_amt'] - $this->input->post('cash_amt')) : ($driver_settlement_data['cash_amt'] + $this->input->post('cash_amt')));
			
			
			$admin_total_payment=$this->input->post('admin_total_payment');
			
			$final_due_amount = (($amount_due <= 0)? ($this->input->post('final_due_amount') + $admin_total_payment) : ($this->input->post('final_due_amount') - $admin_total_payment));
			
			$settlement_inst['final_settlement_amt']	= (($amount_due <= 0)? ($driver_settlement_data['final_settlement_amt'] - $this->input->post('admin_total_payment')) : ($driver_settlement_data['final_settlement_amt'] + $this->input->post('admin_total_payment')));
			
			
			$settlement_inst['final_due_amt']			= $final_due_amount;
			$settlement_inst['updated_by']          	= $this->session->userdata('user_data');
			$settlement_inst['updated_on']				= date('Y-m-d H:i:s');

			
			$insert_id=$this->mcommon->update('driver_settlement',$update_condition,$settlement_inst);

			
			
			$settlement_history['dr_settlement_id']	= $dr_settlement_id;
			$settlement_history['driver_id']	= $this->input->post('driver_id');
			$settlement_history['shift_id']	= $this->input->post('shift_id');
			$settlement_history['payin_id']	=  $driver_settlement_data['payin_id'];
			$settlement_history['accident_installment']	= $this->input->post('accident_installment'); 
			$settlement_history['bond_installment']		= $this->input->post('bond_total');
			$settlement_history['other']					= $this->input->post('other');
			$settlement_history['amount_due']				= $this->input->post('amount_due');
			$settlement_history['discount']				= $this->input->post('discount');
			
			
			$settlement_history['credit_card_amt']			=  (($amount_due < 0)? '-' : '').$this->input->post('credit_card_amt');
			$settlement_history['bank_transfer_amt']		= (($amount_due < 0)? '-' : '').$this->input->post('bank_transfer_amt');
			$settlement_history['cash_amt']				= (($amount_due < 0)? '-' : '').$this->input->post('cash_amt');
			$settlement_history['final_settlement_amt']	= (($amount_due < 0)? '-' : '').$this->input->post('admin_total_payment');
			$settlement_history['created_by']          = $this->session->userdata('user_data');
			$settlement_history['created_on']			= date('Y-m-d');
			
			$insert_id = $this->mcommon->insert('driver_settlement_history',$settlement_history);


		}
		
		
		if($insert_id){
			
			$cond 					= array('payin_id' => $driver_settlement['payin_id']);
			$payin_details = $this->mcommon->getRow('payin',$cond);
			$settlement_history_details = $this->mcommon->getRow('driver_settlement_history',$cond);
			
			$update_payin['final_due_amt'] = $final_due_amount;
			
			$update_payin['rental_commission_flag'] =(!empty($this->input->post('rental_hidden')))?'R':'C';
			if($final_due_amount == 0){
				$update_payin['driver_settlement_flag'] = '1';
			} else {
				$update_payin['driver_settlement_flag'] = '2';
			}
			
			$update_payin_result	= $this->mcommon->update('payin',$cond,$update_payin);

			
			
				if($update_payin_result){
					
					if($this->input->post('cash_amt') > 0 && $this->input->post('total_amount') !=''){
					
					$daily_settlement_data['transaction_date'] =date('Y-m-d');
					$daily_settlement_data['payin_id'] =$driver_settlement['payin_id'];
					
					if($this->input->post('amount_due') > 0){
						$daily_settlement_data['transaction_type '] =1; //1=> Add,2=>Deduct
					}else{
						$daily_settlement_data['transaction_type '] =2; //1=> Add,2=>Deduct
					}
					
					$daily_settlement_data['1c_coins_qty'] =$this->input->post('1c_coins_qty');
					$daily_settlement_data['1c_coins_amt'] =$this->input->post('1c_coins_amt');
					$daily_settlement_data['5c_coins_qty'] =$this->input->post('5c_coins_qty');
					$daily_settlement_data['5c_coins_amt'] =$this->input->post('5c_coins_amt');
					$daily_settlement_data['10c_coins_qty'] =$this->input->post('10c_coins_qty');
					$daily_settlement_data['10c_coins_amt'] =$this->input->post('10c_coins_amt');
					$daily_settlement_data['20c_coins_qty'] =$this->input->post('20c_coins_qty');
					$daily_settlement_data['20c_coins_amt'] =$this->input->post('20c_coins_amt');
					$daily_settlement_data['50c_coins_qty'] =$this->input->post('50c_coins_qty');
					$daily_settlement_data['50c_coins_amt'] =$this->input->post('50c_coins_amt');
					$daily_settlement_data['1d_coins_qty'] =$this->input->post('1d_coins_qty');
					$daily_settlement_data['1d_coins_amt'] =$this->input->post('1d_coins_amt');
					$daily_settlement_data['2d_coins_qty'] =$this->input->post('2d_coins_qty');
					$daily_settlement_data['2d_coins_amt'] =$this->input->post('2d_coins_amt');
					$daily_settlement_data['5d_notes_qty'] =$this->input->post('5d_notes_qty');
					$daily_settlement_data['5d_notes_amt'] =$this->input->post('5d_notes_amt');
					$daily_settlement_data['10d_notes_qty'] =$this->input->post('10d_notes_qty');
					$daily_settlement_data['10d_notes_amt'] =$this->input->post('10d_notes_amt');
					$daily_settlement_data['20d_notes_qty'] =$this->input->post('20d_notes_qty');
					$daily_settlement_data['20d_notes_amt'] =$this->input->post('20d_notes_amt');
					$daily_settlement_data['50d_notes_qty'] =$this->input->post('50d_notes_qty');
					$daily_settlement_data['50d_notes_amt'] =$this->input->post('50d_notes_amt');
					$daily_settlement_data['100d_notes_qty'] =$this->input->post('100d_notes_qty');
					$daily_settlement_data['100d_notes_amt'] =$this->input->post('100d_notes_amt');
					$daily_settlement_data['total_amount'] 	=$this->input->post('total_amount');
					$daily_settlement_data['created_by'] 	=$this->session->userdata('user_data');
					$daily_settlement_data['created_ts'] 	=date('Y-m-d H:i:s');
					
					$transaction_id = $this->mcommon->insert('daily_transactions',$daily_settlement_data);
				}
			}

			echo "success";
		}
		else{
			echo "error";
		}
	}

	public function BulkDriverSettlement(){
		//echo '<pre>';print_r($this->input->post()); die;
		$dr_settlement_id = $this->input->post('dr_settlement_id');
		
		foreach($dr_settlement_id as $settlement_id){
			$update_condition =array('dr_settlement_id'=>$settlement_id);
			$driver_settlement_data = $this->mcommon->getRow('driver_settlement',$update_condition);
		
		
		
			$settlement_data['credit_card_amt']			= ($this->input->post('credit_card_amt') > 0)?$driver_settlement_data['final_due_amt']:'';
			$settlement_data['bank_transfer_amt']		= ($this->input->post('bank_transfer_amt') > 0)?$driver_settlement_data['final_due_amt']:''; 
			$settlement_data['cash_amt']				= ($this->input->post('cash_amt') > 0)?$driver_settlement_data['final_due_amt']:'';
			$settlement_data['final_settlement_amt']	= $driver_settlement_data['final_due_amt'];
			$settlement_data['final_due_amt']			= 0;
			$settlement_data['updated_by']          	= $this->session->userdata('user_data');
			$settlement_data['updated_on']				= date('Y-m-d H:i:s');

		
			$this->mcommon->update('driver_settlement',$update_condition,$settlement_data);

		
		
			$settlement_history['dr_settlement_id']	= $settlement_id;
			$settlement_history['driver_id']	= $driver_settlement_data['driver_id'];
			$settlement_history['shift_id']	= $driver_settlement_data['shift_id'];
			$settlement_history['payin_id']	=  $driver_settlement_data['payin_id'];
			$settlement_history['accident_installment']	= $driver_settlement_data['accident_installment'];  
			$settlement_history['bond_installment']		= $driver_settlement_data['bond_installment'];
			$settlement_history['other']					= $driver_settlement_data['other'];
			$settlement_history['amount_due']				= $driver_settlement_data['amount_due'];
			$settlement_history['discount']				= $driver_settlement_data['discount'];
			$settlement_history['credit_card_amt']			= ($this->input->post('credit_card_amt') > 0)?$driver_settlement_data['final_due_amt']:'';
			$settlement_history['bank_transfer_amt']		= ($this->input->post('bank_transfer_amt') > 0)?$driver_settlement_data['final_due_amt']:''; 
			$settlement_history['cash_amt']				= ($this->input->post('cash_amt') > 0)?$driver_settlement_data['final_due_amt']:'';
			$settlement_history['final_settlement_amt']	= $driver_settlement_data['final_due_amt'];
			$settlement_history['created_by']          = $this->session->userdata('user_data');
			$settlement_history['created_on']			= date('Y-m-d');
			
			$insert_id = $this->mcommon->insert('driver_settlement_history',$settlement_history);

			if($insert_id){
				
				$cond 					= array('payin_id' => $driver_settlement_data['payin_id']);
				$update_payin			= array();
				
				$update_payin['final_due_amt'] = 0;
				$update_payin['driver_settlement_flag'] = '1';
				$update_payin_result	= $this->mcommon->update('payin',$cond,$update_payin);

				if($this->input->post('total_amount_cash') !=''){
				
					$daily_settlement_data['transaction_date'] =date('Y-m-d');
					$daily_settlement_data['payin_id'] =$driver_settlement_data['payin_id'];
				
					if($driver_settlement_data['amount_due'] > 0){
						$daily_settlement_data['transaction_type '] =1; //1=> Add,2=>Deduct
					}else{
						$daily_settlement_data['transaction_type '] =2; //1=> Add,2=>Deduct
					}
				
					$daily_settlement_data['1c_coins_qty'] =$this->input->post('1c_coins_qty');
					$daily_settlement_data['1c_coins_amt'] =$this->input->post('1c_coins_amt');
					$daily_settlement_data['5c_coins_qty'] =$this->input->post('5c_coins_qty');
					$daily_settlement_data['5c_coins_amt'] =$this->input->post('5c_coins_amt');
					$daily_settlement_data['10c_coins_qty'] =$this->input->post('10c_coins_qty');
					$daily_settlement_data['10c_coins_amt'] =$this->input->post('10c_coins_amt');
					$daily_settlement_data['20c_coins_qty'] =$this->input->post('20c_coins_qty');
					$daily_settlement_data['20c_coins_amt'] =$this->input->post('20c_coins_amt');
					$daily_settlement_data['50c_coins_qty'] =$this->input->post('50c_coins_qty');
					$daily_settlement_data['50c_coins_amt'] =$this->input->post('50c_coins_amt');
					$daily_settlement_data['1d_coins_qty'] =$this->input->post('1d_coins_qty');
					$daily_settlement_data['1d_coins_amt'] =$this->input->post('1d_coins_amt');
					$daily_settlement_data['2d_coins_qty'] =$this->input->post('2d_coins_qty');
					$daily_settlement_data['2d_coins_amt'] =$this->input->post('2d_coins_amt');
					$daily_settlement_data['5d_notes_qty'] =$this->input->post('5d_notes_qty');
					$daily_settlement_data['5d_notes_amt'] =$this->input->post('5d_notes_amt');
					$daily_settlement_data['10d_notes_qty'] =$this->input->post('10d_notes_qty');
					$daily_settlement_data['10d_notes_amt'] =$this->input->post('10d_notes_amt');
					$daily_settlement_data['20d_notes_qty'] =$this->input->post('20d_notes_qty');
					$daily_settlement_data['20d_notes_amt'] =$this->input->post('20d_notes_amt');
					$daily_settlement_data['50d_notes_qty'] =$this->input->post('50d_notes_qty');
					$daily_settlement_data['50d_notes_amt'] =$this->input->post('50d_notes_amt');
					$daily_settlement_data['100d_notes_qty'] =$this->input->post('100d_notes_qty');
					$daily_settlement_data['100d_notes_amt'] =$this->input->post('100d_notes_amt');
					$daily_settlement_data['total_amount'] 	=$this->input->post('total_amount_cash');
					$daily_settlement_data['created_by'] 	=$this->session->userdata('user_data');
					$daily_settlement_data['created_ts'] 	=date('Y-m-d H:i:s');
				
				$transaction_id = $this->mcommon->insert('daily_transactions',$daily_settlement_data);
			}
				
		}
			

		}
		echo "success";
	}
	public function ListDriverSettlement() { 		
		$this->_load_settlement_list();		
	}	
	private function _load_settlement_list() {

		$data					=  array();
		$order 					= 'DS.created_on';
		$order_type 			= 'DESC';
		$data['content'] 		= 'admin/driver_settlement/driver_settlement_list';
		$joindata   = array('select'    	=>'dsd.shift_no,DS.*,master_car.registration_no as car_no,master_user.dc_no,master_user.dc_no,user_profile.first_name,user_profile.middle_name,user_profile.last_name',
	                        'first_table'   =>'driver_settlement DS',
	                        'second_table'  =>'master_user',
                            'dependency1'   =>'DS.driver_id = master_user.user_id',
                            'join_type1'    =>'inner',                  
                        /********************************/ 
                           	'third_table'   =>'user_profile',
                            'dependency2'   =>'user_profile.user_id = master_user.user_id',
                            'join_type2'    =>'inner',
						/*********************************/
						'forth_table'   =>'driver_shift_details dsd',
						'dependency3'   =>'dsd.shift_id = DS.shift_id',
						'join_type3'    =>'inner',
						/*********************************/
                        	'fifth_table'   =>'roster_driver_maping RDM',
                            'dependency4'   =>'RDM.roster_driver_id = dsd.roster_driver_id',
                            'join_type4'    =>'inner',
                       	/*********************************/ 
                       		'sixth_table'   =>'roster',
                            'dependency5'   =>'RDM.roster_id = roster.roster_id',
                            'join_type5'    =>'inner',

                       	/*********************************/   
                        	'seventh_table'   =>'master_car',
                            'dependency6'   =>'master_car.car_id = roster.car_id',
                            'join_type6'    =>'inner'
          				);
		//pr($data['driver_list']);
		$cond 			= array();
		$data['driver_settlement_list'] 	= $this->mcommon->joinQuery($joindata,$cond,'result',$order,$order_type);
		//pr($data['driver_settlement_list']);
		$this->load->view('admin/layouts/index', $data);
	}
	public function DriverSettlementDetail($dr_settlement_id){
		$this->_load_settlement_deatils($dr_settlement_id);
	}
	public function DriverSettlementEditView($dr_settlement_id,$view_pg_flag){
		$this->_load_settlement_deatils($dr_settlement_id,$view_pg_flag);
	}
	private function _load_settlement_deatils($dr_settlement_id,$view_pg_flag='') {
		$data					=  array();
		$driver_settlement      =  array();
		$order 					= '';
		$order_type 			= '';
		$data['content'] 		= 'admin/driver_settlement/driver_settlement_list';
		$joindata   = array('select'    	=>'p.*,DS.*,dsd.shift_no,master_car.registration_no as car_no,roster.day_date as shift_dt,master_user.dc_no,master_user.dc_no,user_profile.dr_dc_expiry,user_profile.dr_licence_expiry,user_profile.first_name,user_profile.middle_name,user_profile.last_name,user_profile.profile_photo,user_profile.dr_rental',
	                        'first_table'   =>'driver_settlement DS',
	                        'second_table'  =>'master_user',
                            'dependency1'   =>'DS.driver_id = master_user.user_id',
                            'join_type1'    =>'Inner',                  
                        /********************************/ 
                           	'third_table'   =>'user_profile',
                            'dependency2'   =>'user_profile.user_id = master_user.user_id',
                            'join_type2'    =>'inner',
                        /*********************************/
						'forth_table'   =>'driver_shift_details dsd',
						'dependency3'   =>'dsd.shift_id = DS.shift_id',
						'join_type3'    =>'inner',
						/*********************************/
                        	'fifth_table'   =>'roster_driver_maping RDM',
                            'dependency4'   =>'RDM.roster_driver_id = dsd.roster_driver_id',
                            'join_type4'    =>'inner',
                       	/*********************************/ 
                       		'sixth_table'   =>'roster',
                            'dependency5'   =>'RDM.roster_id = roster.roster_id',
                            'join_type5'    =>'inner',

                       	/*********************************/   
                        	'seventh_table'   =>'master_car',
                            'dependency6'   =>'master_car.car_id = roster.car_id',
							'join_type6'    =>'inner',
							
							'eighth_table'   =>'payin p',
                            'dependency7'   =>'p.payin_id = DS.payin_id',
                            'join_type7'    =>'inner'
          				);
	
		$cond 						= array('DS.dr_settlement_id' => $dr_settlement_id);
		$driver_settlement 			= $this->mcommon->joinQuery($joindata,$cond,'row',$order,$order_type);
		if(!empty($driver_settlement)){
			$data['driver_settlement_data']		= $driver_settlement;
		}
		else{
			$data['driver_settlement_data']		= '';
		}

		/*****************************************************************************************************/

		$joindata_dockets	= 	array(	'select'    	=>'DSD.dr_settlement_docket_id,DSD.dr_settlement_id,DSD.payin_docket_id as payin_dockets_id,DSD.docket_settlement_amt as docket_amount,master_docket.docket_name,master_docket.docket_id,payin_dockets.doc_link as docket_img',
				                        'first_table'   =>'dr_settlement_docket DSD',
				                        'second_table'  =>'payin_dockets',
			                            'dependency1'   =>'DSD.payin_docket_id = payin_dockets.payin_dockets_id',
			                            'join_type1'    =>'left',
			                            /********************************/ 
			                           	'third_table'   =>'master_docket',
			                            'dependency2'   =>'payin_dockets.docket_id = master_docket.docket_id',
			                            'join_type2'    =>'left'
	                            );
		$dockets_cond 				= array('DSD.dr_settlement_id' => $dr_settlement_id);
		$settlement_dockets_data 	= $this->mcommon->joinQuery($joindata_dockets,$dockets_cond,'result',$order,$order_type); 
		//pr($settlement_dockets_data);               
		if(!empty($settlement_dockets_data)){
			$driver_settlement['driver_dockets']	= $settlement_dockets_data;
			$data['settlement_dockets_data']		= $settlement_dockets_data;
		}
		else{
		    $driver_settlement['driver_dockets']	= array();
			$data['settlement_dockets_data']		= '';
		}

		/*****************************************************************************************************/

		$joindata_expense	= 	array(	'select'    	=>'DSE.dr_settlement_expense_id,DSE.dr_settlement_id,DSE.payin_expense_id,DSE.expense_settlement_amt as expense_amount,master_expense.expense_name as expense_name,master_expense.expense_name as expense_id,payin_expenses.doc_link as expense_img',
				                        'first_table'   =>'dr_settlement_expense DSE',
				                        'second_table'  =>'payin_expenses',
			                            'dependency1'   =>'DSE.payin_expense_id = payin_expenses.payin_expense_id',
			                            'join_type1'    =>'left',
			                            /********************************/ 
			                           	'third_table'   =>'master_expense',
			                            'dependency2'   =>'payin_expenses.expense_id = master_expense.expense_id',
			                            'join_type2'    =>'left'
	                            );
		$expense_cond 						= array('DSE.dr_settlement_id' => $dr_settlement_id);
		$settlement_expense_data 	= $this->mcommon->joinQuery($joindata_expense,$expense_cond,'result',$order,$order_type);
		if(!empty($settlement_expense_data)){
			$driver_settlement['driver_expense']	= $settlement_expense_data;
			$data['settlement_expense_data']		= $settlement_expense_data;
		}
		else{
		    $driver_settlement['driver_expense']	= array();
			$data['settlement_expense_data']		= '';
		}
		$this->session->set_userdata('driver_settlement', $driver_settlement);
		if($view_pg_flag =='edit'){
			$data['content'] 			= 'admin/driver_settlement/driver_settlement_edit';
		}
		else{
			$data['content'] 			= 'admin/driver_settlement/driver_settlement_details';
		}	
			//print_r($driver_settlement['bond_charges']);die;
			$total_settlement   	= $this->settlementCalculation($driver_settlement['payin_id'],$driver_settlement['driver_id'],$driver_settlement['shift_id'],$accident_installment_rental= 0,$driver_settlement['bond_installment'],$driver_settlement['discount'],$other_rental = 0,$flag = 0,$amount_paid_rental = 0,$driver_settlement['rental_commission_flag'],$driver_settlement['dr_rental'],$accident_installment_com = 0,$driver_settlement['bond_installment'],$driver_settlement['discount'],$other_com = 0,$amount_paid_com = 0);
		
			//pr($total_settlement);
			if(!empty($total_settlement)){
				$data['total_settlement']	= $total_settlement;
			}
			$data['docket_list']    =$this->mcommon->getDetails('master_docket',array('is_active'=>1));
			$data['expense_list']    =$this->mcommon->getDetails('master_expense',array('is_active'=>1));
			$payment_options  	= $this->mcommon->getFullDetails('master_payment_method');
			if(!empty($payment_options)){
				$data['payment_options']	= $payment_options;
			}
				
		$this->load->view('admin/layouts/index', $data);
	}
	public function EditDriversettlement($dr_settlement_id){
		//pr($_POST);
		
		$dr_settlement_id = $this->input->post('dr_settlement_id');
		
		
		
		if(!empty($dr_settlement_id)){
			
			//echo '<pre>'; print_r($this->input->post());die;
			$update_condition =array('dr_settlement_id'=>$dr_settlement_id);
			$driver_settlement_data = $this->mcommon->getRow('driver_settlement',$update_condition);
			
			$settlement_inst['accident_installment']	= $this->input->post('accident_installment');
			$settlement_inst['bond_installment']		= $this->input->post('bond_total');
			$settlement_inst['other']					= $this->input->post('other');
			$settlement_inst['amount_due']				= $this->input->post('amount_due');
			$settlement_inst['discount']				= $this->input->post('discount');
			
			$admin_total_payment=$this->input->post('admin_total_payment');
			$amount_due= $this->input->post('amount_due');
			
			$settlement_inst['credit_card_amt']			= (($amount_due <= 0)? ($driver_settlement_data['credit_card_amt'] - $this->input->post('credit_card_amt')) : ($driver_settlement_data['credit_card_amt'] + $this->input->post('credit_card_amt')));
			
			$settlement_inst['bank_transfer_amt']		= (($amount_due <= 0)? ($driver_settlement_data['bank_transfer_amt'] - $this->input->post('bank_transfer_amt')) : ($driver_settlement_data['bank_transfer_amt'] + $this->input->post('bank_transfer_amt')));
			
			$settlement_inst['cash_amt']				= (($amount_due <= 0)? ($driver_settlement_data['cash_amt'] - $this->input->post('cash_amt')) : ($driver_settlement_data['cash_amt'] + $this->input->post('cash_amt')));
			
			$final_due_amount = (($amount_due <= 0)? ($this->input->post('final_due_amount') + $admin_total_payment) : ($this->input->post('final_due_amount') - $admin_total_payment));
			
			$settlement_inst['final_settlement_amt']	= (($amount_due <= 0)? ($driver_settlement_data['final_settlement_amt'] - $this->input->post('admin_total_payment')) : ($driver_settlement_data['final_settlement_amt'] + $this->input->post('admin_total_payment')));
			$settlement_inst['final_due_amt']			= $final_due_amount;
			$settlement_inst['updated_by']          	= $this->session->userdata('user_data');
			$settlement_inst['updated_on']				= date('Y-m-d H:i:s');

			
			$insert_id=$this->mcommon->update('driver_settlement',$update_condition,$settlement_inst);

			
			
			$settlement_history['dr_settlement_id']	= $dr_settlement_id;
			$settlement_history['driver_id']	= $this->input->post('driver_id');
			$settlement_history['shift_id']	= $this->input->post('shift_id');
			$settlement_history['payin_id']	=  $driver_settlement_data['payin_id'];
			$settlement_history['accident_installment']	= $this->input->post('accident_installment'); 
			$settlement_history['bond_installment']		= $this->input->post('bond_total');
			$settlement_history['other']					= $this->input->post('other');
			$settlement_history['amount_due']				= $this->input->post('amount_due');
			$settlement_history['discount']				= $this->input->post('discount');
			
			$settlement_history['credit_card_amt']			=  (($amount_due < 0)? '-' : '').$this->input->post('credit_card_amt');
			$settlement_history['bank_transfer_amt']		= (($amount_due < 0)? '-' : '').$this->input->post('bank_transfer_amt');
			$settlement_history['cash_amt']				= (($amount_due < 0)? '-' : '').$this->input->post('cash_amt');
			$settlement_history['final_settlement_amt']	= (($amount_due < 0)? '-' : '').$this->input->post('admin_total_payment');
			$settlement_history['created_by']          = $this->session->userdata('user_data');
			$settlement_history['created_on']			= date('Y-m-d');
			
			$insert_id = $this->mcommon->insert('driver_settlement_history',$settlement_history);
			
			
			
			
			
			$dr_settlement_docket_id	= $this->input->post('dr_settlement_docket_id');
			$dr_settlement_expense_id	= $this->input->post('dr_settlement_expense_id');
			$expense_id	= $this->input->post('expense_id');
			$docket_id	= $this->input->post('docket_id');
			
			
			$driver_settlement_session = $this->session->userdata('driver_settlement');
			//echo '<pre>'; print_r($driver_settlement_session); die;
			
			// if(!empty($this->input->post('docket_price'))){
			// 	$driver_dockets	= $this->input->post('docket_price');
			// 	foreach($driver_dockets as $key => $value) {
			// 		$update_docket_arr	= array('docket_settlement_amt'	=> $value['value']);
			// 		$dock_cond 		= array('dr_settlement_docket_id' => $dr_settlement_docket_id[$key]['value']);
			// 		$this->mcommon->update('dr_settlement_docket',$dock_cond,$update_docket_arr);
			// 	}
			// }
			
			if(!empty($driver_settlement_session['driver_dockets'])){
				$driver_dockets	= $driver_settlement_session['driver_dockets'];
				foreach($driver_dockets as $key => $value) {
					$docket_data =array();
					if(isset($dr_settlement_docket_id[$key]['value']) && !empty($dr_settlement_docket_id[$key]['value'])){
						$update_docket_arr	= array('docket_settlement_amt'	=> $value['docket_amount']);
						$dock_cond 		= array('dr_settlement_docket_id' => $dr_settlement_docket_id[$key]['value']);
						$this->mcommon->update('dr_settlement_docket',$dock_cond,$update_docket_arr);

						
						$docket_data['doc_link']=$value['docket_img'];
						$payin_docket_id = $this->mcommon->update('payin_dockets',array('payin_dockets_id'=>$value['payin_dockets_id']),$docket_data);
					
					
					}else{
						
						$docket_data['docket_id'] = $docket_id[$key]['value'];
						$docket_data['payin_id'] = $driver_settlement_data['payin_id'];
						$docket_data['value'] = $value['docket_amount'];
						$docket_data['doc_link']=$value['docket_img'];

						$payin_docket_id = $this->mcommon->insert('payin_dockets',$docket_data);
						
						$insrt_docket_arr	= array('dr_settlement_id' 		=>  $dr_settlement_id,
													'payin_docket_id'		=> $payin_docket_id,
													'docket_settlement_amt'	=> $value['docket_amount']
											);
						$this->mcommon->insert('dr_settlement_docket',$insrt_docket_arr);
					}
				}
			}
			
			
			
			
			
			if(!empty($driver_settlement_session['driver_expense'])){
				$expense_price	= $driver_settlement_session['driver_expense'];
				foreach($expense_price as $expn_key => $expn_val) {
					$payin_data = array();
					if(isset($dr_settlement_expense_id[$expn_key]['value']) && !empty($dr_settlement_expense_id[$expn_key]['value'])){
						$update_expense_arr	= array('expense_settlement_amt'	=> $expn_val['expense_amount']);
						$expn_cond 		= array('dr_settlement_expense_id' => $dr_settlement_expense_id[$expn_key]['value']);
						$this->mcommon->update('dr_settlement_expense',$expn_cond,$update_expense_arr);

						$payin_data['doc_link']=$expn_val['expense_img'];
						$payin_docket_id = $this->mcommon->update('payin_expenses',array('payin_expense_id'=>$expn_val['payin_expense_id']),$payin_data);
					}else{
						
						$payin_data['expense_id'] = $expense_id[$expn_key]['value'];
						$payin_data['payin_id'] = $driver_settlement_data['payin_id'];
						$payin_data['value'] = $expn_val['expense_amount'];
						$payin_data['doc_link']=$expn_val['expense_img'];

						$payin_expense_id = $this->mcommon->insert('payin_expenses',$payin_data);
						
						$insrt_expense_arr	= array('dr_settlement_id' 		=>  $dr_settlement_id,
													'payin_expense_id'		=> $payin_expense_id,
													'expense_settlement_amt'	=> $expn_val['expense_amount']
											);
						$this->mcommon->insert('dr_settlement_expense',$insrt_expense_arr);
					}
				}
			}
			
			
			if($insert_id){
			
				$cond 					= array('payin_id' => $driver_settlement_data['payin_id']);
				$payin_details = $this->mcommon->getRow('payin',$cond);
				$settlement_history_details = $this->mcommon->getRow('driver_settlement_history',$cond);
				$update_payin			= array();
				if(empty($settlement_history_details)){
					$update_payin['settlement_amt'] = $this->input->post('amount_due');
				}
				$update_payin['final_due_amt'] = $final_due_amount;
				
				$update_payin['rental_commission_flag'] =(!empty($this->input->post('rental_hidden')))?'R':'C';
				if($final_due_amount == 0){
					$update_payin['driver_settlement_flag'] = '1';
				} else {
					$update_payin['driver_settlement_flag'] = '2';
				}
				
				$update_payin_result	= $this->mcommon->update('payin',$cond,$update_payin);
	
				
				
					if($update_payin_result){
						
						if($this->input->post('cash_amt') > 0 && $this->input->post('total_amount') !=''){
						
						$daily_settlement_data['transaction_date'] =date('Y-m-d');
						$daily_settlement_data['payin_id'] =$driver_settlement_data['payin_id'];
						
						if($this->input->post('amount_due') > 0){
							$daily_settlement_data['transaction_type '] =1; //1=> Add,2=>Deduct
						}else{
							$daily_settlement_data['transaction_type '] =2; //1=> Add,2=>Deduct
						}
						
						$daily_settlement_data['1c_coins_qty'] =$this->input->post('1c_coins_qty');
						$daily_settlement_data['1c_coins_amt'] =$this->input->post('1c_coins_amt');
						$daily_settlement_data['5c_coins_qty'] =$this->input->post('5c_coins_qty');
						$daily_settlement_data['5c_coins_amt'] =$this->input->post('5c_coins_amt');
						$daily_settlement_data['10c_coins_qty'] =$this->input->post('10c_coins_qty');
						$daily_settlement_data['10c_coins_amt'] =$this->input->post('10c_coins_amt');
						$daily_settlement_data['20c_coins_qty'] =$this->input->post('20c_coins_qty');
						$daily_settlement_data['20c_coins_amt'] =$this->input->post('20c_coins_amt');
						$daily_settlement_data['50c_coins_qty'] =$this->input->post('50c_coins_qty');
						$daily_settlement_data['50c_coins_amt'] =$this->input->post('50c_coins_amt');
						$daily_settlement_data['1d_coins_qty'] =$this->input->post('1d_coins_qty');
						$daily_settlement_data['1d_coins_amt'] =$this->input->post('1d_coins_amt');
						$daily_settlement_data['2d_coins_qty'] =$this->input->post('2d_coins_qty');
						$daily_settlement_data['2d_coins_amt'] =$this->input->post('2d_coins_amt');
						$daily_settlement_data['5d_notes_qty'] =$this->input->post('5d_notes_qty');
						$daily_settlement_data['5d_notes_amt'] =$this->input->post('5d_notes_amt');
						$daily_settlement_data['10d_notes_qty'] =$this->input->post('10d_notes_qty');
						$daily_settlement_data['10d_notes_amt'] =$this->input->post('10d_notes_amt');
						$daily_settlement_data['20d_notes_qty'] =$this->input->post('20d_notes_qty');
						$daily_settlement_data['20d_notes_amt'] =$this->input->post('20d_notes_amt');
						$daily_settlement_data['50d_notes_qty'] =$this->input->post('50d_notes_qty');
						$daily_settlement_data['50d_notes_amt'] =$this->input->post('50d_notes_amt');
						$daily_settlement_data['100d_notes_qty'] =$this->input->post('100d_notes_qty');
						$daily_settlement_data['100d_notes_amt'] =$this->input->post('100d_notes_amt');
						$daily_settlement_data['total_amount'] 	=$this->input->post('total_amount');
						$daily_settlement_data['created_by'] 	=$this->session->userdata('user_data');
						$daily_settlement_data['created_ts'] 	=date('Y-m-d H:i:s');
						
						$transaction_id = $this->mcommon->insert('daily_transactions',$daily_settlement_data);
					}
				}
	
				echo "success";
			}
			else{
				echo 'error';die;
			}
		
		
		
		} else {
			
			echo 'error';die;


		}
		
		
	}
	private function single_image_upload($path, $files, $document_type){
		//echo $document_type;die;
		$fileName = $document_type . '_' . time() . '_' . str_replace(" ", "_", $files['name']);
		$config = array(
		'upload_path'   => $path,
		'allowed_types' => 'gif|jpg|png|jpeg|pdf|xls|xlsx|doc|docx',
		'overwrite'     => 1,
		'file_name'    => $fileName
		);
		//print_r($config);die;
		$this->load->library('upload', $config);
		$this->upload->initialize($config);

		if (!$this->upload->do_upload($document_type)) {
		//echo $this->upload->display_errors();die;
		$message = array('result' => $this->upload->display_errors(), 'status' => 0);
		} else {
		//echo 'success';die;
		$data = array('upload_data' => $this->upload->data());
		//print_r($data);die;
		$message = array('result' => $data['upload_data']['file_name'], 'status' => 1);
		}
		return $message;
	}
}