<?php
class PDF extends CI_Controller
{
    protected $_fechaActual;
    protected $_iduser;
    protected $_csstyle;
    protected $_tables;
    protected $_Variables;
    protected $_role;
	protected $idLicencia;

    function __construct()
	{
		 parent::__construct();
	
		if( ! $this->redux_auth->logged_in() )
		{//verificar si el el usuario ha iniciado sesion
			#redirect(base_url().'login');
		}
        $datestring   = "%Y-%m-%d %H:%i:%s";
		$this->_fechaActual = mdate($datestring,now());

         $this->_iduser = $this->session->userdata('id');
         $this->_role = $this->session->userdata('role');

         $this->config->load('datatables', TRUE);
         $this->_tables = $this->config->item('datatables');

        $this->load->model("modelousuario","modelousuario");
        $this->load->model("modeloclientes","clientes");
        $this->load->model("inventario_model","modeloinventario");        
        $this->load->model('proveedores_model','modeloproveedores');
        $this->load->model("modelo_configuracion","configuracion");
		$this->load->model("facturav_model","factura");
		$this->load->model("compras_modelo","compras");
		$this->load->model("ventas_model","ventas");
		$this->load->model("facturacion_modelo","facturacion");
		$this->load->model("reportes_model","reportes");
		$this->load->model("nomina_modelo","nomina");
		$this->load->model("nota_modelo","nota");
		$this->load->model("pagos_modelo","pagos");
		$this->load->model("administracion_modelo","administracion");
		$this->load->model("diagnosticos_modelo","diagnosticos");
		$this->load->model("cartaporte_modelo","cartaporte");
		
        $this->load->library('ccantidadletras');
		$this->load->library('mpdf/mpdf');
		
		$this->idLicencia 		= $this->session->userdata('idLicencia');
	}
	
	public function generarCodigoBidimensional($factura,$configuracion)
	{
		$this->load->helper('qrlib');

		$partes		=explode(".",$factura->total);
		$entero		=$partes[0];
		$decimal	=$partes[1];
		
		$valor		=strlen($entero);
		$ceros		=10-$valor;
		$ceroEntero	="";
		
		for($i=1;$i<=$ceros;$i++)
		{
			$ceroEntero.="0";
		}
		
		$ceroEntero.=$entero;
		
		$valor			=strlen($decimal);
		$ceros			=6-$valor;
		$ceroDecimal	="";
		
		for($i=1;$i<=$ceros;$i++)
		{
			$ceroDecimal.="0";
		}
		
		$ceroDecimal			=$decimal.$ceroDecimal;
		$codigoBidimensional 	= "?re=".$configuracion->rfc."&rr=".$factura->rfc."&tt=".$ceroEntero.".".$ceroDecimal."&id=".$factura->UUID."";
		
		#echo $codigoBidimensional;
		
		$codigo	= carpetaCfdi.$factura->idLicencia.'_facturacion/cfdi/'.$configuracion->rfc.'/folio'.$factura->serie.$factura->folio.'/codigo'.$factura->serie.$factura->folio.'.png';
		
		#if(file_exists($codigo))
		#{
			QRcode::png($codigoBidimensional, $codigo, 'L', 3, 2);
		#}
	}
	
