<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
	
	function facturaGlobal($configuracion,$cliente,$sello,$certificado,$fecha,$folio,$productos)
	{
		$fecha			= str_replace(" ","T",$fecha);
		$sello			= str_replace(" ","",$sello);
		$certificado	= str_replace(" ","",$certificado);

		$XMLFacturaComprobante='<cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd"';
		$XMLFacturaComprobante.=' Sello="'.$sello.'"';
		$XMLFacturaComprobante.=' Certificado="'.$certificado.'"';
		
		#$XMLFacturaComprobante.=' xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd http://www.sat.gob.mx/implocal http://www.sat.gob.mx/sitio_internet/cfd/implocal/implocal.xsd"';
		
		$XMLFacturaComprobante.=' Version="3.3" Folio="'.$folio.'" Serie="'.$configuracion->serie.'" Fecha="'.$fecha.'" FormaPago="'.$_POST['txtFormaPago'].'" NoCertificado="'.$configuracion->numeroCertificado.'" CondicionesDePago="'.$_POST['txtCondiciones'].'" SubTotal="'.Sprintf("% 01.2f",$_POST['txtSubTotal']).'"';
		
		if($_POST['txtDescuento']>0)
		{
			$XMLFacturaComprobante.=' Descuento="'.Sprintf("% 01.2f",$_POST['txtDescuento']).'"';
		}
		
		if(strlen($configuracion->numeroCuenta)>0)
		{
			#$XMLFacturaComprobante.=' NumCtaPago="'.$configuracion->numeroCuenta.'"';
		}
		
		$XMLFacturaComprobante.=' Moneda="MXN" Total="'.Sprintf("% 01.2f",$_POST['txtTotal']).'" MetodoPago="'.$_POST['txtMetodoPago'].'" TipoDeComprobante="I" LugarExpedicion="'.sustituir($configuracion->codigoPostal).'">';
		
		$XMLFacturaEmisor=chr(13).chr(10).'  <cfdi:Emisor Rfc="'.espaciosFactura(sustituir($configuracion->rfc)).'" Nombre="'.sustituir($configuracion->nombre).'" RegimenFiscal="'.sustituir($configuracion->claveRegimen).'"/>';
		$XMLFacturaReceptor=chr(13).chr(10).'  <cfdi:Receptor Rfc="'.espaciosFactura(sustituir($cliente->rfc)).'" Nombre="'.sustituir($cliente->empresa).'" UsoCFDI="'.$_POST['selectUsoCfdi'].'"/>';

		$XMLFacturaConceptos=chr(13).chr(10).'  <cfdi:Conceptos>';
		
		$i		= 0;
		$iva16	= 0;
		$iva0	= 0;

		foreach($productos as $row)
		{
			$producto	= strlen($row->nombre)>0?$row->nombre:$row->producto;
			
			#$precio		=$row->precio-$row->descuento;
			#$importe	=$row->importe-$row->descuento;
			#$importe	=($row->importe-$row->descuento)*(1+($cotizacion->porcentaje/100));
			$importe	= $row->importe-$row->descuento; //BASE PARA IMPUESTOS
			#$precio		= $importe/$row->cantidad;
			$precio		= $row->importe/$row->cantidad;
			
			$XMLFacturaConceptos.=chr(13).chr(10).'    <cfdi:Concepto ClaveProdServ="'.$row->claveProducto.'"'.(strlen(sustituir($row->codigoInterno))>0?' NoIdentificacion="'.sustituir($row->codigoInterno).'"':'').' Cantidad="'.Sprintf("% 01.2f",$row->cantidad).'" ClaveUnidad="'.$row->claveUnidad.'" Unidad="'.$row->unidad.'" ValorUnitario="'.Sprintf("% 01.2f",$precio).'" Descripcion="'.sustituir($row->medida.' '.$producto).'" Importe="'.Sprintf("% 01.2f",$row->importe).'"'.($row->descuento>0?' Descuento="'.Sprintf("% 01.2f",$row->descuento).'"':'').'>';
			$XMLFacturaConceptos.=chr(13).chr(10).'<cfdi:Impuestos>';
			$XMLFacturaConceptos.=chr(13).chr(10).'<cfdi:Traslados>';
			$XMLFacturaConceptos.=chr(13).chr(10).'<cfdi:Traslado Base="'.Sprintf("% 01.2f",$importe).'" Impuesto="002" TipoFactor="Tasa" TasaOCuota="'.($row->ivaTotal>0?'0.160000':'0.000000').'" Importe="'.Sprintf("% 01.2f",$row->ivaTotal).'"/>';
			$XMLFacturaConceptos.=chr(13).chr(10).'</cfdi:Traslados>';
			$XMLFacturaConceptos.=chr(13).chr(10).'</cfdi:Impuestos>';
			$XMLFacturaConceptos.=chr(13).chr(10).'</cfdi:Concepto>';
			
			if($row->ivaTotal>0) $iva16	= 1;
			if($row->ivaTotal==0) $iva0	= 1;
		}

		$XMLFacturaConceptos.=chr(13).chr(10).'  </cfdi:Conceptos>';
		
		//IMPUESTOS
		$XMLFacturaImpuestos=chr(13).chr(10).'  <cfdi:Impuestos TotalImpuestosTrasladados="'.Sprintf("% 01.2f",$_POST['txtIva']).'">';
		$XMLFacturaImpuestos.=chr(13).chr(10).'    <cfdi:Traslados>';
	
		if($iva16==1)
		{
			$XMLFacturaImpuestos.=chr(13).chr(10).'      <cfdi:Traslado Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="'.Sprintf("% 01.2f",$_POST['txtIva']).'"/>';
		}
		
		if($iva0==1)
		{
			$XMLFacturaImpuestos.=chr(13).chr(10).'      <cfdi:Traslado Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.000000" Importe="0.00"/>';
		}
		
		
		
		$XMLFacturaImpuestos.=chr(13).chr(10).'    </cfdi:Traslados>';
		$XMLFacturaImpuestos.=chr(13).chr(10).'  </cfdi:Impuestos>';
		
		
		/*$XMLFacturaImpuestos=chr(13).chr(10).'  <cfdi:Impuestos totalImpuestosTrasladados="'.Sprintf("% 01.2f",$iva).'">';
		$XMLFacturaImpuestos.=chr(13).chr(10).'    <cfdi:Traslados>';
		#$XMLFacturaImpuestos.=chr(13).chr(10).'      <cfdi:Traslado impuesto="IEPS" tasa="0.00" importe="0.00"/>';
		$XMLFacturaImpuestos.=chr(13).chr(10).'      <cfdi:Traslado impuesto="IVA" tasa="'.Sprintf("% 01.2f",$cotizacion->iva*100).'" importe="'.Sprintf("% 01.2f",$iva).'"/>';
		$XMLFacturaImpuestos.=chr(13).chr(10).'    </cfdi:Traslados>';
		$XMLFacturaImpuestos.=chr(13).chr(10).'  </cfdi:Impuestos>';*/
		
		$retencion="";
		
		
		$XMLFinal='<?xml version="1.0" encoding="utf-8"?>'.chr(13).chr(10).
		$XMLFacturaComprobante.
		$XMLFacturaEmisor.
		$XMLFacturaReceptor.
		$XMLFacturaConceptos.
		$XMLFacturaImpuestos.chr(13).chr(10).'  <cfdi:Complemento>'.chr(13).chr(10).$retencion.'  </cfdi:Complemento>'.chr(13).chr(10).'</cfdi:Comprobante>';

		return $XMLFinal;
	}
?>
