BACKD00R 1337
Server IP : 164.52.202.56  /  Your IP : 216.73.216.208
Web Server : Apache
System : Linux e2e-70-56.ssdcloudindia.net 4.18.0-553.27.1.el8_10.x86_64 #1 SMP Tue Nov 5 04:50:16 EST 2024 x86_64
User : rubyaromatics ( 1052)
PHP Version : 7.2.34
Directory (0755) :  /home/rubyaromatics/public_html/crm/application/controllers/

[  Home  ][  Terminal  ][  Upload File  ]

Current File : /home/rubyaromatics/public_html/crm/application/controllers/Sales.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Sales extends CI_Controller
{
	function __construct() {
		parent::__construct();
		$this->load->model('sales_model');
		$this->load->model('customer_model');
		$this->load->model('purchase_model');
		$this->load->model('log_model');
	}
	public function index(){
		// get all sales to display list
		$data['data'] = $this->sales_model->getSales();
		$this->load->view('sales/list',$data);
	} 
	/* 
		call add view to add sales record 
	*/
	public function add(){
		$data['warehouse'] = $this->sales_model->getWarehouse();
		$data['warehouse_products'] = $this->sales_model->getWarehouseProducts(); 
		$data['biller'] = $this->sales_model->getBiller();
		$data['customer'] = $this->sales_model->getCustomer(); 
		$data['discount'] = $this->sales_model->getDiscount();
		$data['reference_no'] = $this->sales_model->createReferenceNo();
		$this->load->view('sales/add',$data);
	}
	/* 
		this function is used to get discount data when discount is change 
	*/
	public function getDiscountAjax($id){
		$data = $this->sales_model->getDiscountAjax($id);
		echo json_encode($data);
	}
	/* get all product warehouse wise */
	public function getProducts($warehouse_id){
		$data = $this->sales_model->getProducts($warehouse_id);
	    echo json_encode($data);
	}
	/* get single product */
	public function getProduct($product_id,$warehouse_id){
		$data = $this->sales_model->getProduct($product_id,$warehouse_id);
		$data['discount'] = $this->sales_model->getDiscount();
		$data['tax'] = $this->sales_model->getTax();
	    echo json_encode($data);
		//print_r($data);
	}
	/* 
		this function is used to search product name / code in auto complite 
	*/
	public function getAutoCodeName($code,$search_option,$warehouse){
          //$code = strtolower($code);
		  $p_code = $this->input->post('p_code');
		  $p_search_option = $this->input->post('p_search_option');
          $data = $this->sales_model->getProductCodeName($p_code,$p_search_option,$warehouse);
          if($search_option=="Code"){
          	$list = "<ul class='auto-product'>";
          	foreach ($data as $val){
          		$list .= "<li value=".$val->code.">".$val->code."</li>";
          	}
          	$list .= "</ul>";
          }
          else{
          	$list = "<ul class='auto-product'>";
          	foreach ($data as $val){
          		$list .= "<li value=".$val->product_id.">".$val->name."</li>";
          	}
          	$list .= "</ul>";
          }
          
          echo $list;
          //echo json_encode($data);
          //print_r($data);
	}
	/* 
		this fucntion is used to add sales record in database 
	*/
	public function addSales(){
		
		$this->form_validation->set_rules('date','Date','trim|required');
		$this->form_validation->set_rules('reference_no','Reference No','trim|required');
		//$this->form_validation->set_rules('supplier_id','Supplier ID','trim|required');
		//$this->form_validation->set_rules('warehouse_id','Warehouse ID','trim|required');
		//$this->form_validation->set_rules('discount_id','Discount ID','trim|required');
		//$this->form_validation->set_rules('biller_id','Biller ID','trim|required');
		if($this->form_validation->run()==false){

			$this->add();
		}
		else
		{
			$warehouse_id = $this->input->post('warehouse');
			$data = array(
						"date" 				  =>  $this->input->post('date'),
						"reference_no" 		  =>  $this->input->post('reference_no'),
						"warehouse_id" 		  =>  $this->input->post('warehouse'),
						"customer_id" 		  =>  $this->input->post('customer'),
						"biller_id" 		  =>  $this->input->post('biller'),
						"total" 			  =>  $this->input->post('grand_total'),
						"discount_value"	  =>  $this->input->post('total_discount'),
						"tax_value" 		  =>  $this->input->post('total_tax'),
						"note" 				  =>  $this->input->post('note'),
						"shipping_city_id"    =>  $this->input->post('city'),
						"shipping_state_id"   =>  $this->input->post('state'),
						"shipping_country_id" =>  $this->input->post('country'),
						"shipping_address"    =>  $this->input->post('address'),
						"shipping_charge"     =>  $this->input->post('shipping_charge'),
						"internal_note"       =>  $this->input->post('internal_note'),
						"mode_of_transport"   =>  $this->input->post('mode_of_transport'),
						"transporter_name"    =>  $this->input->post('transporter_name'),
						"transporter_code"    =>  $this->input->post('transporter_code'),
						"vehicle_regn_no"     =>  $this->input->post('vehicle_regn_no'),
						"l_r_no"     		  =>  $this->input->post('l_r_no'),
						"chalan_no"           =>  $this->input->post('chalan_no'),
						"indent_no"           =>  $this->input->post('indent_no'),
						"credit_days"         =>  $this->input->post('credit_days'),
						"date_of_supply"      =>  $this->input->post('date_of_supply'),
						"electronic_ref_no"   =>  $this->input->post('electronic_ref_no'),
						"gst_payable"         =>  $this->input->post('gst_payable'),
						"broker"              =>  $this->input->post('broker'),
						"gr_num"              =>  $this->input->post('gr_num'),
						"gr_date"             =>  $this->input->post('gr_date'),
						"user"			      =>  $this->session->userdata('user_id')
					);

			$invoice = array(
				"invoice_no" => $this->sales_model->generateInvoiceNo(),
				"sales_amount" => $this->input->post('grand_total'),
				"invoice_date" => date('Y-m-d')
			);
			if($sales_id = $this->sales_model->addModel($data,$invoice)){
				$log_data = array(
						'user_id'  => $this->session->userdata('user_id'),
						'table_id' => $sales_id,
						'message'  => 'Sales Inserted'
					);
				$this->log_model->insert_log($log_data);
				$sales_item_data = $this->input->post('table_data');
				$js_data = json_decode($sales_item_data);
				foreach ($js_data as $key => $value) {
					if($value==null){
					}
					else{
						$product_id = $value->product_id;
						$quantity = $value->quantity;	
						$data = array(
							"product_id" => $value->product_id,
							"quantity" => $value->quantity,
							"price" => $value->price,
							"gross_total" => $value->total,
							"discount_id" => $value->discount_id,
							"discount_value" => $value->discount_value,
							"discount" => $value->discount,
							"tax_id" => $value->tax_id,
							"tax_value" => $value->tax_value,
							"tax" => $value->tax,
							"sales_id" => $sales_id
							);
						//$this->sales_model->checkProductInWarehouse($product_id,$quantity,$warehouse_id);
						if($this->sales_model->addSalesItem($data,$product_id,$warehouse_id,$quantity)){
							
						}
						else{

						}
					}
				}
				redirect('sales/view/'.$sales_id);
			}
			else{
				redirect('sales','refresh');
			}
		}
	}
	/* 
		call edit view to edit sales record 
	*/
	public function edit($id){
		$data['warehouse'] = $this->sales_model->getWarehouse(); 
		$data['biller'] = $this->sales_model->getBiller();
		$data['customer'] = $this->sales_model->getCustomer(); 
		$data['discount'] = $this->sales_model->getDiscount();
		$data['tax'] = $this->sales_model->getTax();
		$data['data'] = $this->sales_model->getRecord($id);
		$data['country']  = $this->customer_model->getCountry();
		$data['state'] = $this->customer_model->getState($data['data'][0]->shipping_country_id);
		$data['city'] = $this->customer_model->getCity($data['data'][0]->shipping_state_id);
		$data['product'] = $this->sales_model->getProducts($data['data'][0]->warehouse_id);
		$data['items'] = $this->sales_model->getSalesItems($data['data'][0]->sales_id,$data['data'][0]->warehouse_id);
		$this->load->view('sales/edit',$data);
	}
	/*  
		this fucntion is to edit sales record and save in database 
	*/
	public function editSales(){
		$id = $this->input->post('sales_id');
		$this->form_validation->set_rules('date','Date','trim|required');
		$this->form_validation->set_rules('reference_no','Reference No','trim|required');
		//$this->form_validation->set_rules('supplier_id','Supplier ID','trim|required');
		//$this->form_validation->set_rules('warehouse_id','Warehouse ID','trim|required');
		//$this->form_validation->set_rules('discount_id','Discount ID','trim|required');
		//$this->form_validation->set_rules('biller_id','Biller ID','trim|required');
		if($this->form_validation->run()==false){

			$this->edit($id);
		}
		else
		{
			$warehouse_id = $this->input->post('warehouse');
			$old_warehouse_id = $this->input->post('old_warehouse_id');
			$warehouse_change = $this->input->post('warehouse_change');
			$data = array(
						"date" 			      =>  $this->input->post('date'),
						"reference_no" 	      =>  $this->input->post('reference_no'),
						"warehouse_id"	      =>  $this->input->post('warehouse'),
						"customer_id" 	      =>  $this->input->post('customer'),
						"biller_id" 	      =>  $this->input->post('biller'),
						"total" 		      =>  $this->input->post('grand_total'),
						"discount_value"      =>  $this->input->post('total_discount'),
						"tax_value" 	      =>  $this->input->post('total_tax'),
						"note" 			      =>  $this->input->post('note'),
						"shipping_city_id"    =>  $this->input->post('city'),
						"shipping_state_id"   =>  $this->input->post('state'),
						"shipping_country_id" =>  $this->input->post('country'),
						"shipping_address"    =>  $this->input->post('address'),
						"shipping_charge"     =>  $this->input->post('shipping_charge'),
						"internal_note"       =>  $this->input->post('internal_note'),
						"mode_of_transport"   =>  $this->input->post('mode_of_transport'),
						"transporter_name"    =>  $this->input->post('transporter_name'),
						"transporter_code"    =>  $this->input->post('transporter_code'),
						"vehicle_regn_no"     =>  $this->input->post('vehicle_regn_no'),
						"l_r_no"     		  =>  $this->input->post('l_r_no'),
						"chalan_no"           =>  $this->input->post('chalan_no'),
						"indent_no"           =>  $this->input->post('indent_no'),
						"credit_days"         =>  $this->input->post('credit_days'),
						"date_of_supply"      =>  $this->input->post('date_of_supply'),
						"electronic_ref_no"   =>  $this->input->post('electronic_ref_no'),
						"gst_payable"         =>  $this->input->post('gst_payable'),
						"broker"              =>  $this->input->post('broker'),
						"user"			      =>  $this->session->userdata('user_id'),
						"sales_id"		      =>  $this->input->post('sales_id')
					);
			
			$js_data = json_decode($this->input->post('table_data1'));
			$php_data = json_decode($this->input->post('table_data'));
			if($this->sales_model->editModel($id,$data)){
				$log_data = array(
						'user_id'  => $this->session->userdata('user_id'),
						'table_id' => $id,
						'message'  => 'Sales Updated'
					);
				$this->log_model->insert_log($log_data);	
				foreach ($js_data as $key => $value) {
					if($value=='delete'){
						//echo " delete".$key;
						$product_id =  $php_data[$key];
						if($this->sales_model->deleteSalesItems($id,$product_id,$warehouse_id,$old_warehouse_id)){
							//echo " 1.Dsuccess";
						}
					}
					else if($value==null){
						if($warehouse_id != $old_warehouse_id AND $php_data[$key] !=null){
							$product_id =  $php_data[$key];
							if($this->sales_model->changeWarehouseDeleteSalesItems($id,$product_id,$warehouse_id,$old_warehouse_id)){
								//echo " 1.Dsuccess";
							}
						}
						else if($warehouse_change == "yes"){
							$product_id =  $php_data[$key];
							if($this->sales_model->changeWarehouseDeleteSalesItems($id,$product_id,$warehouse_id,$old_warehouse_id)){
								//echo " 1.Dsuccess";
							}
						}
					}
					else{
						$product_id = $value->product_id;
						$quantity = $value->quantity;
						$data = array(
								"product_id" => $value->product_id,
								"quantity" => $value->quantity,
								"price" => $value->price,
								"gross_total" => $value->total,
								"discount_id" => $value->discount_id,
								"discount_value" => $value->discount_value,
								"discount" => $value->discount,
								"tax_id" => $value->tax_id,
								"tax_value" => $value->tax_value,
								"tax" => $value->tax,
								"sales_id" => $id
							);
						if($old_quantity = $this->sales_model->checkProductInSales($id,$product_id)){
							$this->sales_model->updateQuantity($id,$product_id,$warehouse_id,$quantity,$old_quantity,$data);
						}
						else{
							if($this->sales_model->addSalesItem($data,$product_id,$warehouse_id,$quantity)){
								//echo " 1 Asuccess add";
							}
							else{

							}
						}
					}
				}
				redirect('sales');
			}
		}
	}
	/* 
		this function is used to delete sales record from database 
	*/
	public function delete($id){
		if($this->sales_model->deleteModel($id)){
			$log_data = array(
					'user_id'  => $this->session->userdata('user_id'),
					'table_id' => $id,
					'message'  => 'Sales Deleted'
				);
			$this->log_model->insert_log($log_data);
			redirect('sales','refresh');
		}
		else{
			redirect('sales','refresh');
		}
	}
	/*
		display data in dashboard calendar
	*/
	public function calendar(){
		log_message('debug', print_r($this->db->get('category')->result(), true));
		$data = $this->sales_model->getCalendarData();
		$total = 0;
		foreach ($data as $value) {
			$date = Date('Y-m-d');
			if($date == $value->date){
				$total += $value->total;
			}
			$temp = array(
					"title" => $total,
					"start" => "2017-04-05T00:01:00+05:30"
				);
		}
		 echo json_encode($temp);
	}
	/*
		view Sales details
	*/
	public function view($id){
		$data['data'] = $this->sales_model->getDetails($id);
		$data['items'] = $this->sales_model->getItems($id);
		$data['company'] = $this->purchase_model->getCompany();
		$this->load->view('sales/view',$data);
	}
	/*
		generate pdf
	*/
	public function pdf($id){
		$log_data = array(
				'user_id'  => $this->session->userdata('user_id'),
				'table_id' => $id,
				'message'  => 'Invoice Generated'
			);
		$this->log_model->insert_log($log_data);
		ob_start();
		$html = ob_get_clean();
		$html = utf8_encode($html);

		$data['data'] = $this->sales_model->getDetails($id);
		$data['items'] = $this->sales_model->getItems($id);
		$data['company'] = $this->purchase_model->getCompany();
		$html = $this->load->view('sales/pdf',$data,true);

		include(APPPATH.'third_party/mpdf/mpdf.php');
        $mpdf = new mPDF();
        $mpdf->allow_charset_conversion = true;
        $mpdf->charset_in = 'UTF-8';
        $mpdf->WriteHTML($html);
        $mpdf->Output($data['data'][0]->reference_no.'pdf','I');
	}
	public function print1($id){
		$log_data = array(
				'user_id'  => $this->session->userdata('user_id'),
				'table_id' => $id,
				'message'  => 'Invoice Printed'
			);
		$this->log_model->insert_log($log_data);
		$data['data'] = $this->sales_model->getDetails($id);
		$data['items'] = $this->sales_model->getItems($id);
		$data['company'] = $this->purchase_model->getCompany();
		$this->load->view('sales/pdf',$data);
	}
	public function printt($id){
		$log_data = array(
				'user_id'  => $this->session->userdata('user_id'),
				'table_id' => $id,
				'message'  => 'Invoice Printed'
			);
		$this->log_model->insert_log($log_data);
		$data['data'] = $this->sales_model->getDetails($id);
		$data['items'] = $this->sales_model->getItems($id);
		$data['company'] = $this->purchase_model->getCompany();
		$this->load->view('sales/pdff',$data);
	}
	public function printb($id){
		$log_data = array(
				'user_id'  => $this->session->userdata('user_id'),
				'table_id' => $id,
				'message'  => 'Invoice Printed'
			);
		$this->log_model->insert_log($log_data);
		$data['data'] = $this->sales_model->getDetails($id);
		$data['items'] = $this->sales_model->getItems($id);
		$data['company'] = $this->purchase_model->getCompany();
		$this->load->view('sales/pdf1b',$data);
	}
	/*
		send email
	*/
	public function email($id){
		$log_data = array(
				'user_id'  => $this->session->userdata('user_id'),
				'table_id' => 0,
				'message'  => 'Invoice Email Send'
			);
		$this->log_model->insert_log($log_data);
		$email = $this->sales_model->getSmtpSetup();

		$data = $this->sales_model->getCustomerEmail($id);
		$company = $this->purchase_model->getCompany();
		$this->load->view('class.phpmailer.php');

		$mail = new PHPMailer();

		$mail->IsSMTP();
		$mail->Host = $email->smtp_host;

		$mail->SMTPAuth = true;
		//$mail->SMTPSecure = "ssl";
		$mail->Port = $email->smtp_port;
		$mail->Username = $email->smtp_username;
		$mail->Password = $email->smtp_password;

		$mail->From = $email->from_address;
		$mail->FromName = $email->from_name;
		$mail->AddAddress($data[0]->email);
		//$mail->AddReplyTo("mail@mail.com");

		/*$mail->IsHTML(true);

		$mail->Subject = "Purchase order No : ".$data[0]->reference_no." From ".$company[0]->name;
		$mail->Body = "Date : ".$data[0]->date."<br>Total : ".$data[0]->total;
		//$mail->AltBody = "This is the body in plain text for non-HTML mail clients";

		if(!$mail->Send())
		{
			$message =  "Email could not be sent";
		}
		else{
			$message =  "Email has been sent";
		}*/
		$total = $data[0]->total+$data[0]->shipping_charge;
         $this->load->library('email'); 
   
         $this->email->from($email->from_address ,$email->from_name); 
         $this->email->to($data[0]->email);
         $this->email->subject("Sales order No : ".$data[0]->reference_no." From ".$company[0]->name); 
         $this->email->message("Date : ".$data[0]->date."   \nTotal : ".$total." \n\n\nComapany Name : ".$company[0]->name."\nAddress : ".$company[0]->street." ".$company[0]->country_name."\nMobile No :".$company[0]->phone); 
         //Send mail 
         if($this->email->send()) 
         $message = "Email sent successfully.";
         else 
         $message = "Error in sending Email."; 

		$this->session->set_flashdata('message', $message);
		redirect('sales','refresh');
	}
	/*
		payment	 view
	*/
	public function payment($id){
		$data['data'] = $this->sales_model->getDetailsPayment($id);
		$data['company'] = $this->purchase_model->getCompany();
		$data['p_reference_no'] = $this->sales_model->generateReferenceNo();

		$this->load->view('sales/payment',$data);
	}
	/*
		get payment details to view and send to model
	*/
	public function addPayment(){
		$id = $this->input->post('id');
		$paying_by = $this->input->post('paying_by');
		$this->form_validation->set_rules('date','Date','trim|required');
		$this->form_validation->set_rules('paying_by','Paying By','trim|required');
		if($paying_by == "Cheque"){
			$this->form_validation->set_rules('bank_name','Bank Name','trim|required|callback_alpha_dash_space');
			$this->form_validation->set_rules('cheque_no','Cheque No','trim|required|numeric');
		}
		if($this->form_validation->run()==false){
			$this->payment($id);
		}
		else
		{
			if($paying_by == "Cheque"){
				$bank_name = $this->input->post('bank_name');
				$cheque_no = $this->input->post('cheque_no');
			}
			else{
				$bank_name = "";
				$cheque_no = "";
			}
			$data = array(
					"sales_id"     => $id,
					"date"         => $this->input->post('date'),
					"reference_no" => $this->input->post('reference_no'),
					"amount"       => $this->input->post('amount'),
					"paying_by"    => $this->input->post('paying_by'),
					"bank_name"    => $bank_name,
					"cheque_no"    => $cheque_no,
					"description"  => $this->input->post('note')
				);

			if($this->sales_model->addPayment($data)){
				$log_data = array(
						'user_id'  => $this->session->userdata('user_id'),
						'table_id' => $id,
						'message'  => 'Sales Payable'
					);
				$this->log_model->insert_log($log_data);
				redirect('sales','refresh');
			}
			else{
				redirect("sales",'refresh');
			}
		}
	}
	/*
		generate invoice
	*/
	public function invoice(){
		$data['data'] = $this->sales_model->invoice();
		$this->load->view('sales/invoice',$data);
	}
	/*

	*/
	public function getCustomerData($id){
		$data['data'] = $this->customer_model->getRecord($id);
		$data['country']  = $this->customer_model->getCountry();
		$data['state'] = $this->customer_model->getState($data['data'][0]->country_id);
		$data['city'] = $this->customer_model->getCity($data['data'][0]->state_id);
		echo json_encode($data);
	}
	/*
		check character and space validation 
	*/
	function alpha_dash_space($str) {
		if (! preg_match("/^([a-zA-Z ])+$/i", $str))
	    {
	        $this->form_validation->set_message('alpha_dash_space', 'The %s field may only contain alpha and spaces');
	        return FALSE;
	    }
	    else
	    {
	        return TRUE;
	    }
	}
}
?>

security is just an illusion