<?php
/*
 * This file is part of FacturaSctipts
 * Copyright (C) 2014-2015  Carlos Garcia Gomez  neorazorx@gmail.com
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 * 
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

require_model('almacen.php');
require_model('agentes.php');
require_model('fabricante.php');
//require_once 'extras/excel/PHPExcel.php';
require_once 'plugins/liquifactura/extras/excel/PHPExcel.php';
require_once 'plugins/facturacion_base/controller/informe_albaranes.php';
require_once 'plugins/facturacion_base/extras/fbase_controller.php';

class liqfactura extends fbase_controller /* fs_controller*/
{
public $var1 = "xxx" ;
public $data;
public $data2;
public $order;
public $arreglodata = array();    
public $almacenes;
public $periodos;
public $b_codalmacen;
public $b_periodo;   
public $agente;
public $agentev;
public $agentenom;
public $resultadoven;
public $resultado;
public $b_codfabricante;
public $b_codfabricante4;
public $fabricante;
public $referencia;
public $nfabricante;
public $fabricante4;
public $fecini;
public $fecfin;
public $estado;
public $estado4;
public $estadotp;
public $estado41;
public $resultadoven4 ;
public $datagente ;
public $resSumaVen;
public $fecininom;
public $opcionImp;
public $numprodxfac;
public $prueba;
	public function __construct()
   {
      parent::__construct('liqfactura', 'Liq. de facturas', 'Formularios EC');
   }
   
   protected function private_core()
   {
    
      $this->rutacsv = 'plugins/liquifactura/'; 
      $almacen = new almacen();
      $this->almacenes = $almacen->all();
      $this->articulo = new articulo();
      $this->stock = new stock();
      $this->url_recarga = FALSE;
      $this->agentecod ='';
      $this->estado = '';
      $this->estado4 = '';
      //$this->estadotp = '';

      $this->estadotp = '';
      if (isset($_POST['estadotp'])){
        $this->estadotp = $_POST['estadotp'];
      }

      $this->numprodxfac = 0;
      if (isset($_GET['impresion'])){
        $this->impre = $_GET['impresion'];
        if ($this->impre == 3){
          $this->imprimir();
        }
        if ($this->impre == 4)
        {
            $this->imp_vent_prod();
        }
        if ($this->impre == 5)
        {
            $this->imprimir_minerva(); 
        }
        if ($this->impre == 6)     // generar con este formato para ALES
        {
            $this->imprimir_formato_ales(); // <=== crear esta funcion   
        }
        if ($this->impre == 7)     // generar con este formato para ALES
        {
            $this->imprimir_impactados(); // <=== crear esta funcion   
        }
      }

      if (isset($_GET['actualizacos'])){
        if ($_GET['actualizacos'] == 1) {
            //$this->new_error_msg('Actualizando costos');
            $this->actualizacosto();
        }
      }
  
          


        $this->agente = $this->user->get_agente();
        $this->caja = FALSE;
        $this->terminal = FALSE;
        $caja = new caja();
        $terminal0 = new terminal_caja();
        foreach ($caja->all_by_agente($this->agente->codagente) as $cj) {
            if ($cj->abierta()) {
                $this->caja = $cj;
                $this->terminal = $terminal0->get($cj->fs_id);
                break;
            }
        }

        

      if (isset($_POST['estado'])){
        $this->estado = $_POST['estado'];
      }
      if (isset($_POST['estado4'])){
        $this->estado4 = $_POST['estado4'];
      }          


     /// lista de ventas  x fabricantes y vendedores 
      $this->vendedores = '';  
      $coma=', ';
      if (isset($_REQUEST['codagentevl'])) {
        $this->arrayagentes = $_REQUEST['codagentevl'];
        $this->vendedores = implode(",",$this->arrayagentes);
        
        $datagente = new agente();

      } else {
          $this->agente = $this->user->get_agente();
      }

      $this->vendedoresM = '';     // vendedores minerva  
      $coma=', ';
      if (isset($_REQUEST['codagenteM'])) {
        $this->arrayagentes = $_REQUEST['codagenteM'];
        $this->vendedores = implode(",",$this->arrayagentes);
        
        $datagente = new agente();

      } else {
          $this->agente = $this->user->get_agente();
      }


      $this->vendedores4 = '';  
      
      if (isset($_REQUEST['codagentevl4'])) {
        $this->arrayagentes = $_REQUEST['codagentevl4'];
        $this->vendedores4 = implode(",",$this->arrayagentes);
        
        //$this->new_message("nro de agentes " .count($this->arrayagentes));
        //$this->new_message("lista ".$this->vendedores);
 
        //$datagente = new agente();
        //$this->agentev = $datagente->get($_POST['codagentev']);
        //$this->agentecod = $_POST['codagentev']; //$this->agente->codagente;
      } else {
        $this->agente = $this->user->get_agente();

      }

      if (isset($_REQUEST['codagentevl5'])) {
        $this->arrayagentes = $_REQUEST['codagentevl5'];
        
        
        //$this->new_message("nro de agentes " .count($this->arrayagentes));
        //$this->new_message("lista ".$this->vendedores);
      } else {
        $this->agente = $this->user->get_agente();

      }

      if (isset($_POST['codagente'])) {
          $datagente = new agente();
          $this->agente = $datagente->get($_POST['codagente']);
          $this->agentecod = $_POST['codagente']; //$this->agente->codagente;
         
      } else {
          $this->agente = $this->user->get_agente();
      }

      if (isset($_POST['codagente1'])) {
          $datagente = new agente();
          $this->agente = $datagente->get($_POST['codagente1']);
          $this->agentecod = $_POST['codagente1']; //$this->agente->codagente;
          
      } else {
          $this->agentecod ='';
          //$this->agente = $this->user->get_agente();
      }


      $this->referencia = '';
      if (isset($_POST['referencia'])) {
         $this->referencia = $_POST['referencia'];
      } else if (isset($_GET['ref'])) {
         $this->referencia = $_GET['ref'];
      }            
            
      $this->fabricante = new fabricante();	
        
      if (isset($_REQUEST['buscar_referencia'])) {
        $this->buscar_referencia();
      }

      $this->b_codfabricante = '';
      if( isset($_REQUEST['b_codfabricante']) )
      {
         $this->b_codfabricante = $_REQUEST['b_codfabricante'];
         $codfab = $this->b_codfabricante;
         if (($_POST['b_codfabricante']) ) {
         $nombrefabric = $this->db->select("select nombre from fabricantes where codfabricante='".$this->b_codfabricante."';");
         
         if ($nombrefabric){
            foreach($nombrefabric as $row){
                $this->nfabricante = ($row['nombre']);
            }
            }
        }
      }
      $this->b_codfabricante4 = '';
      if( isset($_REQUEST['b_codfabricante4']) )
      {
         $this->b_codfabricante4 = $_REQUEST['b_codfabricante4'];

         //$this->new_message("codfabricante ".$this->b_codfabricante4);

         $codfab = $this->b_codfabricante4;
         if (($_POST['b_codfabricante4']) ) {
         $nombrefabric4 = $this->db->select("select nombre from fabricantes where codfabricante='".$this->b_codfabricante4."';");
         
         if ($nombrefabric4){
            foreach($nombrefabric4 as $row){
                $this->nfabricante4 = ($row['nombre']);
            }
            }else{
              $this->nfabricante4="todos";
            }
        }
      }      
      if( isset($_GET['table']) )
      {
         $this->export_structure_xml($_GET['table']);
      }
      else if( isset($_POST['fechaini2']) )
      {
       
         $this->genera_rep();
      }
      else if( isset($_POST['fechaini1']) )
      {
       
         $this->import_xml();
      }
      else if( isset($_POST['fechaini11']) )
      {
       
         $this->listado_fact();
      }
      else if( isset($_POST['fechaini3']) )
      {
         $this->genera_ventxprod();
      }
      else if( isset($_POST['fechaini6']) )
      {
        $this->estado = '';
        if($this->estadotp == 'detalle'){
            $this->genera_ventxminerva();    
        }
        if($this->estadotp == 'totales'){
            $this->genera_ventxminerva_totales();    
        }
        if($this->estadotp == 'formatoales'){
            $this->genera_formato_ales();    
        }
        if($this->estadotp == 'impactados'){    // reporte de impactados
            $this->genera_formato_impactados();    
        }
      }      
      else if( isset($_POST['fechaini4']) )
      {
         $this->gnra_ventaspro();
      }      
      else if( isset($_POST['fechaini5']) )
      {
         $this->gnra_ventasdiario();
      }      
      
      else if( isset($_POST['fechainiR']) )
      {
         $this->reimprimir_tickets();
      }
 }

  
private function reimprimir_tickets()
   {
        $fecini =  date("y-m-d", strtotime($_POST['fechainiR']));
        $fecfin =  date("y-m-d", strtotime($_POST['fechafinR']));
        $periodo = $_POST['fechainiR']."*".$_POST['fechafinR'];
        $agentecod = $this->agente->codagente;
        $factura = new factura_cliente();
        $this->vendedores = '';  
        $continuar = true;
        if( isset($_POST['numdesde'])) {
            $this->numdesde = $_POST['numdesde'];
        }else{
            $this->new_error_msg("Debe ingresar codigo de inicio!!");
            $continuar = false;
        }
        if( isset($_POST['numdesde'])) {
            $this->numhasta = $_POST['numhasta'];
        }else{
            $this->new_error_msg("Debe ingresar codigo de fin!!");
            $continuar = false;
        }
        
        $coma=', ';
        if (isset($_REQUEST['codagentevl'])) {
            $this->arrayagentes = $_REQUEST['codagentevl'];
            $this->vendedores = implode(",",$this->arrayagentes);
        }

        if (!$continuar ) 
        {
            $this->new_error_msg("Error: no puede continuar");  
        }
        else
        {
            if( $this->vendedores <> ''){
                $resultado = $this->db->select("SELECT codigo "
                     . "FROM facturascli "
                     . "WHERE fecha between '".$fecini."' and '".$fecfin."' "
                     . "and codvendedor in(". $this->vendedores.")"
                     . " and codigo between ".$this->numdesde. " and ". $this->numhasta. " order by codigo ASC;");
                    //var_dump($resultado);
                if($resultado){
                    foreach ($resultado as $key) {
                        $fac0 = $factura->get_by_codigo($key['codigo']);
                        //var_dump($fac0->idfactura);
                        //$this->new_error_msg("factura ".$fac0->idfactura);
                        $this->imprimir_ticket($fac0,1,FALSE);

                    }
                }else{
                    $this->new_error_msg("No hay facturas en las fechas indicadas...");
                }
            }else{
                $this->new_error_msg("Debe elegir un vendedor por lo menos...");    
            }


        }

    }

    private function imprimir_ticket($factura, $num_tickets = 1, $cajon = TRUE)
    {
        $this->empresa = new empresa();
        $this->comprobar_opciones();
        //$this->imprimir_descripciones = 1;
        //$this->imprimir_observaciones = 1;
            while ($num_tickets > 0) {
                //$this->new_message('imprimir descri '.$this->imprimir_descripciones);
                $this->terminal->imprimir_ticket($factura, $this->empresa, $this->imprimir_descripciones, $this->imprimir_observaciones);
                $num_tickets--;
               
            }

            $this->terminal->save();
            //$this->new_message('<a href="#" data-toggle="modal" data-target="#modal_ayuda_ticket">¿No se imprime el ticket?</a>');
            return false;
    }