	public function crearFactura1($idFactura)
	{
		ini_set("memory_limit","1500M");
		set_time_limit(0);
		
		$this->load->library('ccantidadletras');
		$this->load->library('mpdf/mpdf');
		
		$data['factura'] 		= $this->facturacion->obtenerFactura($idFactura);
		$data['cliente'] 		= $this->clientes->obtenerDatosCliente($data['factura']->idCliente);
		$data['retencion'] 		= $this->facturacion->obtenerRetencion($idFactura);
		#$data['productos'] 		=$data['factura']->global==0?$this->facturacion->obtenerProductosFacturados($idFactura):$this->facturacion->obtenerProductosGlobal($idFactura);
		$data['productos'] 		= $this->facturacion->obtenerProductosFacturados($idFactura);
		$data['configuracion'] 	= $this->configuracion->obtenerEmisor($data['factura']->idEmisor);
		$data['pago']			= $this->reportes->obtenerPagadoVenta($data['factura']->idCotizacion);	
		$data['cuentas']		= $this->configuracion->obtenerCuentasFactura();	
		$data['valor']			= 1;	
		
		if($data['factura']->idCotizacion!=0)
		{
			$data['cotizacion']			= $this->ventas->obtenerRemision($data['factura']->idCotizacion);
		}
		
		$ruta					= carpetaCfdi.$data['factura']->idLicencia.'_facturacion/cfdi/'.$data['configuracion']->rfc.'/folio'.$data['factura']->serie.$data['factura']->folio.'/';
		
		if(!file_exists($ruta))
		{
			$this->load->helper('sat');
			crearDirectorio($ruta);
		}

		$data['reporte'] 		= 'facturacion/factura1';
		
		$this->generarCodigoBidimensional($data['factura'],$data['configuracion']);
		
		$this->ccantidadletras->setIdioma("ES");
        $this->ccantidadletras->setNumero($data['factura']->total);
		$this->ccantidadletras->setMoneda($data['factura']->divisa);//
		
		$CantidadLetras			= $this->ccantidadletras->PrimeraMayuscula();
		$data['cantidadLetra']	= $CantidadLetras;

		$html					= $this->load->view('facturacion/principal',$data,true);
		$pie 					= $this->load->view('facturacion/pie',$data,true);
		
		#$this->mpdf->mPDF('en-x','Letter','','',10,10,14,70,6,0);
		
		$this->mpdf->mPDF('en-x','Letter','','',5,5,4,90,6,0);
		#$this->mpdf->mPDF('en-x','Letter','','',10,10,14,50,6,0);
		
		
		#var_dump($data['configuracion']);
		#echo '<br /><br />';
		#var_dump($data['factura']);
		
		#echo '<br /><br />';
		
		#echo $ruta;
		
		#echo '<br /><br />';
		
		#echo $html;
		#echo $pie;
		#return;
		
		
		$this->mpdf->SetHTMLFooter($pie);
		$this->mpdf->SetHTMLFooter($pie,'E');
		$this->mpdf->mirrorMargins = 1;
		$this->mpdf->WriteHTML($html); 
		$this->mpdf->Output();
	}
	
	public function crearFactura($idFactura,$opcion=0)
	{
		$this->reportes->crearFactura($idFactura,$opcion);
	}

