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/app/application/controllers/admin/Invoice_12.07.2021.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Invoice extends MY_Controller {
	public function __construct() {
		parent::__construct();
		$this->redirect_guest();
		//$this->load->model('mcommon');
		$this->load->model('mapi');
		$this->admin=$this->session->userdata('admin');
		$this->load->model('admin/minvoice');
		$this->load->model('admin/minvoicepayment');
	}
		
	public function index() {	
		$this->_load_list_view();		
	}
	
	private function _load_list_view() {
		$customer_list=$this->minvoice->get_customer_list();
		$car_list=$this->minvoice->get_car_list_by_customer();
		$data['car_list']=$car_list;
		//print_r($customer_list); die;
    	$data['customer_list'] = $customer_list;
		//print_r($customer_list); die;
    	$data['admin'] = $this->admin;
		$data['content'] = 'admin/invoice/list';
		$this->load->view('admin/layouts/index', $data);
	}
	
	public function deleted_invoice() {	
		$this->_load_list_view_deleted_invoice();		
	}
	
	private function _load_list_view_deleted_invoice() {
		$customer_list=$this->minvoice->get_customer_list();
		$car_list=$this->minvoice->get_car_list_by_customer();
		$data['car_list']=$car_list;
		//print_r($customer_list); die;
    	$data['customer_list'] = $customer_list;
		//print_r($customer_list); die;
    	$data['admin'] = $this->admin;
		$data['content'] = 'admin/invoice/deleted_invoice_list';
		$this->load->view('admin/layouts/index', $data);
	}

	public function get_car_list(){
		$customer_id = $this->input->post('customer_id');
		$car_list=$this->minvoice->get_car_list_by_customer($customer_id);
		$return_data = array('status'=>true,'car_list'=>$car_list);
		echo json_encode($return_data);
	}
	
	public function all_content_list(){
		$params=array();
		if($this->input->post()){
			if($this->input->post('customer_name')!='')
			{
			$params['customer_name']=$this->input->post('customer_name');
			}
			if($this->input->post('car_id')!='')
			{
			$params['car_id']=$this->input->post('car_id');
			}
			if($this->input->post('payment_mode')!='')
			{
			$params['payment_mode']=$this->input->post('payment_mode');
			}
			if($this->input->post('is_paid')!='')
			{
			$params['is_paid']=$this->input->post('is_paid');
			}
			
		}
		$list = $this->minvoice->get_datatables($params);
		$data = array();
        $no = $_POST['start'];
		$i=1;
		if($no>1)
	    {
	      $i=$i*$no+1;
	    }
		foreach ($list as $person) {

			$invoice_pay_log_list=$this->minvoice->get_total_payment_by_invoice_no($person->invoice_no);

			//print_r($invoice_pay_log_list);die;
			if(!empty($invoice_pay_log_list)){
				if($person->total_amount > $invoice_pay_log_list['sum_amount']){
				  $due_amount=number_format(((float)$person->total_amount - (float)$invoice_pay_log_list['sum_amount']), 2, '.', '');
			    }else{
			      $due_amount=0;	
			    }
			}

			$mechanic_condition = array("admin_id"=>$person->mechanic_id);
			$mechanic = $this->mcommon->getRow('admins',$mechanic_condition);
			
			// $new_service = array();
			// $services = $this->minvoice->getServices($person->job_id);
			// foreach($services as $key=>$service)
			// {
			// 	$new_service[$key] = $service['service_name'];
			// }
			
			// $service = implode(',',$new_service);	

			//$car_condition = array("car_id"=>$person->mechanic_id);
			//$car = $this->mcommon->getRow('car',$car_condition);								
			
			$invoice_payment_arr =array();
			$row = array();	
			$row[]=$i;		
			$row[] =$person->invoice_no;
			if(!empty($person->date_of_creation))
			{
			    if (preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/",$person->date_of_creation)) {
			        $row[] = date("d/m/Y", strtotime($person->date_of_creation));
			    }
			    else
			    {
			    $row[] = date("d/m/Y", strtotime($person->date_of_creation));
			    }
			}
			else
			{
			    $row[] = "";
			}
		
			if(!empty($person->due_date))
			{
			    if (preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/",$person->due_date)) {
			        $row[] = date("d/m/Y", strtotime($person->due_date));
			    }
			    else
			    {
			    $row[] = $person->due_date;
			    }
		    }
		    else
			{
			    $row[] = "";
			}
			$row[] =$person->car_no;
			//$row[] = $service;
			$row[] =$person->total_amount;
			$row[] = $due_amount;
			
			 $row[] =$person->customer_name;
			 $row[] =!empty($person->mobile)?$person->mobile:$person->contact_no;
			 
 			$row[] =$mechanic['first_name']." ".$mechanic['last_name'];
 			if($person->is_paid == 0){
				$job_status = "Unpaid";
				
			}else if($person->is_paid == 1){
				$job_status = "Paid";
				
			}else if($person->is_paid == 2){
				$job_status = "Partially Paid";
			}
			else if($person->is_paid == 3){
				$job_status = "No Recovery";
			}

			
 			$row[] = $job_status;
 			if($person->is_paid == 0 || $person->is_paid == 2){
 			$row[] = '<a href="'.base_url('admin/invoice/details/'.$person->id).'" class="btn btn-primary my">Make Payments</a> 
 			<a class="cstm_view_status btn btn-danger delete_btn" data-href="'.base_url('admin/invoice/delete_invoice/'.$person->id).'" title="Delete"><span class="glyphicon glyphicon-trash"></span></a>';
 			}
 			else
 			{
 			$row[] = '<a href="'.base_url('admin/invoice/details/'.$person->id).'" class="btn btn-primary">Details</a> <a class="cstm_view_status btn btn-danger delete_btn" data-href="'.base_url('admin/invoice/delete_invoice/'.$person->id).'" title="Delete"><span class="glyphicon glyphicon-trash"></span></a>';
 			}
 			//Overdue Checking
			if((time() > strtotime($person->due_date)) && ($person->is_paid!=1)){
				$row[]=1;
			}else{
				$row[]=0;
			}
			$row[]=$person->is_paid;
            $data[] = $row;
			$i++;
        }	
		
		$output = array(
                        "draw" => $_POST['draw'],
                        "recordsTotal" => $this->minvoice->count_all($params),
                        "recordsFiltered" => $this->minvoice->count_filtered($params),
                        "data" => $data,
                );
        echo json_encode($output);
	}
	
	public function all_content_list_deleted_invoice(){
		$params=array();
		if($this->input->post()){
			if($this->input->post('customer_name')!='')
			{
			$params['customer_name']=$this->input->post('customer_name');
			}
			if($this->input->post('car_id')!='')
			{
			$params['car_id']=$this->input->post('car_id');
			}
			if($this->input->post('payment_mode')!='')
			{
			$params['payment_mode']=$this->input->post('payment_mode');
			}
			if($this->input->post('is_paid')!='')
			{
			$params['is_paid']=$this->input->post('is_paid');
			}
			
		}
		$list = $this->minvoice->get_datatables_deleted_invoice($params);
		$data = array();
        $no = $_POST['start'];
		$i=1;
		if($no>1)
	    {
	      $i=$i*$no+1;
	    }
		foreach ($list as $person) {

			$invoice_pay_log_list=$this->minvoice->get_total_payment_by_invoice_no($person->invoice_no);

			//print_r($invoice_pay_log_list);die;
			if(!empty($invoice_pay_log_list)){
				if($person->total_amount > $invoice_pay_log_list['sum_amount']){
				  $due_amount=number_format(((float)$person->total_amount - (float)$invoice_pay_log_list['sum_amount']), 2, '.', '');
			    }else{
			      $due_amount=0;	
			    }
			}

			$mechanic_condition = array("admin_id"=>$person->mechanic_id);
			$mechanic = $this->mcommon->getRow('admins',$mechanic_condition);
			
			// $new_service = array();
			// $services = $this->minvoice->getServices($person->job_id);
			// foreach($services as $key=>$service)
			// {
			// 	$new_service[$key] = $service['service_name'];
			// }
			
			// $service = implode(',',$new_service);	

			//$car_condition = array("car_id"=>$person->mechanic_id);
			//$car = $this->mcommon->getRow('car',$car_condition);								
			
			$invoice_payment_arr =array();
			$row = array();	
			$row[]=$i;		
			$row[] =$person->invoice_no;
			if(!empty($person->date_of_creation))
			{
			    if (preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/",$person->date_of_creation)) {
			        $row[] = date("d/m/Y", strtotime($person->date_of_creation));
			    }
			    else
			    {
			    $row[] = date("d/m/Y", strtotime($person->date_of_creation));
			    }
			}
			else
			{
			    $row[] = "";
			}
		
			if(!empty($person->due_date))
			{
			    if (preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/",$person->due_date)) {
			        $row[] = date("d/m/Y", strtotime($person->due_date));
			    }
			    else
			    {
			    $row[] = $person->due_date;
			    }
		    }
		    else
			{
			    $row[] = "";
			}
			$row[] =$person->car_no;
			//$row[] = $service;
			$row[] =$person->total_amount;
			$row[] = $due_amount;
			
			 $row[] =$person->customer_name;
			 $row[] =!empty($person->mobile)?$person->mobile:$person->contact_no;
			 
 			$row[] =$mechanic['first_name']." ".$mechanic['last_name'];
 			if($person->is_paid == 0){
				$job_status = "Unpaid";
				
			}else if($person->is_paid == 1){
				$job_status = "Paid";
				
			}else if($person->is_paid == 2){
				$job_status = "Partially Paid";
			}
			else if($person->is_paid == 3){
				$job_status = "No Recovery";
			}

			
 			$row[] = $job_status;
 		
 			$row[] = '<a href="'.base_url('admin/invoice/details/'.$person->id).'" class="btn btn-primary">Details</a>';
 			
			if((time() > strtotime($person->due_date)) && ($person->is_paid!=1)){
				$row[]=1;
			}else{
				$row[]=0;
			}
			$row[]=$person->is_paid;
            $data[] = $row;
			$i++;
        }	
		
		$output = array(
                        "draw" => $_POST['draw'],
                        "recordsTotal" => $this->minvoice->count_all_deleted_invoice($params),
                        "recordsFiltered" => $this->minvoice->count_filtered_deleted_invoice($params),
                        "data" => $data,
                );
        echo json_encode($output);
	}
	
	
	public function details($id){

			$invoice_details = $this->minvoice->get_details($id);
			$condition_item['invoice_id']=$id;
			$item_list=$this->minvoice->getRows('invoice_details',$condition_item);
			$invoice_pay_log_list=$this->minvoice->get_total_payment_by_invoice_no($invoice_details['invoice_no']);

			//print_r($invoice_pay_log_list);die;
			if(!empty($invoice_pay_log_list)){
				if($invoice_details['total_amount'] > $invoice_pay_log_list['sum_amount']){
				  $due_amount=number_format(((float)$invoice_details['total_amount'] - (float)$invoice_pay_log_list['sum_amount']), 2, '.', '');
			    }else{
			      $due_amount=0;	
			    }
			}
			$cond_payment['invoice_no']=$invoice_details['invoice_no'];
			$payment_history=$this->mcommon->getDetails('invoice_payment_details',$cond_payment);

			$data['sum_amount']=number_format(($invoice_pay_log_list['sum_amount']!=0 ? $invoice_pay_log_list['sum_amount'] : 0),2, '.', '');
			$data['due_amount']=$due_amount;
			$data['invoice_details']=$invoice_details;	
			$data['item_list']=$item_list;
			$data['payment_history']=$payment_history;	
			$data['content'] = 'admin/invoice/detail';		
			$this->load->view('admin/layouts/index', $data);		
		
		}	
	

	public function update(){
		if($this->input->post()){
			$id = $this->input->post('id');
			$no_recovery = $this->input->post('no_recovery');
			if(empty($no_recovery)){
			$this->form_validation->set_rules('payment_mode','Payment Mode','required');
			$this->form_validation->set_rules('payment_date','Payment Date','required');	
			} else {
			    $this->form_validation->set_rules('remarks','Remarks','required');
			}
			if($this->form_validation->run()==FALSE){			
				$this->session->set_flashdata('error_msg','Please fill up required field');
				redirect('admin/invoice/details/'.$id);
			}else{
				//print_r($this->input->post());die;
				$condition=array('id'=>$id);
			if(empty($no_recovery)){
				$total_amount=$this->input->post('total_amount');
				$payment_amount=$this->input->post('payment_amount');
				$due_amount=$this->input->post('due_amount');
				if($payment_amount > $due_amount){ 
					$this->session->set_flashdata('error_msg','Payment amount should not be greater than due amount');
					redirect('admin/invoice/details/'.$id);
				}else{
					$invoice_amount_details=$this->minvoice->getRow('invoices',$condition);

					////////////////////due date logs//////////////////
					if($this->input->post('due_date') != $invoice_amount_details['due_date'])
					{
						$due_date_arr['invoice_no'] = $invoice_amount_details['invoice_no'];
						$due_date_arr['due_date'] = $invoice_amount_details['due_date'];
						$this->minvoice->add($due_date_arr,'invoice_due_date');
					}

					$invoice_pay_log_list=$this->minvoice->get_total_payment_by_invoice_no($invoice_amount_details['invoice_no']);
					$udata['payment_mode'] = $this->input->post('payment_mode');
					$udata['payment_date'] = date('Y-m-d h:i:s');
					$udata['payment_amount'] = $payment_amount;
					$udata['invoice_no'] = $invoice_amount_details['invoice_no'];
					$udata['created_by'] = $this->admin['admin_id'];
					$udata['created_ts'] = date('Y-m-d H:i:s');
					$this->minvoice->add($udata,'invoice_payment_details');
					if($due_amount==$payment_amount){
						$udata=array('is_paid'=>1);
					}else{
						$udata=array('is_paid'=>2);
					}
					$due_date = str_replace('/', '-', $this->input->post('due_date'));
					$udata['due_date']=date('Y-m-d', strtotime($due_date));
					$this->minvoice->update($condition,$udata);
				}
				/////////////////////////generate updated INV//////////////////////////////////////
				unlink('./invoice/'.$invoice_amount_details['invoice_file']); 
				$this->generate_pdf($id);

				/////////////////////////////////////////Mail////////////////////////////////////
				$condition_site['admin_id']=1;
				$site_data = $this->mcommon->getRow('admins',$condition_site);
				$name=$site_data['name'];
				$WEBNAME='Punjab motor Works';
		        $temp_msg='Payment completed successfully.<br>Invoice no - '.$invoice_amount_details['invoice_no'].' <br>payment Amount - $'.$payment_amount.'<br>payment Method - '.$this->input->post('payment_mode');
	        	$mail_temp = file_get_contents('./global/mail/invoice_payment_template.html');
				$mail_temp = str_replace("{shop_name}",$WEBNAME,$mail_temp);
				$mail_temp = str_replace("{logo}",LOGOURL,$mail_temp);
				$mail_temp = str_replace("{web_url}",SITEURL,$mail_temp);
				$mail_temp = str_replace("{current_year}",CURRENT_YEAR,$mail_temp);
				$mail_temp = str_replace("{name}",$name,$mail_temp);					
				$mail_temp = str_replace("{temp_msg}",$temp_msg,$mail_temp);
				$mail_temp = str_replace("{phone}",'+03 95408998',$mail_temp);
				$mail_temp = str_replace("{mail}",'punjabmotor@hotmail.com',$mail_temp);
				
				 $regmail['name']=$WEBNAME;
				 $regmail['to']=$site_data['email'];
				 //$regmail['to']='ishani.banerjee@met-technologies.com';
				 $regmail['subject']=$WEBNAME.' Payment Successful';
				 $regmail['message']=$mail_temp;
				 //echo $mail_temp;exit;
				registration_mail($regmail);
    
			} else {
			    
			    $this->minvoice->update($condition,array('is_paid'=>3,'remarks'=>$this->input->post('remarks')));
			}

				$this->session->set_flashdata('success_msg','Payment made successfully');
				redirect('admin/invoice');
			}
		}else{
			$this->_load_list_view();
		}
	}
	
	
	
	public function getmechanicList()
	{
		$mechanic_condition = array("role_id"=>14,"status"=>1);
		$mechanics = $this->minvoice->getRows('admins',$mechanic_condition);
		//$date = '10/01/2019';
		$date = $this->input->post('date');
		
		$date_array = explode('/',$date);
		$newDate = $date_array[2]."-".$date_array[1]."-".$date_array[0];
		
		$condition = array('available_date'=>$newDate);
		
		$off_mechanics = $this->minvoice->getRows('user_roaster',$condition);
		//echo $this->db->last_query(); die;
		//print_r($off_mechanics);die;
		$new_off_mechanic = array();
		
		foreach($off_mechanics as $off_mechanic)
		{
			$new_off_mechanic[] =  $off_mechanic['mechanic_id'];
		}	
		
		//print_r($new_off_mechanic);die;
		$new_mechanic = array();		
		foreach($mechanics as $mechanic)
		{
			$new_mechanic[] = $mechanic['admin_id'];
		}
		
		$roasted_mechanic_list = array_diff($new_mechanic,$new_off_mechanic);
		
		$result['new_mechanic_list'] = array();
		
		foreach($roasted_mechanic_list	as $key_m=>$roasted_mechanic)
		{
			$reassign_mechanic_condition = array("admin_id"=>$roasted_mechanic);
			$reassign_mechanic = $this->minvoice->getRow('admins',$reassign_mechanic_condition);
			$result['new_mechanic_list'][$key_m] = $reassign_mechanic;
		}	
				
		echo json_encode($result);
	}
	
	public function delete_content(){
		$condition['job_id']=$this->input->post('job_id');
		
		$this->minvoice->delete($condition);
		$response=array('status'=>1,'message'=>'Success');
		echo header('Content-Type: application/json');
		echo json_encode($response);
	}
	
	public function active()
	{
		$condition['user_id']=$this->input->post('user_id');
		$udata['status'] = 1;
		$this->musersetting->active($condition,$udata);
		$response=array('status'=>1,'message'=>'Success');		
		echo json_encode($response);
	}
	
	public function inactive()
	{
		$condition['user_id']=$this->input->post('user_id');
		$udata['status'] = 0;
		$this->musersetting->active($condition,$udata);
		$response=array('status'=>1,'message'=>'Success');		
		echo json_encode($response);
	}
	
	public function delete_invoice($invoice_id)
	{
		$condition['id']=$invoice_id;
		$udata['delete_flag'] = 1;
		$this->mcommon->update('invoices',$condition,$udata);
		$this->session->set_flashdata('success_msg','Invoice deleted successfully');
		redirect('admin/invoice');   		
	
	}
	
	
	
	public function multiple_del()
	{
		$job_ids = explode(',',$this->input->post('job_ids'));
		foreach($job_ids as $job_id)
		{
			$condition['job_id'] = $job_id;					
			$this->minvoice->delete($condition);			
			$response=array('status'=>1,'message'=>'Success');
		}		
		echo header('Content-Type: application/json');
		echo json_encode($response);
	}

	public function view_invoice($id){
            //echo $id;die;
			$this->generate_pdf($id);
			$invoice_details = $this->minvoice->get_details($id);
// 			$job_id=$invoice_details['job_id'];
			
// 			$new_service = array();
// 			$services = $this->minvoice->getServices($job_id);
// 			foreach($services as $key=>$service)
// 			{
// 				$new_service[$key] = $service['service_name'];
// 			}
			
// 			$service = implode(',',$new_service);	
// 			//echo $service; die;

// 			/////invoice item listing/////////////////////////////////
// 			$condition_item['invoice_id']=$id;
// 			$item_list=$this->minvoice->getRows('invoice_details',$condition_item);

// 			$data['service']=$service;

// 			$data['invoice_details']=$invoice_details;	
// 			$data['item_list']=$item_list;	
// //print_r($invoice_details); die;
// 			$condition_customer['admin_id']=$invoice_details;
// 			// $customer_data=$this->minvoice->getRow('admins',$condition_customer);
// 			// $data['customer_data'] = $customer_data;
			$data['invoice_details']=$invoice_details;	

			//$data['content'] = 'admin/invoice/view_invoice';		
			$this->load->view('admin/invoice/invoice_template_view', $data);		
		
		}	

		//////////////////////////////////////PDF//////////////////////////////////////

		public function generate_pdf($id)
	{//echo $id;die;

			$invoice_details = $this->minvoice->get_details($id);
			//$job_id=$invoice_details['job_id'];
			
			// $new_service = array();
			// $services = $this->minvoice->getServices($job_id);
			// foreach($services as $key=>$service)
			// {
			// 	$new_service[$key] = $service['service_name'];
			// }
			
			// $service = implode(',',$new_service);	
			//echo $service; die;

			/////invoice item listing/////////////////////////////////
			$condition_item['invoice_id']=$id;
			$item_list=$this->minvoice->getRows('invoice_details',$condition_item);

			//$data['service']=$service;

			$data['invoice_details']=$invoice_details;	
			$data['item_list']=$item_list;	
			$car_condition = array("car_id"=>$invoice_details['car_id']);
			$car = $this->mapi->getRow('car',$car_condition);
			$data['car']=$car;
			/////////////////////////for template///////////////////////////////////
			$condition_template['id']=1;
			$invoice_template_details = $this->mcommon->getRow('invoice_template',$condition_template);

			$data['invoice_details']=$invoice_details;
			//print_r($data['invoice_details']);die;
			$invoice_pay_log_list=$this->minvoice->get_total_payment_by_invoice_no($invoice_details['invoice_no']);
			$due_amount=0;
			$total_payment=0;
			//print_r($invoice_pay_log_list);die;
			if(!empty($invoice_pay_log_list)){
				if($invoice_details['total_amount'] > $invoice_pay_log_list['sum_amount']){
				  $due_amount=number_format(((float)$invoice_details['total_amount'] - (float)$invoice_pay_log_list['sum_amount']), 2, '.', '');
			    }else{
			      $due_amount=0;	
			    }
			}
			$data['total_payment']=number_format(($invoice_pay_log_list['sum_amount']!=0 ? $invoice_pay_log_list['sum_amount'] : 0),2, '.', '');
			$data['due_amount']=$due_amount;
			$data['invoice_template_details']=$invoice_template_details;	
			$dompdf = new Dompdf\Dompdf();	
			$dompdf->set_option('enable_html5_parser', TRUE);
			$dompdf->set_option('isPhpEnabled', TRUE);
			
			$html = $this->load->view('admin/invoice/invoice_template',$data,true);	
			//echo $html; die;
			
			$dompdf->loadHtml($html);
			//$dompdf->set_option('DEBUG_LAYOUT', TRUE);
			 
			
			$dompdf->setPaper('A4', 'portrait');
			$dompdf->render();
			
			//echo 'ccc'; die;
			$pdf = $dompdf->output(); 
			
			//$filename='INV-'.time();
			$filename='INV-'.$invoice_details['invoice_no'];
			$file=$filename.'.pdf';
			//$file='test.pdf';
			@file_put_contents('./invoice/'.$file, $pdf);	
			
			$condition_inv['id']=$id;
			$data_inv['invoice_file']=$file;
			$this->mcommon->update('invoices',$condition_inv,$data_inv);	
	}
	

	public function export_data()
	{
		require_once APPPATH . "/third_party/PHPExcel.php";
     $objPHPExcel = new PHPExcel();
     $objPHPExcel->setActiveSheetIndex(0);  
     $objPHPExcel->getActiveSheet()->setCellValue('A1','SL No');
     $objPHPExcel->getActiveSheet()->setCellValue('B1','INVOICE NO');
     $objPHPExcel->getActiveSheet()->setCellValue('C1','DATE OF INVOICE');
     $objPHPExcel->getActiveSheet()->setCellValue('D1','CAR');
    // $objPHPExcel->getActiveSheet()->setCellValue('E1','JOB DETAILS');
     $objPHPExcel->getActiveSheet()->setCellValue('E1','INVOICE AMOUNT');
     $objPHPExcel->getActiveSheet()->setCellValue('F1','CUSTOMER');
     $objPHPExcel->getActiveSheet()->setCellValue('G1','TECHNICIAN');
     $objPHPExcel->getActiveSheet()->setCellValue('H1','PAYMENT STATUS');
     $objPHPExcel->getActiveSheet()->setCellValue('I1','DUE AMOUNT');
     $objPHPExcel->getActiveSheet()->setCellValue('J1','DUE DATE');
     
   $params=array();
		if($this->input->post()){
			if($this->input->post('customer_name')!='')
			{
			$params['customer_name']=$this->input->post('customer_name');
			}
			if($this->input->post('car_id')!='')
			{
			$params['car_id']=$this->input->post('car_id');
			}
		}
  
    $result = $this->minvoice->get_datatables_excel($params);
    //$rowNo=count($result);
    //$objPHPExcel ->getActiveSheet()->getStyle("B1:B".$rowNo)->getNumberFormat()->setFormatCode('0');
      $i=2;
      $j=1;
       foreach($result as $person) {
      
     		$mechanic_condition = array("admin_id"=>$person->mechanic_id);
			$mechanic = $this->mcommon->getRow('admins',$mechanic_condition);
			
			// $new_service = array();
			// $services = $this->minvoice->getServices($person->job_id);
			// foreach($services as $key=>$service)
			// {
			// 	$new_service[$key] = $service['service_name'];
			// }
			
			// $service = implode(',',$new_service);	

			$car_condition = array("car_id"=>$person->car_id);
			$car = $this->mcommon->getRow('car',$car_condition);

			/*
			if($person->is_paid == 0){
				$job_status = "Unpaid";
			}else{
				$job_status = "Paid";
			}
			*/
			
			if($person->is_paid == 0){
				$job_status = "Unpaid";
				
			}else if($person->is_paid == 1){
				$job_status = "Paid";
				
			}else if($person->is_paid == 2){
				$job_status = "Partially Paid";
			}
			else if($person->is_paid == 3){
				$job_status = "No Recovery";
			}
			
			$invoice_pay_log_list=$this->minvoice->get_total_payment_by_invoice_no($person->invoice_no);
			$due_amount=0;
			$total_payment=0;
			//print_r($invoice_pay_log_list);die;
			if(!empty($invoice_pay_log_list)){
				if($person->total_amount > $invoice_pay_log_list['sum_amount']){
				  $due_amount=number_format(((float)$person->total_amount - (float)$invoice_pay_log_list['sum_amount']), 2, '.', '');
			    }else{
			      $due_amount=0;	
			    }
			}

      $objPHPExcel->getActiveSheet()->setCellValue('A'.$i,$j);
      $objPHPExcel->getActiveSheet()->setCellValue('B'.$i,'"'.$person->invoice_no.'"');
      $objPHPExcel->getActiveSheet()->setCellValue('C'.$i,date("d/m/Y", strtotime($person->date_of_creation)));
      $objPHPExcel->getActiveSheet()->setCellValue('D'.$i,$person->car_no);
      //$objPHPExcel->getActiveSheet()->setCellValue('E'.$i,$service);
      $objPHPExcel->getActiveSheet()->setCellValue('E'.$i,'$'.$person->total_amount);
      $objPHPExcel->getActiveSheet()->setCellValue('F'.$i,$person->customer_name);
      $objPHPExcel->getActiveSheet()->setCellValue('G'.$i,$mechanic['first_name']." ".$mechanic['last_name']);
      $objPHPExcel->getActiveSheet()->setCellValue('H'.$i,$job_status);
      $objPHPExcel->getActiveSheet()->setCellValue('I'.$i,'$'.$due_amount);
      $objPHPExcel->getActiveSheet()->setCellValue('J'.$i,date("d/m/Y", strtotime($person->due_date)));
   
      $i++;
      $j++;
       }
    //$objPHPExcel ->getActiveSheet()->getStyle("B1:B".$rowNo)->getNumberFormat()->setFormatCode('0');
      $objPHPExcel->getActiveSheet()->setTitle(time().'InvoiceReport.xlsx');
     header('Content-Type: application/vnd.ms-excel'); 
     header('Content-Disposition: attachment;filename="InvoiceReport.xlsx"'); 
     header('Cache-Control: max-age=0'); 
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
      $objWriter->save('php://output');
	}

	public function invoice_template(){
			$condition['id']=1;
			$invoice_details = $this->mcommon->getRow('invoice_template',$condition);

			$data['invoice_details']=$invoice_details;	
			
			$data['content'] = 'admin/invoice/template_settings';		
			$this->load->view('admin/layouts/index', $data);		
		
		}	

	public function template_update()
	{
			if($this->input->post()){
			$id = $this->input->post('id');
			
				$condition=array('id'=>$id);
				$udata['name'] = $this->input->post('name');
				$udata['address'] = $this->input->post('address');
				$udata['phone'] = $this->input->post('phone');
				$udata['abn'] = $this->input->post('abn');
				$udata['bank_name'] = $this->input->post('bank_name');
				$udata['bsb'] = $this->input->post('bsb');
				$udata['account_no'] = $this->input->post('account_no');
				$udata['email'] = $this->input->post('email');
				$this->mcommon->update('invoice_template',$condition,$udata);

				/////////////////////////generate updated INV//////////////////////////////////////
				//$this->generate_pdf($id);
				$this->session->set_flashdata('success_msg','Template data updated successfully');
				redirect('admin/invoice/invoice_template');
		}
	}

	////////////////////////////////payment history////////////////////////
	public function payment_history() {
		$payment_list=$this->minvoice->get_payment_list();
		//print_r($payment_list); die;
    	$data['payment_list'] = $payment_list;
		$data['admin'] = $this->admin;
		$data['content'] = 'admin/invoice/payment_list';
		$this->load->view('admin/layouts/index', $data);
	}
	
	public function all_payment_list(){
		$params=array();
		if($this->input->post()){
			if($this->input->post('start_date')!='')
			{
			$params['start_date']=$this->input->post('start_date');
			}
			if($this->input->post('end_date')!='')
			{
			$params['end_date']=$this->input->post('end_date');
			}
		}
		$list = $this->minvoicepayment->get_datatables($params);
		$data = array();
        $no = $_POST['start'];
		$i=1;
		if($no>1)
	    {
	      $i=$i*$no+1;
	    }
		foreach ($list as $person) {			
			$invoice_payment_arr =array();
			$row = array();	
			$row[]=$i;		
			$row[] =$person->invoice_no;
			
			$row[] = date("d/m/Y", strtotime($person->date_of_creation));
			$row[] =$person->car_no;
			$row[] =$person->total_amount;
			$row[] =$person->payment_amount;
			$row[] =date("d/m/Y", strtotime($person->payment_date)); 			
 			$row[] =$person->payment_mode;
 			$row[] =$person->customer_name;
 			
 			
            $data[] = $row;
			$i++;
        }	
		
		$output = array(
                        "draw" => $_POST['draw'],
                        "recordsTotal" => $this->minvoicepayment->count_all($params),
                        "recordsFiltered" => $this->minvoicepayment->count_filtered($params),
                        "data" => $data,
                );
        echo json_encode($output);
	}

	public function test_mail()
	{
		$condition_site['admin_id']=1;
		$site_data = $this->mcommon->getRow('admins',$condition_site);
		$name=$site_data['name'];
		$WEBNAME='Punjab motor Works';
        $temp_msg='Pyment completed successfully.<br>Invoice no - 1.payment Amount - $1<br>payment Method - gfhfgh';
    	$mail_temp = file_get_contents('./global/mail/invoice_payment_template.html');
		$mail_temp = str_replace("{shop_name}",$WEBNAME,$mail_temp);
		$mail_temp = str_replace("{logo}",LOGOURL,$mail_temp);
		$mail_temp = str_replace("{web_url}",SITEURL,$mail_temp);
		$mail_temp = str_replace("{current_year}",CURRENT_YEAR,$mail_temp);
		$mail_temp = str_replace("{name}",$name,$mail_temp);					
		$mail_temp = str_replace("{temp_msg}",$temp_msg,$mail_temp);
		$mail_temp = str_replace("{phone}",$site_data['phoneno'],$mail_temp);
		$mail_temp = str_replace("{mail}",$site_data['email'],$mail_temp);
		
		 $regmail['name']=$WEBNAME;
		 //$regmail['to']=$site_data['email'];
		 $regmail['to']='ishani.banerjee@met-technologies.com';
		 $regmail['subject']=$WEBNAME.' Payment Successful';
		 $regmail['message']=$mail_temp;
		 //echo $mail_temp;exit;
		//$respons=registration_mail($regmail);
		//echo $this->email->print_debugger();
		//$respons=$this->email->print_debugger();
		//print_r($response); die;
	}
	
    	public function SendInvoiceEmail($invoice_id)
	{
	       
			$condition = array("id"=>$invoice_id);
			$invoice = $this->mapi->getRow('invoices',$condition);	
			
			 if(!empty($invoice))
			 {
									
					$car_condition = array("car_id"=>$invoice['car_id']);
					$car = $this->mapi->getRow('car',$car_condition);

					if($car['customer_id']){
						$customer_data = $this->mapi->getRow('customer',array('customer_id'=>$car['customer_id']));

					
					/////////////////////////////////////////////////////Send Mail ///////////////////////////////
				
					$name=$customer_data['name'];
					$email=$customer_data['email'];
					//$email='bd12071969@gmail.com';
					//$email='fitser.usa@gmail.com';
					//$email='ishani.banerjee@met-technologies.com';
					//$email='kanak.sarkar91@gmail.com';
				    $message = "Please find the attachment for your invoice";
				    $site_url = base_url();
				    $mail_temp = file_get_contents('./global/mail/invoice_template.html');
				    $mail_temp=str_replace("{web_url}",$site_url,$mail_temp);
				    $mail_temp=str_replace("{logo}",LOGOURL,$mail_temp);
				    //$mail_temp=str_replace("{link}",$link,$mail_temp);
				    $mail_temp=str_replace("{message}",$message,$mail_temp);
				    $mail_temp=str_replace("{name}",$name,$mail_temp);
				    $mail_temp=str_replace("{current_year}",date('Y'),$mail_temp);
			        
			        $data=array();
					$data['to']=$email;
					$data['name']='Punjub Motor Works';
					$data['subject']="Invoice";
					$data['message']= $mail_temp;
					$data['from']='info@punjabmotorworkshop.com';	
					if(!empty($invoice['invoice_file']))
					{
					$data['file_name']=$invoice['invoice_file'];	
					}
					
					if($this->sendMail($data)) {
    					$response='Invoice sent in mail successfully.';
    					$this->session->set_flashdata('success_msg',$response);
    				    redirect('admin/invoice/details/'.$invoice_id);
					}else {
    					$response='Unable to send email';
    					$this->session->set_flashdata('error_msg',$response);
    				    redirect('admin/invoice/details/'.$invoice_id);
					}

				}else{
					$response='Customer not tagged with car';
					$this->session->set_flashdata('error_msg',$response);
				    redirect('admin/invoice/details/'.$invoice_id);

				}
					
			 }		
				else{
					$response='No Invoice found';
					$this->session->set_flashdata('error_msg',$response);
				   redirect('admin/invoice/details/'.$invoice_id);
				}
	}
	
		private function sendMail($data){
		/*$config['protocol']    	= 'smtp';
        $config['protocol']      = 'smtp';
        $config['smtp_host']     = 'ssl://mail.fitser.com';
        $config['smtp_port']     = '465';  
        $config['smtp_user']     = 'test123@fitser.com';
        $config['smtp_pass']     = 'Test123@#$%';
        $config['charset']    	= 'utf-8';
        $config['newline']    	= "\r\n";
        $config['mailtype'] 	= 'html';
        $config['validation'] 	= TRUE;*/ 
        
        /*$config['protocol']      = 'smtp';
        $config['smtp_host']     = 'ssl://mail.met-technologies.com';
        $config['smtp_port']     = '465';  
        $config['smtp_user']     = 'devfitser@met-technologies.com';
        $config['smtp_pass']     = 'SARYD^z(B${F';
        $config['charset']    	= 'utf-8';
        $config['newline']    	= "\r\n";
        $config['mailtype'] 	= 'html';
        $config['validation'] 	= TRUE; */
        
        $config['protocol']    = 'smtp';
        $config['smtp_host']    = 'mail.pmw24.com.au'; 
        $config['smtp_port']    = '587';        
        $config['smtp_user']    = 'info@pmw24.com.au';
        $config['smtp_pass']    = 'Info123@';
        $config['charset']    = 'utf-8';
        $config['newline']    = "\r\n";
        $config['mailtype'] = 'html'; // or html
        $config['validation'] = TRUE; // bool whether to validate email or not 

        $this->email->initialize($config);

        $this->email->set_crlf( "\r\n" );

        $this->email->from('info@punjabmotorworkshop.com', 'Punjab Motor Work Shop');
        
        $this->email->to($data['to']); 
        //$this->email->bcc('ishani.banerjee@met-technologies.com', 'Dev');
       
        $this->email->subject($data['subject']);
        $this->email->message($data['message']);  
        if(isset($data['file_name']))
        {
         $attched_file= "invoice/".$data['file_name'];
		 $this->email->attach($attched_file);
		}
        $this->email->send();
          /*if($this->email->send())
         {
          return true; 
         }
         else
        {
            return false; 
          echo '<pre>';
          echo $this->email->print_debugger();
        }*/
        
		return true;   	
    } 
	
}