    private function comprobar_opciones()
    {
        $fsvar = new fs_var();

        $this->imprimir_descripciones = ($fsvar->simple_get('tpv_gen_descripcion') == '1');
        $this->imprimir_observaciones = ($fsvar->simple_get('tpv_gen_observaciones') == '1');

        /**
         * Si se detectan datos por post de que se está creando una factura, modificamos las opciones
         */
        if (isset($_POST['cliente'])) {
            if (isset($_POST['imprimir_desc'])) {
                $this->imprimir_descripciones = TRUE;
                $fsvar->simple_save('tpv_gen_descripcion', '1');
            } else {
                $this->imprimir_descripciones = FALSE;
                $fsvar->simple_delete('tpv_gen_descripcion');
            }

            if (isset($_POST['imprimir_obs'])) {
                $this->imprimir_observaciones = TRUE;
                $fsvar->simple_save('tpv_gen_observaciones', '1');
            } else {
                $this->imprimir_observaciones = FALSE;
                $fsvar->simple_delete('tpv_gen_observaciones');
            }
        }
    }
    private function genera_rep()
   {

      $fecini =  date("y-m-d", strtotime($_POST['fechaini2']));
      $fecfin =  date("y-m-d", strtotime($_POST['fechafin2']));
      $periodo = $_POST['fechaini2']."*".$_POST['fechafin2'];
      $agentecod = $this->agente->codagente;
      if ($fecini > $fecfin) 
	  {
        $this->new_error_msg("Error: Fecha Final no puede ser menor que fecha de Inicio ".$_POST['fechafin2']);  
      }
       else
      {
          // se cambia conagente x codvendedor  11/01/2018 joly
      $this->resultado = $this->db->select("select fac.codigo codigo, pre.idpresupuesto presup, pre.idpedido pedido, ped.idalbaran albaran, fac.idfactura factura, fac.nombrecliente nombre, fac.total total , 
      (select sum(importe) pg from pagos where fac.idfactura = pagos.idfactura) abono, fac.total - (select sum(importe) pg from pagos where fac.idfactura = pagos.idfactura) saldo, fac.coddivisa coddivisa1
      from presupuestoscli pre, pedidoscli ped,  facturascli fac, albaranescli alb 
      where pre.idpedido = ped.idpedido 
      and ped.idalbaran = alb.idalbaran 
      and alb.idfactura = fac.idfactura
      and pre.fecha between '".$fecini."' and '".$fecfin."' 
      and pagada  = 0
      and anulada = 0
      and pre.codagente = ". $agentecod."
      union
      select fac.codigo codigo, null presup, ped.idpedido pedido, ped.idalbaran albaran, fac.idfactura factura , fac.nombrecliente nombre, fac.total total, 
      (select sum(importe) pg from pagos where fac.idfactura = pagos.idfactura) abono, fac.total - (select sum(importe) pg from pagos where fac.idfactura = pagos.idfactura) saldo, fac.coddivisa coddivisa1
      from  pedidoscli ped, facturascli fac, albaranescli alb 
      where (ped.idalbaran = alb.idalbaran 
      and alb.idfactura = fac.idfactura) 
      and ped.fecha between '".$fecini."' and '".$fecfin."' 
      and pagada  = 0
      and anulada = 0
      and ped.codagente = ". $agentecod."
      and not exists (select * from presupuestoscli as p where p.idpedido = ped.idpedido )
      union
      select  fac.codigo codigo, null presup, null pedido, alb.idalbaran albaran, fac.idfactura factura , fac.nombrecliente nombre, fac.total total, 
      (select sum(importe) pg from pagos where fac.idfactura = pagos.idfactura) abono, fac.total - (select sum(importe) pg from pagos where fac.idfactura = pagos.idfactura) saldo, fac.coddivisa coddivisa1
      from   facturascli fac, albaranescli alb 
      where  alb.idfactura = fac.idfactura  
      and alb.fecha between '".$fecini."' and '".$fecfin."' 
      and pagada  = 0
      and anulada = 0 
      and alb.codagente = ". $agentecod."
      and not exists (select * from pedidoscli as ped where ped.idalbaran = alb.idalbaran )
      union
      select  fac.codigo codigo, null presup, null pedido, null albaran, fac.idfactura factura , fac.nombrecliente nombre, fac.total total, 
      (select sum(importe) pg from pagos where fac.idfactura = pagos.idfactura) abono, fac.total - (select sum(importe) pg from pagos where fac.idfactura = pagos.idfactura) saldo, fac.coddivisa coddivisa1
      from   facturascli fac
      where pagada  = 0
      and fac.fecha between '".$fecini."' and '".$fecfin."' 
      and anulada = 0 
      and fac.codvendedor = ". $agentecod."
      and not exists (select * from albaranescli as alb where alb.idfactura = fac.idfactura  )
      ; " );

      $sql1000 = "select fac.codigo codigo, pre.idpresupuesto presup, pre.idpedido pedido, ped.idalbaran albaran, fac.idfactura factura, fac.nombrecliente nombre, fac.total total , 
      (select sum(importe) pg from pagos where fac.idfactura = pagos.idfactura) abono, fac.total - (select sum(importe) pg from pagos where fac.idfactura = pagos.idfactura) saldo, fac.coddivisa coddivisa1
      from presupuestoscli pre, pedidoscli ped,  facturascli fac, albaranescli alb 
      where pre.idpedido = ped.idpedido 
      and ped.idalbaran = alb.idalbaran 
      and alb.idfactura = fac.idfactura
      and pre.fecha between '".$fecini."' and '".$fecfin."' 
      and pagada  = 0
      and anulada = 0
      and pre.codvendedor = ". $agentecod."
      union
      select fac.codigo codigo, null presup, ped.idpedido pedido, ped.idalbaran albaran, fac.idfactura factura , fac.nombrecliente nombre, fac.total total, 
      (select sum(importe) pg from pagos where fac.idfactura = pagos.idfactura) abono, fac.total - (select sum(importe) pg from pagos where fac.idfactura = pagos.idfactura) saldo, fac.coddivisa coddivisa1
      from  pedidoscli ped, facturascli fac, albaranescli alb 
      where (ped.idalbaran = alb.idalbaran 
      and alb.idfactura = fac.idfactura) 
      and ped.fecha between '".$fecini."' and '".$fecfin."' 
      and pagada  = 0
      and anulada = 0
      and ped.codagente = ". $agentecod."
      and not exists (select * from presupuestoscli as p where p.idpedido = ped.idpedido )
      union
      select  fac.codigo codigo, null presup, null pedido, alb.idalbaran albaran, fac.idfactura factura , fac.nombrecliente nombre, fac.total total, 
      (select sum(importe) pg from pagos where fac.idfactura = pagos.idfactura) abono, fac.total - (select sum(importe) pg from pagos where fac.idfactura = pagos.idfactura) saldo, fac.coddivisa coddivisa1
      from   facturascli fac, albaranescli alb 
      where  alb.idfactura = fac.idfactura  
      and alb.fecha between '".$fecini."' and '".$fecfin."' 
      and pagada  = 0
      and anulada = 0 
      and alb.codagente = ". $agentecod."
      and not exists (select * from pedidoscli as ped where ped.idalbaran = alb.idalbaran )
      union
      select  fac.codigo codigo, null presup, null pedido, null albaran, fac.idfactura factura , fac.nombrecliente nombre, fac.total total, 
      (select sum(importe) pg from pagos where fac.idfactura = pagos.idfactura) abono, fac.total - (select sum(importe) pg from pagos where fac.idfactura = pagos.idfactura) saldo, fac.coddivisa coddivisa1
      from   facturascli fac
      where pagada  = 0
      and fac.fecha between '".$fecini."' and '".$fecfin."' 
      and anulada = 0 
      and fac.codvendedor = ". $agentecod."
      and not exists (select * from albaranescli as alb where alb.idfactura = fac.idfactura  )
      ; " ;

      
      
      }
   }
   
   
   private function import_xml()
   { 
      $fecini =  date("y-m-d", strtotime($_POST['fechaini1']));
      $fecfin =  date("y-m-d", strtotime($_POST['fechafin1']));
      $periodo = $_POST['fechaini1']."*".$_POST['fechafin1'];

      if ($fecini > $fecfin) 
	    {
        $this->new_error_msg("Error: Fecha Final no puede ser menor que fecha de Inicio ".$_POST['fechafin1']);  
      }
       else
      {
      //$this->new_message("Fecha inicio ".$fecini. "  fecha fin ".$fecfin);
           
      // seleccion de todos los registros que entran en el periodo 
      // Con detalle de facturas de venta
	  
      $agentecod = $this->agente->codagente;
         $resultado = $this->db->select("SELECT nombrecliente, total, anulada,codigo "
                 . "FROM facturascli "
                 . "WHERE fecha between '".$fecini."' and '".$fecfin."' "
                 . "and codvendedor = ". $agentecod." ;");
                 
                 //. "and codigorect is null and anulada = 0 and codagente = ". $agentecod." ;");
                 
        $resultado1 = $this->db->select("SELECT nombrecliente, total, 'anulada' "
                 . "FROM presupuestoscli "
                 . "WHERE fecha between '".$fecini."' and '".$fecfin."' "
                 . " and codagente = ". $agentecod." ;");
                 
       $resultado2 = $this->db->select("SELECT nombrecliente, total, 'anulada' "
                 . "FROM albaranescli "
                 . "WHERE fecha between '".$fecini."' and '".$fecfin."' "
                 . " and codagente = ". $agentecod." ;");                 

	$fila = 5; //Establecemos en que fila inciara a imprimir los datos 
         
	$fila = 5; //Establecemos en que fila inciara a imprimir los datos    
	$gdImage = imagecreatefrompng('images/logo.png');//Logotipo
	
	//Objeto de PHPExcel
	$objPHPExcel  = new PHPExcel();
	
	//Propiedades de Documento
	$objPHPExcel->getProperties()->setCreator("John Lima")->setDescription("Liquidacion de Facturas");
	
	//Establecemos la pesta?a activa y nombre a la pesta?a
	$objPHPExcel->setActiveSheetIndex(0);
	$objPHPExcel->getActiveSheet()->setTitle("facturas");
	
	$objDrawing = new PHPExcel_Worksheet_MemoryDrawing();
	$objDrawing->setName('Logotipo');
	$objDrawing->setDescription('Logotipo');
	//$objDrawing->setImageResource($gdImage);
	//$objDrawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG);
	//$objDrawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT);
	$objDrawing->setHeight(100);
	$objDrawing->setCoordinates('A1');
	$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
	
	
	$estiloTituloReporte = array(
    'font' => array(
	'name'      => 'Arial',
	'bold'      => true,
	'italic'    => false,
	'strike'    => false,
	'size' =>13
    ),
    'fill' => array(
	'type'  => PHPExcel_Style_Fill::FILL_SOLID
	),
    'borders' => array(
	'allborders' => array(
	'style' => PHPExcel_Style_Border::BORDER_THIN
	)
    ),
    'alignment' => array(
	'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
	'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER
    )
	);
	
	$estiloTituloColumnas = array(
    'font' => array(
	'name'  => 'Arial',
	'bold'  => true,
	'size' =>11,
	'color' => array(
	'rgb' => 'FFFFFF'
	)
    ),
    'fill' => array(
	'type' => PHPExcel_Style_Fill::FILL_SOLID,
	'color' => array('rgb' => '538DD5')
    ),
    'borders' => array(
	'allborders' => array(
	'style' => PHPExcel_Style_Border::BORDER_THIN
	)
    ),
    'alignment' =>  array(
	'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
	'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
    )
	);

     $estiloTituloColumnas2 = array(
    'font' => array(
	'name'  => 'Arial',
	'bold'  => true,
	'size' =>9,
	'color' => array(
	'rgb' => '000000'
	)
    ),
    'fill' => array(
	'type' => PHPExcel_Style_Fill::FILL_SOLID
    ),
    'borders' => array(
	'allborders' => array(
	'style' => PHPExcel_Style_Border::BORDER_THIN
	)
    ),
    'alignment' =>  array(
	'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
	'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
    )
	);
                
$estiloTituloColumnas3 = array(
    'font' => array(
	'name'  => 'Calibri',
	'bold'  => false,
	'size' =>13,
	'color' => array(
	'rgb' => '000000'
	)
    ),
    'fill' => array(
	'type' => PHPExcel_Style_Fill::FILL_SOLID
    ),
    'borders' => array(
	'allborders' => array(
	'style' => PHPExcel_Style_Border::BORDER_THIN
	)
    ),
    'alignment' =>  array(
	'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_LEFT,
	'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
    )
	);                
                
                
   
        
        
	$estiloInformacion = new PHPExcel_Style();
	$estiloInformacion->applyFromArray( array(
    'font' => array(
	'name'  => 'Arial',
	'color' => array(
	'rgb' => '000000'
	)
    ),
    'fill' => array(
	'type'  => PHPExcel_Style_Fill::FILL_SOLID
	),
    'borders' => array(
	'allborders' => array(
	'style' => PHPExcel_Style_Border::BORDER_THIN
	)
    ),
	'alignment' =>  array(
	'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
	'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
    )
	));
        for ($i = 1; $i <= 51; $i++) {
            $objPHPExcel->getActiveSheet()->getRowDimension($i)->setRowHeight(20);
        }
        
	    $objPHPExcel->getActiveSheet()->getStyle('A3:C3')->applyFromArray($estiloTituloColumnas);
        $objPHPExcel->getActiveSheet()->getStyle('A24:C24')->applyFromArray($estiloTituloColumnas);
        $objPHPExcel->getActiveSheet()->getStyle('A34:C34')->applyFromArray($estiloTituloColumnas);

        
	$objPHPExcel->getActiveSheet()->getStyle('a4:i23')->applyFromArray($estiloTituloColumnas2);
	$objPHPExcel->getActiveSheet()->getStyle('a25:i33')->applyFromArray($estiloTituloColumnas2);
	$objPHPExcel->getActiveSheet()->getStyle('a35:i51')->applyFromArray($estiloTituloColumnas2);
	
	
    $objPHPExcel->getActiveSheet()->getStyle('E5:i51')->applyFromArray($estiloTituloColumnas3);
	$objPHPExcel->getActiveSheet()->getStyle('A2:I2')->applyFromArray($estiloTituloReporte);
	//$objPHPExcel->getActiveSheet()->getStyle('A6:C6')->applyFromArray($estiloTituloColumnas);


	$objPHPExcel->getActiveSheet()->setCellValue('A2', 'INGRESO DIARIO DE VENTAS');
        
        $objPHPExcel->getActiveSheet()->setCellValue('D3', 'Registro de creditos y pagos');
        
       	
        
	    $objPHPExcel->getActiveSheet()->mergeCells('b1:E1');
        $objPHPExcel->getActiveSheet()->mergeCells('D3:I3');
	    $objPHPExcel->getActiveSheet()->mergeCells('A3:C3');
        $objPHPExcel->getActiveSheet()->mergeCells('A22:b22');
        $objPHPExcel->getActiveSheet()->mergeCells('A24:C24');
        $objPHPExcel->getActiveSheet()->mergeCells('A34:C34');
        $objPHPExcel->getActiveSheet()->mergeCells('A42:B42');
        $objPHPExcel->getActiveSheet()->mergeCells('A43:B43');
        $objPHPExcel->getActiveSheet()->mergeCells('A44:B44');
        $objPHPExcel->getActiveSheet()->mergeCells('A45:B45');
        $objPHPExcel->getActiveSheet()->mergeCells('A46:B46');
        $objPHPExcel->getActiveSheet()->mergeCells('A47:B47');
        $objPHPExcel->getActiveSheet()->mergeCells('A48:B48');
        $objPHPExcel->getActiveSheet()->mergeCells('A2:I2');
        

        
        // COLUMNAS
        $objPHPExcel->getActiveSheet()->setCellValue('A3', 'EFECTIVO');
        $objPHPExcel->getActiveSheet()->setCellValue('A22', 'Efectivo + Niquel');
        $objPHPExcel->getActiveSheet()->setCellValue('A24', 'DETALLE CHEQUES');
        $objPHPExcel->getActiveSheet()->setCellValue('A34', 'Facturas Anuladas');
        
        //$objPHPExcel->getActiveSheet()->setCellValue('B1', 'VENDEDOR:');
        $objPHPExcel->getActiveSheet()->setCellValue('G1', 'FECHA:');
        $objPHPExcel->getActiveSheet()->setCellValue('h1', date("Y/m/d") ); //$fecini);
        $objPHPExcel->getActiveSheet()->setCellValue('E4', 'Nombre');
        $objPHPExcel->getActiveSheet()->setCellValue('F4', 'Factura');
        $objPHPExcel->getActiveSheet()->setCellValue('G4', 'Contado');
        $objPHPExcel->getActiveSheet()->setCellValue('H4', 'Credito');
        $objPHPExcel->getActiveSheet()->setCellValue('I4', 'Abono');
        
        $objPHPExcel->getActiveSheet()->setCellValue('A4', 'Billetes');
        $objPHPExcel->getActiveSheet()->setCellValue('b4', 'Cantidad');
        $objPHPExcel->getActiveSheet()->setCellValue('c4', 'Total');
        $objPHPExcel->getActiveSheet()->setCellValue('A5', '100');
        $objPHPExcel->getActiveSheet()->setCellValue('A6', '50');
        $objPHPExcel->getActiveSheet()->setCellValue('A7', '20');
        $objPHPExcel->getActiveSheet()->setCellValue('A8', '10');
        $objPHPExcel->getActiveSheet()->setCellValue('A9', '5');
        $objPHPExcel->getActiveSheet()->setCellValue('A10', '1');
        $objPHPExcel->getActiveSheet()->setCellValue('a11', 'Total');        
        
       
        $objPHPExcel->getActiveSheet()->setCellValue('a13', 'Niquel');
        $objPHPExcel->getActiveSheet()->setCellValue('a14', '1');       
        $objPHPExcel->getActiveSheet()->setCellValue('a15', '0.50');
        $objPHPExcel->getActiveSheet()->setCellValue('a16', '0.25');
        $objPHPExcel->getActiveSheet()->setCellValue('a17', '0.10');
        $objPHPExcel->getActiveSheet()->setCellValue('a18', '0.05');
        $objPHPExcel->getActiveSheet()->setCellValue('a19', '0.01');
        $objPHPExcel->getActiveSheet()->setCellValue('a20', 'Total');
        
        $objPHPExcel->getActiveSheet()->setCellValue('a25', 'Nombre');
        $objPHPExcel->getActiveSheet()->setCellValue('b25', 'Banco');
        $objPHPExcel->getActiveSheet()->setCellValue('c25', 'Valor');
        
        $objPHPExcel->getActiveSheet()->setCellValue('a32', 'Total');
        $objPHPExcel->getActiveSheet()->setCellValue('a40', 'Total');
        
        $objPHPExcel->getActiveSheet()->setCellValue('a42', 'Liquidacion');
        $objPHPExcel->getActiveSheet()->setCellValue('a43', 'Efectivo');
        $objPHPExcel->getActiveSheet()->setCellValue('a44', 'Cheques');
        $objPHPExcel->getActiveSheet()->setCellValue('a45', 'Gastos');
        $objPHPExcel->getActiveSheet()->setCellValue('a46', 'Retencion');
        $objPHPExcel->getActiveSheet()->setCellValue('a47', 'Notas Credito');
        $objPHPExcel->getActiveSheet()->setCellValue('a48', 'Total Ingresos');
        
        $objPHPExcel->getActiveSheet()->setCellValue('a50', 'Ventas');
        $objPHPExcel->getActiveSheet()->setCellValue('a51', 'Pagos');
        
        
        $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(7);
        $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(10);
        $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(10);
        $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(3);
        $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(40);
        $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(13);
        $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(13);
        $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(13);
        $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(13);
        $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(13);
        

        
        
	//$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(50);
	//$objPHPExcel->getActiveSheet()->setCellValue('B6', 'NOMBRE CLIENTE');
	//$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(10);
	//$objPHPExcel->getActiveSheet()->setCellValue('C6', 'VALOR');
	
	//Recorremos los resultados de la consulta y los imprimimos
	//while($rows = $resultado->fetch_assoc()){
        //$this->new_message( "prueba de mensaje");
      $agentecod = $this->agente->codagente;
      $nomagente =  $this->agente->nombre." ".$this->agente->apellidos;     
      $objPHPExcel->getActiveSheet()->setCellValue('b1', "Vendedor:   ".$nomagente );
        $nregis=1;
	if ($resultado){
	foreach($resultado as $rows)	{
	    if ($rows['anulada'] == 0){
	        $objPHPExcel->getActiveSheet()->setCellValue('d'.$fila, $nregis);
		    $objPHPExcel->getActiveSheet()->setCellValue('E'.$fila, $rows['nombrecliente']);
		    $objPHPExcel->getActiveSheet()->setCellValue('F'.$fila, substr($rows['codigo'],-7));
	    
		    //$objPHPExcel->getActiveSheet()->setCellValue('C'.$fila, $rows['total']);		
		    $fila++; //Sumamos 1 para pasar a la siguiente fila
            $nregis++;
            //$this->new_message( " cliente procesado: ".$rows['nombrecliente']."   total: ".$rows['total']);
	    }
	}
	}
	if ($resultado1){
	
	foreach($resultado1 as $rows)	{
        $objPHPExcel->getActiveSheet()->setCellValue('d'.$fila, $nregis);
		$objPHPExcel->getActiveSheet()->setCellValue('E'.$fila, $rows['nombrecliente']);
		$fila++; 
        $nregis++;

	}
	}
	
	if($resultado2){
	foreach($resultado2 as $rows)	{
        $objPHPExcel->getActiveSheet()->setCellValue('d'.$fila, $nregis);
		$objPHPExcel->getActiveSheet()->setCellValue('E'.$fila, $rows['nombrecliente']);
		//$objPHPExcel->getActiveSheet()->setCellValue('F'.$fila, $rows['total']);
		$fila++;
        $nregis++;
  
	}
	}
	
	
	$fila = $fila-1;
	
	$objPHPExcel->getActiveSheet()->setSharedStyle($estiloInformacion, "A7:C".$fila);
	
	$filaGrafica = $fila+2;
	
	// definir origen de los valores
	$values = new PHPExcel_Chart_DataSeriesValues('Number', 'Productos!$D$7:$D$'.$fila);
	
	// definir origen de los rotulos
	$categories = new PHPExcel_Chart_DataSeriesValues('String', 'Productos!$B$7:$B$'.$fila);
	
	// definir  gr?fico
	$series = new PHPExcel_Chart_DataSeries(
	PHPExcel_Chart_DataSeries::TYPE_BARCHART, // tipo de gr?fico
	PHPExcel_Chart_DataSeries::GROUPING_CLUSTERED,
	array(0),
	array(),
	array($categories), // r?tulos das columnas
	array($values) // valores
	);
	$series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_COL);
	
	// inicializar gr?fico
	$layout = new PHPExcel_Chart_Layout();
	$plotarea = new PHPExcel_Chart_PlotArea($layout, array($series));
	
	// inicializar o gr?fico
	$chart = new PHPExcel_Chart('exemplo', null, null, $plotarea);
	
	// definir t?tulo do gr?fico
	$title = new PHPExcel_Chart_Title(null, $layout);
	$title->setCaption('Gr?fico PHPExcel Chart Class');
	
	// definir posiciondo gr?fico y t?tulo
	$chart->setTopLeftPosition('B'.$filaGrafica);
	$filaFinal = $filaGrafica + 10;
	$chart->setBottomRightPosition('E'.$filaFinal);
	$chart->setTitle($title);
	
	// adicionar o gr?fico ? folha
	//$objPHPExcel->getActiveSheet()->addChart($chart);
	
	$writer = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
	ob_end_clean();
	
	// incluir gr?fico
	$writer->setIncludeCharts(TRUE);
	$nomarch = $nomagente.$fecini.".xlsx";
/*	header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

	header("Content-Disposition: attachment;filename=".$nomarch.".xlsx");

	header('Cache-Control: max-age=0');
	
	$writer->save('php://output');      */
        

//$Writer = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');

// We'll be outputting an excel file
header('Content-type: application/vnd.ms-excel');
// It will be called file.xls
header('Content-Disposition: attachment; filename="'.$nomarch.'"');

header('Cache-Control: max-age=0');
ob_start();
$writer->save('php://output');

        
        
        

   }
   }


// --- listados de facturas por valor y numero de articulos
   private function listado_fact()
   { 
      $fecini =  date("y-m-d", strtotime($_POST['fechaini11']));
      $fecfin =  date("y-m-d", strtotime($_POST['fechafin11']));
      $periodo = $_POST['fechaini11']."*".$_POST['fechafin11'];
      $dagente = new agente();
      

      if ($fecini > $fecfin) 
        {
        $this->new_error_msg("Error: Fecha Final no puede ser menor que fecha de Inicio ".$_POST['fechafin1']);  
      }
       else
      {
      //$this->new_message("Fecha inicio ".$fecini. "  fecha fin ".$fecfin);
           
      // seleccion de todos los registros que entran en el periodo 
      // Con detalle de facturas de venta
      $valfacmin = 0;
      $valfacmax = 0;
      $numprod = 0;
      if (isset($_POST['numprodxfac'])) {
          $numprod = $_POST['numprodxfac'];
         
      }else{
        $this->new_error_msg('No hay producto ');
      }


      if(isset($_POST['valfacmin'])) {
        if(isset($_POST['valfacmax'])) {
            $valfacmin = $_POST['valfacmin'];
            $valfacmax = $_POST['valfacmax'];
        }
      }
      $sql_tot = "";
      if($valfacmin < $valfacmax){
        $sql_tot = " and total between ".$valfacmin." and ".$valfacmax;
      }

      $agentecod = $this->agentecod; //$this->agente->codagente;
      if($agentecod > 0 ) {
        $sql_tot .= " and codvendedor = '".$agentecod."'";  
      }
         $resultado = $this->db->select("SELECT nombrecliente, total, anulada,codigo, idfactura, codagente "
                 . "FROM facturascli "
                 . "WHERE fecha between '".$fecini."' and '".$fecfin."' "
                 . $sql_tot." ;");

         
      
 //*                
           
         
    $fila = 4; //Establecemos en que fila inciara a imprimir los datos    
    $gdImage = imagecreatefrompng('images/logo.png');//Logotipo
    
    //Objeto de PHPExcel
    $objPHPExcel  = new PHPExcel();
    
    //Propiedades de Documento
    $objPHPExcel->getProperties()->setCreator("John Lima")->setDescription("Liquidacion de Facturas");
    
    //Establecemos la pesta?a activa y nombre a la pesta?a
    $objPHPExcel->setActiveSheetIndex(0);
    $objPHPExcel->getActiveSheet()->setTitle("facturas");
    
    $objDrawing = new PHPExcel_Worksheet_MemoryDrawing();
    $objDrawing->setName('Logotipo');
    $objDrawing->setDescription('Logotipo');
    $objDrawing->setHeight(100);
    $objDrawing->setCoordinates('A1');
    $objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
    
    
    $estiloTituloReporte = array(
    'font' => array(
    'name'      => 'Arial',
    'bold'      => true,
    'italic'    => false,
    'strike'    => false,
    'size' =>13
    ),
    'fill' => array(
    'type'  => PHPExcel_Style_Fill::FILL_SOLID
    ),
    'borders' => array(
    'allborders' => array(
    'style' => PHPExcel_Style_Border::BORDER_THIN
    )
    ),
    'alignment' => array(
    'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
    'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER
    )
    );
    
    $estiloTituloColumnas = array(
    'font' => array(
    'name'  => 'Arial',
    'bold'  => true,
    'size' =>10,
    'color' => array(
    'rgb' => 'FFFFFF'
    )
    ),
    'fill' => array(
    'type' => PHPExcel_Style_Fill::FILL_SOLID,
    'color' => array('rgb' => '538DD5')
    ),
    'borders' => array(
    'allborders' => array(
    'style' => PHPExcel_Style_Border::BORDER_THIN
    )
    ),
    'alignment' =>  array(
    'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
    'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
    )
    );

     $estiloTituloColumnas2 = array(
    'font' => array(
    'name'  => 'Arial',
    'bold'  => true,
    'size' =>9,
    'color' => array(
    'rgb' => '000000'
    )
    ),
    'fill' => array(
    'type' => PHPExcel_Style_Fill::FILL_SOLID
    ),
    'borders' => array(
    'allborders' => array(
    'style' => PHPExcel_Style_Border::BORDER_THIN
    )
    ),
    'alignment' =>  array(
    'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
    'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
    )
    );
                
$estiloTituloColumnas3 = array(
    'font' => array(
    'name'  => 'Calibri',
    'bold'  => false,
    'size' =>13,
    'color' => array(
    'rgb' => '000000'
    )
    ),
    'fill' => array(
    'type' => PHPExcel_Style_Fill::FILL_SOLID
    ),
    'borders' => array(
    'allborders' => array(
    'style' => PHPExcel_Style_Border::BORDER_THIN
    )
    ),
    'alignment' =>  array(
    'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_LEFT,
    'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
    )
    );                
                
                
   
        
        
    $estiloInformacion = new PHPExcel_Style();
    $estiloInformacion->applyFromArray( array(
    'font' => array(
    'name'  => 'Arial',
    'bold'  => false,
    'size' =>8,
    'color' => array(
    'rgb' => '000000'
    )
    ),
    'fill' => array(
    'type'  => PHPExcel_Style_Fill::FILL_SOLID
    ),
    'borders' => array(
    'allborders' => array(
    'style' => PHPExcel_Style_Border::BORDER_THIN
    )
    ),
    'alignment' =>  array(
    'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
    'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
    )
    ));

    $estiloInformacion1 = new PHPExcel_Style();
    $estiloInformacion1->applyFromArray( array(
    'font' => array(
    'name'  => 'Arial',
    'bold'  => false,
    'size' =>8,
    'color' => array(
    'rgb' => '000000'
    )
    ),
    'fill' => array(
    'type'  => PHPExcel_Style_Fill::FILL_SOLID
    ),
    'borders' => array(
    'allborders' => array(
    'style' => PHPExcel_Style_Border::BORDER_THIN
    )
    ),
    'alignment' =>  array(
    'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_LEFT,
    'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
    )
    ));
    $estiloInformacion2 = new PHPExcel_Style();
    $estiloInformacion2->applyFromArray( array(
    'font' => array(
    'name'  => 'Arial',
    'bold'  => false,
    'size' =>8,
    'color' => array(
    'rgb' => '000000'
    )
    ),
    'fill' => array(
    'type'  => PHPExcel_Style_Fill::FILL_SOLID
    ),
    'borders' => array(
    'allborders' => array(
    'style' => PHPExcel_Style_Border::BORDER_THIN
    )
    ),
    'alignment' =>  array(
    'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_RIGHT,
    'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
    )
    ));
        for ($i = 1; $i <= 51; $i++) {
            $objPHPExcel->getActiveSheet()->getRowDimension($i)->setRowHeight(13);
        }
        
        $objPHPExcel->getActiveSheet()->getStyle('A3:E3')->applyFromArray($estiloTituloColumnas);
        $objPHPExcel->getActiveSheet()->setCellValue('A2', 'FACTURAS POR VALORES Y NUMERO DE ITEMS ');
        
       // $objPHPExcel->getActiveSheet()->setCellValue('D3', 'Registro de creditos y pagos');
        $objPHPExcel->getActiveSheet()->mergeCells('b1:E1');
        $objPHPExcel->getActiveSheet()->mergeCells('A2:C2');
        

        //$objPHPExcel->getActiveSheet()->setCellValue('B1', 'VENDEDOR:');
        $objPHPExcel->getActiveSheet()->setCellValue('D1', 'FECHA:');
        $objPHPExcel->getActiveSheet()->setCellValue('E1', date("Y/m/d") ); //$fecini);
        $objPHPExcel->getActiveSheet()->setCellValue('A3', 'ORD.');
        $objPHPExcel->getActiveSheet()->setCellValue('B3', 'NOMBRE CLIENTE');
        $objPHPExcel->getActiveSheet()->setCellValue('C3', 'CODIGO');
        $objPHPExcel->getActiveSheet()->setCellValue('D3', 'VALOR');
        $objPHPExcel->getActiveSheet()->setCellValue('E3', 'Nro.ITEMS');
        $objPHPExcel->getActiveSheet()->setCellValue('F3', '');
        
        $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(8);
        $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(40); // CLIENTE
        $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(13); // CODIGO DE FACTURA
        $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(13); // VALOR
        $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(13); // # FACTURAS
        $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(0); // # FACTURAS
    //Recorremos los resultados de la consulta y los imprimimos
    //while($rows = $resultado->fetch_assoc()){
        //$this->new_message( "prueba de mensaje");
        if($this->agente){
            $agentecod = $this->agente->codagente;
            $nomagente =  $this->agente->nombre." ".$this->agente->apellidos;           
        }else{
            $nomagente = "Todos";
        }
      
      $objPHPExcel->getActiveSheet()->setCellValue('b1', "Vendedor:   ".$nomagente );
        $nregis=1;
    if ($resultado){
    foreach($resultado as $rows)    {
        if ($rows['anulada'] == 0){
            $nrg = $this->db->select("select count(*) as contador from lineasfacturascli where idfactura=". $rows['idfactura'].";");
            
            if($nrg){
                foreach ($nrg as $k) {
                    $registros = $k['contador'];
                    if($numprod == 0 ){
                        $objPHPExcel->getActiveSheet()->setCellValue('A'.$fila, $nregis);
                        $objPHPExcel->getActiveSheet()->setCellValue('B'.$fila, $rows['nombrecliente']);
                        $objPHPExcel->getActiveSheet()->setCellValue('C'.$fila, substr($rows['codigo'],-7));
                        $objPHPExcel->getActiveSheet()->setCellValue('D'.$fila, $rows['total']);
                        $objPHPExcel->getActiveSheet()->setCellValue('E'.$fila, $registros);
                        $lagente = $dagente->get($rows['codagente']);
                        $nbre = $lagente->nombre." ".$lagente->apellidos;
                        $objPHPExcel->getActiveSheet()->setCellValue('F'.$fila, $nbre);
                        $fila++; //Sumamos 1 para pasar a la siguiente fila
                         $nregis++;
                    }else{
                        if($numprod == $registros ){
                            $objPHPExcel->getActiveSheet()->setCellValue('A'.$fila, $nregis);
                            $objPHPExcel->getActiveSheet()->setCellValue('B'.$fila, $rows['nombrecliente']);
                            $objPHPExcel->getActiveSheet()->setCellValue('C'.$fila, substr($rows['codigo'],-7));
                            $objPHPExcel->getActiveSheet()->setCellValue('D'.$fila, $rows['total']);
                            $objPHPExcel->getActiveSheet()->setCellValue('E'.$fila, $registros);  
                            $lagente = $dagente->get($rows['codagente']);
                            $nbre = $lagente->nombre." ".$lagente->apellidos;
                            $objPHPExcel->getActiveSheet()->setCellValue('F'.$fila, $nbre);
                            $fila++; //Sumamos 1 para pasar a la siguiente fila
                             $nregis++;
                        }
                    }
                }
            }
            
            
            

            

            
           
            
        }
    }
    }

    

    
    
    $fila = $fila-1;
    
    $objPHPExcel->getActiveSheet()->setSharedStyle($estiloInformacion, "A4:A".$fila);
    $objPHPExcel->getActiveSheet()->setSharedStyle($estiloInformacion, "C4:C".$fila);
    $objPHPExcel->getActiveSheet()->setSharedStyle($estiloInformacion, "E4:E".$fila);
    $objPHPExcel->getActiveSheet()->setSharedStyle($estiloInformacion1, "B4:B".$fila);
    $objPHPExcel->getActiveSheet()->setSharedStyle($estiloInformacion2, "D4:D".$fila);
    $objPHPExcel->getActiveSheet()->setSharedStyle($estiloInformacion1, "F4:F".$fila);
    
    $filaGrafica = $fila+2;
    
    // definir origen de los valores
    $values = new PHPExcel_Chart_DataSeriesValues('Number', 'Productos!$D$7:$D$'.$fila);
    
    // definir origen de los rotulos
    $categories = new PHPExcel_Chart_DataSeriesValues('String', 'Productos!$B$7:$B$'.$fila);
    
    // definir  gr?fico
    $series = new PHPExcel_Chart_DataSeries(
    PHPExcel_Chart_DataSeries::TYPE_BARCHART, // tipo de gr?fico
    PHPExcel_Chart_DataSeries::GROUPING_CLUSTERED,
    array(0),
    array(),
    array($categories), // r?tulos das columnas
    array($values) // valores
    );
    $series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_COL);
    
    // inicializar gr?fico
    $layout = new PHPExcel_Chart_Layout();
    $plotarea = new PHPExcel_Chart_PlotArea($layout, array($series));
    
    // inicializar o gr?fico
    $chart = new PHPExcel_Chart('exemplo', null, null, $plotarea);
    
    // definir t?tulo do gr?fico
    $title = new PHPExcel_Chart_Title(null, $layout);
    $title->setCaption('Gráfico PHPExcel Chart Class');
    
    // definir posiciondo gr?fico y t?tulo
    $chart->setTopLeftPosition('B'.$filaGrafica);
    $filaFinal = $filaGrafica + 10;
    $chart->setBottomRightPosition('E'.$filaFinal);
    $chart->setTitle($title);
    
    // adicionar o gr?fico ? folha
    //$objPHPExcel->getActiveSheet()->addChart($chart);
    
    $writer = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    ob_end_clean();
    
    // incluir gr?fico
    $writer->setIncludeCharts(TRUE);
    $nomarch = $nomagente.$fecini.".xlsx";
/*  header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

    header("Content-Disposition: attachment;filename=".$nomarch.".xlsx");

    header('Cache-Control: max-age=0');
    
    $writer->save('php://output');      */
       

//*

//$Writer = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');

// We'll be outputting an excel file
header('Content-type: application/vnd.ms-excel');
// It will be called file.xls
header('Content-Disposition: attachment; filename="'.$nomarch.'"');

header('Cache-Control: max-age=0');
ob_start();
$writer->save('php://output');

//*/
   }
   }   
