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

function cartaPorte($configuracion,$cliente,$sello,$certificado,$fecha,$folio,$operador,$origen,$destino,$cartaPorte,$vehiculo,$detalles,$IdCCP)
{
	$fecha					= str_replace(" ","T",$fecha);
	$numeroProductos		= $_POST['txtNumeroMercancias'];
	$pesoTotal				= 0;
	$numeroTotalMercancias	= 0;
	
	$XMLFacturaComprobante='<cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/4" xmlns:cartaporte31="http://www.sat.gob.mx/CartaPorte31" 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 http://www.sat.gob.mx/CartaPorte31 http://www.sat.gob.mx/sitio_internet/cfd/CartaPorte/CartaPorte31.xsd"';
	$XMLFacturaComprobante.=' Sello="'.$sello.'"';
	$XMLFacturaComprobante.=' Certificado="'.$certificado.'"';

	$XMLFacturaComprobante.=' Version="4.0" Folio="'.$folio.'"'.(strlen($configuracion->serie)>0?' Serie="'.$configuracion->serie.'"':'').' Fecha="'.$fecha.'" Exportacion="01" NoCertificado="'.$configuracion->numeroCertificado.'" SubTotal="0"';

	
	$XMLFacturaComprobante.=' Moneda="XXX"';
	$XMLFacturaComprobante.=' Total="0" TipoDeComprobante="T" LugarExpedicion="'.sustituir($configuracion->codigoPostal).'">';
	
	if(isset($_POST['txtIdFacturaRelacion']) and isset($_POST['txtUuidRelacion']))
	{
		if($_POST['txtIdFacturaRelacion']>0 and strlen($_POST['txtUuidRelacion']>5))
		{
			$XMLFacturaComprobante.=chr(13).chr(10).'<cfdi:CfdiRelacionados TipoRelacion="'.$_POST['selectTipoRelacion'].'">';

			$XMLFacturaComprobante.='<cfdi:CfdiRelacionado UUID="'.$_POST['txtUuidRelacion'].'"/>';

			$XMLFacturaComprobante.=chr(13).chr(10).'</cfdi:CfdiRelacionados>';
		}
	}
	
	$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($configuracion->rfc)).'" Nombre="'.sustituir($configuracion->nombre).'" UsoCFDI="S01" RegimenFiscalReceptor="'.sustituir($configuracion->claveRegimen).'" DomicilioFiscalReceptor="'.sustituir($configuracion->codigoPostal).'"/>';

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

	foreach($detalles as $row)
	{
		$XMLFacturaConceptos.=chr(13).chr(10).'    <cfdi:Concepto ClaveProdServ="'.$_POST['txtClaveProducto'.$i].'" Cantidad="'.Sprintf("% 01.2f",$row->cantidad).'" ClaveUnidad="'.sustituir($row->claveUnidad).'" Unidad="'.sustituir(substr($row->unidad,0,20)).'" ValorUnitario="0.00" Descripcion="'.sustituir($row->producto).'" Importe="0.00" ObjetoImp="01"/>';
		
		$pesoTotal+=$_POST['txtPesoMercancias'.$i];
		$i++;

		#$XMLFacturaConceptos.=' <cfdi:InformacionAduanera NumeroPedimento="'.$pedimento.'"/>';


		#$XMLFacturaConceptos.=chr(13).chr(10).'</cfdi:Concepto>';
	}

	$XMLFacturaConceptos.=chr(13).chr(10).'  </cfdi:Conceptos>';
	
	
	$retencion="";
	
	//CARTA PORTE
	$carta='<cartaporte31:CartaPorte TranspInternac="No" TotalDistRec="'.Sprintf("% 01.2f",$_POST['txtDistanciaRecorrida']).'" Version="3.1" IdCCP="'.$IdCCP.'">';
	$carta.=chr(13).chr(10).'  <cartaporte31:Ubicaciones>';
	
	$carta.=chr(13).chr(10).'    <cartaporte31:Ubicacion TipoUbicacion="Origen" FechaHoraSalidaLlegada="'.str_replace(' ','T',$_POST['txtFechaSalida']).'" RFCRemitenteDestinatario="'.sustituir($origen->rfc).'">';
	$carta.=chr(13).chr(10).'      <cartaporte31:Domicilio Calle="'.sustituir($origen->calle).'"'.(strlen($origen->numeroExterior)>0?' NumeroExterior="'.sustituir($origen->numeroExterior).'"':'').(strlen($origen->numeroInterior)>0?' NumeroInterior="'.sustituir($origen->numeroInterior).'"':'').(strlen($origen->claveColonia)>0?' Colonia="'.$origen->claveColonia.'"':'').(strlen($origen->claveLocalidad)>0?' Localidad="'.$origen->claveLocalidad.'"':'').(strlen($origen->referencia)>0?' Referencia="'.$origen->referencia.'"':'').(strlen($origen->claveMunicipio)>0?' Municipio="'.$origen->claveMunicipio.'"':'').' Estado="'.$origen->claveEstado.'" Pais="'.$origen->clavePais.'" CodigoPostal="'.$origen->codigoPostal.'"/>';
	$carta.=chr(13).chr(10).'    </cartaporte31:Ubicacion>';
	
	$carta.=chr(13).chr(10).'    <cartaporte31:Ubicacion TipoUbicacion="Destino" FechaHoraSalidaLlegada="'.str_replace(' ','T',$_POST['txtFechaLlegada']).'" RFCRemitenteDestinatario="'.sustituir($destino->rfc).'" DistanciaRecorrida="'.Sprintf("% 01.2f",$_POST['txtDistanciaRecorrida']).'">';
	$carta.=chr(13).chr(10).'      <cartaporte31:Domicilio Calle="'.sustituir($destino->calle).'"'.(strlen($destino->numeroExterior)>0?' NumeroExterior="'.sustituir($destino->numeroExterior).'"':'').(strlen($destino->numeroInterior)>0?' NumeroInterior="'.sustituir($destino->numeroInterior).'"':'').(strlen($destino->claveColonia)>0?' Colonia="'.$destino->claveColonia.'"':'').(strlen($destino->claveLocalidad)>0?' Localidad="'.$destino->claveLocalidad.'"':'').(strlen($destino->referencia)>0?' Referencia="'.$destino->referencia.'"':'').(strlen($destino->claveMunicipio)>0?' Municipio="'.$destino->claveMunicipio.'"':'').' Estado="'.$destino->claveEstado.'" Pais="'.$destino->clavePais.'" CodigoPostal="'.$destino->codigoPostal.'"/>';
	$carta.=chr(13).chr(10).'  </cartaporte31:Ubicacion>';
	
	$carta.=chr(13).chr(10).'  </cartaporte31:Ubicaciones>';
	

	$carta.=chr(13).chr(10).'    <cartaporte31:Mercancias PesoBrutoTotal="'.Sprintf("% 01.2f",$pesoTotal).'" UnidadPeso="'.$_POST['txtClaveUnidadPeso'].'" NumTotalMercancias="'.count($detalles).'">';
	
	$i=0;
	foreach($detalles as $row)
	{
		#$carta.=chr(13).chr(10).'      <cartaporte31:Mercancia BienesTransp="'.$row->claveProducto.'" Cantidad="'.Sprintf("% 01.4f",$row->cantidad).'" ClaveUnidad="'.$row->claveUnidad.'" Descripcion="'.sustituir($row->nombre).'"'.(strlen($_POST['txtMoneda'.$i])>0?' Moneda="'.$_POST['txtMoneda'.$i].'"':'').' PesoEnKg="'.Sprintf("% 01.4f",$_POST['txtPesoMercancias'.$i]).'"'.(strlen($_POST['txtValorMercancia'.$i])>0?' ValorMercancia="'.Sprintf("% 01.4f",$_POST['txtValorMercancia'.$i]).'"':'').($_POST['txtMaterialPeligroso'.$i]!='0'?($_POST['txtMaterialPeligroso'.$i]=='1'?' MaterialPeligroso="Si"':' MaterialPeligroso="No"'):'').'/>';
		$carta.=chr(13).chr(10).'      <cartaporte31:Mercancia BienesTransp="'.$_POST['txtClaveProducto'.$i].'" Cantidad="'.Sprintf("% 01.4f",$row->cantidad).'" ClaveUnidad="'.$row->claveUnidad.'" Descripcion="'.sustituir($row->producto).'"'.(strlen($_POST['txtMoneda'.$i])>0?' Moneda="'.$_POST['txtMoneda'.$i].'"':'').' PesoEnKg="'.Sprintf("% 01.4f",$_POST['txtPesoMercancias'.$i]).'"'.(strlen($_POST['txtValorMercancia'.$i])>0?' ValorMercancia="'.Sprintf("% 01.4f",$_POST['txtValorMercancia'.$i]).'"':'').($_POST['txtMaterialPeligroso'.$i]!='0'?' MaterialPeligroso="No"':'').'/>';
		$i++;
	}
	
	#$carta.=chr(13).chr(10).'      <cartaporte:Mercancia BienesTransp="12164501" Cantidad="1" ClaveUnidad="H87" Descripcion="COSAS DE LA VIDA 2" Moneda="MXN" PesoEnKg="1.000" ValorMercancia="100.00"/>';
	
	$carta.=chr(13).chr(10).'      <cartaporte31:Autotransporte NumPermisoSCT="'.$cartaPorte->numeroPermisoSct.'" PermSCT="'.$cartaPorte->clavePermiso.'">';
	$carta.=chr(13).chr(10).'  	   <cartaporte31:IdentificacionVehicular AnioModeloVM="'.sustituir($vehiculo->modelo).'" ConfigVehicular="'.$vehiculo->claveAutotransporte.'" PlacaVM="'.sustituir($vehiculo->placa).'" PesoBrutoVehicular="'.Sprintf("% 01.2f",$pesoTotal+$vehiculo->peso).'"/>';
	$carta.=chr(13).chr(10).'	   <cartaporte31:Seguros AseguraRespCivil="'.sustituir($cartaPorte->nombreAseguradora).'" PolizaRespCivil="'.sustituir($cartaPorte->numeroPolizaSeguro).'"'.(strlen($cartaPorte->nombreAseguradoraCarga)>0?' AseguraCarga="'.sustituir($cartaPorte->nombreAseguradoraCarga).'"':'').(strlen($cartaPorte->numeroPolizaSeguroCarga)>0?' PolizaCarga="'.sustituir($cartaPorte->numeroPolizaSeguroCarga).'"':'').'/>';
	
	if($vehiculo->remolque!=0)
	{
		if(($vehiculo->idRemolque1>0 and strlen($vehiculo->placa1)>0) or ($vehiculo->idRemolque2>0 and strlen($vehiculo->placa2)>0))
		{
			$carta.=chr(13).chr(10).'<cartaporte31:Remolques>';
			
			if(($vehiculo->idRemolque1>0 and strlen($vehiculo->placa1)>0))
			{
				$carta.=chr(13).chr(10).'<cartaporte31:Remolque SubTipoRem="'.$vehiculo->claveRemolque1.'" Placa="'.sustituir($vehiculo->placa1).'" />';
			}
			
			if(($vehiculo->idRemolque2>0 and strlen($vehiculo->placa2)>0))
			{
				$carta.=chr(13).chr(10).'<cartaporte31:Remolque SubTipoRem="'.$vehiculo->claveRemolque2.'" Placa="'.sustituir($vehiculo->placa2).'" />';
			}
			
			$carta.=chr(13).chr(10).'</cartaporte31:Remolques>';
		}
	}
	
	$carta.=chr(13).chr(10).'      </cartaporte31:Autotransporte>';
	$carta.=chr(13).chr(10).'    </cartaporte31:Mercancias>';
	
	$carta.=chr(13).chr(10).'    <cartaporte31:FiguraTransporte>';
	#$carta.=chr(13).chr(10).'      <cartaporte:Operadores>';
	
	$carta.=chr(13).chr(10).'        <cartaporte31:TiposFigura TipoFigura="'.sustituir($operador->claveFigura).'" NombreFigura="'.sustituir($operador->nombre).'" NumLicencia="'.sustituir($operador->numeroLicencia).'" RFCFigura="'.sustituir($operador->rfc).'"/>';
	#$carta.=chr(13).chr(10).'          <cartaporte:Domicilio Calle="'.sustituir($operador->calle).'"'.(strlen($operador->numeroExterior)>0?' NumeroExterior="'.sustituir($operador->numeroExterior).'"':'').(strlen($operador->numeroInterior)>0?' NumeroInterior="'.sustituir($operador->numeroInterior).'"':'').(strlen($operador->claveColonia)>0?' Colonia="'.$operador->claveColonia.'"':'').(strlen($operador->claveLocalidad)>0?' Localidad="'.$operador->claveLocalidad.'"':'').(strlen($operador->referencia)>0?' Referencia="'.$operador->referencia.'"':'').(strlen($operador->claveMunicipio)>0?' Municipio="'.$operador->claveMunicipio.'"':'').' Estado="'.$operador->claveEstado.'" Pais="'.$operador->clavePais.'" CodigoPostal="'.$operador->codigoPostal.'"/>';
	#$carta.=chr(13).chr(10).'        </cartaporte:Operador>';
	
	#$carta.=chr(13).chr(10).'      </cartaporte:Operadores>';
	$carta.=chr(13).chr(10).'    </cartaporte31:FiguraTransporte>';
	$carta.=chr(13).chr(10).'  </cartaporte31:CartaPorte>';
	
	
	$XMLFinal='<?xml version="1.0" encoding="utf-8"?>'.chr(13).chr(10).
	$XMLFacturaComprobante.
	$XMLFacturaEmisor.
	$XMLFacturaReceptor.
	$XMLFacturaConceptos.chr(13).chr(10).'  <cfdi:Complemento>'.chr(13).chr(10).$carta.'  </cfdi:Complemento>'.chr(13).chr(10).'</cfdi:Comprobante>';

	return $XMLFinal;
}