	public function crearFacturaAntesFormato($idFactura)
	{
		ini_set("memory_limit","1500M");
		set_time_limit(0);
		
		$this->load->library('ccantidadletras');
		$this->load->library('mpdf/mpdf');
		$this->load->helper('qrlib');
		
		$data['factura'] 		= $this->facturacion->obtenerFactura($idFactura);
		$data['cliente'] 		= $this->clientes->obtenerDatosCliente($data['factura']->idCliente);
		$data['retencion'] 		= $this->facturacion->obtenerRetencion($idFactura);
		#$data['productos'] 		=$data['factura']->global==0?$this->facturacion->obtenerProductosFacturados($idFactura):$this->facturacion->obtenerProductosGlobal($idFactura);
		$data['productos'] 		= $this->facturacion->obtenerProductosFacturados($idFactura);
		
		$data['configuracion'] 	= $this->configuracion->obtenerEmisor($data['factura']->idEmisor);
		$data['pago']			= $this->reportes->obtenerPagadoVenta($data['factura']->idCotizacion);	
		$data['cuentas']		= $this->configuracion->obtenerCuentasFactura();	
		$data['relaciones']		= $this->facturacion->obtenerRelaciones($idFactura);
		$data['valor']			= 1;	
		
		if($data['factura']->idCotizacion!=0)
		{
			$data['cotizacion']			= $this->ventas->obtenerRemision($data['factura']->idCotizacion);
		}
		
		if($data['factura']->pago=='1')
		{
			$data['pago'] 		= $this->pagos->obtenerPago($idFactura);
			$data['relacion'] 	= $this->pagos->obtenerFacturaRelacion($idFactura);
		}
		
		$ruta					= carpetaCfdi.$data['factura']->idLicencia.'_facturacion/cfdi/'.$data['configuracion']->rfc.'/folio'.$data['factura']->serie.$data['factura']->folio.'/';
		
		if(!file_exists($ruta))
		{
			$this->load->helper('sat');
			crearDirectorio($ruta);
		}
		
		#var_dump($data['configuracion']);
		#return;
		
		#$data['reporte'] 		= 'facturacion/factura';
		
		#$data['reporte'] 		= $data['factura']->pago=='0'?'facturacion/3.3/factura':'facturacion/pagos/pago';
		$data['reporte'] 		= $data['factura']->pago=='0'?'formatos/factura/formato':'facturacion/pagos/pago';
		
		
		if($data['factura']->version=='0')
		{
			$this->generarCodigoBidimensional($data['factura'],$data['configuracion']);
		}
		else
		{
			generarCodigoBidimensional33($data['factura'],$data['configuracion']);
		}
		
		$this->ccantidadletras->setIdioma("ES");
        $this->ccantidadletras->setNumero($data['factura']->total);
		$this->ccantidadletras->setMoneda($data['factura']->divisa);//
		
		$CantidadLetras			= $this->ccantidadletras->PrimeraMayuscula();
		$data['cantidadLetra']	= $CantidadLetras;

		$html					= $this->load->view('facturacion/principal',$data,true);
		
		if($data['factura']->version=='1')
		{
			$pie 					= $this->load->view('facturacion/3.3/pie',$data,true);
		}
		else
		{
			$pie 					= $this->load->view('facturacion/pie',$data,true);
		}
		
		if($data['cotizacion']!=null)
		{
			$this->mpdf->mPDF('en-x','Letter','','',5,5,2,117,6,0);	
		}
		else
		{
			$this->mpdf->mPDF('en-x','Letter','','',5,5,2,70,6,0);
		}

		
		$this->mpdf->SetHTMLFooter($pie);
		$this->mpdf->SetHTMLFooter($pie,'E');
		$this->mpdf->mirrorMargins = 1;
		$this->mpdf->WriteHTML($html);
		#$this->mpdf->Output($data['configuracion']->rfc.'_'.$data['factura']->serie.$data['factura']->folio.'.pdf','D');
		$this->mpdf->Output();
	}
	
	public function reciboNomina($idFactura,$criterio=0)
	{
		#$this->load->library('ccantidadletras');
		#$this->load->library('mpdf/mpdf');
		$this->load->helper('qrlib');
		
		$data['factura'] 		= $this->facturacion->obtenerFacturaRecibo($idFactura);
		$data['percepciones'] 	= $this->reportes->obtenerPercepciones($idFactura);
		$data['deducciones'] 	= $this->reportes->obtenerDeducciones($idFactura);
		$data['empleado'] 		= $this->reportes->obtenerEmpleado($idFactura);
		$data['emisor']			= $this->configuracion->obtenerEmisor($data['factura']->idEmisor);
		#$data['emisor']			= $this->facturacion->obtenerConfiguracion();
		$data['reporte']		= 'nomina/reciboNomina';
		
		#if($criterio==1)
		#{
			$this->load->helper('sat');
			
			#$ruta				='media/fel/'.$data['factura']->idLicencia.'_facturacion/cfdi/folio'.$data['factura']->folio.'/';
			$ruta					= carpetaCfdi.$data['factura']->idLicencia.'_facturacion/cfdi/'.$data['emisor']->rfc.'/folio'.$data['factura']->serie.$data['factura']->folio.'/';
			
			if(!file_exists($ruta))
			{
				crearDirectorio($ruta);
			}
		#}
		
		generarCodigoBidimensional33($data['factura'],$data['emisor']);
				
		$this->ccantidadletras->setIdioma("ES");
        $this->ccantidadletras->setNumero($data['factura']->total);
		$this->ccantidadletras->setMoneda("pesos");//
		$data['cantidadLetra']	=$this->ccantidadletras->PrimeraMayuscula();

		$html	=$this->load->view('nomina/principal',$data,true);
		$pie 	= $this->load->view('nomina/pieNomina',$data,true);
		
		$this->mpdf->mPDF('en-x','Letter','','',5,5,3,10,2,1);
		$this->mpdf->SetHTMLFooter($pie);
		$this->mpdf->SetHTMLFooter($pie,'E');
		
		$this->mpdf->mirrorMargins = 1;
		$this->mpdf->WriteHTML($html);
		
		if($criterio==1)
		{
			$pdf				=$ruta.$data['emisor']->rfc.'_'.$data['factura']->serie.$data['factura']->folio.'.pdf';
			$xml				=$ruta.$data['emisor']->rfc.'_'.$data['factura']->serie.$data['factura']->folio.'.xml';
	
			$documentos['pdf']	=$pdf;
			$documentos['xml']	=$xml;
			
			$this->mpdf->Output($pdf,'F');
			
			#CREAR EL XML FISICO
			$fichero	=fopen($xml,"w");	
			fwrite($fichero,$data['factura']->xml);
			fclose($fichero);
			
			return $documentos;
		}
		else
		{
			$this->mpdf->Output();
		}
	}
	
