A continuación se muestra un ejemplo de factura complemento carta porte 2 autotransporte ingreso CFDI4 PHP SDK
Ejemplo de factura complemento carta porte 2 autotransporte ingreso CFDI4 PHP SDK
<?php
// Se desactivan los mensajes de debug
error_reporting(~(E_WARNING|E_NOTICE));
// Se especifica la zona horaria
date_default_timezone_set('America/Mexico_City');
// Se incluye el SDK
require_once '../../sdk2.php';
// Se especifica la version de CFDi 4.0
$datos['url'] = 'https://pac1.multifacturas.com/pac/timbrar.php?wsdl';
$datos['complemento'] = 'cartaporte20';
$datos['version_cfdi'] = '4.0';
$datos['validacion_local'] = 'NO';
// Ruta del XML Timbrado
$datos['cfdi']='../../timbrados/cfdi_ejemplo_factura_carta_porte20_autotransporte_ingreso.xml';
// Ruta del XML de Debug
$datos['xml_debug']='../../timbrados/sin_timbrar_ejemplo_factura_carta_porte20_autotransporte_ingreso.xml';
// Credenciales de Timbrado
$datos['PAC']['usuario'] = 'DEMO700101XXX';
$datos['PAC']['pass'] = 'DEMO700101XXX';
$datos['PAC']['produccion'] = 'NO';
// Rutas y clave de los CSD
$datos['conf']['cer'] = '../../certificados/EKU9003173C9.cer.pem';
$datos['conf']['key'] = '../../certificados/EKU9003173C9.key.pem';
$datos['conf']['pass'] = '12345678a';
// Datos de la Factura
$datos['factura']['serie'] = 'A';
$datos['factura']['folio'] = '659155';
$datos['factura']['fecha_expedicion'] = date('Y-m-d\TH:i:s', time() - 120);
$datos['factura']['forma_pago'] = '04';
$datos['factura']['subtotal'] = 25000.00;
$datos['factura']['moneda'] = 'MXN';
$datos['factura']['tipocambio'] = 1;
$datos['factura']['total'] = 28000.00;
//$datos['factura']['descuento'] = '0.00';
$datos['factura']['tipocomprobante'] = 'I';
$datos['factura']['metodo_pago'] = 'PUE';
$datos['factura']['LugarExpedicion'] = '26015';
//$datos['factura']['RegimenFiscal'] = '601';
$datos['factura']['Exportacion'] = '01';
// Datos del Emisor
$datos['emisor']['rfc'] = 'EKU9003173C9'; //RFC DE PRUEBA
$datos['emisor']['nombre'] = 'ESCUELA KEMPER URGATE'; // EMPRESA DE PRUEBA+
$datos['emisor']['RegimenFiscal'] = '603';
// Datos del Receptor
$datos['receptor']['rfc'] = 'XAXX010101000';
$datos['receptor']['nombre'] = 'Publico En General';
$datos['receptor']['UsoCFDI'] = 'S01';
$datos['receptor']['DomicilioFiscalReceptor'] = '26015';
$datos['receptor']['RegimenFiscalReceptor'] = '616';
// Se agregan los conceptos
$datos['conceptos'][0]['cantidad'] = 1.00;
$datos['conceptos'][0]['unidad'] = 'SERVICIO';
$datos['conceptos'][0]['ID'] = "M7390Z";
$datos['conceptos'][0]['descripcion'] = "FLETE";
$datos['conceptos'][0]['valorunitario'] = 25000.00;
$datos['conceptos'][0]['importe'] = 25000.00;
$datos['conceptos'][0]['ClaveProdServ'] = '78101500';
$datos['conceptos'][0]['ClaveUnidad'] = 'E48';
$datos['conceptos'][0]['ObjetoImp'] = '02';
// IMPUESTOS TRASLADADOS DEL CONCEPTO
$datos['conceptos'][0]['Impuestos']['Traslados'][0]['Base'] = 25000.00;
$datos['conceptos'][0]['Impuestos']['Traslados'][0]['Impuesto'] = '002';
$datos['conceptos'][0]['Impuestos']['Traslados'][0]['TipoFactor'] = 'Tasa';
$datos['conceptos'][0]['Impuestos']['Traslados'][0]['TasaOCuota'] = '0.160000';
$datos['conceptos'][0]['Impuestos']['Traslados'][0]['Importe'] = 4000.00;
// IMPUESTOS RETENIDOS DEL CONCEPTO
$datos['conceptos'][0]['Impuestos']['Retenciones'][0]['Impuesto'] = '002';
$datos['conceptos'][0]['Impuestos']['Retenciones'][0]['Importe'] = '1000.00'; // iva de los productos facturados
$datos['conceptos'][0]['Impuestos']['Retenciones'][0]['Base'] = '25000.00';
$datos['conceptos'][0]['Impuestos']['Retenciones'][0]['TasaOCuota'] = '0.040000';
$datos['conceptos'][0]['Impuestos']['Retenciones'][0]['TipoFactor'] = 'Tasa';
// TOTAL DE IMPUESTOS TRASLADADOS Y RETENIDOS
$datos['impuestos']['TotalImpuestosTrasladados']='4000.00';
$datos['impuestos']['TotalImpuestosRetenidos']='1000.00';
// IMPUESTOS TRASLADADOS DEL COMPROBANTE (SUMA DE LOS IMPUESTOS TRASLADADOS DE LOS CONCEPTOS))
$datos['impuestos']['translados'][0]['Base'] = '25000.00';
$datos['impuestos']['translados'][0]['Impuesto'] = '002';
$datos['impuestos']['translados'][0]['TasaOCuota'] = '0.160000';
$datos['impuestos']['translados'][0]['Importe'] = '4000.00';
$datos['impuestos']['translados'][0]['TipoFactor'] = 'Tasa';
//impuestos retenciones
$datos['impuestos']['retenciones'][0]['impuesto'] = '002';
$datos['impuestos']['retenciones'][0]['importe'] = '1000.00';
// Complemento carta porte
$datos['cartaporte20']['atrs']['TranspInternac']='No';
$datos['cartaporte20']['atrs']['TotalDistRec']='2';
//////// UBICACION 0
$datos['cartaporte20']['Ubicacion'][0]['atrs']['IDUbicacion'] = 'OR101010'; //Atributo condicional para registrar una clave que sirva para identificar el punto de salida o entrada de los bienes y/o mercancÃas que se trasladan a través de los distintos medios de transporte, la cual estará integrada de la siguiente forma: para origen el acrónimo ÂOR o para destino el acrónimo ÂDE seguido de 6 dÃgitos numéricos asignados por el contribuyente que emite el comprobante para su identificación.
$datos['cartaporte20']['Ubicacion'][0]['atrs']['TipoUbicacion'] = 'Origen'; //Atributo requerido para precisar si el tipo de ubicación corresponde al origen o destino de las ubicaciones para el traslado de los bienes y/o mercancÃas en los distintos medios de transporte.
$datos['cartaporte20']['Ubicacion'][0]['atrs']['RFCRemitenteDestinatario'] = 'EKU9003173C9'; //Atributo requerido para registrar el RFC del remitente o destinatario de los bienes y/o mercancÃas que se trasladan a través de los distintos medios de transporte.
$datos['cartaporte20']['Ubicacion'][0]['atrs']['FechaHoraSalidaLlegada'] = '2021-11-01T00:00:00'; //Atributo requerido para registrar la fecha y hora estimada en la que salen o llegan los bienes y/o mercancÃas de origen o al destino, respectivamente. Se expresa en la forma AAAA-MM-DDThh:mm:ss.
$datos['cartaporte20']['Ubicacion'][0]['domicilio']['Referencia'] = 'casa blanca 1'; //Atributo
$datos['cartaporte20']['Ubicacion'][0]['domicilio']['Pais'] = 'MEX'; //Atributo
$datos['cartaporte20']['Ubicacion'][0]['domicilio']['NumeroInterior'] = '3333'; //Atributo
$datos['cartaporte20']['Ubicacion'][0]['domicilio']['NumeroExterior'] = '4444'; //Atributo
$datos['cartaporte20']['Ubicacion'][0]['domicilio']['Municipio'] = '004'; //Atributo
$datos['cartaporte20']['Ubicacion'][0]['domicilio']['Localidad'] = '23'; //Atributo
$datos['cartaporte20']['Ubicacion'][0]['domicilio']['Estado'] = 'COA'; //Atributo
$datos['cartaporte20']['Ubicacion'][0]['domicilio']['Colonia'] = '0347'; //Atributo
$datos['cartaporte20']['Ubicacion'][0]['domicilio']['CodigoPostal'] = '25350'; //Atributo
$datos['cartaporte20']['Ubicacion'][0]['domicilio']['Calle'] = 'CALLE'; //Atributo
//////// UBICACION 1
$datos['cartaporte20']['Ubicacion'][1]['atrs']['IDUbicacion'] = 'DE202020'; //Atributo condicional para registrar una clave que sirva para identificar el punto de salida o entrada de los bienes y/o mercancÃas que se trasladan a través de los distintos medios de transporte, la cual estará integrada de la siguiente forma: para origen el acrónimo ÂOR o para destino el acrónimo ÂDE seguido de 6 dÃgitos numéricos asignados por el contribuyente que emite el comprobante para su identificación.
$datos['cartaporte20']['Ubicacion'][1]['atrs']['TipoUbicacion'] = 'Destino'; //Atributo requerido para precisar si el tipo de ubicación corresponde al origen o destino de las ubicaciones para el traslado de los bienes y/o mercancÃas en los distintos medios de transporte.
$datos['cartaporte20']['Ubicacion'][1]['atrs']['RFCRemitenteDestinatario'] = 'AAA010101AAA'; //Atributo requerido para registrar el RFC del remitente o destinatario de los bienes y/o mercancÃas que se trasladan a través de los distintos medios de transporte.
$datos['cartaporte20']['Ubicacion'][1]['atrs']['FechaHoraSalidaLlegada'] = '2021-11-01T01:00:00'; //Atributo requerido para registrar la fecha y hora estimada en la que salen o llegan los bienes y/o mercancÃas de origen o al destino, respectivamente. Se expresa en la forma AAAA-MM-DDThh:mm:ss.
$datos['cartaporte20']['Ubicacion'][1]['atrs']['DistanciaRecorrida'] = '1'; //Atributo condicional para registrar en kilómetros la distancia recorrida entre la ubicación de origen y la de destino parcial o final, por los distintos medios de transporte que trasladan los bienes y/o mercancÃas.
$datos['cartaporte20']['Ubicacion'][1]['domicilio']['Referencia'] = 'casa blanca 2'; //Atributo
$datos['cartaporte20']['Ubicacion'][1]['domicilio']['Pais'] = 'MEX'; //Atributo
$datos['cartaporte20']['Ubicacion'][1]['domicilio']['NumeroInterior'] = '3333'; //Atributo
$datos['cartaporte20']['Ubicacion'][1]['domicilio']['NumeroExterior'] = '4445'; //Atributo
$datos['cartaporte20']['Ubicacion'][1]['domicilio']['Municipio'] = '004'; //Atributo
$datos['cartaporte20']['Ubicacion'][1]['domicilio']['Localidad'] = '23'; //Atributo
$datos['cartaporte20']['Ubicacion'][1]['domicilio']['Estado'] = 'COA'; //Atributo
$datos['cartaporte20']['Ubicacion'][1]['domicilio']['Colonia'] = '0347'; //Atributo
$datos['cartaporte20']['Ubicacion'][1]['domicilio']['CodigoPostal'] = '25350'; //Atributo
$datos['cartaporte20']['Ubicacion'][1]['domicilio']['Calle'] = 'CALLE'; //Atributo
//////// UBICACION 2
$datos['cartaporte20']['Ubicacion'][2]['atrs']['IDUbicacion'] = 'DE202021'; //Atributo condicional para registrar una clave que sirva para identificar el punto de salida o entrada de los bienes y/o mercancÃas que se trasladan a través de los distintos medios de transporte, la cual estará integrada de la siguiente forma: para origen el acrónimo ÂOR o para destino el acrónimo ÂDE seguido de 6 dÃgitos numéricos asignados por el contribuyente que emite el comprobante para su identificación.
$datos['cartaporte20']['Ubicacion'][2]['atrs']['TipoUbicacion'] = 'Destino'; //Atributo requerido para precisar si el tipo de ubicación corresponde al origen o destino de las ubicaciones para el traslado de los bienes y/o mercancÃas en los distintos medios de transporte.
$datos['cartaporte20']['Ubicacion'][2]['atrs']['RFCRemitenteDestinatario'] = 'AAA010101AAA'; //Atributo requerido para registrar el RFC del remitente o destinatario de los bienes y/o mercancÃas que se trasladan a través de los distintos medios de transporte.
$datos['cartaporte20']['Ubicacion'][2]['atrs']['FechaHoraSalidaLlegada'] = '2021-11-01T02:00:00'; //Atributo requerido para registrar la fecha y hora estimada en la que salen o llegan los bienes y/o mercancÃas de origen o al destino, respectivamente. Se expresa en la forma AAAA-MM-DDThh:mm:ss.
$datos['cartaporte20']['Ubicacion'][2]['atrs']['DistanciaRecorrida'] = '1'; //Atributo condicional para registrar en kilómetros la distancia recorrida entre la ubicación de origen y la de destino parcial o final, por los distintos medios de transporte que trasladan los bienes y/o mercancÃas.
$datos['cartaporte20']['Ubicacion'][2]['domicilio']['Referencia'] = 'casa blanca 2'; //Atributo
$datos['cartaporte20']['Ubicacion'][2]['domicilio']['Pais'] = 'MEX'; //Atributo
$datos['cartaporte20']['Ubicacion'][2]['domicilio']['NumeroInterior'] = '3333'; //Atributo
$datos['cartaporte20']['Ubicacion'][2]['domicilio']['NumeroExterior'] = '4446'; //Atributo
$datos['cartaporte20']['Ubicacion'][2]['domicilio']['Municipio'] = '004'; //Atributo
$datos['cartaporte20']['Ubicacion'][2]['domicilio']['Localidad'] = '23'; //Atributo
$datos['cartaporte20']['Ubicacion'][2]['domicilio']['Estado'] = 'COA'; //Atributo
$datos['cartaporte20']['Ubicacion'][2]['domicilio']['Colonia'] = '0347'; //Atributo
$datos['cartaporte20']['Ubicacion'][2]['domicilio']['CodigoPostal'] = '25350'; //Atributo
$datos['cartaporte20']['Ubicacion'][2]['domicilio']['Calle'] = 'CALLE'; //Atributo
//MERCANCIA DATOS GENERALES
$datos['cartaporte20']['Mercancias']['atrs']['PesoBrutoTotal']='2.0';
$datos['cartaporte20']['Mercancias']['atrs']['UnidadPeso']='XBX';
$datos['cartaporte20']['Mercancias']['atrs']['NumTotalMercancias']='2';
//////// MERCANCIA 0
$datos['cartaporte20']['Mercancias'][0]['Mercancia']['atrs']['BienesTransp']='11121900';
$datos['cartaporte20']['Mercancias'][0]['Mercancia']['atrs']['Descripcion']='Productos de perfumerÃa';
$datos['cartaporte20']['Mercancias'][0]['Mercancia']['atrs']['Cantidad']='1.0';
$datos['cartaporte20']['Mercancias'][0]['Mercancia']['atrs']['ClaveUnidad']='XBX';
$datos['cartaporte20']['Mercancias'][0]['Mercancia']['atrs']['PesoEnKg']='1.0';
$datos['cartaporte20']['Mercancias'][0]['Mercancia']['atrs']['MaterialPeligroso']='SÃ';
$datos['cartaporte20']['Mercancias'][0]['Mercancia']['atrs']['CveMaterialPeligroso']='1266';
$datos['cartaporte20']['Mercancias'][0]['Mercancia']['atrs']['Embalaje']='4H2';
//Cantidad transporta
$datos['cartaporte20']['Mercancias'][0]['Mercancia']['CantidadTransporta'][0]['IDOrigen']='OR101010';
$datos['cartaporte20']['Mercancias'][0]['Mercancia']['CantidadTransporta'][0]['IDDestino']='DE202020';
$datos['cartaporte20']['Mercancias'][0]['Mercancia']['CantidadTransporta'][0]['Cantidad']='1';
//////// MERCANCIA 1
$datos['cartaporte20']['Mercancias'][1]['Mercancia']['atrs']['BienesTransp']='11121900';
$datos['cartaporte20']['Mercancias'][1]['Mercancia']['atrs']['Descripcion']='Productos de perfumerÃa';
$datos['cartaporte20']['Mercancias'][1]['Mercancia']['atrs']['Cantidad']='1.0';
$datos['cartaporte20']['Mercancias'][1]['Mercancia']['atrs']['ClaveUnidad']='XBX';
$datos['cartaporte20']['Mercancias'][1]['Mercancia']['atrs']['PesoEnKg']='1.0';
$datos['cartaporte20']['Mercancias'][1]['Mercancia']['atrs']['MaterialPeligroso']='SÃ';
$datos['cartaporte20']['Mercancias'][1]['Mercancia']['atrs']['CveMaterialPeligroso']='1266';
$datos['cartaporte20']['Mercancias'][1]['Mercancia']['atrs']['Embalaje']='4H2';
//Cantidad transporta
$datos['cartaporte20']['Mercancias'][1]['Mercancia']['CantidadTransporta'][0]['IDOrigen']='OR101010';
$datos['cartaporte20']['Mercancias'][1]['Mercancia']['CantidadTransporta'][0]['IDDestino']='DE202021';
//$datos['cartaporte20']['Mercancias'][1]['Mercancia']['CantidadTransporta'][0]['CvesTransporte']='CvesTransporte';
$datos['cartaporte20']['Mercancias'][1]['Mercancia']['CantidadTransporta'][0]['Cantidad']='1';
//Autotransporte
$datos['cartaporte20']['Mercancias'][0]['Autotransporte']['atrs']['PermSCT']='TPAF01';
$datos['cartaporte20']['Mercancias'][0]['Autotransporte']['atrs']['NumPermisoSCT']='NumPermisoSCT';
$datos['cartaporte20']['Mercancias'][0]['Autotransporte']['IdentificacionVehicular']['PlacaVM']='plac892';
$datos['cartaporte20']['Mercancias'][0]['Autotransporte']['IdentificacionVehicular']['ConfigVehicular']='VL';
$datos['cartaporte20']['Mercancias'][0]['Autotransporte']['IdentificacionVehicular']['AnioModeloVM']='2020';
$datos['cartaporte20']['Mercancias'][0]['Autotransporte']['Seguros']['PolizaRespCivil']='123456789';
$datos['cartaporte20']['Mercancias'][0]['Autotransporte']['Seguros']['PolizaMedAmbiente']='123456789';
$datos['cartaporte20']['Mercancias'][0]['Autotransporte']['Seguros']['AseguraRespCivil']='SW Seguros';
$datos['cartaporte20']['Mercancias'][0]['Autotransporte']['Seguros']['AseguraMedAmbiente']='SW Seguros Ambientales';
$datos['cartaporte20']['Mercancias'][0]['Autotransporte']['Seguros']['AseguraCarga']='SW Seguros';
$datos['cartaporte20']['Mercancias'][0]['Autotransporte']['Remolque'][0]['SubTipoRem']='CTR021';
$datos['cartaporte20']['Mercancias'][0]['Autotransporte']['Remolque'][0]['Placa']='ABC123';
//figura transporte
$datos['cartaporte20']['FiguraTransporte']['TiposFigura'][0]['atrs']['TipoFigura']='01';
$datos['cartaporte20']['FiguraTransporte']['TiposFigura'][0]['atrs']['RFCFigura']='VAAM130719H60';
$datos['cartaporte20']['FiguraTransporte']['TiposFigura'][0]['atrs']['NumLicencia']='a234567890';
// Se ejecuta el SDK
$res = mf_genera_cfdi4($datos);
/////////// MOSTRAR RESULTADOS DEL ARRAY $res ///////////
echo "<h1>Respuesta Generar XML y Timbrado</h1>";
foreach($res AS $variable=>$valor)
{
$valor=htmlentities($valor);
$valor=str_replace('<br/>','<br/>',$valor);
echo "<b>[$variable]=</b>$valor<hr>";
}