<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');

function RegresaXMLFormato($Folio,$Emisor,$Receptor,$Conceptos,$Impuestos,$Sello,$Certificado,$Fecha,$K){

    $FechaExpe=explode(" ",$Fecha);

$FechaMuestra=$FechaExpe[0]."T".$FechaExpe[1];


           $Descuentos=Sprintf("% 01.2f",$Impuestos["Descuento"]);
 $DescuentosPorcentaje=$Descuentos*100;

     $SubTotal=Sprintf("% 01.2f",$Impuestos["SubTotal"]);//SubTotalCalculado sin descuentos e IVA
//$PrevioVenta=Sprintf("% 01.2f",$Impuestos["TTotal"]);

             $SubDescuento=$SubTotal*$Descuentos; //Realiza el calculo de la operacion del descuento si es que existe
           $SubTotalDescto=$SubTotal-$SubDescuento;//Hace la operacion del Descuento con el SubTotal Calculado

             $ImpuestosIva=Sprintf("% 01.2f",$Impuestos["IVA"]*$SubTotalDescto);//Calcula el SubTotal con el IVA
$TotalImpuestosPrecioVenta=Sprintf("% 01.2f",$SubTotalDescto+$ImpuestosIva); //Total a Pagar con IVA

   $IVA=Sprintf("% 01.2f",$Impuestos["IVA"]*100);//Iva calculado con porcentaje de 100

$XMLFacturaComprobante='<Comprobante '; 
$XMLFacturaComprobante.='anoAprobacion="'.$Emisor["AnoAprobacion_empresa"].'" certificado="'.$Certificado.'" fecha="'.$FechaMuestra.'" folio="'.$Folio.'" formaDePago="En efectivo" noAprobacion="'.$Emisor["NoAprobacion_empresa"].'" ';
$XMLFacturaComprobante.='noCertificado="'.$Emisor["NoCertificado_empresa"].'" sello="'.$Sello.'" serie="'.$Emisor["tipo_serie"].'" subTotal="'.$SubTotal.'" tipoDeComprobante="ingreso" descuento="'.$SubDescuento.'" total="'.$TotalImpuestosPrecioVenta.'" version="2.0" ';
$XMLFacturaComprobante.='xmlns="http://www.sat.gob.mx/cfd/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd">';

$XMLFacturaEmisor='<Emisor nombre="'.$Emisor["nombre_empresa"].'" rfc="'.$Emisor["RFC"].'">';
$XMLFacturaEmisor.='<DomicilioFiscal calle="'.$Emisor["direccion_empresa"].'" codigoPostal="'.$Emisor["cp_empresa"].'" colonia="'.$Emisor["colonia_empresa"].'" estado="'.$Emisor["estado_empresa"].'" municipio="'.$Emisor["municipio_empresa"].'" noExterior="'.$Emisor["NoExterior_empresa"].'" pais="'.$Emisor["pais_empresa"].'"/>';
$XMLFacturaEmisor.='</Emisor>';


$NoExteriorReceptor="";

switch($Receptor['Numero']){

case "0": 
         $NoExteriorReceptor="S/N";
         break;
default: $NoExteriorReceptor=$Receptor['Numero']; break;

}

$XMLFacturaReceptor='<Receptor nombre="'.$Receptor['Nombre'].'" rfc="'.$Receptor['Rfc'].'">';
$XMLFacturaReceptor.='<Domicilio calle="'.$Receptor['Direccion'].'" codigoPostal="'.$Receptor['Cp'].'" colonia="'.$Receptor['Colonia'].'" estado="'.$Receptor['Estado'].'" municipio="'.$Receptor['Municipio'].'" noExterior="'.$NoExteriorReceptor.'" pais="'.$Receptor['Pais'].'"/>';
$XMLFacturaReceptor.='</Receptor>';

//Parte de los conceptos
$XMLFacturaConceptos='<Conceptos>';
for($i=0;$i<$K;$i++){
    $XMLFacturaConceptos.='<Concepto cantidad="'.$Conceptos[$i]["Cantidad"].'" descripcion="'.$Conceptos[$i]["Descripcion"].'" importe="'.$Conceptos[$i]["Precio_importe"].'" valorUnitario="'.$Conceptos[$i]["Precio_unitario"].'"/>';
}
$XMLFacturaConceptos.='</Conceptos>';


$XMLFacturaImpuestos='<Impuestos totalImpuestosTrasladados="'.Sprintf("% 01.2f",$ImpuestosIva).'">';
$XMLFacturaImpuestos.='<Traslados>';
$XMLFacturaImpuestos.='<Traslado importe="'.Sprintf("% 01.2f",$ImpuestosIva).'" impuesto="IVA" tasa="'.$IVA.'"/>';
$XMLFacturaImpuestos.='</Traslados>';
$XMLFacturaImpuestos.='</Impuestos>';


       $XMLFinal='<?xml version="1.0" encoding="utf-8"?>'.$XMLFacturaComprobante.$XMLFacturaEmisor.$XMLFacturaReceptor.$XMLFacturaConceptos.$XMLFacturaImpuestos.'</Comprobante>';

$XMLSinEspacios = QuitarEspaciosXML($XMLFinal,"B");//preg_replace("/[\n|\r|\n\r]/i"," ",$XMLFinal);

return $XMLSinEspacios;
}