	public function previaReciboNomina($idEmpleado)
	{
		if(!empty($_POST))
		{
			$this->load->library('ccantidadletras');
			$this->load->library('mpdf/mpdf');
			$this->load->helper('qrlib');
			
			$data['empleado'] 		= $this->nomina->obtenerEmpleado($idEmpleado);
			$data['emisor']			=$this->configuracion->obtenerEmisor($this->input->post('selectEmisores'));
			#$data['emisor']			= $this->facturacion->obtenerConfiguracion();
			$data['antiguedad'] 	= $this->nomina->obtenerAntiguedad($data['empleado']->fechaInicio,date('Y-m-d'));
			$data['reporte']		= 'nomina/reciboNominaPrevia';
			
			$this->ccantidadletras->setIdioma("ES");
			$this->ccantidadletras->setNumero($this->input->post('txtTotales'));
			$this->ccantidadletras->setMoneda("pesos");//
			$data['cantidadLetra']	=$this->ccantidadletras->PrimeraMayuscula();
	
			$html	= $this->load->view('nomina/principal',$data,true);
			$pie 	= $this->load->view('nomina/pieNomina',$data,true);
			
			$this->mpdf->mPDF('en-x','Letter','','',10,10,10,10,2,1);
			$this->mpdf->SetHTMLFooter($pie);
			$this->mpdf->SetHTMLFooter($pie,'E');
			
			$this->mpdf->mirrorMargins = 1;
			$this->mpdf->WriteHTML($html);
			$this->mpdf->Output(carpetaCfdi.'previaRecibo.pdf');
		}
		else
		{
			echo 'Genere la previa desde el formulario';
		}
	}
	
	public function vistaPrevia()
	{
		$this->load->library('ccantidadletras');
		$this->load->library('mpdf/mpdf');
		
		$data['factura'] 		= $this->facturacion->obtenerFacturaVista();
		$data['cliente'] 		= $this->clientes->obtenerDatosCliente($data['factura']->idCliente);
		$data['retencion'] 		= $this->facturacion->obtenerRetencionVista($data['factura']->idFactura);
		$data['productos'] 		= $this->facturacion->obtenerProductosFacturadosVista($data['factura']->idFactura);
		$data['configuracion'] 	= $this->configuracion->obtenerConfiguraciones(1);
		$data['reporte'] 		= 'facturacion/facturaPrevia';
		
		#$this->generarCodigoBidimensional($data['factura'],$data['configuracion']);
		
		if($data['factura']->idCotizacion!=0)
		{
			$data['cotizacion']			= $this->ventas->obtenerRemision($data['factura']->idCotizacion);
		}
		
		$this->ccantidadletras->setIdioma("ES");
        $this->ccantidadletras->setNumero($data['factura']->total);
		$this->ccantidadletras->setMoneda($data['factura']->divisa);//
		
		$CantidadLetras			=$this->ccantidadletras->PrimeraMayuscula();
		$data['cantidadLetra']	=$CantidadLetras;

		$html	=$this->load->view('facturacion/principal',$data,true);
		$pie 	= $this->load->view('facturacion/pie',$data,true);
		
		#$this->mpdf->mPDF('en-x','Letter','','',10,10,5,47,2,0);
		$this->mpdf->mPDF('en-x','Letter','','',10,10,10,70,6,0);
		$this->mpdf->SetHTMLFooter($pie);
		$this->mpdf->SetHTMLFooter($pie,'E');
		$this->mpdf->mirrorMargins = 1;
		$this->mpdf->WriteHTML($html);
		$this->mpdf->Output();
	}
	