// ---------------------------------------------------------   
    private function buscar_referencia()
    {
        /// desactivamos la plantilla HTML
        $this->template = FALSE;

        $articulo = new articulo();
        $json = array();
        foreach ($articulo->search($_REQUEST['buscar_referencia']) as $art) {
            $json[] = array('value' => $art->referencia . ' ' . $art->descripcion(60), 'data' => $art->referencia);
        }

        header('Content-Type: application/json');
        echo json_encode(array('query' => $_REQUEST['buscar_referencia'], 'suggestions' => $json));
    }

    private function guarda_imprimir()     // generar un imprime para formato ales con este de ejemplo
    {
      
    $nombre_archivo = $this->rutacsv."sqlventxvdr.csv"; 
    $aDatos = array($this->paraimpre, $this->vendedores, $this->fecfin, $this->fecini,$this->estadotp);
    // Abrimos el archivo (si existe será sobreescrito):
    $archivo = fopen( $nombre_archivo, "w+b" );
    //fputcsv( $archivo, split(";", $linea), ";" );
    fputcsv( $archivo, $aDatos, ";" );
    fclose( $archivo );

/*     
        if(file_exists($nombre_archivo))
        {
            if (!unlink($nombre_archivo)){
                //si no puede ser muestro un mensaje 🙂
                echo 'no se pudo borrar el archivo :'.$nombre_archivo;
            }else{
                $mensaje = "El Archivo $nombre_archivo se ha eliminado";
                echo $mensaje."<br>";
            }
        }
     
        else
        {
            $mensaje = "El Archivo $nombre_archivo se ha creado";
            echo $mensaje."<br>";
        }
     
        if($archivo = fopen($nombre_archivo, "a"))
        {
            if(fwrite($archivo, $this->paraimpre))
            {
                echo "Si"."<br>";
            }
            else
            {
                echo "No";
            }
     
            fclose($archivo);
        }
*/
    }    

     private function imprimir()
    {
      $nombre_archivo = $this->rutacsv."sqlventxvdr.csv"; 
      $this->fecininom =  date("y-m-d", strtotime($_POST['fechaini3']));
      $fechahas='';
      $query='';

        if(file_exists($nombre_archivo))
        {
        $archivo = fopen( $nombre_archivo, "rb" );
        $aDatos = fgetcsv( $archivo,0,";" );
        // Volvemos a situar el puntero al principio del archivo:
           fseek($archivo, 0);
          // Recorremos el archivo completo:
           $cadena2 = fread($archivo, filesize($this->rutacsv."sqlventxvdr.csv"));  
           //$this->new_message(" cadena ".$cadena2);
           $sw=1;

          for ($i=0;$i < strlen($cadena2);$i++)    
              {   

                  $c  = substr($cadena2,$i,1);
                  if ($sw==1){
                    if ($c != ";"){
                      if ($c != '"'){
                        $query    .= substr($cadena2,$i,1);
                      }
                    }else{
                      $i++;
                      $c  = substr($cadena2,$i,1);
                      $sw=2;
                    }
                    }
                    

                  if ($sw==2){
                    if ($c != ";"){
                      $agentes    .= substr($cadena2,$i,1);
                    }else{  
                      $i++;
                      $c  = substr($cadena2,$i,1);
                      $sw=3;
                    }
                  }

                  if ($sw==3){
                    if ($c != ";"){
                      $fechahas    .= substr($cadena2,$i,1);
                    }else{  
                      $i++;
                      $c  = substr($cadena2,$i,1);
                      $sw=4;
                    }
                  }
                  if ($sw==4){
                    if ($c != ";"){
                      $fechades    .= substr($cadena2,$i,1);
                    }else{  
                      $i++;
                      $c  = substr($cadena2,$i,1);
                      $sw=5;
                    }
                  }
                
              }  

          $fechasreporte = "Fecha reporte:  desde "."20".$fechades." Hasta "."20".$fechahas;
          fclose( $archivo );
          //$this->new_message("  sql ".$query);   
          $creavista = $this->db->exec($query);
          $this->resultadoven = $this->db->select("select  nombre, referen, sum(cantid1) cantid, sum(pvptota1) "
           . " pvptota  from tempVentas group by nombre, referen;");
          $resultado = $this->resultadoven;
          // agentes
          $nombreag = '';
          $data_age = $this->db->select("select codagente, nombre, apellidos from agentes where codagente in(".$agentes.");");
          
          if (is_array($data_age))
          {
            foreach($data_age as $alm)
             {
                //$rucalmacen = ($alm['cifnif']);   
                $nombreag .= ($alm['nombre']." ".$alm['apellidos']." - ");   
                //$direccionalma = ($alm['direccion']);   
               //. $contacto."  nombre ".$nombre); 
             }
          }else 
            {
             $nombreag = "Empresa no definida";
            }


     

/*
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
*/

        $data_alm = $this->db->select("SELECT administrador , nombre, direccion, cifnif FROM empresa WHERE id=1 ;");
        if (is_array($data_alm))
        {
          foreach($data_alm as $alm)
           {
              $rucalmacen = ($alm['cifnif']);   
              $nombree = ($alm['nombre']);   
              $direccionalma = ($alm['direccion']);   
             //$this->new_message("datos almacen ". $contacto."  nombre ".$nombre); 
           }
        }else 
          {
           $nombree = "Empresa no definida";
          }

          $fila = 5; //Establecemos en que fila inciara a imprimir los datos 
                 
          $fila = 5; //Establecemos en que fila inciara a imprimir los datos    
          $gdImage = imagecreatefrompng('images/logo.png');//Logotipo
          
          //Objeto de PHPExcel
          $objPHPExcel  = new PHPExcel();
          
          //Propiedades de Documento
          $objPHPExcel->getProperties()->setCreator("jolyfact")->setDescription("Detalle de ventas por vendedor");
          
          //Establecemos la pesta?a activa y nombre a la pesta?a
          $objPHPExcel->setActiveSheetIndex(0);
          $objPHPExcel->getActiveSheet()->setTitle("Ventas por vendedor");
          
          $objDrawing = new PHPExcel_Worksheet_MemoryDrawing();
          $objDrawing->setName('Logotipo');
          $objDrawing->setDescription('Logotipo');
          //$objDrawing->setImageResource($gdImage);
          //$objDrawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG);
          //$objDrawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT);
          $objDrawing->setHeight(100);
          $objDrawing->setCoordinates('A1');
          $objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
          
          
          $estiloTituloReporte = array(
            'font' => array(
          'name'      => 'Arial',
          'bold'      => true,
          'italic'    => false,
          'strike'    => false,
          'size' =>13
            ),
            'fill' => array(
          'type'  => PHPExcel_Style_Fill::FILL_SOLID
          ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' => array(
          'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );
          
          $estiloTituloColumnas = array(
            'font' => array(
          'name'  => 'Arial',
          'bold'  => true,
          'size' =>11,
          'color' => array(
          'rgb' => 'FFFFFF'
          )
            ),
            'fill' => array(
          'type' => PHPExcel_Style_Fill::FILL_SOLID,
          'color' => array('rgb' => '538DD5')
            ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );

             $estiloTituloColumnas2 = array(
            'font' => array(
          'name'  => 'Arial',
          'bold'  => true,
          'size' =>9,
          'color' => array(
          'rgb' => '000000'
          )
            ),
            'fill' => array(
          'type' => PHPExcel_Style_Fill::FILL_SOLID
            ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );
                        
        $estiloTituloColumnas3 = array(
            'font' => array(
          'name'  => 'Calibri',
          'bold'  => false,
          'size' =>13,
          'color' => array(
          'rgb' => '000000'
          )
            ),
            'fill' => array(
          'type' => PHPExcel_Style_Fill::FILL_SOLID
            ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_LEFT,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );                
                        
                        
           
                
                
          $estiloInformacion = new PHPExcel_Style();
          $estiloInformacion->applyFromArray( array(
            'font' => array(
          'name'  => 'Arial',
          'color' => array(
          'rgb' => '000000'
          )
            ),
            'fill' => array(
          'type'  => PHPExcel_Style_Fill::FILL_SOLID
          ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
          'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          ));
          for ($i = 1; $i <= 100; $i++) {     
              $objPHPExcel->getActiveSheet()->getRowDimension($i)->setRowHeight(20);
          }
          // ACHO DE CELDAS
          $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(7);
          $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);
          $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(12);
          $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12);
          $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12);
          $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(12);
          $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(12);
          $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(12);

          //   COMBINAR CELDAS
          $objPHPExcel->getActiveSheet()->mergeCells('A1:F1');  // para el titulo nombre empresa
          $objPHPExcel->getActiveSheet()->mergeCells('A3:H3');  // CONCEPTO DEL REPORTE
          $objPHPExcel->getActiveSheet()->mergeCells('A2:H2');  // TITULO DEL REPORTE
          $objPHPExcel->getActiveSheet()->mergeCells("c4:f4"); 
          /*for ($i = 4; $i <= 100; $i++) {  
              $objPHPExcel->getActiveSheet()->mergeCells("C".$i.":F".$i);                        
          } */               

          // FORMATO DE CELDAS
          $objPHPExcel->getActiveSheet()->getStyle('A1:F1')->applyFromArray($estiloTituloReporte);
          $objPHPExcel->getActiveSheet()->getStyle('A2:H2')->applyFromArray($estiloTituloReporte);      
          $objPHPExcel->getActiveSheet()->getStyle('A3:H3')->applyFromArray($estiloTituloColumnas2);
                
          $objPHPExcel->getActiveSheet()->getStyle('A4:H4')->applyFromArray($estiloTituloColumnas);
          //$objPHPExcel->getActiveSheet()->getStyle('B5:C51')->applyFromArray($estiloTituloColumnas3);
          
          // TITULOS Y TEXTOS PREINGRESADOS FIJOS
          $objPHPExcel->getActiveSheet()->setCellValue('G1', 'FECHA:');
          $objPHPExcel->getActiveSheet()->setCellValue('H1', date("Y/m/d") ); //$fecini);
          $objPHPExcel->getActiveSheet()->setCellValue('A1', $nombree);
          $objPHPExcel->getActiveSheet()->setCellValue('A2', 'VENTAS POR VENDEDOR - PROVEEDOR 1');
          $objPHPExcel->getActiveSheet()->setCellValue('A3', 'Ventas por vendedor - proveedor y por fechas');
          $objPHPExcel->getActiveSheet()->setCellValue('A4', 'ORD.');      
          $objPHPExcel->getActiveSheet()->setCellValue('B4', 'CODIGO');
          $objPHPExcel->getActiveSheet()->setCellValue('C4', 'DESCRIPCION ARTICULO');
          $objPHPExcel->getActiveSheet()->setCellValue('G4', 'CANTIDAD');
          $objPHPExcel->getActiveSheet()->setCellValue('H4', 'VALOR');
                
          //$agentecod = $this->agente->codagente;
          //$nomagente =  $this->agente->nombre." ".$this->agente->apellidos;     
          //$objPHPExcel->getActiveSheet()->setCellValue('b1', "Vendedor:   ".$nomagente );
          $totventas = 0;
          $nregis=1;
          if ($resultado){
          foreach($resultado as $rows)  {
                $objPHPExcel->getActiveSheet()->mergeCells("c".$fila.":f".$fila); 
                $objPHPExcel->getActiveSheet()->setCellValue('A'.$fila, $nregis);
                $objPHPExcel->getActiveSheet()->setCellValue('B'.$fila, $rows['referen']);
                $objPHPExcel->getActiveSheet()->setCellValue('C'.$fila, $rows['nombre']);
                $objPHPExcel->getActiveSheet()->setCellValue('G'.$fila, $rows['cantid']);
                $objPHPExcel->getActiveSheet()->setCellValue('H'.$fila, $rows['pvptota']);
                $totventas = $totventas + $rows['pvptota'];
                $fila++; //Sumamos 1 para pasar a la siguiente fila
                $nregis++;
          }
          }
          

          $objPHPExcel->getActiveSheet()->setCellValue('H'.$fila, $totventas);
          //$objPHPExcel->getActiveSheet()->mergeCells("a".$fila.":h".$fila); 
          $fila ++; 
          $objPHPExcel->getActiveSheet()->mergeCells("a".$fila.":h".$fila); 
          $objPHPExcel->getActiveSheet()->setCellValue('A'.$fila, "Vendedor(es):  ".$nombreag);
          $fila ++;           
          $objPHPExcel->getActiveSheet()->mergeCells("a".$fila.":h".$fila); 
          $objPHPExcel->getActiveSheet()->setCellValue('A'.$fila, $fechasreporte);
          
   /*       
          $fila = $fila-1;
          //$objPHPExcel->getActiveSheet()->setSharedStyle($estiloInformacion, "A7:C".$fila);
          $filaGrafica = $fila+2;
          // definir origen de los valores
          $values = new PHPExcel_Chart_DataSeriesValues('Number', 'Productos!$D$7:$D$'.$fila);
          // definir origen de los rotulos
          $categories = new PHPExcel_Chart_DataSeriesValues('String', 'Productos!$B$7:$B$'.$fila);
          // definir  gr?fico
          $series = new PHPExcel_Chart_DataSeries(
          PHPExcel_Chart_DataSeries::TYPE_BARCHART, // tipo de gr?fico
          PHPExcel_Chart_DataSeries::GROUPING_CLUSTERED,
          array(0),
          array(),
          array($categories), // r?tulos das columnas
          array($values) // valores
          );
          $series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_COL);
          
          // inicializar gr?fico
          $layout = new PHPExcel_Chart_Layout();
          $plotarea = new PHPExcel_Chart_PlotArea($layout, array($series));
          
          // inicializar o gr?fico
          $chart = new PHPExcel_Chart('exemplo', null, null, $plotarea);
          */
          // definir t?tulo do gr?fico
          $title = new PHPExcel_Chart_Title(null, $layout);
          $title->setCaption('Grafico PHPExcel Chart Class');
          
          // definir posiciondo gr?fico y t?tulo
          //$chart->setTopLeftPosition('B'.$filaGrafica);
          //$filaFinal = $filaGrafica + 10;
          //$chart->setBottomRightPosition('E'.$filaFinal);
          //$chart->setTitle($title);
          
          $writer = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
          ob_end_clean();
          //$this->new_message( "fecha nombre ".$this->fecininom);
          // incluir gr?fico
          $writer->setIncludeCharts(TRUE);
          $dateFormat = new DateTime(); // Fecha actual joly
          $stringDate = $dateFormat->format(DATE_ATOM);
          $nomarch = "Ventas-".$stringDate.".xlsx";

        // We'll be outputting an excel file
        header('Content-type:application/vnd.ms-excel');
        // It will be called file.xls
        header('Content-Disposition:attachment; filename="'.$nomarch.'"');

        header('Cache-Control:max-age=0');
        ob_start();
        $writer->save('php://output');

        }else
        {
            $mensaje = "El Archivo $nombre_archivo no existe";
            //$this->new_message( $mensaje."<br>");
        }
    
        

    }

    // imprimir formato ALES
    private function imprimir_formato_ales()
    {
        
      $nombre_archivo = $this->rutacsv."sqlventxvdr.csv"; 
 
      if(file_exists($nombre_archivo))
      {  
      $this->fecininom =  date("y-m-d", strtotime($_POST['fechaini6']));
      
      $fechahas='';
      $fechades='';
      $query='';
      $agentes='';
      $estadotp='';
        
        $archivo = fopen( $nombre_archivo, "rb" );
        $aDatos = fgetcsv( $archivo,0,";" );
        //Volvemos a situar el puntero al principio del archivo:
        fseek($archivo, 0);
        //  Recorremos el archivo completo:
        $cadena2 = fread($archivo, filesize($this->rutacsv."sqlventxvdr.csv"));  
        //$this->new_error_msg(" cadena ".$cadena2);
        $sw=1;

          for ($i=0;$i < strlen($cadena2);$i++)    
              {   

                  $c  = substr($cadena2,$i,1);
                  if ($sw==1){
                    if ($c != ";"){
                      if ($c != '"'){
                        $query    .= substr($cadena2,$i,1);
                      }
                    }else{
                      $i++;
                      $c  = substr($cadena2,$i,1);
                      $sw=2;
                    }
                    }
                    

                  if ($sw==2){
                    if ($c != ";"){
                      $agentes    .= substr($cadena2,$i,1);
                    }else{  
                      $i++;
                      $c  = substr($cadena2,$i,1);
                      $sw=3;
                    }
                  }

                  if ($sw==3){
                    if ($c != ";"){
                      $fechahas    .= substr($cadena2,$i,1);
                    }else{  
                      $i++;
                      $c  = substr($cadena2,$i,1);
                      $sw=4;
                    }
                  }
                  if ($sw==4){
                    if ($c != ";"){
                      $fechades    .= substr($cadena2,$i,1);
                    }else{  
                      $i++;
                      $c  = substr($cadena2,$i,1);
                      $sw=5;
                    }
                  }
                  if ($sw==5){
                    if ($c != ";"){
                      $estadotp    .= substr($cadena2,$i,1);
                    }else{  
                      $i++;
                      $c  = substr($cadena2,$i,1);
                      $sw=6;
                    }
                  }  
              }  

            $estadotp = trim($estadotp);

          $fechasreporte = "Fecha reporte:  desde "."20".$fechades." Hasta "."20".$fechahas;

          $creavista = $this->db->exec($query);

          $this->resultadoven = $this->db->select("select * from tempVentas ORDER BY nomagente, fecha ;"); 
           $resultado = $this->resultadoven;
          // agentes
          $nombreag = '';
          $data_age = $this->db->select("select codagente, nombre, apellidos from agentes where codagente in(".$agentes.");");
          
          if (is_array($data_age))
          {
            foreach($data_age as $alm)
             {
                $nombreag .= ($alm['nombre']." ".$alm['apellidos']." - ");   
             }
          }else 
            {
             $nombreag = "Todos";
            }
     
//*
        $data_alm = $this->db->select("SELECT administrador , nombre, direccion, cifnif FROM empresa WHERE id=1 ;");
        if (is_array($data_alm))
        {
          foreach($data_alm as $alm)
           {
              $rucalmacen = ($alm['cifnif']);   
              $nombree = ($alm['nombre']);   
              $direccionalma = ($alm['direccion']);   
             //$this->new_message("datos almacen ". $contacto."  nombre ".$nombre); 
           }
        }else 
          {
           $nombree = "Empresa no definida";
          }
//*
             
          $fila = 2; //Establecemos en que fila inciara a imprimir los datos    
          //$gdImage = imagecreatefrompng('images/logo.png');//Logotipo
          
          //Objeto de PHPExcel
          $objPHPExcel  = new PHPExcel();
          
          //Propiedades de Documento
          $objPHPExcel->getProperties()->setCreator("jolyfact")->setDescription("Detalle de ventas por vendedor");
          
          //Establecemos la pesta?a activa y nombre a la pesta?a
          $objPHPExcel->setActiveSheetIndex(0);
          $objPHPExcel->getActiveSheet()->setTitle("Ventas por vendedor");
          
          $objDrawing = new PHPExcel_Worksheet_MemoryDrawing();
          //$objDrawing->setName('Logotipo');
          //$objDrawing->setDescription('Logotipo');
          //$objDrawing->setImageResource($gdImage);
          //$objDrawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG);
          //$objDrawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT);
          $objDrawing->setHeight(100);
          $objDrawing->setCoordinates('A1');
          $objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
          
          
          $estiloTituloReporte = array(
            'font' => array(
          'name'      => 'Arial',
          'bold'      => true,
          'italic'    => false,
          'strike'    => false,
          'size' =>13
            ),
            'fill' => array(
          'type'  => PHPExcel_Style_Fill::FILL_SOLID
          ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' => array(
          'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );
          
          $estiloTituloColumnas = array(
            'font' => array(
          'name'  => 'Arial',
          'bold'  => true,
          'size' =>11,
          'color' => array(
          'rgb' => 'FFFFFF'
          )
            ),
            'fill' => array(
          'type' => PHPExcel_Style_Fill::FILL_SOLID,
          'color' => array('rgb' => '538DD5')
            ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );

             $estiloTituloColumnas2 = array(
            'font' => array(
          'name'  => 'Arial',
          'bold'  => true,
          'size' =>9,
          'color' => array(
          'rgb' => '000000'
          )
            ),
            'fill' => array(
          'type' => PHPExcel_Style_Fill::FILL_SOLID
            ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );
                        
        $estiloTituloColumnas3 = array(
            'font' => array(
          'name'  => 'Calibri',
          'bold'  => false,
          'size' =>13,
          'color' => array(
          'rgb' => '000000'
          )
            ),
            'fill' => array(
          'type' => PHPExcel_Style_Fill::FILL_SOLID
            ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_LEFT,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );                
                        
                        
           
                
                
          $estiloInformacion = new PHPExcel_Style();
          $estiloInformacion->applyFromArray( array(
            'font' => array(
          'name'  => 'Arial',
          'color' => array(
          'rgb' => '000000'
          )
            ),
            'fill' => array(
          'type'  => PHPExcel_Style_Fill::FILL_SOLID
          ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
          'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          ));
          for ($i = 1; $i <= 10000; $i++) {     
              $objPHPExcel->getActiveSheet()->getRowDimension($i)->setRowHeight(14);
          }


          // ACHO DE CELDAS
          $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(7);
          $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);
          $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(12);
          $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12);
          $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(45);
          $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(8);
          $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(12);
          $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(12);
          $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(12);
          $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(12);
          $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(12);
          

          if($estadotp == 'formatoales'){
              // TITULOS Y TEXTOS PREINGRESADOS FIJOS
              $objPHPExcel->getActiveSheet()->setCellValue('A1', '');    
              $objPHPExcel->getActiveSheet()->setCellValue('B1', 'FACTURA');  
              $objPHPExcel->getActiveSheet()->setCellValue('C1', 'FECHA DOC.');
              $objPHPExcel->getActiveSheet()->setCellValue('D1', 'PRODUCTO');
              $objPHPExcel->getActiveSheet()->setCellValue('E1', 'NOMBRE PRODUCTO');
              $objPHPExcel->getActiveSheet()->setCellValue('F1', 'CANTIDAD');
              $objPHPExcel->getActiveSheet()->setCellValue('G1', 'PRECIO UNITARIO');
              $objPHPExcel->getActiveSheet()->setCellValue('H1', 'PRECIO TOTAL');
              $objPHPExcel->getActiveSheet()->setCellValue('I1', 'I V A');
              $objPHPExcel->getActiveSheet()->setCellValue('J1', 'COSTO-COMPRA');
              $objPHPExcel->getActiveSheet()->setCellValue('K1', 'COSTO-TOTAL');
              $objPHPExcel->getActiveSheet()->setCellValue('L1', 'UTILIDAD');

              $totventas = 0;
              $nregis=1;
              if ($resultado){
              foreach($resultado as $rows)  {
                    $objPHPExcel->getActiveSheet()->setCellValue('A'.$fila, '');
                    $objPHPExcel->getActiveSheet()->setCellValue('B'.$fila, $rows['codigo']);
                    $objPHPExcel->getActiveSheet()->setCellValue('C'.$fila, $rows['fecha']);
                    $objPHPExcel->getActiveSheet()->setCellValue('D'.$fila, $rows['referen']);
                    $objPHPExcel->getActiveSheet()->setCellValue('E'.$fila, $rows['descri']);
                    $objPHPExcel->getActiveSheet()->setCellValue('F'.$fila, $rows['cantid1']);
                    $objPHPExcel->getActiveSheet()->setCellValue('G'.$fila, number_format($rows['pvpunit'], 2, '.', ''));
                    $objPHPExcel->getActiveSheet()->setCellValue('H'.$fila, number_format($rows['pvptot'], 2, '.', ''));
                    if($rows['iva'] > 0){
                        //$objPHPExcel->getActiveSheet()->setCellValue('I'.$fila, round($rows['pvptot'] * ($rows['iva']/100),2));
                        $objPHPExcel->getActiveSheet()->setCellValue('I'.$fila, number_format($rows['pvptot'] * ($rows['iva']/100), 2, '.', ''));
                    }else{ 
                        $objPHPExcel->getActiveSheet()->setCellValue('I'.$fila, '0' );
                    }

                    $objPHPExcel->getActiveSheet()->setCellValue('J'.$fila, number_format($rows['pvputilidad'], 3, '.', ''));
                    $objPHPExcel->getActiveSheet()->setCellValue('K'.$fila, number_format($rows['totalutilidad'], 2, '.', ''));
                    $objPHPExcel->getActiveSheet()->setCellValue('L'.$fila, number_format($rows['pvptot']  - $rows['totalutilidad'], 2, '.', ''));
                    
                    //$objPHPExcel->getActiveSheet()->setCellValue('L'.$fila, number_format($rows['pvptot'] + number_format($rows['pvptot'] * ($rows['iva']/100), 2, '.', '') - $rows['totalutilidad'], 2, '.', ''));


                    $fila++; //Sumamos 1 para pasar a la siguiente fila
                    $nregis++;
              }
              }
          }

          $fila ++; 
          $objPHPExcel->getActiveSheet()->mergeCells("a".$fila.":h".$fila); 
          $objPHPExcel->getActiveSheet()->setCellValue('A'.$fila, "Vendedor(es):  ".$nombreag);
          $fila ++;           
          $objPHPExcel->getActiveSheet()->mergeCells("a".$fila.":h".$fila); 
          $objPHPExcel->getActiveSheet()->setCellValue('A'.$fila, $fechasreporte);
          
      
          $writer = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
          ob_end_clean();
          $writer->setIncludeCharts(TRUE);
          
          $dateFormat = new DateTime(); // Fecha actual joly
          $stringDate = $dateFormat->format(DATE_ATOM);
          $nomarch = "COST-PVP-".$stringDate.".xlsx";

        // We'll be outputting an excel file
        header('Content-type:application/vnd.ms-excel');
        // It will be called file.xls
        header('Content-Disposition:attachment; filename="'.$nomarch.'"');

        header('Cache-Control:max-age=0');
        ob_start();
        $writer->save('php://output');
    //*/  
  
        }else
        {
            $mensaje = "El Archivo $nombre_archivo no existe";
        }  
    }

// impresion IMPACTADOS
    private function imprimir_impactados()
    {
        
      $nombre_archivo = $this->rutacsv."sqlventxvdr.csv"; 
 
      if(file_exists($nombre_archivo))
      {  
            
      $fechahas='';
      $fechades='';
      $query='';
      $agentes='';
      $estadotp='';
        
        $archivo = fopen( $nombre_archivo, "rb" );
        $aDatos = fgetcsv( $archivo,0,";" );
        //Volvemos a situar el puntero al principio del archivo:
        fseek($archivo, 0);
        //  Recorremos el archivo completo:
        $cadena2 = fread($archivo, filesize($this->rutacsv."sqlventxvdr.csv"));  
        //$this->new_error_msg(" cadena ".$cadena2);
        $sw=1;

          for ($i=0;$i < strlen($cadena2);$i++)    
              {   

                  $c  = substr($cadena2,$i,1);
                  if ($sw==1){
                    if ($c != ";"){
                      if ($c != '"'){
                        $query    .= substr($cadena2,$i,1);
                      }
                    }else{
                      $i++;
                      $c  = substr($cadena2,$i,1);
                      $sw=2;
                    }
                    }
                    

                  if ($sw==2){
                    if ($c != ";"){
                      $agentes    .= substr($cadena2,$i,1);
                    }else{  
                      $i++;
                      $c  = substr($cadena2,$i,1);
                      $sw=3;
                    }
                  }

                  if ($sw==3){
                    if ($c != ";"){
                      $fechahas    .= substr($cadena2,$i,1);
                    }else{  
                      $i++;
                      $c  = substr($cadena2,$i,1);
                      $sw=4;
                    }
                  }
                  if ($sw==4){
                    if ($c != ";"){
                      $fechades    .= substr($cadena2,$i,1);
                    }else{  
                      $i++;
                      $c  = substr($cadena2,$i,1);
                      $sw=5;
                    }
                  }
                  if ($sw==5){
                    if ($c != ";"){
                      $estadotp    .= substr($cadena2,$i,1);
                    }else{  
                      $i++;
                      $c  = substr($cadena2,$i,1);
                      $sw=6;
                    }
                  }  
              }  

      $estadotp = trim($estadotp);


          $fechasreporte = "Fecha reporte:  desde "."20".$fechades." Hasta "."20".$fechahas;
          //fclose( $archivo );
          //$this->new_message("  sql ".$query);   
          $creavista = $this->db->exec($query);

          $this->resultadoven = $this->db->select("select * from tempVentas ORDER BY nomagente, fecha ;"); 
//var_dump($this->resultadoven);
          //$this->resultadoven = $this->db->select("select nomagente, nombrecliente,direccion, nombre, referen, sum(cantid1) cantidad, sum(pvptota1) pvptota  from tempVentas ;"); 
          $resultado = $this->resultadoven;
          //var_dump($this->resultadoven);
          // agentes
          $nombreag = '';
          $data_age = $this->db->select("select codagente, nombre, apellidos from agentes where codagente in(".$agentes.");");
          
          if (is_array($data_age))
          {
            foreach($data_age as $alm)
             {
                //$rucalmacen = ($alm['cifnif']);   
                $nombreag .= ($alm['nombre']." ".$alm['apellidos']." - ");   
                //$direccionalma = ($alm['direccion']);   
               //. $contacto."  nombre ".$nombre); 
             }
          }else 
            {
             $nombreag = "Todos";
            }
     

/*
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
*/
//*
        $data_alm = $this->db->select("SELECT administrador , nombre, direccion, cifnif FROM empresa WHERE id=1 ;");
        if (is_array($data_alm))
        {
          foreach($data_alm as $alm)
           {
              $rucalmacen = ($alm['cifnif']);   
              $nombree = ($alm['nombre']);   
              $direccionalma = ($alm['direccion']);   
             //$this->new_message("datos almacen ". $contacto."  nombre ".$nombre); 
           }
        }else 
          {
           $nombree = "Empresa no definida";
          }
//*
          $fila = 5; //Establecemos en que fila inciara a imprimir los datos 
                 
          $fila = 5; //Establecemos en que fila inciara a imprimir los datos    
          $gdImage = imagecreatefrompng('images/logo.png');//Logotipo
          
          //Objeto de PHPExcel
          $objPHPExcel  = new PHPExcel();
          
          //Propiedades de Documento
          $objPHPExcel->getProperties()->setCreator("jolyfact")->setDescription("Detalle de ventas por vendedor");
          
          //Establecemos la pesta?a activa y nombre a la pesta?a
          $objPHPExcel->setActiveSheetIndex(0);
          $objPHPExcel->getActiveSheet()->setTitle("Ventas por vendedor");
          
          $objDrawing = new PHPExcel_Worksheet_MemoryDrawing();
          $objDrawing->setName('Logotipo');
          $objDrawing->setDescription('Logotipo');
          //$objDrawing->setImageResource($gdImage);
          //$objDrawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG);
          //$objDrawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT);
          $objDrawing->setHeight(100);
          $objDrawing->setCoordinates('A1');
          $objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
          
          
          $estiloTituloReporte = array(
            'font' => array(
          'name'      => 'Arial',
          'bold'      => true,
          'italic'    => false,
          'strike'    => false,
          'size' =>13
            ),
            'fill' => array(
          'type'  => PHPExcel_Style_Fill::FILL_SOLID
          ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' => array(
          'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );
          
          $estiloTituloColumnas = array(
            'font' => array(
          'name'  => 'Arial',
          'bold'  => true,
          'size' =>11,
          'color' => array(
          'rgb' => 'FFFFFF'
          )
            ),
            'fill' => array(
          'type' => PHPExcel_Style_Fill::FILL_SOLID,
          'color' => array('rgb' => '538DD5')
            ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );

             $estiloTituloColumnas2 = array(
            'font' => array(
          'name'  => 'Arial',
          'bold'  => true,
          'size' =>9,
          'color' => array(
          'rgb' => '000000'
          )
            ),
            'fill' => array(
          'type' => PHPExcel_Style_Fill::FILL_SOLID
            ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );
                        
        $estiloTituloColumnas3 = array(
            'font' => array(
          'name'  => 'Calibri',
          'bold'  => false,
          'size' =>13,
          'color' => array(
          'rgb' => '000000'
          )
            ),
            'fill' => array(
          'type' => PHPExcel_Style_Fill::FILL_SOLID
            ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_LEFT,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );                
                        
                        
           
                
                
          $estiloInformacion = new PHPExcel_Style();
          $estiloInformacion->applyFromArray( array(
            'font' => array(
          'name'  => 'Arial',
          'color' => array(
          'rgb' => '000000'
          )
            ),
            'fill' => array(
          'type'  => PHPExcel_Style_Fill::FILL_SOLID
          ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
          'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          ));
          for ($i = 1; $i <= 10000; $i++) {     
              $objPHPExcel->getActiveSheet()->getRowDimension($i)->setRowHeight(14);
          }
          // ACHO DE CELDAS
          $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(7);
          $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);
          $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15);
          $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(15);
          $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(8);
          $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(7);
          $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(15);
          $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(15);
          $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(12);
          $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(0);

          //   COMBINAR CELDAS
          $objPHPExcel->getActiveSheet()->mergeCells('A1:H1');  // para el titulo nombre empresa
          $objPHPExcel->getActiveSheet()->mergeCells('A3:H3');  // CONCEPTO DEL REPORTE
          $objPHPExcel->getActiveSheet()->mergeCells('A2:H2');  // TITULO DEL REPORTE
          $objPHPExcel->getActiveSheet()->mergeCells('I2:J2');  // TITULO FECHA
          $objPHPExcel->getActiveSheet()->mergeCells('I3:J3');  // TITULO FECHA
          $objPHPExcel->getActiveSheet()->mergeCells("C4:H4");  // nombre vendedor 
          $objPHPExcel->getActiveSheet()->mergeCells("e4:f4");  // nombre cliente           
          $objPHPExcel->getActiveSheet()->mergeCells("g4:h4");  // direccion 
          $objPHPExcel->getActiveSheet()->mergeCells("i4:i4");  // producto
          $objPHPExcel->getActiveSheet()->mergeCells("j4:j4");  // cantidad
          // FORMATO DE CELDAS
          $objPHPExcel->getActiveSheet()->getStyle('A1:J1')->applyFromArray($estiloTituloReporte);
          $objPHPExcel->getActiveSheet()->getStyle('A2:I2')->applyFromArray($estiloTituloReporte);      
          $objPHPExcel->getActiveSheet()->getStyle('A3:I3')->applyFromArray($estiloTituloColumnas2);
          $objPHPExcel->getActiveSheet()->getStyle('I2:J3')->applyFromArray($estiloTituloReporte);            
          $objPHPExcel->getActiveSheet()->getStyle('A4:j4')->applyFromArray($estiloTituloColumnas);
          //$objPHPExcel->getActiveSheet()->getStyle('B5:C51')->applyFromArray($estiloTituloColumnas3);

            if($estadotp == 'impactados'){
              // TITULOS Y TEXTOS PREINGRESADOS FIJOS
                $objPHPExcel->getActiveSheet()->setCellValue('I2', 'FECHA:');
                $objPHPExcel->getActiveSheet()->setCellValue('I3', date("Y/m/d") ); //$fecini);
                $objPHPExcel->getActiveSheet()->setCellValue('A1', $nombree);
                $objPHPExcel->getActiveSheet()->setCellValue('A2', 'PUNTOS IMPACTADOS');
                $objPHPExcel->getActiveSheet()->setCellValue('A3', 'por vendedor - proveedor - fechas - producto');
                $objPHPExcel->getActiveSheet()->setCellValue('A4', 'ORD.');    
                $objPHPExcel->getActiveSheet()->setCellValue('B4', 'REFERENCIA');
                $objPHPExcel->getActiveSheet()->setCellValue('C4', 'DESCRIPCION');
                $objPHPExcel->getActiveSheet()->setCellValue('I4', '# CLIENTES');
                //$objPHPExcel->getActiveSheet()->setCellValue('J4', 'CANTIDAD');
                  
                //$agentecod = $this->agente->codagente;
                //$nomagente =  $this->agente->nombre." ".$this->agente->apellidos;     
                //$objPHPExcel->getActiveSheet()->setCellValue('b1', "Vendedor:   ".$nomagente );
                
                $totventas = 0;
                $nregis=1;
                if ($resultado){
                    foreach($resultado as $rows)  {
                        $objPHPExcel->getActiveSheet()->mergeCells("C".$fila.":H".$fila); 
                        $objPHPExcel->getActiveSheet()->mergeCells("e".$fila.":f".$fila);
                        $objPHPExcel->getActiveSheet()->mergeCells("g".$fila.":h".$fila);
                        $objPHPExcel->getActiveSheet()->mergeCells("i".$fila.":i".$fila);
                        //$objPHPExcel->getActiveSheet()->mergeCells("j".$fila.":j".$fila);
                        $objPHPExcel->getActiveSheet()->setCellValue('A'.$fila, $nregis);
                        $objPHPExcel->getActiveSheet()->setCellValue('B'.$fila, $rows['referencia']);
                        $objPHPExcel->getActiveSheet()->setCellValue('C'.$fila, $rows['descripcion']);
                        $objPHPExcel->getActiveSheet()->setCellValue('I'.$fila, $rows['numero_de_clientes']);
                        //$objPHPExcel->getActiveSheet()->setCellValue('J'.$fila, $rows['cantid1']);
                        $totventas = $totventas + $rows['numero_de_clientes'];
                        $fila++; //Sumamos 1 para pasar a la siguiente fila
                        $nregis++;
                    }
                }
            }
 
          $fila ++; 
          $objPHPExcel->getActiveSheet()->mergeCells("a".$fila.":h".$fila); 
          $objPHPExcel->getActiveSheet()->setCellValue('A'.$fila, "Vendedor(es):  ".$nombreag);
          $fila ++;           
          $objPHPExcel->getActiveSheet()->mergeCells("a".$fila.":h".$fila); 
          $objPHPExcel->getActiveSheet()->setCellValue('A'.$fila, $fechasreporte);
          

          // definir t?tulo do gr?fico
          $title = new PHPExcel_Chart_Title(null, $layout);
          $title->setCaption('Grafico PHPExcel Chart Class');
          
          
          $writer = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
          ob_end_clean();
          //$this->new_message( "fecha nombre ".$this->fecininom);
          // incluir gr?fico
          $writer->setIncludeCharts(TRUE);
          
          $dateFormat = new DateTime(); // Fecha actual joly
          $stringDate = $dateFormat->format(DATE_ATOM);
          $nomarch = "IMPACTADOS-".$stringDate.".xlsx";

        // We'll be outputting an excel file
        header('Content-type:application/vnd.ms-excel');
        // It will be called file.xls
        header('Content-Disposition:attachment; filename="'.$nomarch.'"');

        header('Cache-Control:max-age=0');
        ob_start();
        $writer->save('php://output');
            //*/  
  
        }else
        {
            $mensaje = "El Archivo $nombre_archivo no existe";
        }  
    }


//  impresion minerva --------------
     private function imprimir_minerva()
    {
        
        
      $nombre_archivo = $this->rutacsv."sqlventxvdr.csv"; 
      // $this->fecininom =  date("y-m-d", strtotime($_POST['fechaini3']));
      // $fechahas='';
      // $query='';  
      //$nombre_archivo = $this->rutacsv."sqlventminerva.csv"; 
      if(file_exists($nombre_archivo))
      {  
      $this->fecininom =  date("y-m-d", strtotime($_POST['fechaini6']));
      //$this->estadotp =  $_POST['estadotp'];
      
      $fechahas='';
      $fechades='';
      $query='';
      $agentes='';
      $estadotp='';

        
        $archivo = fopen( $nombre_archivo, "rb" );
        $aDatos = fgetcsv( $archivo,0,";" );
        //Volvemos a situar el puntero al principio del archivo:
          fseek($archivo, 0);
        //  Recorremos el archivo completo:
          $cadena2 = fread($archivo, filesize($this->rutacsv."sqlventxvdr.csv"));  
          //$this->new_error_msg(" cadena ".$cadena2);
           $sw=1;

          for ($i=0;$i < strlen($cadena2);$i++)    
              {   

                  $c  = substr($cadena2,$i,1);
                  if ($sw==1){
                    if ($c != ";"){
                      if ($c != '"'){
                        $query    .= substr($cadena2,$i,1);
                      }
                    }else{
                      $i++;
                      $c  = substr($cadena2,$i,1);
                      $sw=2;
                    }
                    }
                    

                  if ($sw==2){
                    if ($c != ";"){
                      $agentes    .= substr($cadena2,$i,1);
                    }else{  
                      $i++;
                      $c  = substr($cadena2,$i,1);
                      $sw=3;
                    }
                  }

                  if ($sw==3){
                    if ($c != ";"){
                      $fechahas    .= substr($cadena2,$i,1);
                    }else{  
                      $i++;
                      $c  = substr($cadena2,$i,1);
                      $sw=4;
                    }
                  }
                  if ($sw==4){
                    if ($c != ";"){
                      $fechades    .= substr($cadena2,$i,1);
                    }else{  
                      $i++;
                      $c  = substr($cadena2,$i,1);
                      $sw=5;
                    }
                  }
                  if ($sw==5){
                    if ($c != ";"){
                      $estadotp    .= substr($cadena2,$i,1);
                    }else{  
                      $i++;
                      $c  = substr($cadena2,$i,1);
                      $sw=6;
                    }
                  }  
              }  
//$this->new_error_msg('estado TIPO '.$estadotp."  query ".$query);
            $estadotp = trim($estadotp);


          $fechasreporte = "Fecha reporte:  desde "."20".$fechades." Hasta "."20".$fechahas;
          //fclose( $archivo );
          //$this->new_message("  sql ".$query);   
          $creavista = $this->db->exec($query);

          $this->resultadoven = $this->db->select("select * from tempVentas ORDER BY nomagente, fecha ;"); 
//var_dump($this->resultadoven);
          //$this->resultadoven = $this->db->select("select nomagente, nombrecliente,direccion, nombre, referen, sum(cantid1) cantidad, sum(pvptota1) pvptota  from tempVentas ;"); 
          $resultado = $this->resultadoven;
          //var_dump($this->resultadoven);
          // agentes
          $nombreag = '';
          $data_age = $this->db->select("select codagente, nombre, apellidos from agentes where codagente in(".$agentes.");");
          
          if (is_array($data_age))
          {
            foreach($data_age as $alm)
             {
                //$rucalmacen = ($alm['cifnif']);   
                $nombreag .= ($alm['nombre']." ".$alm['apellidos']." - ");   
                //$direccionalma = ($alm['direccion']);   
               //. $contacto."  nombre ".$nombre); 
             }
          }else 
            {
             $nombreag = "Todos";
            }
     

/*
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
*/
//*
        $data_alm = $this->db->select("SELECT administrador , nombre, direccion, cifnif FROM empresa WHERE id=1 ;");
        if (is_array($data_alm))
        {
          foreach($data_alm as $alm)
           {
              $rucalmacen = ($alm['cifnif']);   
              $nombree = ($alm['nombre']);   
              $direccionalma = ($alm['direccion']);   
             //$this->new_message("datos almacen ". $contacto."  nombre ".$nombre); 
           }
        }else 
          {
           $nombree = "Empresa no definida";
          }
//*
          $fila = 5; //Establecemos en que fila inciara a imprimir los datos 
                 
          $fila = 5; //Establecemos en que fila inciara a imprimir los datos    
          $gdImage = imagecreatefrompng('images/logo.png');//Logotipo
          
          //Objeto de PHPExcel
          $objPHPExcel  = new PHPExcel();
          
          //Propiedades de Documento
          $objPHPExcel->getProperties()->setCreator("jolyfact")->setDescription("Detalle de ventas por vendedor");
          
          //Establecemos la pesta?a activa y nombre a la pesta?a
          $objPHPExcel->setActiveSheetIndex(0);
          $objPHPExcel->getActiveSheet()->setTitle("Ventas por vendedor");
          
          $objDrawing = new PHPExcel_Worksheet_MemoryDrawing();
          $objDrawing->setName('Logotipo');
          $objDrawing->setDescription('Logotipo');
          //$objDrawing->setImageResource($gdImage);
          //$objDrawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG);
          //$objDrawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT);
          $objDrawing->setHeight(100);
          $objDrawing->setCoordinates('A1');
          $objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
          
          
          $estiloTituloReporte = array(
            'font' => array(
          'name'      => 'Arial',
          'bold'      => true,
          'italic'    => false,
          'strike'    => false,
          'size' =>13
            ),
            'fill' => array(
          'type'  => PHPExcel_Style_Fill::FILL_SOLID
          ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' => array(
          'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );
          
          $estiloTituloColumnas = array(
            'font' => array(
          'name'  => 'Arial',
          'bold'  => true,
          'size' =>11,
          'color' => array(
          'rgb' => 'FFFFFF'
          )
            ),
            'fill' => array(
          'type' => PHPExcel_Style_Fill::FILL_SOLID,
          'color' => array('rgb' => '538DD5')
            ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );

             $estiloTituloColumnas2 = array(
            'font' => array(
          'name'  => 'Arial',
          'bold'  => true,
          'size' =>9,
          'color' => array(
          'rgb' => '000000'
          )
            ),
            'fill' => array(
          'type' => PHPExcel_Style_Fill::FILL_SOLID
            ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );
                        
        $estiloTituloColumnas3 = array(
            'font' => array(
          'name'  => 'Calibri',
          'bold'  => false,
          'size' =>13,
          'color' => array(
          'rgb' => '000000'
          )
            ),
            'fill' => array(
          'type' => PHPExcel_Style_Fill::FILL_SOLID
            ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_LEFT,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );                
                        
                        
           
                
                
          $estiloInformacion = new PHPExcel_Style();
          $estiloInformacion->applyFromArray( array(
            'font' => array(
          'name'  => 'Arial',
          'color' => array(
          'rgb' => '000000'
          )
            ),
            'fill' => array(
          'type'  => PHPExcel_Style_Fill::FILL_SOLID
          ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
          'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          ));
          for ($i = 1; $i <= 10000; $i++) {     
              $objPHPExcel->getActiveSheet()->getRowDimension($i)->setRowHeight(14);
          }
          // ACHO DE CELDAS
          $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(7);
          $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);
          $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(25);
          $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(25);
          $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(25);
          $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(25);
          $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(25);
          $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(15);
          $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(30);
          $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(12);

          //   COMBINAR CELDAS
          $objPHPExcel->getActiveSheet()->mergeCells('A1:J1');  // para el titulo nombre empresa
          $objPHPExcel->getActiveSheet()->mergeCells('A3:H3');  // CONCEPTO DEL REPORTE
          $objPHPExcel->getActiveSheet()->mergeCells('A2:H2');  // TITULO DEL REPORTE
          $objPHPExcel->getActiveSheet()->mergeCells('I2:J2');  // TITULO FECHA
          $objPHPExcel->getActiveSheet()->mergeCells('I3:J3');  // TITULO FECHA
          $objPHPExcel->getActiveSheet()->mergeCells("c4:d4");  // nombre vendedor 
          $objPHPExcel->getActiveSheet()->mergeCells("e4:f4");  // nombre cliente           
          $objPHPExcel->getActiveSheet()->mergeCells("g4:h4");  // direccion 
          $objPHPExcel->getActiveSheet()->mergeCells("i4:i4");  // producto
          $objPHPExcel->getActiveSheet()->mergeCells("j4:j4");  // cantidad
          // FORMATO DE CELDAS
          $objPHPExcel->getActiveSheet()->getStyle('A1:J1')->applyFromArray($estiloTituloReporte);
          $objPHPExcel->getActiveSheet()->getStyle('A2:I2')->applyFromArray($estiloTituloReporte);      
          $objPHPExcel->getActiveSheet()->getStyle('A3:I3')->applyFromArray($estiloTituloColumnas2);
          $objPHPExcel->getActiveSheet()->getStyle('I2:J3')->applyFromArray($estiloTituloReporte);            
          $objPHPExcel->getActiveSheet()->getStyle('A4:j4')->applyFromArray($estiloTituloColumnas);
          //$objPHPExcel->getActiveSheet()->getStyle('B5:C51')->applyFromArray($estiloTituloColumnas3);

          if($estadotp == 'detalle'){
              // TITULOS Y TEXTOS PREINGRESADOS FIJOS
              $objPHPExcel->getActiveSheet()->setCellValue('I2', 'FECHA:');
              $objPHPExcel->getActiveSheet()->setCellValue('I3', date("Y/m/d") ); //$fecini);
              $objPHPExcel->getActiveSheet()->setCellValue('A1', $nombree);
              $objPHPExcel->getActiveSheet()->setCellValue('A2', 'VENTAS DETALLADAS');
              $objPHPExcel->getActiveSheet()->setCellValue('A3', 'por vendedor - proveedor - fechas - direccion - producto');
              $objPHPExcel->getActiveSheet()->setCellValue('A4', 'ORD.');    
              $objPHPExcel->getActiveSheet()->setCellValue('B4', 'FECHA');  
              $objPHPExcel->getActiveSheet()->setCellValue('C4', 'VENDEDOR');
              $objPHPExcel->getActiveSheet()->setCellValue('E4', 'CLIENTE');
              $objPHPExcel->getActiveSheet()->setCellValue('G4', 'DIRECCION');
              $objPHPExcel->getActiveSheet()->setCellValue('I4', 'PRODUCTO');
              $objPHPExcel->getActiveSheet()->setCellValue('J4', 'CANTIDAD');
              
              //$agentecod = $this->agente->codagente;
              //$nomagente =  $this->agente->nombre." ".$this->agente->apellidos;     
              //$objPHPExcel->getActiveSheet()->setCellValue('b1', "Vendedor:   ".$nomagente );
              $totventas = 0;
              $nregis=1;
              if ($resultado){
              foreach($resultado as $rows)  {
                    $objPHPExcel->getActiveSheet()->mergeCells("c".$fila.":d".$fila); 
                    $objPHPExcel->getActiveSheet()->mergeCells("e".$fila.":f".$fila);
                    $objPHPExcel->getActiveSheet()->mergeCells("g".$fila.":h".$fila);
                    $objPHPExcel->getActiveSheet()->mergeCells("i".$fila.":i".$fila);
                    $objPHPExcel->getActiveSheet()->mergeCells("j".$fila.":j".$fila);
                    $objPHPExcel->getActiveSheet()->setCellValue('A'.$fila, $nregis);
                    $objPHPExcel->getActiveSheet()->setCellValue('B'.$fila, $rows['fecha']);
                    $objPHPExcel->getActiveSheet()->setCellValue('C'.$fila, $rows['nomagente']);
                    $objPHPExcel->getActiveSheet()->setCellValue('E'.$fila, $rows['nombrecliente']);
                    $objPHPExcel->getActiveSheet()->setCellValue('G'.$fila, $rows['direccion']);
                    $objPHPExcel->getActiveSheet()->setCellValue('I'.$fila, $rows['descri']);
                    $objPHPExcel->getActiveSheet()->setCellValue('J'.$fila, $rows['cantid1']);


                    //$totventas = $totventas + $rows['pvptota'];
                    $fila++; //Sumamos 1 para pasar a la siguiente fila
                    $nregis++;
              }
              }
          }
            if($estadotp == 'totales'){
              // TITULOS Y TEXTOS PREINGRESADOS FIJOS
                $objPHPExcel->getActiveSheet()->setCellValue('I2', 'FECHA:');
                $objPHPExcel->getActiveSheet()->setCellValue('I3', date("Y/m/d") ); //$fecini);
                $objPHPExcel->getActiveSheet()->setCellValue('A1', $nombree);
                $objPHPExcel->getActiveSheet()->setCellValue('A2', 'VENTAS CON TOTALES POR PROVEEDOR');
                $objPHPExcel->getActiveSheet()->setCellValue('A3', 'por vendedor - proveedor - fechas - direccion - producto');
                $objPHPExcel->getActiveSheet()->setCellValue('A4', 'ORD.');    
                $objPHPExcel->getActiveSheet()->setCellValue('B4', 'FECHA');  
                $objPHPExcel->getActiveSheet()->setCellValue('C4', 'VENDEDOR');
                $objPHPExcel->getActiveSheet()->setCellValue('E4', 'CLIENTE');
                $objPHPExcel->getActiveSheet()->setCellValue('G4', 'DIRECCION');
                $objPHPExcel->getActiveSheet()->setCellValue('I4', 'VALOR');
                //$objPHPExcel->getActiveSheet()->setCellValue('J4', 'CANTIDAD');
                  
                //$agentecod = $this->agente->codagente;
                //$nomagente =  $this->agente->nombre." ".$this->agente->apellidos;     
                //$objPHPExcel->getActiveSheet()->setCellValue('b1', "Vendedor:   ".$nomagente );
                
                $totventas = 0;
                $nregis=1;
                if ($resultado){
                    foreach($resultado as $rows)  {
                        $objPHPExcel->getActiveSheet()->mergeCells("c".$fila.":d".$fila); 
                        $objPHPExcel->getActiveSheet()->mergeCells("e".$fila.":f".$fila);
                        $objPHPExcel->getActiveSheet()->mergeCells("g".$fila.":h".$fila);
                        $objPHPExcel->getActiveSheet()->mergeCells("i".$fila.":i".$fila);
                        //$objPHPExcel->getActiveSheet()->mergeCells("j".$fila.":j".$fila);
                        $objPHPExcel->getActiveSheet()->setCellValue('A'.$fila, $nregis);
                        $objPHPExcel->getActiveSheet()->setCellValue('B'.$fila, $rows['fecha']);
                        $objPHPExcel->getActiveSheet()->setCellValue('C'.$fila, $rows['nomagente']);
                        $objPHPExcel->getActiveSheet()->setCellValue('E'.$fila, $rows['nombrecliente']);
                        $objPHPExcel->getActiveSheet()->setCellValue('G'.$fila, $rows['direccion']);
                        $objPHPExcel->getActiveSheet()->setCellValue('I'.$fila, $rows['total']);
                        //$objPHPExcel->getActiveSheet()->setCellValue('J'.$fila, $rows['cantid1']);
                        $totventas = $totventas + $rows['total'];
                        $fila++; //Sumamos 1 para pasar a la siguiente fila
                        $nregis++;
                    }
                }
            }


          //$objPHPExcel->getActiveSheet()->setCellValue('H'.$fila, $totventas);
          //$objPHPExcel->getActiveSheet()->mergeCells("a".$fila.":h".$fila); 
          $fila ++; 
          $objPHPExcel->getActiveSheet()->mergeCells("a".$fila.":h".$fila); 
          $objPHPExcel->getActiveSheet()->setCellValue('A'.$fila, "Vendedor(es):  ".$nombreag);
          $fila ++;           
          $objPHPExcel->getActiveSheet()->mergeCells("a".$fila.":h".$fila); 
          $objPHPExcel->getActiveSheet()->setCellValue('A'.$fila, $fechasreporte);
          

          // definir t?tulo do gr?fico
          $title = new PHPExcel_Chart_Title(null, $layout);
          $title->setCaption('Grafico PHPExcel Chart Class');
          
          // definir posiciondo gr?fico y t?tulo
          //$chart->setTopLeftPosition('B'.$filaGrafica);
          //$filaFinal = $filaGrafica + 10;
          //$chart->setBottomRightPosition('E'.$filaFinal);
          //$chart->setTitle($title);
          
          $writer = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
          ob_end_clean();
          //$this->new_message( "fecha nombre ".$this->fecininom);
          // incluir gr?fico
          $writer->setIncludeCharts(TRUE);
          
          $dateFormat = new DateTime(); // Fecha actual joly
          $stringDate = $dateFormat->format(DATE_ATOM);
          $nomarch = "MinerVtas-".$stringDate.".xlsx";

        // We'll be outputting an excel file
        header('Content-type:application/vnd.ms-excel');
        // It will be called file.xls
        header('Content-Disposition:attachment; filename="'.$nomarch.'"');

        header('Cache-Control:max-age=0');
        ob_start();
        $writer->save('php://output');
 //*/  
  
        }else
        {
            $mensaje = "El Archivo $nombre_archivo no existe";
            //$this->new_message( $mensaje."<br>");
        }  
    
     

    }

//----------------  INICIO IMPRESION VENTAS PRODUCTOS PROVEEDORES VENDEDORES
    private function imp_vent_prod()
    {
      $this->fecininom =  date("y-m-d", strtotime($_POST['fechaini4']));

     // $nombre_archivo = $this->rutacsv."sqlventxvdr.csv";
     // $this->new_message("archivo ".$nombre_archivo);
      $fechahas='';
      $fechades='';
      $agentes='';
      $query='';


        if(1)
        {
  /*      $this->new_message("SI EXISTE ");
        $archivo = fopen( $nombre_archivo, "rb" );
        $aDatos = fgetcsv( $archivo,0,";" );
        // Volvemos a situar el puntero al principio del archivo:
        fseek($archivo, 0);
        // Recorremos el archivo completo:
        $cadena2 = fread($archivo, filesize($this->rutacsv."sqlventxvdr.csv"));  
        $this->new_message(" cadena ".$cadena2);
        $sw=1;*/
        
        //$this->vendedores
        
        //$this->new_message(" AGENTES ".$this->vendedores." columnas  ".$this->l_columnas."  sql ".$this->paraimpre);
        $fechasreporte = "Fecha reporte:  desde "."20".$this->fecini." Hasta "."20".$this->fecfin;
        //fclose( $archivo );
        //$this->new_message("  sql ".$query."  data age "."select codagente, nombre, apellidos from agentes where codagente in(".$agentes.");");   
        //$creavista = $this->db->exec($this->paraimpre);
        $this->resultadoven = $this->db->select($this->paraimpre); 
        $resultado = $this->resultadoven;
        // agentes
        $nombreag = '';
        $data_age = $this->db->select("select codagente, nombre, apellidos from agentes where codagente in(".$this->vendedores.");");
          
        if (is_array($data_age))
        {
          foreach($data_age as $alm)
           {
              //$rucalmacen = ($alm['cifnif']);   
              $nombreag .= ($alm['nombre']." ".$alm['apellidos']." - ");   
              //$direccionalma = ($alm['direccion']);   
             //. $contacto."  nombre ".$nombre); 
           }
        }else {
           $nombreag = "Empresa no definida";
        }
        /*for ($i=0; $i < count($this->lista_col)  ; $i++) { 
          $this->new_message('prueba '.$this->lista_col[$i]);
        }*/

 


/*
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
//*/
        $data_alm = $this->db->select("SELECT administrador , nombre, direccion, cifnif FROM empresa WHERE id=1 ;");
        if (is_array($data_alm))
        {
          foreach($data_alm as $alm)
           {
              $rucalmacen = ($alm['cifnif']);   
              $nombree = ($alm['nombre']);   
              $direccionalma = ($alm['direccion']);   
             //$this->new_message("datos almacen ". $contacto."  nombre ".$nombre); 
           }
        }else 
          {
           $nombree = "Empresa no definida";
        }

          //$fila = 5; //Establecemos en que fila inciara a imprimir los datos 
                 
          $fila = 6; //Establecemos en que fila inciara a imprimir los datos    
          $gdImage = imagecreatefrompng('images/logo.png');//Logotipo
          
          //Objeto de PHPExcel
          $objPHPExcel  = new PHPExcel();
          
          //Propiedades de Documento
          $objPHPExcel->getProperties()->setCreator("jolyfact")->setDescription("Detalle de ventas por vendedor");
          
          //Establecemos la pesta?a activa y nombre a la pesta?a
          $objPHPExcel->setActiveSheetIndex(0);
          $objPHPExcel->getActiveSheet()->setTitle("Ventas por vendedor");
          
          $objDrawing = new PHPExcel_Worksheet_MemoryDrawing();
          $objDrawing->setName('Logotipo');
          $objDrawing->setDescription('Logotipo');
          //$objDrawing->setImageResource($gdImage);
          //$objDrawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG);
          //$objDrawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT);
          $objDrawing->setHeight(100);
          $objDrawing->setCoordinates('A1');
          $objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
         
          $estiloTituloReporte = array(
            'font' => array(
          'name'      => 'Arial',
          'bold'      => true,
          'italic'    => false,
          'strike'    => false,
          'size' =>13
            ),
            'fill' => array(
          'type'  => PHPExcel_Style_Fill::FILL_SOLID
          ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' => array(
          'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );
          
          $estiloTituloColumnas = array(
            'font' => array(
          'name'  => 'Arial',
          'bold'  => true,
          'size' =>11,
          'color' => array(
          'rgb' => 'FFFFFF'
          )
            ),
            'fill' => array(
          'type' => PHPExcel_Style_Fill::FILL_SOLID,
          'color' => array('rgb' => '538DD5')
            ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );

             $estiloTituloColumnas2 = array(
            'font' => array(
          'name'  => 'Arial',
          'bold'  => true,
          'size' =>9,
          'color' => array(
          'rgb' => '000000'
          )
            ),
            'fill' => array(
          'type' => PHPExcel_Style_Fill::FILL_SOLID
            ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );
                        
        $estiloTituloColumnas3 = array(
            'font' => array(
          'name'  => 'Calibri',
          'bold'  => false,
          'size' =>13,
          'color' => array(
          'rgb' => '000000'
          )
            ),
            'fill' => array(
          'type' => PHPExcel_Style_Fill::FILL_SOLID
            ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_LEFT,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );                
                
          $estiloInformacion = new PHPExcel_Style();
          $estiloInformacion->applyFromArray( array(
            'font' => array(
          'name'  => 'Arial',
          'color' => array(
          'rgb' => '000000'
          )
            ),
            'fill' => array(
          'type'  => PHPExcel_Style_Fill::FILL_SOLID
          ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
          'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          ));
          for ($i = 1; $i <= 100; $i++) {     
              $objPHPExcel->getActiveSheet()->getRowDimension($i)->setRowHeight(20);
          }
          // ACHO DE CELDAS
          $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(6);
          $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);
          $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(12);
          $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12);
          $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12);
          $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(12);
          $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(0);
          $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(12);

          //   COMBINAR CELDAS
          $objPHPExcel->getActiveSheet()->mergeCells('A1:G1');  // para el titulo nombre empresa
          $objPHPExcel->getActiveSheet()->mergeCells('A3:H3');  // CONCEPTO DEL REPORTE
          $objPHPExcel->getActiveSheet()->mergeCells('A2:H2');  // TITULO DEL REPORTE
          $objPHPExcel->getActiveSheet()->mergeCells("c4:f4"); 
          $objPHPExcel->getActiveSheet()->mergeCells("c5:f5"); 
             

          // FORMATO DE CELDAS
          $objPHPExcel->getActiveSheet()->getStyle('A1:F1')->applyFromArray($estiloTituloReporte);
          $objPHPExcel->getActiveSheet()->getStyle('A2:H2')->applyFromArray($estiloTituloReporte);      
          $objPHPExcel->getActiveSheet()->getStyle('A3:H3')->applyFromArray($estiloTituloColumnas2);
          $objPHPExcel->getActiveSheet()->getStyle('c4:f4')->applyFromArray($estiloTituloColumnas2);
          
          //$objPHPExcel->getActiveSheet()->getStyle('B5:C51')->applyFromArray($estiloTituloColumnas3);
          
          // TITULOS Y TEXTOS PREINGRESADOS FIJOS
          $objPHPExcel->getActiveSheet()->setCellValue('A4', 'FECHA:');
          $objPHPExcel->getActiveSheet()->setCellValue('B4', date("Y/m/d") ); //$fecini);
          $objPHPExcel->getActiveSheet()->setCellValue('A1', $nombree);
          $objPHPExcel->getActiveSheet()->setCellValue('A2', 'VENTAS POR VENDEDOR - PROVEEDOR 2');
          $objPHPExcel->getActiveSheet()->setCellValue('A3', 'Ventas por vendedor - proveedor y por fechas');

          $objPHPExcel->getActiveSheet()->setCellValue('A5', 'ORD.');      
          $objPHPExcel->getActiveSheet()->setCellValue('B5', 'CODIGO');
          $objPHPExcel->getActiveSheet()->setCellValue('C5', 'DESCRIPCION ARTICULO');
          $objPHPExcel->getActiveSheet()->setCellValue('G5', 'PROVEEDOR');
          $objPHPExcel->getActiveSheet()->setCellValue('C4', $this->nfabricante4);



           $columna1 = 'H';
          $columnaux = 'J';
          $col_num  = 0;
          $nom_num  = 0;
          $columna = 'H';
          for ($i=0; $i < count($this->lista_col)  ; $i++) { 
            $objPHPExcel->getActiveSheet()->setCellValue($columna."5", $this->lista_col[$i]);              
            $columna++;
            if($col_num == 0 ){
              $objPHPExcel->getActiveSheet()->mergeCells($columna1."4:".$columnaux."4");
              $objPHPExcel->getActiveSheet()->getStyle($columna1."4:".$columnaux."4")->applyFromArray($estiloTituloColumnas2);
              $codag = substr($this->lista_col[$i], 4);
              $nomag = $this->nombreagente($codag);
              $objPHPExcel->getActiveSheet()->setCellValue($columna1."4",$nomag);
              $objPHPExcel->getActiveSheet()->getColumnDimension($columna1)->setWidth(0);
            }
             $col_num++;
            if($col_num == 3){
              $col_num = 0;
            }
            $columnaux++;
            $columna1++;
          }

          $objPHPExcel->getActiveSheet()->setCellValue($columna."5", "TOT-UNID");   
          $columna++;
          $objPHPExcel->getActiveSheet()->setCellValue($columna."5", "TOT-USD");              
          $objPHPExcel->getActiveSheet()->getStyle('A5:'.$columna."5")->applyFromArray($estiloTituloColumnas);

          $totventas  = 0;
          $nregis     = 1;
          $col_num    = 0;
          if ($resultado){
            foreach($resultado as $rows)  {
              $objPHPExcel->getActiveSheet()->mergeCells("C".$fila.":F".$fila); 
              $objPHPExcel->getActiveSheet()->setCellValue('A'.$fila, $nregis);
              $objPHPExcel->getActiveSheet()->setCellValue('B'.$fila, $rows['referencia']);
              $objPHPExcel->getActiveSheet()->setCellValue('C'.$fila, $rows['descripcion']);
              $objPHPExcel->getActiveSheet()->setCellValue('G'.$fila, $rows['fabricante']);
              $columna = 'H';
              for ($i=0; $i < count($this->lista_col)  ; $i++) { 
                $objPHPExcel->getActiveSheet()->setCellValue($columna.$fila, $rows[$this->lista_col[$i]]);              
                $columna++;
              }  
              $objPHPExcel->getActiveSheet()->setCellValue($columna.$fila, $rows['totalUnid']);
              $columna++;
              $objPHPExcel->getActiveSheet()->setCellValue($columna.$fila, $rows['total']);
              
              $totventas = $totventas + $rows['total'];
              $totunidad = $totunidad + $rows['totalUnid'];
              $fila++; 
              $nregis++;
            }
          }
          $columna = 'H';
          for ($i=0; $i < count($this->lista_col)  ; $i++) { 
            $sql_sumas = $this->db->select("select sum((".$this->lista_col[$i].")) stotal from tempVentaVendedor");
            $stot = 0;
            if($sql_sumas){
              foreach ($sql_sumas as $keyS) {
                $stot = $keyS['stotal'];
              }
            }
            $totsiimpre = substr($this->lista_col[$i],0,3);
            if($totsiimpre=='val'){
              $objPHPExcel->getActiveSheet()->setCellValue($columna.$fila, $stot);
            }
                       
            $columna++;
          }  
          //$objPHPExcel->getActiveSheet()->setCellValue($columna.$fila, $totunidad); 
          $columna++;
          $objPHPExcel->getActiveSheet()->setCellValue($columna.$fila, $totventas);
          $objPHPExcel->getActiveSheet()->getStyle('A'.$fila.":".$columna.$fila)->applyFromArray($estiloTituloColumnas);



          //$objPHPExcel->getActiveSheet()->mergeCells("a".$fila.":h".$fila); 
          $fila ++; 
          $objPHPExcel->getActiveSheet()->mergeCells("a".$fila.":h".$fila); 
          $objPHPExcel->getActiveSheet()->setCellValue('A'.$fila, "Vendedor(es):  ".$nombreag);
          $fila ++;           
          $objPHPExcel->getActiveSheet()->mergeCells("a".$fila.":h".$fila); 
          $objPHPExcel->getActiveSheet()->setCellValue('A'.$fila, $fechasreporte);
          
          // definir t?tulo do gr?fico
          $title = new PHPExcel_Chart_Title(null, $layout);
          $title->setCaption('Grafico PHPExcel Chart Class');
          
          $writer = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
          ob_end_clean();
          $this->new_message( "fecha nombre ".$this->fecininom);
          // incluir gr?fico
          $writer->setIncludeCharts(TRUE);
          $dateFormat = new DateTime(); // Fecha actual joly
          $stringDate = $dateFormat->format(DATE_ATOM);
          $nomarch = "Ventas-".$stringDate.".xlsx";

          // We'll be outputting an excel file
          header('Content-type:application/vnd.ms-excel');
          // It will be called file.xls
          header('Content-Disposition:attachment; filename="'.$nomarch.'"');

          header('Cache-Control:max-age=0');
          ob_start();
          $writer->save('php://output');
//*/
        }else
        {
            $mensaje = "El Archivo $nombre_archivo no existe";
            $this->new_message( $mensaje."<br>");
        }
    }     

//----------------  FIN IMPRESION VENTAS PRODUCTOS PROVEEDORES     
    
    private function genera_ventxprod()
   {
      $this->opcionImp=3;
      $fecini =  date("y-m-d", strtotime($_POST['fechaini3']));
      $fecfin =  date("y-m-d", strtotime($_POST['fechafin3']));
      $periodo = $_POST['fechaini3']."*".$_POST['fechafin3'];
      $this->fecini =  date("y-m-d", strtotime($_POST['fechaini3']));
      $this->fecfin =  date("y-m-d", strtotime($_POST['fechafin3']));
      $this->prueba = 'xxxxxx';
        
        // valfacmax
        // numprodxfac
      $r = (1 == $v) ? 'Yes' : 'No'; // $r is set to 'Yes'
      $sql_tot="";
      $sql_tot1="";
      $sql_repit="";
      
        $valfacmin = 0;
        $valfacmax = 0;

      if(isset($_POST['valfacmin'])) {
        if(isset($_POST['valfacmax'])) {
            $valfacmin = $_POST['valfacmin'];
            $valfacmax = $_POST['valfacmax'];
        }
      }

      /*if($valfacmin <= $valfacmax){
        $sql_tot = " and f.total between ".$valfacmin." and ".$valfacmax;
      }*/




      if($this->vendedores) //( isset($_REQUEST['codagente']) )
      {
          $sql_tot=   " and f.codvendedor in (".$this->vendedores.")"  ;
          $sql_tot1=  " and f1.codagente in  (".$this->vendedores.")"  ;
          $sql_repit= " and f1.codagente not in (".$this->vendedores.")"  ;
      }
      if($this->b_codfabricante) //( isset($_REQUEST['b_codfabricante']) ) 
      {
          $sql_tot .= " and a.codfabricante = '".  $this->b_codfabricante."'";
          $sql_tot1 .= " and a1.codfabricante = '".$this->b_codfabricante."'";
      }
      if($this->referencia)  //if( isset($_REQUEST['referencia']) ) 
      {
          $sql_tot .= " and a.referencia = '".  $this->referencia."'";
          $sql_tot1 .= " and a1.referencia = '".$this->referencia."'";

      }      
      
      if ($fecini > $fecfin) 
	     {
        $this->new_error_msg("Error: Fecha Final no puede ser menor que fecha de Inicio ".$_POST['fechafin2']);  
        }
      else
       { 
          if($this->estado ==""  )
			   {
          $creavista = $this->db->exec("CREATE TEMPORARY TABLE IF NOT EXISTS tempVentas 
          select codcliente, l.descripcion nombre, sum(l.cantidad) cantid1 , l.referencia referen, fecha, sum(l.pvptotal) pvptota1 
          from lineasfacturascli as l, facturascli as f, articulos as a
          where f.idfactura = l.idfactura
          and a.referencia =l.referencia
          and f.fecha between '".$fecini."' and '".$fecfin."'". 
          $sql_tot." and codigorect is null and anulada = 0 " .	
          " group by  l.referencia" );

          $this->resultadoven = $this->db->select("select  nombre, referen, sum(cantid1) cantid, sum(pvptota1) pvptota  from tempVentas group by nombre, referen;");

          $resSumaVen = $this->db->select("select sum(pvptota1) sumatot from tempVentas;");

          $this->paraimpre="CREATE TEMPORARY TABLE IF NOT EXISTS tempVentas  "
          ." select codcliente, l.descripcion nombre, sum(l.cantidad) cantid1 , l.referencia referen, "
          ." fecha, sum(l.pvptotal) pvptota1 from lineasfacturascli as l, facturascli as f, articulos as a"
          ."  where f.idfactura = l.idfactura and a.referencia =l.referencia and f.fecha between"
          ." '".$fecini."' and '".$fecfin."'". $sql_tot." and codigorect is null and anulada = 0"
          ." group by  l.referencia";

          $this->guarda_imprimir();

          }
           else{    
            if (1) { //($this->referencia <> NULL && $this->estado =="xclientes") {
              $creavista = $this->db->exec("CREATE TEMPORARY TABLE IF NOT EXISTS tempVentas 
              select l.descripcion nombre, sum(l.cantidad) cantid1 , l.referencia referen,  f.codcliente codcli, f.nombrecliente nombcli, sum(l.pvptotal) pvptota1 
              from lineasfacturascli as l, facturascli as f, articulos as a
              where f.idfactura = l.idfactura
              and a.referencia =l.referencia
              and f.fecha between '".$fecini."' and '".$fecfin."'". 
              $sql_tot." and codigorect is null and anulada = 0 " .	
              " group by  f.codcliente,l.referencia " );


              $this->resultadoven = $this->db->select("select  nombcli, referen, sum(cantid1) cantid, sum(pvptota1) pvptota  from tempVentas group by codcli, referen order by codcli, cantid DESC;");
              //$this->new_error_msg("Consulta por Cliente ".$this->referencia."----".$this->estado);
            }else{
              $this->new_error_msg("Debe elegir por lo menos un producto");
            }
          }
          $sql_tot ="";
          $sql_tot1="";
      }
   } // FIN FUNCION



    private function genera_ventxminerva()
   {
      $this->opcionImp=5;
      $fecini =  date("y-m-d", strtotime($_POST['fechaini6']));
      $fecfin =  date("y-m-d", strtotime($_POST['fechafin6']));
      $periodo = $_POST['fechaini6']."*".$_POST['fechafin6'];
      $this->fecini =  date("y-m-d", strtotime($_POST['fechaini6']));
      $this->fecfin =  date("y-m-d", strtotime($_POST['fechafin6']));
      

      $sql_tot="";
      $sql_tot1="";
      $sql_repit="";
      
        $valfacmin = 0;
        $valfacmax = 0;

      if($this->vendedores) //( isset($_REQUEST['codagente']) )
      {
          $sql_tot=   " and f.codvendedor in (".$this->vendedores.")"  ;
          $sql_tot1=  " and f1.codagente in  (".$this->vendedores.")"  ;
          $sql_repit= " and f1.codagente not in (".$this->vendedores.")"  ;
      }
      if($this->b_codfabricante) //( isset($_REQUEST['b_codfabricante']) ) 
      {
          $sql_tot .= " and a.codfabricante = '".$this->b_codfabricante."'";
          $sql_tot1 .= " and a1.codfabricante = '".$this->b_codfabricante."'";
      }
      if($this->referencia)  //if( isset($_REQUEST['referencia']) ) 
      {
          $sql_tot .= " and a.referencia = '".  $this->referencia."'";
          $sql_tot1 .= " and a1.referencia = '".$this->referencia."'";

      }      
      
      if ($fecini > $fecfin) 
         {
        $this->new_error_msg("Error: Fecha Final no puede ser menor que fecha de Inicio ".$_POST['fechafin2']);  
        }
      else
       { 
          if($this->estado ==""  )
               {
          $creavista = $this->db->exec("CREATE TEMPORARY TABLE IF NOT EXISTS tempVentas 
          select codcliente, l.descripcion descri, sum(l.cantidad) cantid1, l.referencia referen, codagente, (select concat_ws(' ', nombre, apellidos) from agentes where codagente=f.codagente limit 1 ) nomagente , fecha, l.pvptotal, nombrecliente, direccion 
          from lineasfacturascli as l, facturascli as f, articulos as a
          where f.idfactura = l.idfactura
          and a.referencia =l.referencia
          and f.fecha between '".$fecini."' and '".$fecfin."'". 
          $sql_tot." and codigorect is null and anulada = 0 group by codcliente, codagente, referen");

          $this->resultadoven = $this->db->select("select descri, referen,nomagente, fecha, nombrecliente, cantid1  from tempVentas ;");
          //$this->new_error_msg("registros ".count($this->resultadoven));
          //$resSumaVen = $this->db->select("select sum(pvptota1) sumatot from tempVentas;");

          


          $this->paraimpre="CREATE TEMPORARY TABLE IF NOT EXISTS tempVentas 
          select codcliente, l.descripcion descri, sum(l.cantidad) cantid1, l.referencia referen, codagente, (select concat_ws(' ', nombre, apellidos) from agentes where codagente=f.codagente limit 1 ) nomagente , fecha, l.pvptotal, nombrecliente, direccion 
          from lineasfacturascli as l, facturascli as f, articulos as a
          where f.idfactura = l.idfactura
          and a.referencia =l.referencia
          and f.fecha between '".$fecini."' and '".$fecfin."'". 
          $sql_tot." and codigorect is null and anulada = 0 group by codcliente, codagente, referen";

          //$this->new_error_msg('sql:'.$this->paraimpre);

          $this->guarda_imprimir();  // geenra un archivo txt que guarda la informacion para luego ser impresa


          //
          }
           
          $sql_tot ="";
          $sql_tot1="";
      }
   } // FIN FUNCION

private function genera_formato_ales()
   {
      $this->opcionImp=5;
      $fecini =  date("y-m-d", strtotime($_POST['fechaini6']));
      $fecfin =  date("y-m-d", strtotime($_POST['fechafin6']));
      $periodo = $_POST['fechaini6']."*".$_POST['fechafin6'];
      $this->fecini =  date("y-m-d", strtotime($_POST['fechaini6']));
      $this->fecfin =  date("y-m-d", strtotime($_POST['fechafin6']));
      

      $sql_tot="";
      $sql_tot1="";
      $sql_repit="";
      
        $valfacmin = 0;
        $valfacmax = 0;

      if($this->vendedores) //( isset($_REQUEST['codagente']) )
      {
          $sql_tot=   " and f.codvendedor in (".$this->vendedores.")"  ;
          $sql_tot1=  " and f1.codagente in  (".$this->vendedores.")"  ;
          $sql_repit= " and f1.codagente not in (".$this->vendedores.")"  ;
      }
      if($this->b_codfabricante) //( isset($_REQUEST['b_codfabricante']) ) 
      {
          $sql_tot .= " and a.codfabricante = '".$this->b_codfabricante."'";
          $sql_tot1 .= " and a1.codfabricante = '".$this->b_codfabricante."'";
      }
      if($this->referencia)  //if( isset($_REQUEST['referencia']) ) 
      {
          $sql_tot .= " and a.referencia = '".  $this->referencia."'";
          $sql_tot1 .= " and a1.referencia = '".$this->referencia."'";

      }      
      
      if ($fecini > $fecfin) 
         {
        $this->new_error_msg("Error: Fecha Final no puede ser menor que fecha de Inicio ".$_POST['fechafin2']);  
        }
      else
       { 
          if($this->estado ==""  )
               {
          $creavista = $this->db->exec("CREATE TEMPORARY TABLE IF NOT EXISTS tempVentas 
          select sum(pvputilidad) pvputilidad, sum(totalutilidad) totalutilidad, iva, codigo,codcliente, l.descripcion descri, sum(l.cantidad) cantid1, l.referencia referen, codagente, (select concat_ws(' ', nombre, apellidos) from agentes where codagente=f.codagente limit 1 ) nomagente , fecha,l.pvpunitario pvpunit, l.pvptotal pvptot, nombrecliente, direccion, cifnif 
          from lineasfacturascli as l, facturascli as f, articulos as a
          where f.idfactura = l.idfactura
          and a.referencia =l.referencia
          and f.fecha between '".$fecini."' and '".$fecfin."'". 
          $sql_tot." and codigorect is null and anulada = 0 group by codigo,codcliente, codagente, referen");

          //$this->resultadoven = $this->db->select("select descri, referen,nomagente, fecha, nombrecliente, cantid1  from tempVentas ;");

          $this->resultadoven = $this->db->select("select * from tempVentas;");

          $this->paraimpre="CREATE TEMPORARY TABLE IF NOT EXISTS tempVentas 
          select sum(pvputilidad) pvputilidad, sum(totalutilidad) totalutilidad, iva, codigo,codcliente, l.descripcion descri, sum(l.cantidad) cantid1, l.referencia referen, codagente, (select concat_ws(' ', nombre, apellidos) from agentes where codagente=f.codagente limit 1 ) nomagente , fecha,l.pvpunitario pvpunit, l.pvptotal pvptot, nombrecliente, direccion, cifnif 
          from lineasfacturascli as l, facturascli as f, articulos as a
          where f.idfactura = l.idfactura
          and a.referencia =l.referencia
          and f.fecha between '".$fecini."' and '".$fecfin."'". 
          $sql_tot." and codigorect is null and anulada = 0 group by codigo,codcliente, codagente, referen";

          $this->guarda_imprimir();  // geenra un archivo txt que guarda la informacion para luego ser impresa


          //
          }
           
          $sql_tot ="";
          $sql_tot1="";
      }
   } // FIN FUNCION


private function genera_formato_impactados()
   {
      $this->opcionImp=5;
      $fecini =  date("y-m-d", strtotime($_POST['fechaini6']));
      $fecfin =  date("y-m-d", strtotime($_POST['fechafin6']));
      $periodo = $_POST['fechaini6']."*".$_POST['fechafin6'];
      $this->fecini =  date("y-m-d", strtotime($_POST['fechaini6']));
      $this->fecfin =  date("y-m-d", strtotime($_POST['fechafin6']));
      
      $sql_tot="";
      $sql_tot1="";
      $sql_repit="";
      
        $valfacmin = 0;
        $valfacmax = 0;

      if($this->vendedores) //( isset($_REQUEST['codagente']) )
      {
          //$sql_tot=   " and codvendedor in (".$this->vendedores.")"  ;
          //$sql_tot1=  " and f1.codagente in  (".$this->vendedores.")"  ;
          //$sql_repit= " and f1.codagente not in (".$this->vendedores.")"  ;
      }
      if($this->b_codfabricante) //( isset($_REQUEST['b_codfabricante']) ) 
      {
          $sql_tot .= " and codfabricante = '".$this->b_codfabricante."'";
          $sql_tot1 .= " and a1.codfabricante = '".$this->b_codfabricante."'";
      }
      if($this->referencia)  //if( isset($_REQUEST['referencia']) ) 
      {
          $sql_tot .= " and a.referencia = '".  $this->referencia."'";
          $sql_tot1 .= " and a1.referencia = '".$this->referencia."'";

      }      
      
      if ($fecini > $fecfin) 
         {
        $this->new_error_msg("Error: Fecha Final no puede ser menor que fecha de Inicio ".$_POST['fechafin2']);  
        }
      else
       { 


          if($this->estado ==""  )
               {
            $creavista = $this->db->exec("CREATE TEMPORARY TABLE IF NOT EXISTS tempVentas
                SELECT fc.fecha,a.referencia, a.descripcion, a.codfamilia, COUNT(DISTINCT fc.nombrecliente) AS numero_de_clientes,codagente, (select concat_ws(' ', nombre, apellidos) from agentes where codagente=fc.codagente limit 1 ) nomagente 
            FROM facturascli AS fc
            JOIN lineasfacturascli AS lfc ON fc.idfactura = lfc.idfactura
            JOIN articulos AS a ON lfc.referencia = a.referencia
            WHERE fc.fecha BETWEEN '$fecini' AND '$fecfin'
            $sql_tot
            GROUP BY a.referencia, a.descripcion, a.codfamilia
            ORDER BY a.referencia");

            //$this->resultadoven = $this->db->select("select descri, referen,nomagente, fecha, nombrecliente, cantid1  from tempVentas ;");

            $this->resultadoven = $this->db->select("select * from tempVentas;");

            $this->paraimpre="CREATE TEMPORARY TABLE IF NOT EXISTS tempVentas
                SELECT fc.fecha,a.referencia, a.descripcion, a.codfamilia, COUNT(DISTINCT fc.nombrecliente) AS numero_de_clientes,codagente, (select concat_ws(' ', nombre, apellidos) from agentes where codagente=fc.codagente limit 1 ) nomagente 
                FROM facturascli AS fc
                JOIN lineasfacturascli AS lfc ON fc.idfactura = lfc.idfactura
                JOIN articulos AS a ON lfc.referencia = a.referencia
                WHERE fc.fecha BETWEEN '$fecini' AND '$fecfin'
                $sql_tot
                GROUP BY a.referencia, a.descripcion, a.codfamilia
                ORDER BY a.referencia";
                $this->guarda_imprimir();  // geenra un archivo txt que guarda la informacion para luego ser impresa
          }       
          $sql_tot ="";
          $sql_tot1="";
      }
   } // FIN IMPACTADOS


    private function genera_ventxminerva_totales()
   {
        $this->opcionImp=5;
        $fecini =  date("y-m-d", strtotime($_POST['fechaini6']));
        $fecfin =  date("y-m-d", strtotime($_POST['fechafin6']));
        $periodo = $_POST['fechaini6']."*".$_POST['fechafin6'];
        $this->fecini =  date("y-m-d", strtotime($_POST['fechaini6']));
        $this->fecfin =  date("y-m-d", strtotime($_POST['fechafin6']));
        
        $sql_tot="";
        $sql_tot1="";
        $sql_repit="";
          
        $valfacmin = 0;
        $valfacmax = 0;

        if($this->vendedores) //( isset($_REQUEST['codagente']) )
        {
            $sql_tot=   " and f.codvendedor in (".$this->vendedores.")"  ;
            $sql_tot1=  " and f1.codagente in  (".$this->vendedores.")"  ;
            $sql_repit= " and f1.codagente not in (".$this->vendedores.")"  ;
        }
        if($this->b_codfabricante) //( isset($_REQUEST['b_codfabricante']) ) 
        {
            $sql_tot .= " and a.codfabricante = '".$this->b_codfabricante."'";
            $sql_tot1 .= " and a1.codfabricante = '".$this->b_codfabricante."'";
        }
        if($this->referencia)  //if( isset($_REQUEST['referencia']) ) 
        {
            $sql_tot .= " and a.referencia = '".  $this->referencia."'";
            $sql_tot1 .= " and a1.referencia = '".$this->referencia."'";

        }      
      
        if ($fecini > $fecfin) 
        {
            $this->new_error_msg("Error: Fecha Final no puede ser menor que fecha de Inicio ".$_POST['fechafin2']);  
        }
        else
        { 
            //if($this->estado ==""  )
            //{
                $creavista = $this->db->exec("CREATE TEMPORARY TABLE IF NOT EXISTS tempVentas 
                select codcliente,  sum(l.pvptotal) total, codagente, (select concat_ws(' ', nombre, apellidos) from agentes where codagente=f.codagente limit 1 ) nomagente , fecha, nombrecliente, direccion 
                from lineasfacturascli as l, facturascli as f, articulos as a
                where f.idfactura = l.idfactura
                and a.referencia =l.referencia
                and f.fecha between '".$fecini."' and '".$fecfin."'". 
                $sql_tot." and codigorect is null and anulada = 0 group by codcliente, codagente");

                $this->resultadoven = $this->db->select("select codcliente, nomagente, fecha, nombrecliente, direccion, total  from tempVentas ;");
                //$this->new_error_msg("registros ".count($this->resultadoven));

                $this->paraimpre="CREATE TEMPORARY TABLE IF NOT EXISTS tempVentas 
                select codcliente,  sum(l.pvptotal) total, codagente, (select concat_ws(' ', nombre, apellidos) from agentes where codagente=f.codagente limit 1 ) nomagente , fecha, nombrecliente, direccion 
                from lineasfacturascli as l, facturascli as f, articulos as a
                where f.idfactura = l.idfactura
                and a.referencia =l.referencia
                and f.fecha between '".$fecini."' and '".$fecfin."'". 
                $sql_tot." and codigorect is null and anulada = 0 group by codcliente, codagente";
                //$this->new_error_msg('sql impre:'.$this->paraimpre);

                $this->guarda_imprimir();  // geenra un archivo txt que guarda la informacion para luego ser impresa
            //}
           
            $sql_tot ="";
            $sql_tot1="";
        }
   } // FIN FUNCION

   private function gnra_ventaspro()
   {

      $this->opcionImp=4;
      $fecini =  date("y-m-d", strtotime($_POST['fechaini4']));
      $this->fecininom =  date("y-m-d", strtotime($_POST['fechaini4']));
      $fecfin =  date("y-m-d", strtotime($_POST['fechafin4']));
      $periodo = $_POST['fechaini4']."*".$_POST['fechafin4'];
      $this->fecini =  date("y-m-d", strtotime($_POST['fechaini4']));
      $this->fecfin =  date("y-m-d", strtotime($_POST['fechafin4']));
      

      $sql_tot="";

      $sql_tot1="";
      $sql_repit="";
      if($this->vendedores) //( isset($_REQUEST['codagente']) )
      {
          $sql_tot=   " and f.codvendedor in (".$this->vendedores.")"  ;
          $sql_tot1=  " and f1.codagente in  (".$this->vendedores.")"  ;
          $sql_repit= " and f1.codagente not in (".$this->vendedores.")"  ;
      }
      if($this->b_codfabricante) //( isset($_REQUEST['b_codfabricante']) ) 
      {
          $sql_tot .= " and a.codfabricante = '".  $this->b_codfabricante."'";
          $sql_tot1 .= " and a1.codfabricante = '".$this->b_codfabricante."'";
      }
      if($this->referencia)  //if( isset($_REQUEST['referencia']) ) 
      {
          $sql_tot .= " and a.referencia = '".  $this->referencia."'";
          $sql_tot1 .= " and a1.referencia = '".$this->referencia."'";

      }      


//------------------------------ lista de vendedores --------------------
      $cuentareg = count($this->arrayagentes);
      $this->l_columnas ='';
    if ($this->arrayagentes['0']!==''){
      $coma=',';
      $this->vendedores = '';
      $this->lista_columnas = '';
      
      for ($i=1;$i<=count($this->arrayagentes);$i++)    
      { 
         
        if (count($this->arrayagentes) == 1){
          $coma='';
        } 

        $this->lista_columnas .= "cod_".$this->arrayagentes[$i-1]." varchar(10), "."cnt_".$this->arrayagentes[$i-1]." varchar(10),"."val_".$this->arrayagentes[$i-1]." float(8,3)".$coma; 

        $this->vendedores .= $this->arrayagentes[$i-1].$coma;   
        $this->l_columnas .= "cod_".$this->arrayagentes[$i-1].",";
        $this->l_columnas .= "cnt_".$this->arrayagentes[$i-1].",";
        $this->l_columnas .= "val_".$this->arrayagentes[$i-1].$coma;

        $this->lista_col[] ="cod_".$this->arrayagentes[$i-1];
        $this->lista_col[] ="cnt_".$this->arrayagentes[$i-1];
        $this->lista_col[] ="val_".$this->arrayagentes[$i-1];
          

          if ($i == count($this->arrayagentes)-1){
            $coma='';
          }else{
            $coma=',';
          }
      }
      }else{ // *********************************  todos los AGENTES VENDEDORES  **************************************
      $coma=',';
      $this->new_message(" TODOS LOS AGENTES no estan programado");
      // ---  cuando se elige todos los vendedores
      $sql_vendedores = $this->db->select("select codagente FROM facturascli f "
              ." where f.fecha between '".$fecini."' and '".$fecfin."'"
              ." and codigorect is null and anulada = 0 "
              ." group by codagente;");

        $cont1 = 1;
        $this->arrayagentes = array();
        if($sql_vendedores){
          foreach ($sql_vendedores as $keyv) {
            $this->arrayagentes[] =  $keyv['codagente']  ;
          }
        }
        
        $this->vendedores = '';
        $this->lista_columnas = '';        
        for ($i=1;$i<=count($this->arrayagentes);$i++)    
        { 
           
          if (count($this->arrayagentes) == 1){
            $coma='';
          }         
         $this->lista_columnas .= "cod_".$this->arrayagentes[$i-1]." varchar(10), "."cnt_".$this->arrayagentes[$i-1]." varchar(10),"."val_".$this->arrayagentes[$i-1]." float(8,3)".$coma; 

        $this->vendedores .= $this->arrayagentes[$i-1].$coma;   
        $this->l_columnas .= "cod_".$this->arrayagentes[$i-1].",";
        $this->l_columnas .= "cnt_".$this->arrayagentes[$i-1].",";
        $this->l_columnas .= "val_".$this->arrayagentes[$i-1].$coma;

        $this->lista_col[] ="cod_".$this->arrayagentes[$i-1];
        $this->lista_col[] ="cnt_".$this->arrayagentes[$i-1];
        $this->lista_col[] ="val_".$this->arrayagentes[$i-1];
          if ($i == count($this->arrayagentes)-1){
            $coma='';
          }else{
            $coma=',';
          }
        }
            
          
        
      //----------------------- fin todos los vendedores
    }




      //$this->new_message("datos-- " . $i . ": " . $this->vendedores);
      if ($fecini > $fecfin) 
       {
        $this->new_error_msg("Error: Fecha Final no puede ser menor que fecha de Inicio ".$_POST['fechafin2']);  
        }
      else
       { 
          if($this->estado =="xclientes"  )
         {

          $this->new_message("todos los fabricantes");
          $creavista = $this->db->exec("CREATE TEMPORARY TABLE IF NOT EXISTS tempVentas 
          select codcliente, l.descripcion nombre, sum(l.cantidad) cantid1 , l.referencia referen, fecha, sum(l.pvptotal) pvptota1 
          from lineasfacturascli as l, facturascli as f, articulos as a
          where f.idfactura = l.idfactura
          and a.referencia =l.referencia
          and f.fecha between '".$fecini."' and '".$fecfin."'". 
          $sql_tot." and codigorect is null and anulada = 0 " . 
          " group by  l.referencia" );

          $this->resultadoven = $this->db->select("select  nombre, referen, sum(cantid1) cantid, sum(pvptota1) pvptota  from tempVentas group by nombre, referen;");

          $resSumaVen = $this->db->select("select sum(pvptota1) sumatot from tempVentas;");


          $this->paraimpre="CREATE TEMPORARY TABLE IF NOT EXISTS tempVentas  "
          ." select codcliente, l.descripcion nombre, sum(l.cantidad) cantid1 , l.referencia referen, "
          ." fecha, sum(l.pvptotal) pvptota1 from lineasfacturascli as l, facturascli as f, articulos as a"
          ."  where f.idfactura = l.idfactura and a.referencia =l.referencia and f.fecha between"
          ." '".$fecini."' and '".$fecfin."'". $sql_tot." and codigorect is null and anulada = 0"
          ." group by  l.referencia";

          $this->guarda_imprimir();


          //
          }
           else{    
            if (1) {   
              //// creacion de tabla 
              $vista_detalle  = $this->db->exec("CREATE TEMPORARY TABLE IF NOT EXISTS tempVentaVendedor("
              ."referencia varchar(20), descripcion varchar(50), fecha varchar(10), fabricante varchar(25),".$this->lista_columnas.",total float(8,3),totalUnid float(8,3));" )  ;

              if($this->nfabricante4 == 'todos'){
                $sql_fab =    '';
                
              }else{
                $sql_fab = " and a.codfabricante = '".$this->b_codfabricante4."'";
              }

              // query para productos que intervienen 
              $sql_productos = $this->db->select("select l.referencia refer, l.descripcion, codfabricante FROM lineasfacturascli l, facturascli f, "
              ." articulos a "
              ." where f.idfactura = l.idfactura "
              . $sql_fab
              ." and codagente in(".$this->vendedores.")"
              ." and a.referencia = l.referencia "
              ." and f.fecha between '".$fecini."' and '".$fecfin."'"
              ." and codigorect is null and anulada = 0 "
              ." group by  l.referencia order by l.referencia, l.descripcion, codfabricante;");

              /*$this->new_message("sql_productos>>>"."select l.referencia refer, l.descripcion, FROM lineasfacturascli l, facturascli f, "
              ." articulos a "
              ." where f.idfactura = l.idfactura "
              . $sql_fab
              ." and codagente in(".$this->vendedores.")"
              ." and a.referencia = l.referencia "
              ." and f.fecha between '".$fecini."' and '".$fecfin."'"
              ." and codigorect is null and anulada = 0 "
              ." group by  l.referencia;");*/

              // nombres de los vendedores
              $sql_vendedores = $this->db->select("select codagente FROM facturascli f "
              ." where f.fecha between '".$fecini."' and '".$fecfin."'"
              ." and codagente in(".$this->vendedores.")"
              ." and codigorect is null and anulada = 0 "
              ." group by codagente;");

/*$this->new_message("sql_vendedores  "."select codagente FROM facturascli f "
              ." where f.fecha between '".$fecini."' and '".$fecfin."'"
              ." and codagente in(".$this->vendedores.")"
              ." and codigorect is null and anulada = 0 "
              ." group by codagente;");*/

              $cnt1 = 0; 
              if($sql_vendedores){
                foreach ($sql_vendedores as $keyV) {
                  $this->nombvend[] = $this->nombreagente($keyV['codagente']) ;
                  $this->new_message("NOMBRES ".$this->nombvend[$cnt1] );
                  $cnt1 = $cnt1 +1;
                }
              }

              if($sql_productos){
                
                //$this->new_message("productos ".$c);
                foreach ($sql_productos as $key) {
                  $total     = 0;
                  $totalUnid = 0;
                  if($sql_fab=''){
                    $sql_insfab = $this->b_codfabricante4;
                  }else{
                    $sql_insfab =  $key['codfabricante'];
                  }
                  $sql_tempGeneral = "insert into tempVentaVendedor(referencia, descripcion, fabricante)"
                  ."values('".$key['refer']."','".$key['descripcion']."', '".$sql_insfab."' );";
                  //$this->new_message("INSERTO>> ".$sql_tempGeneral);
                  $this->db->exec($sql_tempGeneral);    
                  $cnt1 = 0;
                  //$this->nombvend = array();
                  for ($i=0;$i<count($this->arrayagentes);$i++)    
                  { 
                    $this->vendedor = $this->arrayagentes[$i];

                    $sql_productosV = $this->db->select("select l.referencia referV, l.descripcion, sum(l.cantidad) cantV, sum(l.pvptotal) pvpV "
                    ." FROM lineasfacturascli l, facturascli f, articulos a "
                    ." where f.idfactura = l.idfactura "
                    ." and codagente = ".$this->vendedor
                    . $sql_fab
                    ." and a.referencia = l.referencia "
                    ." and a.referencia = '". $key['refer']."'"
                    ." and f.fecha between'".$fecini."' and '".$fecfin."'"
                    ." and codigorect is null and anulada = 0 "
                    ." group by  l.referencia;");      
                   
                    if($sql_productosV){
                      foreach ($sql_productosV as $key1) {
                        $total = $total + $key1['pvpV'];
                        $totalUnid = $totalUnid + $key1['cantV'];
                        //$this->new_message("total ".$total);
                        $sql_temp = "update tempVentaVendedor set "
                        ." cod_".$this->vendedor." = '".$this->vendedor
                        ."', cnt_".$this->vendedor." = '".$key1['cantV']
                        ."', val_".$this->vendedor." = ".$key1['pvpV']
                        .", total = ".$total
                        .", totalUnid = ".$totalUnid
                        ." where referencia = '".$key1['referV']."';";
                        $this->db->exec($sql_temp);
                      } 
                    }



                  }                  
                  
                }

                
                $this->paraimpre = "select * from tempVentaVendedor";
                $this->imp_vent_prod();
                            

              }

           }else{
              $this->new_error_msg("Debe elegir por lo menos un producto");
            }
          }
          $sql_tot="";
          $sql_tot1="";
      }
   } // FIN FUNCION   
    private function nombreagente($vend1)
    {
      $nombreag4 = '';
      $data_age = $this->db->select("select concat_ws(' ',nombre, apellidos) nombres from agentes where codagente in(".$vend1.");");
      
      if (is_array($data_age))
      {
        foreach($data_age as $alm)
         {
          $nombreag4 = $alm['nombres'];   
         }
         return $nombreag4;
      }else 
      {
         $nombreag = "Empresa no definida";
      }
   }

   private function gnra_ventasdiario()
   {

      $this->opcionImp=4;
      $fecini =  date("y-m-d", strtotime($_POST['fechaini5']));
      $this->fecininom =  date("y-m-d", strtotime($_POST['fechaini5']));
      $fecfin =  date("y-m-d", strtotime($_POST['fechafin5']));
      $periodo = $_POST['fechaini5']."*".$_POST['fechafin5'];
      $this->fecini =  date("y-m-d", strtotime($_POST['fechaini5']));
      $this->fecfin =  date("y-m-d", strtotime($_POST['fechafin5']));
      

      $sql_tot="";

      $sql_tot1="";
      $sql_repit="";
      if($this->vendedores) //( isset($_REQUEST['codagente']) )
      {
          $sql_tot=   " and f.codvendedor in (".$this->vendedores.")"  ;
          $sql_tot1=  " and f1.codagente in  (".$this->vendedores.")"  ;
          $sql_repit= " and f1.codagente not in (".$this->vendedores.")"  ;
      }
//------------------------------ lista de vendedores --------------------
      $cuentareg = count($this->arrayagentes);
      $this->l_columnas ='';
    if ($this->arrayagentes['0']!==''){
      $coma=',';
      $this->vendedores = '';
      $this->lista_columnas = '';
      
      for ($i=1;$i<=count($this->arrayagentes);$i++)    
      { 
         
        if (count($this->arrayagentes) == 1){
          $coma='';
        } 

        $this->lista_columnas .= "cod_".$this->arrayagentes[$i-1]." varchar(10), "."cnt_".$this->arrayagentes[$i-1]." varchar(10),"."val_".$this->arrayagentes[$i-1]." float(8,3)".$coma; 

        $this->vendedores .= $this->arrayagentes[$i-1].$coma;   
        $this->l_columnas .= "cod_".$this->arrayagentes[$i-1].",";
        $this->l_columnas .= "cnt_".$this->arrayagentes[$i-1].",";
        $this->l_columnas .= "val_".$this->arrayagentes[$i-1].$coma;

        $this->lista_col[] ="cod_".$this->arrayagentes[$i-1];
        $this->lista_col[] ="cnt_".$this->arrayagentes[$i-1];
        $this->lista_col[] ="val_".$this->arrayagentes[$i-1];
          


          if ($i == count($this->arrayagentes)-1){
            $coma='';
          }else{
            $coma=',';
          }
      }
      }else{ // *********************************  todos los AGENTES VENDEDORES  **************************************
      $coma=',';
      $this->new_message(" TODOS LOS AGENTES no estan programado");
      // ---  cuando se elige todos los vendedores
      $sql_vendedores = $this->db->select("select codagente FROM facturascli f "
              ." where f.fecha between '".$fecini."' and '".$fecfin."'"
              ." and codigorect is null and anulada = 0 "
              ." group by codagente;");

        $cont1 = 1;
        $this->arrayagentes = array();
        if($sql_vendedores){
          foreach ($sql_vendedores as $keyv) {
            $this->arrayagentes[] =  $keyv['codagente']  ;
          }
        }
        
        $this->vendedores = '';
        $this->lista_columnas = '';        
        for ($i=1;$i<=count($this->arrayagentes);$i++)    
        { 
           
          if (count($this->arrayagentes) == 1){
            $coma='';
          }         
         $this->lista_columnas .= "cod_".$this->arrayagentes[$i-1]." varchar(10), "."cnt_".$this->arrayagentes[$i-1]." varchar(10),"."val_".$this->arrayagentes[$i-1]." float(8,3)".$coma; 

        $this->vendedores .= $this->arrayagentes[$i-1].$coma;   
        $this->l_columnas .= "cod_".$this->arrayagentes[$i-1].",";
        $this->l_columnas .= "cnt_".$this->arrayagentes[$i-1].",";
        $this->l_columnas .= "val_".$this->arrayagentes[$i-1].$coma;

        $this->lista_col[] ="cod_".$this->arrayagentes[$i-1];
        $this->lista_col[] ="cnt_".$this->arrayagentes[$i-1];
        $this->lista_col[] ="val_".$this->arrayagentes[$i-1];
          if ($i == count($this->arrayagentes)-1){
            $coma='';
          }else{
            $coma=',';
          }
        }

        
      //----------------------- fin todos los vendedores
    }




      //$this->new_message("datos-- " . $i . ": " . $this->vendedores);
      if ($fecini > $fecfin) 
       {
        $this->new_error_msg("Error: Fecha Final no puede ser menor que fecha de Inicio ".$_POST['fechafin5']);  
        }
      else
       { 
          if($this->estado =="xclientes"  )
            {

            }
            else{    
            if (1) {
              //// creacion de tabla 
              $vista_detalle  = $this->db->exec("CREATE TEMPORARY TABLE IF NOT EXISTS tempVentaVendedor("
              ."fecha date,".$this->lista_columnas.",total float(8,3),totalUnid float(8,3));" );

/*              if($this->nfabricante4 == 'todos'){
                $sql_fab =    '';
                
              }else{
                $sql_fab = " and a.codfabricante = '".$this->b_codfabricante4."'";
              }*/
              // query para facturas que intervienen 
              $sql_productos = $this->db->select("select fecha FROM  facturascli  "
              ." where codagente in(".$this->vendedores.")"
              ." and fecha between '".$fecini."' and '".$fecfin."'"
              ." and codigorect is null and anulada = 0 "
              ." group by  fecha order by fecha, codagente;");
              // nombres de los vendedores
              $sql_vendedores = $this->db->select("select codagente FROM facturascli f "
              ." where f.fecha between '".$fecini."' and '".$fecfin."'"
              ." and codagente in(".$this->vendedores.")"
              ." and codigorect is null and anulada = 0 "
              ." group by codagente;");

              $cnt1 = 0; 
              if($sql_vendedores){
                foreach ($sql_vendedores as $keyV) {
                  $this->nombvend[] = $this->nombreagente($keyV['codagente']) ;
                  $this->new_message("NOMBRES ".$this->nombvend[$cnt1] );
                  $cnt1 = $cnt1 +1;
                }
              }

              if($sql_productos){
                
                //$this->new_message("productos ".$c);
                foreach ($sql_productos as $key) {
                  $total     = 0;
                  $totalUnid = 0;

                  $sql_tempGeneral = "insert into tempVentaVendedor(fecha)"
                  ."values('".$key['fecha']."');";
                  //$this->new_message("INSERTO>> ".$sql_tempGeneral);
                  $this->db->exec($sql_tempGeneral);    
                  $cnt1 = 0;
                  //$this->nombvend = array();
                  for ($i=0;$i<count($this->arrayagentes);$i++)    
                  { 
                    $this->vendedor = $this->arrayagentes[$i];

                    $sql_productosV = $this->db->select("select count(*) cantidad, codagente,sum(total) total, fecha "
                    ." FROM facturascli  "
                    ." where "
                    ." codagente = ".$this->vendedor
                    ." and fecha between'".$fecini."' and '".$fecfin."'"
                    ." and codigorect is null and anulada = 0 "
                    ." group by fecha, codagente;");     



                   //print_r($sql_productosV);
                   
                    if($sql_productosV){
                      foreach ($sql_productosV as $key1) {
                        $total = $total + $key1['total'];
                        $totalUnid = $totalUnid + $key1['total'];
                        //$this->new_message("total ".$total);
                        $sql_temp = "update tempVentaVendedor set "
                        ." cod_".$this->vendedor." = '".$this->vendedor
                        ."', cnt_".$this->vendedor." = '".$key1['cantidad']
                        ."', val_".$this->vendedor." = ".$key1['total']
                        /*.", total = ".$total
                        .", totalUnid = ".$totalUnid*/
                        ." where fecha = '".$key1['fecha']."';";
                        $this->db->exec($sql_temp);
                      } 
                    }

/*                    if($sql_productosV){
                      foreach ($sql_productosV as $key1) {
                        $valorw = 'val_'.$this->vendedor;
                        $total = $total + $key1[$valorw];
                        //$totalUnid = $totalUnid + $key1['total'];
                        //$this->new_message("total ".$total);
                        $sql_temp = "update tempVentaVendedor set "
                        ." total = ".$total
                        ." where fecha = '".$key1['fecha']."';";
                        $this->db->exec($sql_temp);
                      } 
                    }*/


                  }                  
                  
                }
                $resp = $this->db->select("select * from tempVentaVendedor");
                //print_r($resp);
                $this->paraimpre = "select * from tempVentaVendedor";
                $this->imp_vent_diario();
                            

              }

           }else{
              $this->new_error_msg("Debe elegir por lo menos un producto");
            }
          }
          $sql_tot="";
          $sql_tot1="";
      }
   }

    public function actualizacosto(){
        $linfactura = new linea_factura_cliente();

        $sql_prod = $this->db->select("SELECT * FROM lineasfacturascli as l, facturascli f where f.idfactura = l.idfactura"
                    ." and fecha > '2023/09/01' and pvputilidad = 0 ORDER BY f.fecha DESC;");

        if($sql_prod){
            foreach ($sql_prod as $k) {
                $cantidad   = $k['cantidad'];
                $referencia = $k['referencia'];
                $idlinea = $k['idlinea'];
                $pvputilidad    = $linfactura->calvalunit($k['referencia'],$k['pvpunitario']);
                $totalutilidad  = $cantidad * $pvputilidad;
                $idfactura      = $k['idfactura'];
                $cod  = $k['codigo'];
                $this->new_error_msg('codigo: '.$cod. " pvpu ".$pvputilidad." --- ".$totalutilidad);
                if($pvputilidad > 0 ){
                    $sql_exe = "update lineasfacturascli set pvputilidad = $pvputilidad,  totalutilidad=$totalutilidad "
                        . "where idfactura = $idfactura and idlinea = $idlinea; ";

                    if($this->db->exec($sql_exe) ) {
                        //$this->new_error_msg('Salio bien: '.$cod);    
                    }else{
                        $this->new_error_msg('Problema: '.$cod);
                    }
                }
            }
            
        }
        
    }

    private function imp_vent_diario()
    {

        set_time_limit(400);
      $this->fecininom =  date("y-m-d", strtotime($_POST['fechaini5']));

     // $nombre_archivo = $this->rutacsv."sqlventxvdr.csv";
     // $this->new_message("archivo ".$nombre_archivo);
      $fechahas='';
      $fechades='';
      $agentes='';
      $query='';


        if(1)
        {
        
        //$this->new_message(" AGENTES ".$this->vendedores." columnas  ".$this->l_columnas."  sql ".$this->paraimpre);
        $fechasreporte = "Fecha reporte:  desde "."20".$this->fecini." Hasta "."20".$this->fecfin;

        $this->resultadovenA = $this->db->select($this->paraimpre); 
        $resultado = $this->resultadovenA;
        // agentes
        $nombreag = '';
        $data_age = $this->db->select("select codagente, nombre, apellidos from agentes where codagente in(".$this->vendedores.");");
          
        if (is_array($data_age))
        {
          foreach($data_age as $alm)
           {

              $nombreag .= ($alm['nombre']." ".$alm['apellidos']." - ");   
 
           }
        }else {
           $nombreag = "Empresa no definida";
        }


/*
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
//*/
        $data_alm = $this->db->select("SELECT administrador , nombre, direccion, cifnif FROM empresa WHERE id=1 ;");
        if (is_array($data_alm))
        {
          foreach($data_alm as $alm)
           {
              $rucalmacen = ($alm['cifnif']);   
              $nombree = ($alm['nombre']);   
              $direccionalma = ($alm['direccion']);   
             //$this->new_message("datos almacen ". $contacto."  nombre ".$nombre); 
           }
        }else 
          {
           $nombree = "Empresa no definida";
        }

          //$fila = 5; //Establecemos en que fila inciara a imprimir los datos 
                 
          $fila = 6; //Establecemos en que fila inciara a imprimir los datos    
          //$gdImage = imagecreatefrompng('images/logo.png');//Logotipo
          
          //Objeto de PHPExcel
          $objPHPExcel  = new PHPExcel();
          
          //Propiedades de Documento
          $objPHPExcel->getProperties()->setCreator("jolyfact")->setDescription("Detalle de ventas diarios por vendedor");
          
          //Establecemos la pesta?a activa y nombre a la pesta?a
          $objPHPExcel->setActiveSheetIndex(0);
          $objPHPExcel->getActiveSheet()->setTitle("Ventas diarias por vendedor");
          
         
          $estiloTituloReporte = array(
            'font' => array(
          'name'      => 'Arial',
          'bold'      => true,
          'italic'    => false,
          'strike'    => false,
          'size' =>13
            ),
            'fill' => array(
          'type'  => PHPExcel_Style_Fill::FILL_SOLID
          ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' => array(
          'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );
          
          $estiloTituloColumnas = array(
            'font' => array(
          'name'  => 'Arial',
          'bold'  => true,
          'size' =>9,
          'color' => array(
          'rgb' => 'FFFFFF'
          )
            ),
            'fill' => array(
          'type' => PHPExcel_Style_Fill::FILL_SOLID,
          'color' => array('rgb' => '538DD5')
            ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );

             $estiloTituloColumnas2 = array(
            'font' => array(
          'name'  => 'Arial',
          'bold'  => true,
          'size' =>9,
          'color' => array(
          'rgb' => '000000'
          )
            ),
            'fill' => array(
          'type' => PHPExcel_Style_Fill::FILL_SOLID
            ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );
                        
        $estiloTituloColumnas3 = array(
            'font' => array(
          'name'  => 'Calibri',
          'bold'  => false,
          'size' =>13,
          'color' => array(
          'rgb' => '000000'
          )
            ),
            'fill' => array(
          'type' => PHPExcel_Style_Fill::FILL_SOLID
            ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
            'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_LEFT,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          );                
                
          $estiloInformacion = new PHPExcel_Style();
          $estiloInformacion->applyFromArray( array(
            'font' => array(
          'name'  => 'Arial',
          'color' => array(
          'rgb' => '000000'
          )
            ),
            'fill' => array(
          'type'  => PHPExcel_Style_Fill::FILL_SOLID
          ),
            'borders' => array(
          'allborders' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
            ),
          'alignment' =>  array(
          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
          'vertical'  => PHPExcel_Style_Alignment::VERTICAL_CENTER
            )
          ));
          for ($i = 1; $i <= 100; $i++) {     
              $objPHPExcel->getActiveSheet()->getRowDimension($i)->setRowHeight(20);
          }
          // ACHO DE CELDAS
          $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(7);
          $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);
          $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(12);
          $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12);
          $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12);
          $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(12);
          $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(12);
          $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(12);

          //   COMBINAR CELDAS
          $objPHPExcel->getActiveSheet()->mergeCells('A1:H1');  // para el titulo nombre empresa
          $objPHPExcel->getActiveSheet()->mergeCells('A3:H3');  // CONCEPTO DEL REPORTE
          $objPHPExcel->getActiveSheet()->mergeCells('A2:H2');  // TITULO DEL REPORTE             

          // FORMATO DE CELDAS
          $objPHPExcel->getActiveSheet()->getStyle('A1:H1')->applyFromArray($estiloTituloReporte);
          $objPHPExcel->getActiveSheet()->getStyle('A2:H2')->applyFromArray($estiloTituloReporte);      
          $objPHPExcel->getActiveSheet()->getStyle('A3:H3')->applyFromArray($estiloTituloColumnas2);
          
          // TITULOS Y TEXTOS PREINGRESADOS FIJOS
          $objPHPExcel->getActiveSheet()->setCellValue('A4', 'FECHA:');
          $objPHPExcel->getActiveSheet()->setCellValue('B4', date("Y/m/d") ); //$fecini);
          $objPHPExcel->getActiveSheet()->setCellValue('A1', $nombree);
          $objPHPExcel->getActiveSheet()->setCellValue('A2', 'VENTAS DIARIAS POR VENDEDOR');
          $objPHPExcel->getActiveSheet()->setCellValue('A3', 'En un rango de fechas');
          $objPHPExcel->getActiveSheet()->setCellValue('A5', 'ORD.');      
          $objPHPExcel->getActiveSheet()->setCellValue('B5', 'FECHA');

          $columna1 = 'C';
          $columnaux = 'E';
          $col_num  = 0;
          $nom_num  = 0;
          $columna = 'C';
          for ($i=0; $i < count($this->lista_col)  ; $i++) { 
            $totsiimpre = substr($this->lista_col[$i],0,3);
            if($totsiimpre=='val'){
                $objPHPExcel->getActiveSheet()->setCellValue($columna."5", "VALOR");
            }
            if($totsiimpre=='cnt'){
                $objPHPExcel->getActiveSheet()->setCellValue($columna."5", "# FACTURAS");
            }
            $columna++;
            if($col_num == 0 ){
              $objPHPExcel->getActiveSheet()->mergeCells($columna1."4:".$columnaux."4");
              $objPHPExcel->getActiveSheet()->getStyle($columna1."4:".$columnaux."4")->applyFromArray($estiloTituloColumnas2);
              $codag = substr($this->lista_col[$i], 4);
              $nomag = $this->nombreagente($codag);
              $objPHPExcel->getActiveSheet()->setCellValue($columna1."4",$nomag);
              $objPHPExcel->getActiveSheet()->getColumnDimension($columna1)->setWidth(0);
            }
             $col_num++;
            if($col_num == 3){
              $col_num = 0;
            }
            $columnaux++;
            $columna1++;
          }
          $objPHPExcel->getActiveSheet()->setCellValue($columna."5", "TOTAL");     
          $objPHPExcel->getActiveSheet()->getColumnDimension($columna)->setWidth(18);           
          $objPHPExcel->getActiveSheet()->getStyle('A5:'.$columna."5")->applyFromArray($estiloTituloColumnas);
          $totventas  = 0;
          $nregis     = 1;
          $col_num    = 0;
          $col_x      = 2;
          $val_fila   = 0;
          $val_total  = 0;
          if ($resultado){
            foreach($resultado as $rows)  {
              $objPHPExcel->getActiveSheet()->setCellValue('A'.$fila, $nregis);
              $objPHPExcel->getActiveSheet()->setCellValue('B'.$fila, $rows['fecha']);
              $columna = 'C';
              for ($i=0; $i < count($this->lista_col)  ; $i++) { 
                $objPHPExcel->getActiveSheet()->setCellValue($columna.$fila, $rows[$this->lista_col[$i]]);   
                if ($i==$col_x){
                    $val_fila  = $val_fila + $rows[$this->lista_col[$i]];
                    $val_total = $val_total + $rows[$this->lista_col[$i]];
                    $col_x = $col_x+3;
                }
                $columna++;
              }
              $col_x      = 2;
              $objPHPExcel->getActiveSheet()->setCellValue($columna.$fila, $val_fila); 
              $columna++;
              $val_fila   = 0;
              $fila++; 
              $nregis++;
            }
          }
          $columna = 'C';
          for ($i=0; $i < count($this->lista_col)  ; $i++) { 
            $sql_sumas = $this->db->select("select sum((".$this->lista_col[$i].")) stotal from tempVentaVendedor");
            $stot = 0;
            if($sql_sumas){
              foreach ($sql_sumas as $keyS) {
                $stot = $keyS['stotal'];
              }
            }
            $totsiimpre = substr($this->lista_col[$i],0,3);
            if($totsiimpre=='val'){
              $objPHPExcel->getActiveSheet()->setCellValue($columna.$fila, $this->divisa_tools->show_numero($stot));
            }
                       
            $columna++;
          }  
          $objPHPExcel->getActiveSheet()->setCellValue($columna.$fila,$this->divisa_tools->show_numero($val_total));
          $objPHPExcel->getActiveSheet()->getStyle('A'.$fila.":".$columna.$fila)->applyFromArray($estiloTituloColumnas);
          $fila ++; 
          $objPHPExcel->getActiveSheet()->mergeCells("a".$fila.":h".$fila); 
          $objPHPExcel->getActiveSheet()->setCellValue('A'.$fila, "Vendedor(es):  ".$nombreag);
          $fila ++;           
          $objPHPExcel->getActiveSheet()->mergeCells("a".$fila.":h".$fila); 
          $objPHPExcel->getActiveSheet()->setCellValue('A'.$fila, $fechasreporte);
          // definir t?tulo do gr?fico          
          $writer = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
          ob_end_clean();
          //$this->new_message( "fecha nombre ".$this->fecininom);
          // incluir gr?fico
          $writer->setIncludeCharts(TRUE);
          $dateFormat = new DateTime(); // Fecha actual joly
          $stringDate = $dateFormat->format(DATE_ATOM);
          $nomarch = "Ventas-".$stringDate.".xlsx";

          // We'll be outputting an excel file
/*          header('Content-type:application/vnd.ms-excel');
          // It will be called file.xls
          header('Content-Disposition:attachment; filename="'.$nomarch.'"');
          header('Cache-Control:max-age=0');*/

//********

ob_start(); 
header('Content-type: application/vnd.ms-excel'); 
header('Content-Disposition:attachment; filename="'.$nomarch.'"');
header("Pragma: no-cache"); 
header("Expires: 0"); 
 
ob_end_flush(); 

//*******

          ob_start();
          $writer->save('php://output');
//*/
        }else
        {
            $mensaje = "El Archivo $nombre_archivo no existe";
            $this->new_message( $mensaje."<br>");
        }
    }     



}