function QuitarEspaciosXML($Texto,$Tipo){
$Textox="";
  switch($Tipo){
     case "A": $Textox=eregi_replace("[\n|\r|\n\r]"," ", $Texto); break;
     case "B": $Textox=preg_replace("/[\n|\r|\n\r]/i"," ", $Texto); break;
    }
 return $Textox;
}


function SaveXml($Archivo,$XML){
 
 $fh =fopen($Archivo,'w');
    if($fh){
	    fwrite($fh,$XML);
	    fclose($fh);
	   return true;
    }else {
    	   return false;
	  }
 }//SaveXML

function openFile($file, $mode, $input) 
{
    if ($mode == "READ") 
	{
        if (file_exists($file)) 
		{
            $handle = fopen($file, "r");
            $output = fread($handle, filesize($file));
            return $output; // output file text
        } 
		else 
		{
            return false; // failed.
        }
    } 
	elseif ($mode == "WRITE") 
	{
        $handle = fopen($file, "w");
        if (!fwrite($handle, $input)) 
		{
            return false; // failed.
        } 
		else 
		{
            return true; //success.
        }
    } elseif ($mode == "READ/WRITE") {
        if (file_exists($file) && isset($input)) {
            $handle = fopen($file,"r+");
            $read = fread($handle, filesize($file));
            $data = $read.$input;
            if (!fwrite($handle, $data)) {
                return false; // failed.
            } else {
                return true; // success.
            }
        } else {
            return false; // failed.
        }
    } else {
        return false; // failed.
    }
    fclose($handle);
}


	function CrearDirectorio($Ruta)
	{
		$Band=false;
		//echo $Ruta;
		//echo $Permisos;
		//return;
		//$Crear=mkdir($Ruta,0777);
		//echo $Ruta;
		if(!file_exists($Ruta))
		{
			$Crear=mkdir($Ruta,0777);
			
			if($Crear)
			{
				//echo $Crear;
				//return;
				//chmod($Ruta,$Permisos);
				chmod($Ruta,0777);
				//exec("chmod 7777 -R ".$Ruta);
				$Band=true;
			}
		}
		else
		{
			$Band=false;
		}  
		
		return $Band;   
	}

function rmdirr($dirname){
    // Simple delete for a file
    if (is_file($dirname)) {
        return unlink($dirname); }
    // Loop through the folder
    $dir = dir($dirname);
    while (false !== $entry = $dir->read()) {
      // Skip pointers
      if ($entry == '.' || $entry == '..') { continue; }
     // Deep delete directories
       if (is_dir("$dirname/$entry")) {
         rmdirr("$dirname/$entry"); }
       else {
          unlink("$dirname/$entry");
        }
     }// Clean up
  $dir->close();
  return rmdir($dirname);
}

?>