	public function GenerarPDFs($idFactura)
	{
		$this->load->library('ccantidadletras');
		
		$Data['title']= "Panel de Administración";
		$Data['cassadmin']=$this->_csstyle["cassadmin"];
		$Data['csmenu']=$this->_csstyle["csmenu"];
		
		$Data['nameusuario']=$this->modelousuario->getUsuarios($this->_iduser);
		$Data['Fecha_actual']=$this->_fechaActual;
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);
		
		$data['factura'] =$this->ventas->obtenerFactura($idFactura);
		$data['cliente'] =$this->clientes->obtenerDatosCliente($data['factura']->cliente);
		$data['productos'] =$this->ventas->obtenerProductosFacturados($idFactura);
		
		$this->ccantidadletras->setIdioma("ES");
        $this->ccantidadletras->setNumero($data['factura']->total);
		$this->ccantidadletras->setMoneda("pesos");//
		$CantidadLetras=$this->ccantidadletras->PrimeraMayuscula();
		
		$data['cantidadLetra']=$CantidadLetras;
		
		$this->load->view('factura_ventas/pdfFactura',$data);
		$this->load->view("pie",$Data);
	}
	
	public function comprasPDF($idCompra,$idLicencia)
	{
		$this->load->library('ccantidadletras');
		$this->load->library('mpdf/mpdf');

		$data['compra'] =$this->compras->obtenerCompra($idCompra);
		#$data['cliente'] =$this->clientes->obtenerDatosCliente($data['factura']->cliente);
		$data['productos'] =$this->compras->obtenerProductosPDF($idCompra);
		$data['empresa'] =$this->configuracion->obtenerConfiguraciones($idLicencia);
		 
		#print($data['compra']->total);
		$this->ccantidadletras->setIdioma("ES");
        $this->ccantidadletras->setNumero($data['compra']->total);
		$this->ccantidadletras->setMoneda("pesos");//
		$CantidadLetras=$this->ccantidadletras->PrimeraMayuscula();
		
		$data['cantidadLetra']=$CantidadLetras;
		
		$html=$this->load->view('compras/pdfCompras',$data,true);

		$this->mpdf->mPDF('en-x','Letter','','',10,10,5,47,2,0);
		#$this->mpdf->SetHTMLFooter($pie);
		#$this->mpdf->SetHTMLFooter($pie,'E');
		$this->mpdf->mirrorMargins = 1;
		$this->mpdf->WriteHTML($html);
		$this->mpdf->Output();
	}
	
	public function GenerarPDF($idFactura)
	{
		$this->load->library('ccantidadletras');
		
		$data['factura'] =$this->ventas->obtenerFactura($idFactura);
		$data['cliente'] =$this->clientes->obtenerDatosCliente($data['factura']->idCliente);
		$data['productos'] =$this->ventas->obtenerProductosFacturados($data['factura']->idCotizacion);
		
		$this->ccantidadletras->setIdioma("ES");
        $this->ccantidadletras->setNumero($data['factura']->total);
		$this->ccantidadletras->setMoneda("pesos");//
		$CantidadLetras=$this->ccantidadletras->PrimeraMayuscula();
		
		$data['cantidadLetra']=$CantidadLetras;
		
		$this ->load->plugin('to_pdf');
		$html=$this->load->view('factura_ventas/pdfFactura',$data,true);

		pdf_create ($html,'Factura');
	}
	
	public function GenerarPDFsa($idFactura)
	{
		$this->load->library('ccantidadletras');
		
		$data['factura'] =$this->ventas->obtenerFactura($idFactura);
		$data['cliente'] =$this->clientes->obtenerDatosCliente($data['factura']->idCliente);
		$data['productos'] =$this->ventas->obtenerProductosFacturados($data['factura']->idCotizacion);
		
		$this->ccantidadletras->setIdioma("ES");
        $this->ccantidadletras->setNumero($data['factura']->total);
		$this->ccantidadletras->setMoneda("pesos");//
		$CantidadLetras=$this->ccantidadletras->PrimeraMayuscula();
		
		$data['cantidadLetra']=$CantidadLetras;
		
		$this ->load->plugin('to_pdf');
		$html=$this->load->view('factura_ventas/pdfFactura',$data,false);

		#pdf_create ($html,'Factura');
	}
	
	public function remisiones($remision)
	{
		$remisiones=$this->clientes->remisiones($remision);
		
		redirect('clientes');
	}
	
	public function generarRemision($idCotizacion)
	{
		$this->load->library('ccantidadletras');
		
		$data['factura'] =$this->ventas->obtenerFactura($idFactura);
		$data['cliente'] =$this->clientes->obtenerDatosCliente($data['factura']->cliente);
		$data['productos'] =$this->ventas->obtenerProductosFacturados($idFactura);
		
		$this->ccantidadletras->setIdioma("ES");
        $this->ccantidadletras->setNumero($data['factura']->total);
		$this->ccantidadletras->setMoneda("pesos");//
		$CantidadLetras=$this->ccantidadletras->PrimeraMayuscula();
		
		$data['cantidadLetra']=$CantidadLetras;
		
		$this ->load->plugin('to_pdf');
		$html=$this->load->view('factura_ventas/pdfFactura',$data,true);
		
		pdf_create ($html,'Remision');
	}
	
	public function cotizacionPdf($idCotizacion,$opcion=0)
	{
		$this->reportes->cotizacionPdf($idCotizacion,$opcion);
	}

	public function ordenServicioPdf($idCotizacion,$opcion=0)
	{
		$this->reportes->ordenServicioPdf($idCotizacion,$opcion);
	}

	public function fichaIngresoPdf($idIngreso,$opcion=0)
	{
		$this->reportes->fichaIngresoPdf($idIngreso,$opcion);
	}

	public function hojaValePdf($idCotizacion,$opcion=0)
	{
		$this->reportes->hojaValePdf($idCotizacion,$opcion);
	}

	public function diagnostico($idDiagnostico,$opcion=0)
	{
		$this->reportes->diagnostico($idDiagnostico,$opcion);
	}
	
	public function nuevaVenta($idCotizacion=0,$opcion)
	{
		$this->reportes->nuevaVenta($idCotizacion,$opcion);
	}

	public function hojaValeCompraPdf($idCotizacion,$opcion=0)
	{
		$this->reportes->hojaValeCompraPdf($idCotizacion,$opcion);
	}
	
	public function nuevaVentaTest($idCotizacion,$idLicencia)
	{
		$this->load->library('ccantidadletras');
		$this->load->library('mpdf/mpdf');
		
		#$remision 					= $this->ventas->obtenerRemision($idCotizacion);
		$data['cotizacion']			= $this->ventas->obtenerRemision($idCotizacion);
		$data['cliente'] 			= $this->ventas->obtenerCliente($data['cotizacion']->idCliente);
		$data['clienteCotizacion'] 	= $this->clientes->obtenerClienteCotizacion($data['cotizacion']->idCotizacion);
		$data['productos'] 			= $this->ventas->obtenerProductos($data['cotizacion']->idCotizacion);
		$data['totalNotas'] 		= $this->nota->sumarNotasTotalesCotizacion($data['cotizacion']->idCotizacion);
		
		/*$data['productos'] 	=$this->ventas->obtenerProductosProductos($remision->idCotizacion);
		$data['refacciones']=$this->ventas->obtenerProductosRefacciones($remision->idCotizacion);
		$data['manoObra']	=$this->ventas->obtenerProductosMano($remision->idCotizacion);*/
		
		$data['empresa'] 			= $this->configuracion->obtenerConfiguraciones($idLicencia);
		$data['reporte'] 			= 'clientes/venta/remision';
		
		$this->ccantidadletras->setIdioma("ES");
        $this->ccantidadletras->setNumero($data['cotizacion']->total);
		$this->ccantidadletras->setMoneda($data['cotizacion']->divisa);//
		$CantidadLetras		=$this->ccantidadletras->PrimeraMayuscula();
		
		$data['cantidadLetra']	= $CantidadLetras;

		$html	=$this->load->view('reportes/principal',$data,false);
		$pie	=$this->load->view('reportes/pieSucursal',$data,false);

		
	}
	
	//->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
	//PARA LA FACTURACIÓN DEL SAT
	//->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
	public function crearFacturaSat($idFactura,$criterio=0)
	{
		$this->load->helper('xml');
		
		$this->load->library('ccantidadletras');
		$this->load->library('mpdf/mpdf');
		
		$data['factura'] 		= $this->reportes->obtenerFacturaSat($idFactura);
		
		$carpeta				= "media/sat/";
		$fichero				= $data['factura']->rfcEmisor.'_'.obtenerFechaMesCorto($data['factura']->fecha).'_'.$data['factura']->serie.$data['factura']->folio.'.xml';
		
		guardarFichero($carpeta.$fichero,$data['factura']->xml);
		
		
		$data['xml'] 			= procesarXmlCfdi($carpeta.$fichero);

		$this->generarCodigoBidimensionalSat($data['xml'],$data['factura']);
		
		
		$this->ccantidadletras->setIdioma("ES");
        $this->ccantidadletras->setNumero($data['xml'][4]);
		$this->ccantidadletras->setMoneda($data['xml'][14]);//
		
		$CantidadLetras			=$this->ccantidadletras->PrimeraMayuscula();
		$data['cantidadLetra']	=$CantidadLetras;

		$html	=$this->load->view('reportes/facturacionSat/pdf/factura',$data,true);
		$pie 	= $this->load->view('reportes/facturacionSat/pdf/pie',$data,true);
		
		$this->mpdf->mPDF('en-x','Letter','','',10,10,5,47,2,0);
		$this->mpdf->SetHTMLFooter($pie);
		$this->mpdf->SetHTMLFooter($pie,'E');
		$this->mpdf->mirrorMargins = 1;
		$this->mpdf->WriteHTML($html);
		
		if($criterio==0)
		{
			$this->mpdf->Output();
		}
		else
		{
			$this->mpdf->Output('media/sat/'.$data['factura']->rfcEmisor.'_'.obtenerFechaMesCorto($data['factura']->fecha).'_'.$data['factura']->serie.$data['factura']->folio.'.pdf','F');
		}
	}
	
	public function generarCodigoBidimensionalSat($xml,$factura)
	{
		$this->load->helper('qrlib');

		$partes			= explode(".",$xml[4]);
		
		$entero			= $partes[0];
		$decimal		= $partes[1];
		
		$valor			= strlen($entero);
		$ceros			= 10-$valor;
		$ceroEntero		= "";
		
		for($i=1;$i<=$ceros;$i++)
		{
			$ceroEntero.="0";
		}
		
		$ceroEntero.=$entero;
		
		$valor			= strlen($decimal);
		$ceros			= 6-$valor;
		$ceroDecimal	= "";
		
		for($i=1;$i<=$ceros;$i++)
		{
			$ceroDecimal.="0";
		}
		
		$ceroDecimal=$decimal.$ceroDecimal;
		
		$codigoBidimensional = "?re=".$xml[15]."&rr=".$xml[24]."&tt=".$ceroEntero.".".$ceroDecimal."&id=".$xml[40]."";

		$codigo='media/sat/'.$xml[15].'_'.obtenerFechaMesCorto($factura->fecha).'_'.$xml[11].$xml[12].'.png';
		
		#if(!file_exists($codigo))
		#{
			QRcode::png($codigoBidimensional, $codigo, 'L', 3, 2);
		#}
	}
}//Fin de la Clase
?>
