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

		$XMLFacturaComprobante='<cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/4 http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd"';
		$XMLFacturaComprobante.=' Sello="'.$sello.'"';
		$XMLFacturaComprobante.=' Certificado="'.$certificado.'"';
		#CondicionesDePago="'.$_POST['txtCondiciones'].'"
		$XMLFacturaComprobante.=' Version="4.0" Folio="'.$folio.'" Serie="'.$configuracion->serie.'" Fecha="'.$fecha.'" Exportacion="01" FormaPago="'.$_POST['selectFormaPago'].'" NoCertificado="'.$configuracion->numeroCertificado.'" SubTotal="'.Sprintf("% 01.2f",$_POST['txtSubTotal']).'"';
		
		//SIN DESCUENTOS, SOLICITADO POR EL CLIENTE
		if($_POST['txtDescuento']>0)
		{
			$XMLFacturaComprobante.=' Descuento="'.Sprintf("% 01.2f",$_POST['txtDescuento']).'"';
		}

		$XMLFacturaComprobante.=' Moneda="MXN" TipoCambio="1" Total="'.Sprintf("% 01.2f",$_POST['txtTotal']).'" MetodoPago="'.$_POST['selectMetodoPago'].'" TipoDeComprobante="I" LugarExpedicion="'.sustituir($configuracion->codigoPostal).'">';
		$XMLFacturaComprobante.=chr(13).chr(10).'<cfdi:InformacionGlobal Año="'.$_POST['selectAnio'].'" Meses="'.$_POST['selectMeses'].'" Periodicidad="'.$_POST['selectPeriodicidad'].'"/>';

		$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="S01" RegimenFiscalReceptor="'.sustituir($cliente->claveRegimen).'" DomicilioFiscalReceptor="'.sustituir($cliente->codigoPostal).'"/>';

		$XMLFacturaConceptos=chr(13).chr(10).'  <cfdi:Conceptos>';
		
		$i		= 0;
		$ivas	= 0;
		$base16	= 0;
		$base0	= 0;

		foreach($ventas as $row)
		{
			$base16			+= $row->subTotalIva-$row->descuentoIva;
			$base0			+= $row->subTotalSinIva-$row->descuentoSinIva;
			$ivas			+= $row->ivaTotal;

			$XMLFacturaConceptos.=chr(13).chr(10).'    <cfdi:Concepto ClaveProdServ="01010101" NoIdentificacion="'.sustituir($row->folio).'" Cantidad="'.Sprintf("% 01.2f",1).'" ClaveUnidad="ACT" Unidad="ACT" ValorUnitario="'.Sprintf("% 01.2f",$row->subTotal+$row->descuento).'" Descripcion="Venta" Importe="'.Sprintf("% 01.2f",$row->subTotal+$row->descuento).'" '.($row->descuento>0?' Descuento="'.Sprintf("% 01.2f",$row->descuento).'"':'').' ObjetoImp="02">';
			$XMLFacturaConceptos.=chr(13).chr(10).'<cfdi:Impuestos>';
			$XMLFacturaConceptos.=chr(13).chr(10).'<cfdi:Traslados>';
			
			if($row->subTotalIva>0)
			{
				$XMLFacturaConceptos.=chr(13).chr(10).'<cfdi:Traslado Base="'.Sprintf("% 01.2f",$row->subTotalIva-$row->descuentoIva).'" Impuesto="002" TipoFactor="Tasa" TasaOCuota="'.Sprintf("% 01.6f",$row->iva).'" Importe="'.Sprintf("% 01.2f",$row->ivaTotal).'"/>';	
			}
		
			if($row->subTotalSinIva>0)
			{
				$XMLFacturaConceptos.=chr(13).chr(10).'<cfdi:Traslado Base="'.Sprintf("% 01.2f",$row->subTotalSinIva-$row->descuentoSinIva).'" Impuesto="002" TipoFactor="Tasa" TasaOCuota="'.Sprintf("% 01.6f",0).'" Importe="'.Sprintf("% 01.2f",0).'"/>';	
			}
			
			$XMLFacturaConceptos.=chr(13).chr(10).'</cfdi:Traslados>';
			$XMLFacturaConceptos.=chr(13).chr(10).'</cfdi:Impuestos>';
			$XMLFacturaConceptos.=chr(13).chr(10).'</cfdi:Concepto>';
		}

		$XMLFacturaConceptos.=chr(13).chr(10).'  </cfdi:Conceptos>';
		
		//IMPUESTOS
		$XMLFacturaImpuestos=chr(13).chr(10).'  <cfdi:Impuestos TotalImpuestosTrasladados="'.Sprintf("% 01.2f",$ivas).'">';
		$XMLFacturaImpuestos.=chr(13).chr(10).'    <cfdi:Traslados>';
	
		if($base16>0)
		{
			$XMLFacturaImpuestos.=chr(13).chr(10).'      <cfdi:Traslado Base="'.Sprintf("% 01.2f",$base16).'" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="'.Sprintf("% 01.2f",$ivas).'"/>';	
		}
		
		if($base0>0)
		{
			$XMLFacturaImpuestos.=chr(13).chr(10).'      <cfdi:Traslado Base="'.Sprintf("% 01.2f",$base0).'" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.000000" Importe="'.Sprintf("% 01.2f",0).'"/>';	
		}
		
		$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;
	}
?>
