ÍNDICE

01. VISIÓN GENERAL

Objetivo

Generar un CFDI con complemento Carta Porte en el cual se detallan operaciones de traslado de mercancías, ubicaciones de origen, puntos intermedios y destino, así como lo referente al medio a través del cual se transportan.

El complemento Carta Porte se incorpora al CFDI de tipo Traslado para acreditar la posesión de las mercancías, brindando información sobre la procedencia y los destinos de las mercancías que se trasladan a través de los distintos medios de transporte.

Los contribuyentes que brindan servicios de traslado de mercancías por los distintos medios de transporte, podrán emitir un CFDI de tipo Ingreso incorporando el complemento Carta Porte, con el que se podrá amparar la legal posesión de las mercancías.

En la Primera Resolución de Modificaciones la Miscelánea Fiscal para 2021 indica, en el artículo transitorio décimo primero, el modelo de entrada en vigor de este complemento.

Para los efectos de las reglas 2.7.1.8. y 2.7.1.9., y el artículo Trigésimo Sexto Transitorio de la RMF 2021, el complemento “Carta Porte” entrará en vigor a partir del 1 de junio de 2021. Durante los 120 días naturales, siguientes al inicio de la vigencia del complemento a que se refiere el párrafo anterior, los contribuyentes señalados en la regla 2.7.1.9. podrán optar por expedir el CFDI sin incorporar el complemento “Carta Porte”, al finalizar dicho periodo el uso del complemento “Carta Porte” será obligatorio para los citados contribuyentes

Información de consulta:

Miscelánea Fiscal para 2021

Primera Resolución de Modificaciones la Miscelánea Fiscal para 2021

Información técnica y Preguntas frecuentes

Instructivo de llenado del CFDI con Complemento Carta Porte

Fundamento Legal

Código Fiscal de la Federación, artículos 29 y 29-A.

Resolución Miscelánea Fiscal, regla 2.7.1.8, Trigésimo Sexto Transitorio.

Regla 2.7.1.9. de la SEGUNDA Resolución de Modificaciones a la Resolución Miscelánea Fiscal para 2021, tercera versión anticipada.

Décimo Primero Transitorio de la PRIMERA Resolución de Modificaciones a la Resolución Miscelánea Fiscal para 2021.


Página del SAT:

Complemento Carta Porte


  • El complemento de Carta Porte versión 2.0, se publicó en el portal del SAT el 26 de octubre de 2021.
  • El inicio de vigencia del complemento Carta Porte versión 2.0, será a partir del 1 de diciembre de 2021, de acuerdo a lo establecido en el artículo segundo, publicado en la 2a. versión anticipada en relación con el Décimo Primero Transitorio publicado en la 1a. versión anticipada, ambas de la 3a. Resolución de Modificaciones a la RMF vigente.
  • El periodo comprendido del 1 al 31 de diciembre de 2021, se considera como de adaptación, por lo que se deberán emitir los respectivos comprobantes y se dará por cumplida dicha obligación aún y cuando contenga datos incorrectos en relación con los requisitos tanto del "Estándar del complemento Carta Porte" como del "Instructivo de llenado del CFDI al que se le incorpora el Complemento Carta Porte".
  • Para versión de Complemento de Carta Porte 2.0, Validar que se tengan los ajustes al Diccionario de Datos, véase las especificaciones para los siguientes campos:
    • País Ori/Des (A1X_PAIS)
    • Aseg Med Amb (A1X_ASEGMA)
    • Póliza Med A (A1X_POLMA)
    • Aseg. Carga (A1X_ASECGA)
    • Póliza Carga (A1X_POLCGA)
    • Prima Seguro (A1X_PRISEG)
    • Tipo Ubicación (A1Y_TIPEST)
    • Id Ubicación (A1Y_ORIGEN)
    • Parte Transp (AE0_PARTE)
    • Id Ub Origen (D2_CNATREC)
    • Id Ub Destin (D2_GRUPONC)
  • Los ajustes a diccionario para Complemento de Carta Porte versión 2.0 fueron realizados en el pacote 009897 - DMINA-14383 FUNCIONALIDAD DE CARTA PORTE VERSION.
  • En caso de contar con el archivo diferencial del diccionario (SDFMEX.TXT) para realizar la actualización, consulte el documento Actualizador de diccionario y base de datos - UPDDISTR el cual le guiará para aplicar las actualizaciones automáticamente desde el archivo diferencial.
  • Al actualizar el Diccionario de Datos a través del Actualizador de diccionario de datos - UPDDISTR, es necesario validar que se encuentren configurados los campos de acuerdo a lo definido en Diccionario de Datos Carta Porte México ya que existen las siguientes reglas para la actualización de campos Reglas para actualización de Diccionario SX3 - UPDDISTR en migrador de versión. por lo que si los campos no fueron actualizados por alguna de estas reglas, se deberá realizar de forma manual.

Rutinas utilizadas

Para tener activa la funcionalidad de Complemento de Carta Porte para versión 2.0, es necesario tener actualizadas con una fecha mayor o igual las siguientes rutinas:

RutinaNombre TécnicoFecha
LOCXNFCaptura de documentos fiscales09/09/2021
LOCXMEXFunciones de documentos fiscales localizadas para México09/09/2021
LOCXFUNAFunciones generales de documentos fiscales29/11/2021
MATA487Captura de Carta Porte26/11/2021
MATR475Informe de Notas Fiscales25/11/2021
FISA812Definición de catálogos27/08/2021
FISA813Mantenimiento de catálogos27/08/2021
FISA814Carga de catálogos desde archivos .CSV a la base de datos25/11/2021
FATSMEX.INIScript de generación de XML para Documentos de Salida25/11/2021


Esquema de generación del XML de Complemento de Carta Porte


De acuerdo al instructivo de llenado, el formato siguiente lista los diferentes nodos y atributos que integran el Complemento Carta Porte versión 2.0 de un CFDI.

La columna Dato en Protheus, especifica la fuente del dato que se informa en el atributo correspondiente.

Se han omitido algunos nodos referentes a transporte Marítimo, Aéreo y Ferroviario. Por el momento, el sistema no considera estos medios de transporte.


CampoDescripciónNodoUsoDato en Protheus


cfdi:Comprobante

VersionVersión CFDI.cfdi:Comprobante
"3.3"
FormaPagoEn este campo se deberá registrar la clave de la forma de pago en que se liquida el valor pactado en la prestación del servicio.cfdi:Comprobante

CFDI de tipo ingreso: Metodo pago (AI0_MPAGO)

CFDI de tipo traslado: N/A

TipoDeComprobante

Tipo de comprobantecfdi:Comprobante

CFDI de tipo ingreso: "I"

CFDI de tipo traslado: "T"

MetodoPagoEste campo sirve para seleccionar la clave que informe si el pago por la prestación del servicio se liquidó en una sola exhibición o es un pago en parcialidades.cfdi:Comprobante

CFDI de tipo ingreso: Met Pago SAT (E4_MPAGSAT)

CFDI de tipo traslado: N/A

SubtotalSi el campo TipoDeComprobante contiene el valor “T” (Traslado), se debe registrar el valor igual a cero.cfdi:Comprobante

Si el campo de la factura Identificador de Documento (F2_TIPODOC) es "21"-Traslado, informa:

"0"

De lo contrario, informa:

Diferencia del campo Valor Mercancías (F2_VALMERC) - el campo Descuentos (F2_DESCONT) de la factura.

MonedaSi el campo TipoDeComprobante contiene el valor “T” (Traslado), en este campo se debe registrar el valor “XXX” (Los códigos asignados para las transacciones en que intervenga ninguna moneda). Si el campo TipoDeComprobante contiene el valor “I” (Ingreso), este campo debe contener un valor diferente de “XXX” (Los códigos asignados para las transacciones en que intervenga ninguna moneda).cfdi:Comprobante

Si el campo de la factura Identificador de Documento (F2_TIPODOC) es "21"-Traslado, informa :

"XXX"

De lo contrario, informa:

Campo Moneda SAT (CTO_MOESAT) relacionado con el campo Moneda de la Factura (F2_MOEDA).

TotalSi el campo TipoDeComprobante contiene el valor “T” (Traslado), se debe registrar el valor igual a cero.cfdi:Comprobante

Si el campo de la factura Identificador de Documento (F2_TIPODOC) es "21"-Traslado, informa:

"0"

De lo contrario, informa:

Campo Valor Bruto (F2_VALBRUT) de la factura.



cfdi:Comprobante:CfdiRelacionados

TipoRelacionDebe contener el valor “05” (Traslados de mercancías facturadas previamente), contenida en el catálogo del CFDI, c_TipoRelacion, publicado en el portal del SAT. Y el valor del campo Fecha debe contener al menos una diferencia de 6:00:00 horas respecto de la factura inicial, la cual se relaciona siempre que se cuente con dicha información.cfdi:Comprobante:CfdiRelacionados
"05"
UUID Se debe registrar el folio fiscal (UUID) de un comprobante fiscal relacionado con el presente comprobante.cfdi:Comprobante:CfdiRelacionados:CfdiRelacionado
Campo UUID Relacs (F2_UUIDREL) de la factura.


cfdi:Comprobante:Receptor

RFCSi el campo TipoDeComprobante contiene el valor “T” (Traslado), este campo debe
contener el valor “XAXX010101000”, en otro caso se podrá capturar el RFC del cliente, siempre y cuando se encuentre en la lista del RFC Inscritos no cancelados del SAT I_RFC.
Si el campo TipoDeComprobante contiene el valor “I” (Ingreso), y cuando no se utilice el RFC genérico, el RFC debe estar en la lista de RFC inscritos no cancelados en el SAT.
cfdi:Comprobante:Receptor

Si el campo de la factura Identificador de Documento (F2_TIPODOC) es "21"-Traslado, informa:

El RFC del Emisor.

De lo contrario, informa:

Campo RFC cliente (A1_CGC) correspondiente al Código del cliente (F2_CLIENTE+F2_LOJA) de la factura.

UsoCFDISi el campo TipoDeComprobante contiene el valor “T” (Traslado), este campo debe contener el valor “P01” (Por definir).

cfdi:Comprobante:Receptor

Si el campo de la factura Identificador de Documento (F2_TIPODOC) es "21"-Traslado, informa:

"P01" (por Definir)

De lo contrario, informa:

Campo Uso CFDI (F2_USOCFDI) de la factura.



cfdi:Comprobante:Conceptos

ClaveProdServ

CFDI de tipo Ingreso:

En este campo deberás registrar la clave que corresponda al tipo de servicio que estas prestando para el traslado de bienes y/o mercancías.

CFDI de tipo Traslado:

En este campo deberás registrar la clave que corresponda a los bienes y/o mercancías que se transporten.

cfdi:Comprobante:Conceptos
Prod/Serv SAT (B1_PRODSAT)
ClaveUnidad

CFDI de tipo Ingreso:

En este campo deberás registrar la clave de unidad E48 con descripción “Unidad de servicio”.

CFDI de tipo Traslado:

Este campo sirve para registra la clave de unidad de medida utilizada para los bienes y/o mercancías transportadas.

cfdi:Comprobante:Conceptos
Uni Med SAT (AH_UNIDSAT)
Descripcion

CFDI de tipo Ingreso:

Este campo sirve para detallar el tipo de servicio que se va a realizar.

CFDI de tipo Traslado:

Este campo sirve para detallar el bien o mercancía que se va a transportar.

cfdi:Comprobante:Conceptos
Descripción (B1_DESC)

Complemento Carta Portecfdi:Comprobante:Complemento:cartaporte20:CartaPorte
Complemento  para incorporar al Comprobante Fiscal Digital por Internet (CFDI),
la información relacionada a los bienes o mercancías, ubicaciones de
origen, puntos intermedios y destino, así como lo referente al medio por el
que se transportan; ya sea por vía terrestre (carretera federal o líneas
férreas), aérea, marítima o fluvial; además de incluir el traslado de
Hidrocarburos y Petrolíferos.
VersionAtributo requerido con valor prefijado que indica la versión del complemento Carta Porte.cartaporte20:CartaPorteRequerido"2.0"
TranspInternacEn este campo se deberá registrar el valor “Sí” o “No” para indicar cuando el traslado de bienes y/o mercancías sea de carácter internacional.cartaporte20:CartaPorteRequerido

Campo Transporte internacional (A1X_INTERN) de Carta Porte:

"Sí" o "No"

EntradaSalidaMerc

En este campo se deberá registrar el valor “Entrada” o “Salida” cuando los bienes y/o mercancías ingresen o salgan del territorio nacional.

Nota: Si el valor registrado en el campo TranspInternac es “No”, este campo se debe omitir.
cartaporte20:CartaPorteCondicional

Este atributo se informa si el campo Transporte internacional (A1X_INTERN) de Carta Porte es "Sí".

Si el campo Entrada o Salida (A1X_ENTSAL) de Carta Porte es "E", informa:

"Entrada"

De lo contrario, informa:

"Salida"

PaisOrigenDestino

En este campo se deberá registrar la clave del país de origen o destino de los bienes y/o mercancías transportadas.

Nota: Si el valor registrado en el campo TranspInternac es “No”, este campo se debe omitir.

cartaporte20:CartaPorteCondicional

Este atributo se informa si el campo de Carta Porte Transporte internacional (A1X_INTERN) es "Sí".

Campo de Carta Porte País Origen/destino (A1X_PAIS).

ViaEntradaSalida

En este campo se deberá registrar la clave del transporte a través del cual ingresan o salen los bienes y/o mercancías del territorio nacional.

Nota: Si el valor registrado en el campo TranspInternac es “No”, este campo se debe omitir.

cartaporte20:CartaPorteCondicional

Este atributo se informa si el campo de Carta Porte Transporte internacional (A1X_INTERN) es "Sí".

Campo de Carta Porte Clave de transporte (A1X_TRANSP).

TotalDistRecEn este campo se deberá registrar la suma de las distancias recorridas en kilómetros, registradas en los campos “Distancia Recorrida” de las secciones Ubicación.cartaporte20:CartaPorteCondicionalSuma de los valores Distancia recorrida (A1Y_DISREC) del nodo Ubicaciones.


cartaporte20:Ubicaciones:UbicacionRequeridoNodo requerido para registrar las distintas ubicaciones que sirven para reflejar el domicilio del origen y/o destino que tienen los bienes o mercancías que se trasladan por distintos medios de transporte.
TipoUbicacionEn este campo se deberá registrar el valor que corresponda al tipo de ubicación, ya sea "Origen" o "Destino".cartaporte20:Ubicaciones:UbicacionRequerido

Si el campo Tipo Ubicación (A1Y_TIPEST) es "D"

    "Origen"

De lo contrario:

   "Destino"

IDUbicacionCuando las mercancías tengan diferentes ubicaciones de tipo Origen y/o Destino, se les debe asignar un identificador el cual debe incluir el acrónimo “OR” para Origen y “DE” para Destino, seguido de 6 dígitos numéricos que podrás asignar.cartaporte20:Ubicaciones:UbicacionOpcionalCampo Id Ubicación (A1Y_ORIGEN)de Ubicaciones.
RFCRemitenteDestinatario

En este campo se deberá registrar la clave en el RFC del remitente cuando el valor registrado en el campo TipoUbicacion sea “Origen”.

Por otro lado, si el valor agregado en el campo TipoUbicacion es “Destino” se deberá registrar la clave en el RFC del destinatario de los bienes y/o mercancías que se trasladan.

cartaporte20:Ubicaciones:UbicacionRequeridoCampo RFC (A1Y_RFCORI) de Ubicaciones.
NombreRemitenteDestinatarioEn este campo se podrá registrar el nombre del remitente o destinatario de los bienes y/o mercancías que se trasladan.cartaporte20:Ubicaciones:UbicacionOpcionalCampo Nombre (A1Y_NOMORI) de Ubicaciones.
NumRegIdTribEn este campo se podrán registrar los datos de identificación fiscal del remitente o destinatario, siempre que en el campo “RFCRemitenteDestinatario” se haya registrado la clave en el RFC genérica de residentes en el extranjero “XEXX010101000”.cartaporte20:Ubicaciones:UbicacionOpcionalN/A
ResidenciaFiscalEn este campo podrás registrar la clave del país del remitente o destinatario, siempre que se haya registrado un valor en el campo “NumRegIdTrib”.cartaporte20:Ubicaciones:UbicacionOpcionalN/A
NumEstacionAtributo condicional para registrar la clave de la estación de origen o destino para el traslado de los bienes y/o mercancías que se realiza a través de los distintos medios de transporte, esto de acuerdo al valor de la columna “Clave identificación” del catálogo c_Estaciones del complemento Carta Porte que permita asociarla al tipo de transporte.cartaporte20:Ubicaciones:UbicacionOpcionalN/A
NombreEstacionAtributo condicional para registrar el nombre de la estación de origen o destino por la que se pasa para efectuar el traslado de los bienes y/o mercancías a través de los distintos medios de transporte, conforme al catálogo c_Estaciones del complemento Carta Porte.cartaporte20:Ubicaciones:UbicacionOpcionalN/A
NavegacionTraficoAtributo condicional para registrar el tipo de puerto de origen o destino en el cual se documentan los bienes y/o mercancías que se trasladan vía marítima.cartaporte20:Ubicaciones:UbicacionOpcionalN/A
FechaHoraSalidaLlegadaEn este campo se deberá registrar la fecha y hora estimada en la que salen o llegan los bienes y/o mercancías del origen o destino, respectivamente.cartaporte20:Ubicaciones:UbicacionRequerido

Campos Fecha de Salida y Hora de Salida de Ubicaciones:

DTOS(A1Y_FECSAL) + "T" + A1Y_HRASAL

TipoEstacion

Atributo condicional para registrar el tipo de estación por el que pasan los bienes y/o mercancías durante su traslado a través de los distintos medios de transporte.

cartaporte20:Ubicaciones:UbicacionCondicionalN/A
DistanciaRecorrida

En este campo se deberá registrar la distancia recorrida en kilómetros entre el origen y el destino.

Este campo solo se debe registrar cuando el campo TipoUbicacion contenga el valor “Destino”.

cartaporte20:Ubicaciones:UbicacionCondicional

Si el campo Tipo Ubicación (A1Y_TIPEST) es "D", coloca el campo Distancia recorrida (A1Y_DISREC), ambos de Ubicaciones.

De lo contrario se omite.



cartaporte20:Ubicaciones:Ubicacion:DomicilioCondicionalNodo condicional para registrar información del domicilio de origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte.
CalleEn este campo se podrá registrar el nombre de la calle en la que está ubicado el domicilio de origen o destino de los bienes y/o mercancías que se trasladan.cartaporte20:Ubicaciones:Ubicacion:DomicilioRequerido

Campo Calle (A1Y_CALORI) de Ubicaciones.

NumeroExteriorEn este campo se podrá registrar el número exterior en donde se ubica el domicilio del origen o destino de los bienes y/o mercancías que se trasladan.cartaporte20:Ubicaciones:Ubicacion:DomicilioOpcional

Campo Número exterior (A1Y_EXTORI) de Ubicaciones.

NumeroInteriorEn este campo se podrá registrar el número interior en caso de existir, en donde se ubica el domicilio del origen o destino de los bienes y/o mercancías que se trasladan.cartaporte20:Ubicaciones:Ubicacion:DomicilioOpcional

Campo Número interior (A1Y_INTORI) de Ubicaciones.

ColoniaEn este campo se podrá registrar la clave de la colonia en donde se ubica el domicilio del origen o destino de los bienes y/o mercancías que se trasladan vía autotransporte. El valor registrado en este campo debe coincidir con la clave del código postal registrado en el campo “CodigoPostal”.cartaporte20:Ubicaciones:Ubicacion:DomicilioOpcional

Campo Colonia (A1Y_COLORI) de Ubicaciones.

Localidad

En este campo se podrá registrar la clave que corresponda a la ciudad o población, en donde se encuentra ubicado el domicilio del origen o destino de los bienes y/o mercancías que se trasladan, si la clave del país es distinta a “MEX” se puede registrar texto libre.

La clave capturada en este campo debe coincidir con el estado capturado en el campo “Estado”.

cartaporte20:Ubicaciones:Ubicacion:DomicilioOpcional

Campo Localidad (A1Y_LOCORI) de Ubicaciones.

ReferenciaEste campo sirve para especificar una referencia geográfica adicional que permita una fácil o precisa ubicación del domicilio del origen y/o destino de las mercancías que se trasladan.cartaporte20:Ubicaciones:Ubicacion:DomicilioOpcionalN/A
Municipio

En este campo se podrá registrar el municipio, delegación, alcaldía o condado en donde se encuentra ubicado el domicilio del origen o destino de los bienes y/o mercancías que se trasladan, si la clave del país es distinta a “MEX” se puede registrar texto libre.

El dato capturado en este campo debe coincidir con el estado capturado en el campo “Estado”.

cartaporte20:Ubicaciones:Ubicacion:DomicilioOpcional

Campo Municipio (A1Y_MUNORI) de Ubicaciones.

Estado

En este campo se deberá registrar el estado, entidad, región, comunidad, en donde se encuentra ubicado el domicilio del origen o destino de los bienes y/o mercancías que se trasladan, si la clave del país es distinta a “MEX”, “USA” o "CAN” se puede registrar texto libre.

El dato capturado en este campo debe coincidir con el país capturado en el campo “Pais”.

cartaporte20:Ubicaciones:Ubicacion:DomicilioRequerido

Campo Estado (A1Y_EDOORI) de Ubicaciones.

Pais

En este campo se deberá registrar la clave del país en donde se encuentra ubicado el domicilio del origen o destino de los bienes y/o mercancías que se trasladan.

Este campo debe contener una clave del catálogo c_Pais, publicado en el portal del SAT.

cartaporte20:Ubicaciones:Ubicacion:DomicilioRequerido

Campo País (A1Y_PAIORI) de Ubicaciones.

CodigoPostal

En este campo se deberá registrar la clave del código postal en donde se encuentra el domicilio del origen o destino de los bienes y/o mercancías que se trasladan.

El dato capturado en este campo debe coincidir con:

- La columna c_Estado, debe ser la misma que la capturada en el campo Estado.

- La columna c_Municipio, debe ser la misma que la capturada en el campo Municipio.

- La columna c_Localidad, debe ser la misma que la capturada en el campo Localidad.

cartaporte20:Ubicaciones:Ubicacion:DomicilioRequerido

Campo Código postal (A1Y_CPORI) de Ubicaciones.



cartaporte20:MercanciasRequeridoNodo requerido para registrar la información de los bienes o mercancías que se trasladan en los distintos medios de transporte.
PesoBrutoTotalEn este campo se deberá registrar la suma del peso bruto de los bienes y/o mercancías que se trasladan.cartaporte20:MercanciasRequeridoSuma de PesoEnKg (D2_PESO).
UnidadPesoEn este campo se deberá registrar la clave de la unidad de peso que corresponda al valor registrado en el campo PesoBrutoTotal.cartaporte20:MercanciasRequerido"KGM"
PesoNetoTotalAtributo condicional para registrar la suma de los valores indicados en el atributo “PesoNeto” del nodo “DetalleMercancia”.cartaporte20:MercanciasCondicionalN/A
NumTotalMercancias

En este campo se deberá registrar el número total de los bienes y/o mercancías que se trasladan, identificándose por cada sección Mercancía registrada en el complemento.

El valor de este campo debe ser igual al número de secciones Mercancia que se registren en el complemento.

cartaporte20:MercanciasRequeridoNúmero de ítems de productos de la factura.
CargoPorTasacionEn este campo se deberá registrar el importe pagado por la tasación de los bienes y/o mercancías que se trasladan vía aérea.cartaporte20:MercanciasOpcionalN/A


cartaporte20:Mercancias:MercanciaRequeridoNodo requerido para registrar información de los bienes o mercancías que se trasladan en los distintos medios de transporte.
BienesTransp

En este campo se deberá registrar la clave de producto de los bienes y/o mercancías que se trasladan vía Autotransporte.

El valor de este campo deberá contener una clave del catálogo del complemento Carta Porte c_ClaveProdServCP, publicado en el portal del SAT.

Nota: no aplican los servicios de traslado de mercancías en este campo, ya que esta información se encuentra registrada a nivel Comprobante.

cartaporte20:Mercancias:MercanciaRequerido

Campo Producto o Servicio SAT (B1_PRODSAT) correspondiente al producto del ítem de la factura. 

ClaveSTCCEn este campo se podrá registrar la clave de producto de acuerdo al catálogo STCC, dicha clave debe estar compuesta de 6 o 7 caracteres numéricos.cartaporte20:Mercancias:MercanciaOpcionalN/A
DescripcionEn este campo se deberá registrar la descripción de los bienes y/o mercancías que se trasladan vía autotransporte.cartaporte20:Mercancias:MercanciaCondicional

Descripción del Catálogo productos/servicios (S002) de acuerdo al campo Producto o Servicio SAT (B1_PRODSAT) correspondiente al producto del ítem de la factura. 

CantidadEn este campo se deberá registrar la cantidad de bienes y/o mercancías que se trasladan.cartaporte20:Mercancias:MercanciaCondicionalCampo Cantidad del producto (D2_QUANT), del ítem de la factura.
ClaveUnidad

En este campo se deberá registrar la clave de unidad de medida aplicable y que se encuentra en el catálogo de CFDI, c_ClaveUnidad, publicado en el portal del SAT.

La unidad debe corresponder con la descripción de los bienes y/o mercancías registrados.

cartaporte20:Mercancias:MercanciaCondicionalCampo Unidad medida SAT (AH_UNIDSAT) que corresponde al producto del ítem de la factura.
UnidadEn este campo se podrá registrar la descripción de la unidad de medida propia de los bienes y/o mercancías que se trasladan.cartaporte20:Mercancias:MercanciaOpcionalN/A
DimensionesEn este campo se podrán registrar las medidas del empaque de los bienes y/o mercancías que se trasladan. Se debe registrar la longitud, la altura y la anchura en centímetros o en pulgadas separados por una diagonal.cartaporte20:Mercancias:MercanciaOpcionalN/A
MaterialPeligroso

En este campo se deberá indicar el valor “Sí” o “No” cuando los bienes y/o mercancías que se trasladan son considerados como material peligroso.

Nota: La forma de identificar si se trata de un material peligroso es considerando la columna Material peligroso del catálogo c_ClaveProdServCP del complemento Carta Porte, publicado en el portal del SAT, el cual tiene la siguiente clasificación:

. “0” significa que los bienes y/o mercancías no son peligrosos.

. “1” significa que los bienes y/o mercancías son peligrosos.

. “0,1” significa que, a consideración del contribuyente, puede que sea o no peligroso.

cartaporte20:Mercancias:MercanciaOpcional

Si el código registrado en la columna BienesTransp, corresponde al Catálogo Producto/Servicio CP (S019) y además la columna Material Peligroso, del mismo catálogo, es "0,1" o "1", se informa:
"Sí"
En caso contrario el nodo no se generará en el XML.

CveMaterialPeligrosoEn este campo se podrá registrar la clave del tipo de material peligroso que se transporta de acuerdo a la NOM-002-SCT/2011, de acuerdo al catálogo c_MaterialPeligroso publicado en la sección del complemento Carta Porte en la página del SAT.cartaporte20:Mercancias:MercanciaCondicionalCampo Clave material peligroso (D2_GRPCST) del ítem de la factura.
EmbalajeEn este campo se podrá registrar la clave del tipo de embalaje del catálogo del complemento Carta Porte, c_TipoEmbalaje, publicado en el portal del SAT.cartaporte20:Mercancias:MercanciaCondicionalCampo Clave de embalaje (D2_TNATREC) del ítem de la factura.
DescripEmbalajeEn este campo se podrá registrar la descripción del embalaje en el que se transportan los bienes y/o mercancías que se consideran material o residuo peligroso.cartaporte20:Mercancias:MercanciaCondicionalDescripción del Catálogo Tipos de Embalaje (S021) de acuerdo al campo Clave de embalaje (D2_TNATREC) del ítem de la factura.
PesoEnKgEn este campo se deberá registrar el peso estimado en kilogramos de los bienes y/o mercancías que se trasladan.cartaporte20:Mercancias:MercanciaRequeridoCampo Peso Producto Prorrateo (D2_PESO) del ítem de la factura.
ValorMercanciaEn este campo se podrá registrar el valor estimado de los bienes y/o mercancías que se trasladan.cartaporte20:Mercancias:MercanciaCondicionalCampo Valor mercancía (D2_VLRFUE) del ítem de la factura.
MonedaEn este campo se deberá registrar si existe información en el campo “ValorMercancia” y sirve para registrar la clave de la moneda contenida en el catálogo c_Moneda de CFDI, publicado en el portal del SAT, cuando se use moneda nacional se registrará MXN.cartaporte20:Mercancias:MercanciaCondicionalCampo Moneda SAT (CTO_MOESAT) relacionado con el campo Moneda de la Factura (F2_MOEDA).
FraccionArancelariaEn este campo se deberá registrar la clave de la fracción arancelaria del catálogo catComExt:c_FraccionArancelaria, publicado en el portal del SAT, que corresponda con la descripción de los bienes y/o mercancías que se trasladan.cartaporte20:Mercancias:MercanciaCondicionalCampo Fracción arancelaria (D2_FRACCA) del ítem de la factura.
UUIDComercioExtAtributo opcional para expresar el folio fiscal (UUID) del comprobante de comercio exterior que se relaciona.cartaporte20:Mercancias:MercanciaCondicionalCampo UUID comercio exterior (D2_FCICOD) del ítem de la factura.


cartaporte20:Mercancias:Mercancia:PedimentosOpcionalNodo condicional para registrar la información del(los) número(s) de pedimento(s) de importación que se encuentra(n) asociado(s) al traslado de los bienes y/o mercancías de procedencia extranjera para acreditar la legal estancia o tenencia durante su traslado en territorio nacional.
Pedimento

En este campo se deberá registrar el número de pedimento correspondiente a la importación del bien o mercancía, el cual se integra de izquierda a derecha de la siguiente manera:

Últimos 2 dígitos del año de validación seguidos por dos espacios, 2 dígitos de la aduana de despacho seguidos por dos espacios, 4 dígitos del número de la patente seguidos por dos espacios, 1 dígito que corresponde al último dígito del año en curso, salvo que se trate de un pedimento consolidado iniciado en el año inmediato anterior o del pedimento original de una rectificación, seguido de 6 dígitos de la numeración progresiva por aduana.

cartaporte20:Mercancias:Mercancia:PedimentosRequeridoCampo Num. Ped. (D2_PEDISAT) del ítem de la factura.


cartaporte20:Mercancias:Mercancia:GuiasIdentificacionOpcional

Nodo condicional para registrar la información del(los) número(s) de guía(s) que se encuentre(n) asociado(s) al(los) paquete(s) que se traslada(n) dentro del territorio nacional.

Aplica a Servicio de Paquetería y Mensajería

NumeroGuiaIdentificacionAtributo requerido para expresar el número de guía de cada paquete que se encuentra asociado con el traslado de los bienes y/o mercancías en territorio nacional.cartaporte20:Mercancias:Mercancia:GuiasIdentificacionRequeridoN/A
DescripGuiaIdentificacionAtributo requerido para expresar la descripción del contenido del paquete o carga registrada en la guía, o en el número de identificación, que se encuentra asociado con el traslado de los bienes y/o mercancías dentro del territorio nacional.cartaporte20:Mercancias:Mercancia:GuiasIdentificacionRequeridoN/A
PesoGuiaIdentificacionAtributo requerido para indicar en kilogramos, el peso del paquete o carga que se está trasladando en territorio nacional y que se encuentra registrado en la guía o el número de identificación correspondiente.cartaporte20:Mercancias:Mercancia:GuiasIdentificacionRequeridoN/A


cartaporte20:Mercancias:Mercancia:CantidadTransportaOpcional

Nodo opcional para registrar la cantidad de los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte, que será captada o distribuida en distintos puntos, a fin de identificar el punto de origen y destino correspondiente.

CantidadEn este campo se podrá registrar el número de los bienes y/o mercancías que se trasladan.cartaporte20:Mercancias:Mercancia:CantidadTransportaRequeridoCampo Cantidad del producto (D2_QUANT), del ítem de la factura.
IDOrigenEn este campo se deberá capturar un valor de los registrados en el campo “IDUbicacion”, con valor “Origen” en el campo “TipoUbicacion”.cartaporte20:Mercancias:Mercancia:CantidadTransportaRequerido

Campo Id Ub Origen (D2_CNATREC) del ítem de la factura.

Debe corresponder a algún Id Ubicación (A1Y_ORIGEN) con Tipo Ubicación (A1Y_TIPEST) = "Origen".

IDDestinoEn este campo se deberá capturar un valor de los registrados en el campo “IDUbicacion”, con valor “Destino” en el campo “TipoUbicacion”.cartaporte20:Mercancias:Mercancia:CantidadTransportaRequerido

Campo Id Ub Destino (D2_GRUPONC) del ítem de la factura.

Debe corresponder a algún Id Ubicación (A1Y_ORIGEN) con Tipo Ubicación (A1Y_TIPEST) = "Destino".

CvesTransporteEn este campo se deberá registrar la clave de del transporte conforme al catálogo c_CveTransporte del complemento Carta Porte, publicado en el portal del SAT.cartaporte20:Mercancias:Mercancia:CantidadTransportaOpcional"01"


cartaporte20:Mercancias:Mercancia:DetalleMercanciaCondicional

Nodo condicional para registrar especificaciones de los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte.

Aplica para transporte maritimo.

UnidadPesoMercEn este campo se deberá registrar la clave de la unidad de peso de acuerdo al catálogo c_ClaveUnidadPeso del complemento Carta Porte, que se encuentra publicado en el Portal de Internet del SAT.cartaporte20:Mercancias:Mercancia:DetalleMercanciaRequeridoN/A
PesoBrutoEn este campo se deberá registrar el peso bruto total de los bienes y/o mercancías que se trasladan.cartaporte20:Mercancias:Mercancia:DetalleMercanciaRequeridoN/A
PesoNetoEn este campo se deberá registrar el peso neto de los bienes y/o mercancías que se trasladan.cartaporte20:Mercancias:Mercancia:DetalleMercanciaRequeridoN/A
PesoTaraEn este campo se deberá registrar el valor que corresponde a la diferencia del valor capturado en el campo PesoBruto, y el valor registrado en el campo PesoNeto de los bienes y/o mercancías que se trasladan.cartaporte20:Mercancias:Mercancia:DetalleMercanciaRequeridoN/A
NumPiezasEn este campo se podrá registrar el número de piezas de los bienes y/o mercancías que se trasladan.cartaporte20:Mercancias:Mercancia:DetalleMercanciaOpcionalN/A


cartaporte20:Mercancias:AutotransporteCondicionalNodo condicional para registrar la información que permita la identificación del autotransporte de carga, por medio del cual se transportan los bienes y/o mercancías, que transitan a través de las carreteras del territorio nacional.
PermSCT

Este campo sirve para registrar la clave del tipo de permiso para realizar el servicio de traslado de bienes y/o mercancías.

cartaporte20:Mercancias:AutotransporteRequeridoCampo Tipo de permiso SCT (A1X_PERSCT) de Carta Porte.
NumPermisoSCTEste campo sirve para registrar el número de permiso otorgado a la unidad que realiza el traslado de bienes y/o mercancías en territorio nacional.cartaporte20:Mercancias:AutotransporteRequeridoCampo Número permiso SCT (A1X_PERMIS) de Carta Porte.


cartaporte20:Mercancias:Autotransporte:IdentificacionVehicularRequeridoNodo requerido para registrar los datos de identificación del autotransporte en el que se trasladan los bienes y/o mercancías.
ConfigVehicularEn este campo se debe registrar la clave asignada al tipo de transporte en el que se realiza el traslado de los bienes y/o mercancías, conforme al catálogo c_ConfigAutotransporte del complemento Carta Porte, publicado en el portal del SAT.cartaporte20:Mercancias:Autotransporte:IdentificacionVehicularRequeridoCampo Configuración vehicular (DA3_CONFIG) del Vehículo, relacionado con el campo Código de vehículo (A1X_VEHIC) de Carta Porte.
PlacaVMEn este campo se deberá registrar la placa del vehículo en el que se realiza el traslado de bienes y/o mercancías, se deben registrar solo los caracteres alfanuméricos, sin guiones y espacios.cartaporte20:Mercancias:Autotransporte:IdentificacionVehicularRequeridoCampo Placa (DA3_PLACA) del Vehículo, relacionado con el campo Código de vehículo (A1X_VEHIC) de Carta Porte.
AnioModeloVMEn este campo se deberá registrar el año del vehículo que se está utilizando para trasladar los bienes y/o mercancías.cartaporte20:Mercancias:Autotransporte:IdentificacionVehicularRequeridoCampo Número de placa (DA3_ANOMOD) del Vehículo, relacionado con el campo Código de vehículo (A1X_VEHIC) de Carta Porte.


cartaporte20:Mercancias:Autotransporte:SegurosRequerido

Nodo requerido para registrar los datos de las pólizas de seguro que cubren los riesgos en el traslado de los bienes y/o mercancías.

Obligatorio si MaterialPeligroso = "Sí" en alguna mercancía.

AseguraRespCivilEn este campo se deberá registrar el nombre de la aseguradora que cubre los riesgos de responsabilidad civil del autotransporte utilizado para el traslado de los bienes y/o mercancías.cartaporte20:Mercancias:Autotransporte:SegurosRequeridoCampo Nombre de la aseguradora (A1X_ASEGUR) de Carta Porte.
PolizaRespCivilEn este campo se deberá registrar el número de la póliza de seguro que emite la aseguradora que cubre los riesgos de responsabilidad civil del autotransporte utilizado para el traslado de los bienes y/o mercancías.cartaporte20:Mercancias:Autotransporte:SegurosRequeridoCampo Número de póliza (A1X_POLIZA) de Carta Porte.
AseguraMedAmbienteEn este campo se podrá registrar el nombre de la aseguradora que cubre los posibles daños al medio ambiente, que es aplicable para los transportistas que realicen el traslado de materiales o residuos peligrosos, es decir, cuando se capture información en el campo MaterialPeligroso.cartaporte20:Mercancias:Autotransporte:SegurosOpcionalCampo Aseg Med Amb (A1X_ASEGMA) de Carta Porte.
PolizaMedAmbienteEn este campo se podrá registrar el número de póliza asignado por la aseguradora, que cubre los posibles daños al medio ambiente aplicable para los transportistas que realicen el traslado de materiales o residuos peligrosos.cartaporte20:Mercancias:Autotransporte:SegurosOpcionalCampo Póliza Med A (A1X_POLMA) de Carta Porte.
AseguraCargaEn este campo se podrá registrar el nombre de la aseguradora que cubre los riesgos de la carga (bienes y/o mercancías) transportada.cartaporte20:Mercancias:Autotransporte:SegurosOpcionalCampo Aseg. Carga (A1X_ASECGA) de Carta Porte.
PolizaCargaEn este campo se podrá registrar el número de póliza que emite la aseguradora que cubre los riesgos de la carga (bienes y/o mercancías) transportada.cartaporte20:Mercancias:Autotransporte:SegurosOpcionalCampo Póliza Carga (A1X_POLCGA) de Carta Porte.
PrimaSeguroEn este campo se podrá registrar el valor del importe de la prima del seguro contratado, por el cargo adicional acordado entre el transportista y el cliente conforme a lo establecido en las disposiciones jurídicas que para tal efecto emita la SCT.cartaporte20:Mercancias:Autotransporte:SegurosOpcionalCampo Prima Seguro (A1X_PRISEG) de Carta Porte.


cartaporte20:Mercancias:Autotransporte:Remolques:RemolqueOpcional

Nodo condicional para registrar los datos del(los) remolque(s) o semirremolque(s) que se adaptan al autotransporte para realizar el traslado de los bienes y/o mercancías.

Solo se podrán registrar hasta 2 secciones de Remolque.

Obligatorio si ConfigVehicular en el catálogo c_ConfigAutotransporte, columna “Remolque” es “0,1” o “1”, en caso contrario se debe omitir.

SubTipoRemEn este campo se deberá registrar la clave del subtipo de remolque o semirremolque conforme al catálogo c_SubTipoRem del complemento Carta Porte, publicado en el portal del SAT.cartaporte20:Mercancias:Autotransporte:Remolques:RemolqueRequeridoCampo Subtipo remolque (DA3_SUBREM) del Vehículo, relacionado con el campo Código de remolque (A1X_REMOLQ) de Carta Porte.
PlacaEn este campo se deberá registrar la placa del remolque o semirremolque en el que se realiza el traslado de bienes y/o mercancías, se deben registrar solo los caracteres alfanuméricos, sin guiones ni espacios.cartaporte20:Mercancias:Autotransporte:Remolques:RemolqueRequeridoCampo Placa (DA3_PLACA) del Vehículo, relacionado con el campo Código de remolque (A1X_REMOLQ) de Carta Porte.


cartaporte20:FiguraTransporteOpcionalNodo opcional para indicar los datos de la figura del transporte que interviene en el traslado de los bienes o mercancías, cuando el dueño del medio de transporte es diferente del emisor del comprobante con el complemento carta porte.


cartaporte20:FiguraTransporte:TiposFigura

 TipoFiguraEn este campo se deberá registrar la clave de la figura de transporte conforme al catálogo c_FiguraTransporte del complemento Carta Porte que se encuentra publicado en el Portal de Internet del SAT.cartaporte20:FiguraTransporte:TiposFiguraRequerido

Indica tipo de registro que se informa:

"01" = Operador

"02" = Propietario

"03" = Arrendador

 RFCFigura

En este campo se deberá registrar la clave en el RFC de la figura de transporte que interviene en el traslado de bienes y/o mercancías.

Si la figura de transporte que interviene en el traslado de bienes y/o mercancías es un residente en el extranjero, este campo se debe omitir.

cartaporte20:FiguraTransporte:TiposFiguraCondicional

Si TipoFigura es "01":

Campo RFC del Conductor (DA4_CGC) del catálogo de conductores, relacionado con el campo Código de operador (A1Z_OPERAD) de Operadores.

Si TipoFigura es "02" o "03":

Campo RFC del Transportista (A4_CGC) del catálogo de transportes, relacionado con el campo Transportadora (AE0_TRANSP) de Propietarios/Arrendatarios.

 NumLicenciaEn este campo se deberá registrar el número de la licencia de conducir o permiso otorgado al operador de la unidad en la que se está realizando el traslado de bienes y/o mercancías vía autotransporte.cartaporte20:FiguraTransporte:TiposFiguraCondicional

Si TipoFigura es "01":

Campo No. Licencia de conducir (DA4_NUMCNH) del catálogo de conductores, relacionado con el campo Código de operador (A1Z_OPERAD) de Operadores.

Si TipoFigura es "02" o "03":

N/A

 NombreFiguraEn este campo se deberá registrar el nombre de la figura de transporte que interviene en el traslado de bienes y/o mercancías.cartaporte20:FiguraTransporte:TiposFiguraOpcional

Si TipoFigura es "01":

Campo Nombre del conductor (DA4_NOME) del catálogo de conductores, relacionado con el campo Código de operador (A1Z_OPERAD) de Operadores.

Si TipoFigura es "02" o "03":

Campo Nombre de Transportadora (A4_NOME) del catálogo de transportes, relacionado con el campo Transportadora (AE0_TRANSP) de Propietarios/Arrendatarios.

 NumRegIdTribFiguraEn este campo se podrá registrar el número de identificación fiscal que corresponde al tipo de la figura de transporte.cartaporte20:FiguraTransporte:TiposFiguraCondicionalN/A
 ResidenciaFiscalFiguraEn este campo podrás registrar la clave del país que corresponde al tipo de figura de transporte, siempre que se haya registrado un valor en el campo “NumRegIdTrib”.cartaporte20:FiguraTransporte:TiposFiguraCondicionalN/A


cartaporte20:FiguraTransporte:TiposFigura:PartesTransporteCondicional

Nodo condicional para indicar los datos de las partes del transporte de las cuales el emisor del comprobante es distinto al dueño de las mismas, por ejemplo: vehículos, máquinas, contenedores, plataformas, etc; mismos que son utilizados para el traslado de los bienes y/o mercancías.

Aplica si TipoFigura es 02-Propietario o 03-Arrendador.

ParteTransporteEn este campo se deberá registrar la clave que pertenece al transporte o la parte de transporte que no es propiedad del emisor del comprobante y que se encuentra en el catálogo c_ParteTransporte del complemento Carta Porte, publicado en el Portal del SAT.cartaporte20:FiguraTransporte:TiposFigura:PartesTransporteRequeridoCampo Parte Transporte (AE0_PARTE)  de Propietarios/Arrendatarios.


cartaporte20:FiguraTransporte:TiposFigura:DomicilioOpcionalNodo opcional para registrar información del domicilio del(los) tipo(s) de figura transporte que intervenga(n) en el traslado de los bienes y/o mercancías.
 CalleEn este campo se podrá registrar el nombre de la calle en la que está ubicado el domicilio de la Figura de transporte.cartaporte20:FiguraTransporte:TiposFigura:DomicilioRequeridoCampo Dirección de la Transportad. (A4_END) del catálogo de transportes, relacionado con el campo Transportadora (AE0_TRANSP) de Propietarios/Arrendatarios.
 NumeroExteriorEn este campo se podrá registrar el número exterior en donde se ubica el domicilio de la Figura de transporte.cartaporte20:FiguraTransporte:TiposFigura:DomicilioOpcionalCampo Número exterior (A4_NUMEXT) del catálogo de transportes, relacionado con el campo Transportadora (AE0_TRANSP) de Propietarios/Arrendatarios.
 NumeroInteriorEn este campo se podrá registrar el número interior en caso de existir, en donde se ubica el domicilio de la Figura de transporte.cartaporte20:FiguraTransporte:TiposFigura:DomicilioOpcionalCampo Número exterior (A4_NUMINT) del catálogo de transportes, relacionado con el campo Transportadora (AE0_TRANSP) de Propietarios/Arrendatarios.
 ColoniaEn este campo se podrá registrar la clave de la colonia en donde se ubica el domicilio de la Figura de transporte. El valor registrado en este campo debe coincidir con la clave del código postal registrado en el campo “CodigoPostal”.cartaporte20:FiguraTransporte:TiposFigura:DomicilioOpcionalCampo Código de colonia (A4_CBAIRRO) del catálogo de transportes, relacionado con el campo Transportadora (AE0_TRANSP) de Propietarios/Arrendatarios.
 Localidad

En este campo se podrá registrar la clave que corresponda a la ciudad o población en donde se encuentra ubicado el domicilio de la Figura de transporte, si la clave del país es distinta a “MEX” se puede registrar texto libre.

La clave capturada en este campo debe coincidir con el estado capturado en el campo “Estado”.

cartaporte20:FiguraTransporte:TiposFigura:DomicilioOpcionalCampo Código localidad (A4_CLOCALI) del catálogo de transportes, relacionado con el campo Transportadora (AE0_TRANSP) de Propietarios/Arrendatarios.
 ReferenciaEste campo sirve para especificar una referencia geográfica adicional que permita una fácil o precisa ubicación del domicilio de la Figura de transporte.cartaporte20:FiguraTransporte:TiposFigura:DomicilioOpcionalN/A
 Municipio

En este campo se podrá registrar el municipio, delegación, alcaldía o condado en donde se encuentra ubicado el domicilio de la Figura de transporte, si la clave del país es distinta a “MEX” se puede registrar texto libre.

El dato capturado en este campo debe coincidir con el estado capturado en el campo “Estado”.

cartaporte20:FiguraTransporte:TiposFigura:DomicilioOpcionalCampo Código del municipio (A4_COD_MUN) del catálogo de transportes, relacionado con el campo Transportadora (AE0_TRANSP) de Propietarios/Arrendatarios.
 Estado

En este campo se deberá registrar el estado, entidad, región, comunidad, en donde se encuentra ubicado el domicilio de la Figura de transporte, si la clave del país es distinta a “MEX”, “USA” o "CAN” se puede registrar texto libre.

El dato capturado en este campo debe coincidir con el país capturado en el campo “Pais”.

cartaporte20:FiguraTransporte:TiposFigura:DomicilioRequeridoCampo Estado del Transportista (A4_EST) del catálogo de transportes, relacionado con el campo Transportadora (AE0_TRANSP) de Propietarios/Arrendatarios.
 Pais

En este campo se deberá registrar la clave del país en donde se encuentra ubicado el domicilio de la Figura de transporte.

Este campo debe contener una clave del catálogo c_Pais, publicado en el portal del SAT.

cartaporte20:FiguraTransporte:TiposFigura:DomicilioRequeridoCampo Código del país (A4_CODPAIS) del catálogo de transportes, relacionado con el campo Transportadora (AE0_TRANSP) de Propietarios/Arrendatarios.
 CodigoPostal

En este campo se deberá registrar la clave del código postal en donde se encuentra el domicilio de la Figura de transporte.

El dato capturado en este campo debe coincidir con:

- La columna c_Estado, debe ser la misma que la capturada en el campo Estado.

- La columna c_Municipio, debe ser la misma que la capturada en el campo Municipio.

- La columna c_Localidad, debe ser la misma que la capturada en el campo Localidad.

cartaporte20:FiguraTransporte:TiposFigura:DomicilioRequeridoCampo Cod Dirección Postal (A4_CEP) del catálogo de transportes, relacionado con el campo Transportadora (AE0_TRANSP) de Propietarios/Arrendatarios.


02. EJEMPLO DE UTILIZACIÓN

Factura de Ingresos (Normal) - Servicio y Productos a trasladar (Los Productos solo se visualizan en nodo de Mercancías)

  1. En el módulo Facturación (SIGAFAT) ir al menú Actualizaciones | Facturación Facturaciones (MATA467N).
  2. Incluir una Factura de Venta de tipo Normal.
  3. Informar el campo ¿Carta Porte? (F2_TPCOMPL) con el valor S-Si.
  4. En el detalle informar:
  5. Desde Otras acciones ejecutar la acción Carta Porte.
  6. Informar los datos para el Complemento de Carta Porte y presionar Confirmar.

    Es necesario informar los datos de la sección Ubicaciones, informando al menos un Origen y/o Destino, e indicando el campo RFC (A1Y_RFCORI).

  7. Presionar Grabar para confirmar el guardado de la Factura de Venta,
  8. Confirmar la generación del comprobante fiscal digital
  9. Confirmar el timbrado del comprobante fiscal digital.
  10. Validar que el timbrado haya sido exitoso, que en el XML se visualice el nodo Complemento:cartaporte20.

Factura de Ingresos (Normal) - Servicio y Productos a trasladar (Los Productos solo se visualizan en el nodo de Conceptos y en el nodo de Mercancías)

  1. En el módulo Facturación (SIGAFAT) ir al menú Actualizaciones | Facturación Facturaciones (MATA467N).
  2. Incluir una Factura de Venta de tipo Normal.
  3. Informar el campo ¿Carta Porte? (F2_TPCOMPL) con el valor S-Si.
  4. En el detalle informar:
  5. Desde Otras acciones ejecutar la acción Carta Porte.
  6. Informar los datos para el Complemento de Carta Porte y presionar Confirmar.

    IMPORTANTE

    Es necesario informar los datos de la sección Ubicaciones, informando al menos un Origen y/o Destino, e indicando el campo RFC (A1Y_RFCORI).

  7. Presionar Grabar para confirmar el guardado de la Factura de Venta,
  8. Confirmar la generación del comprobante fiscal digital
  9. Confirmar el timbrado del comprobante fiscal digital.
  10. Validar que el timbrado haya sido exitoso, que en el XML se visualice el nodo cartaporte20:CartaPorte y que los Productos se visualicen en el nodo de cfdi:Conceptos y cartaporte20:Mercancias.

Factura de Traslado

  1. En el módulo Facturación (SIGAFAT) ir al menú Actualizaciones | Facturación Facturaciones (MATA467N).
  2. Incluir una Factura de Venta de tipo Traslado.

    Para el proceso de Traslados con Complemento Carta Porte 2.0 es necesario que el RFC del Cliente (A1_CGC) sea el mismo que el RFC del Emisor (SM0_CGC).

  3. Informar el campo ¿Carta Porte? (F2_TPCOMPL) con el valor S-Si.
  4. En el detalle informar:
  5. Desde Otras acciones ejecutar la acción Carta Porte.
  6. Informar los datos para el Complemento de Carta Porte y presionar Confirmar.

    Es necesario informar los datos de la sección Ubicaciones, informando al menos un Origen y/o Destino, e indicando el campo RFC (A1Y_RFCORI).

  7. Presionar Grabar ara confirmar el guardado de la Factura de Venta,
  8. Confirmar la generación del comprobante fiscal digital
  9. Confirmar el timbrado del comprobante fiscal digital.
  10. Validar que el timbrado haya sido exitoso, que en el XML se visualice el nodo Complmento:cartaporte20.


Para la generación de documentos con Complemento de Carta porte de Ingresos o Traslado, se deben seleccionar las opciónes Normal o Traslado al entrar a la rutina de Facturaciones (MATA467N)


Para los productos a transportar, al momento de generar el detalle de la Factura de Venta es necesario informar los siguientes datos:

  • Peso (D2_PESO) - Requerido.
  • Código de Material Peligroso (D2_GRPCST) - Solo aplica si el producto está catalogado como material peligroso.
  • Embalaje (D2_TNATREC) - Solo aplica si el producto está catalogado como material peligroso.
  • UUID comercio exterior (D2_FCICOD) - Opcional.
  • Valor mercancía (D2_VLRFUE) - Requerido.
  • Id Ub Origen (D2_CNATREC) - Debe coincidir con unos de los Identificadores de Ubicación de Origen que se registre en la sección Ubicaciones de la Carta Porte.
  • Id Ub Destin (D2_GRUPONC) - Debe coincidir con unos de los Identificadores de Ubicación de Destino que se registre en la sección Ubicaciones de la Carta Porte.
  • Si el Producto no está catálogado como Material Peligroso en el catálogo c_ClaveProdServCP del SAT el nodo MaterialPeligroso no es informado el  XML.

En la pantalla de Carta Porte:

  • Para los vehículos es necesario configurar el campo Config Vehíc (DA3_CONFIG).
  • Para los remolques es necesario configurar el campo Sub.Remolq(DA3_SUBREM).
  • Si el código de Vehículo (A1X_VEHIC) informado, tiene configurado en el campo Config Vehíc (DA3_CONFIG) un valor del Catálogo del SAT c_ConfigAutotransporte cuya columna Remolque contiene un valor "0,1" o "1", se deberá informar el campo Remolque (A1X_REMOLQ).

  • Si dentro de los ítems de la Factura de Venta (NF) se encuentran Productos que tienen configurado el campo Prod/Serv SA (B1_PRODSAT) con un código que de acuerdo al catálogo del SAT c_ClaveProdServCP donde la columna de Material Peligroso es "0,1" o "1", se deberán informar los campos Aseg Med Amb (A1X_ASEGMA) y Póliza Med A (A1X_POLMA), en caso contrario estos deberán quedar vacíos.

  • En el grid de Ubicaciones se deberán de informar los Origenes y Destinos de la mercancía a transportar, donde la columna Id ubicación (A1Y_ORIGEN) solo se debe informar si los productos a transportar incluyen diferentes Destinos. Este ID debe seguir la nomenclatura definida por el SAT: Los caracteres "OR" más 6 dígitos númericos para el Origen y los caracteres "DE" más 6 dígitos númericos para el Destino, cuando el Id Ubicación es registrado, se deberán de informar de igual manera en el detalle de la Factura de Venta (NF) los campos Id Ub Origen (D2_CNATREC) y Id Ub Destino (D2_GRUPONC) para indicar el Origen/Destino de cada uno de los productos (Si los productos van a un mismo origen destino estos campos pueden quedar vacíos).

  • Se debe informar al menos un valor en el grid de Operadores o en el grid de Propietarios/Arrendatarios.

03. CONFIGURACIONES 

Catálogos

a) Configure el parámetro MV_PATH814, especificando la ruta de ubicación para los catálogos del SAT, archivos en formato CSV.

b) En la ruta especificada en el parámetro MV_PATH814, coloque los archivos de catálogos del SAT.

  • Validar que los siguientes catálogos de Protheus se encuentren actualizados de acuerdo a los publicados por el SAT Complemento de Carta Porte SAT.
  • El catálogo de S028 - Partes de Transporte (c_ParteTransporte.csv), solo puede ser cargado si se tiene actualizada la rutina FISA814.PRW con una fecha mayor o igual a 25/11/2021.


c) Acceda a la rutina de Mantenimiento de tablas; rutina SIGAFAT | Actualizaciones | Archivos | Mantenimiento de Catálogos. (FISA814). Los catálogos indicados en el punto anterior serán actualizados en el sistema.

Importante:

Si en su ambiente ya cuenta con el Catálogo de Códigos Postales, éste debe ser reemplazado por el publicado por el SAT el 10/09/2019, del Anexo 20 versión 3.3.
Para esto, es necesario que inicie sesión en el Smartclient con un usuario que pertenezca al grupo de administradores del sistema.
- Acceda a la rutina Definición de Catálogos; SIGAFAT | Actualizaciones | Archivos | Definición de Catálogos (FISA814).
- Seleccione el código S004 - Catálogo de Códigos Postales.
- Haga clic en Otras Acciones | Borrar.
- Confirme. A continuación, acepte el proceso de borrado de la Definición y del Catálogo mismo. Dependiendo de la cantidad de registros en el catálogo, este proceso podría demorar varios minutos.
- Salga de la rutina y entre nuevamente para recrear la Definición y cargar el Catálogo más reciente. Dependiendo del tamaño del catálogo, este proceso puede tardar varios minutos.

En caso de que requiera actualizar los catálogos con los más recientes del SAT, realice los siguientes pasos:
- En la configuración regional del Sistema Operativo de la computadora, establezca el carácter pipe ('|') como separador de campos.
- Acceda a los mini-sitios de Factura Electrónica y/o Carta Porte del SAT.
- Descargue los catálogos de datos, los cuales son distribuidos en planillas de cálculo.
- En el catálogo requerido, observe que la cantidad y distribución de las columnas coincida con el catálogo previo.
- Copie las celdas de datos, sin encabezados, del catálogo requerido a una nueva planilla.
- Grabe la planilla obtenida, es importante que el nombre sea de acuerdo a la lista de catálogos indicados anteriormente y que sea con el Tipo de archivo CSV (MS_DOS) .csv.
- Si es necesario, reestablezca el separador de campos en la configuración regional del Sistema Operativo de la computadora.
- Compruebe que el archivo .csv obtenido tenga codificación UTF-8 sin BOM, en caso contrario, deberá cambiarla a través de un editor de texto con la capacidad de manejo de codificación, por ejemplo con Notepad++:
    . Cargue el archivo .csv en el editor.
    . Las vocales con acento, eñes y otros caracteres especiales se deben visualizar correctamente. Además, en el menú Codificación debe indicar la opción UTF-8 sin BOM.
    . En caso de que no se cumplan esas condiciones, en el menú Codificación seleccione Juego de caracteres | Europeo Occidental | OEM 850.
    . A continuación, nuevamente abra el menú Codificación, seleccione Convertir a UTF-8 sin BOM.
    . En este punto, las vocales con acento, eñes y otros caracteres especiales deben visualizarse correctamente.
    . Grabe el archivo de texto.

d) En el catálogo de Productos; rutina SIGAFAT | Actualizaciones | Archivos | Productos. (MATA010), los productos para facturar el costo de servicio por transporte, deben tener Tipo = "SV". El código de Producto o Servicio  SAT (B1_PRODSAT) para estos casos es del rango de claves de "70101500" en adelante del catálogo S002 - Catálogo Productos/Servicios.

e) En el catálogo de Transportes; rutina SIGAFAT | Actualizaciones | Archivos | Transportadoras. (MATA050), informe las direcciones de los propietarios y arrendatarios de transportes utilizados para el traslado de mercancías. 

f) En el catálogo de Tipos de Vehículos; rutina SIGAFAT | Actualizaciones | Archivos | Vehículos. (TMSA530), registre los tipos de vehículos para transporte de Categoría (DUT_CATVEI) 1-Común y 3-Remolque.

g) En el catálogo de Vehículos; rutina SIGAFAT | Actualizaciones | Archivos | Vehículos. (OMSA060), registre los datos de los vehículos de transporte utilizados:

h) Tipo de vehículo común: Motocicleta, camioneta, camión, transportador de remolque.

i) Tipo de vehículo remolque: Acoplado, tráiler.

j) En el catálogo de Conductores; rutina SIGAFAT | Actualizaciones | Archivos | Conductores. (OMSA040), registre los datos de los operadores de vehículos.

k) Funcionalidad de las consultas estándar y de las validaciones de campos relacionados con domicilios en las rutinas:

Por motivo de performance en la visualización de las consultas, se recomienda ampliamente, configurar los siguientes campos en el orden mostrado:

Estado - Se utiliza para filtrar y validar contra los catálogos de Códigos Postales, Localidades y Municipios. A partir de este campo se asigna el País.

Código Postal - En la consulta, sólo se visualizan los Códigos Postales correspondientes al Estado, si no está definido el Estado, visualizará todo el catálogo, con la consecuencia de tomar demasiado tiempo para la carga. Se utiliza para filtrar y validar contra el catálogo de Colonias. Por otra parte, a partir de este campo se asignan valores de Localidad, Municipio y Estado.

Colonia - En la consulta, muestra sólo las Colonias que correspondan al Código Postal, si no está definido el Código Postal, visualizará todo el catálogo, con la consecuencia de tomar demasiado tiempo para la carga. Además, este campo se valida considerando el Código Postal.

Localidad - En la consulta, muestra sólo las Localidades que correspondan al Estado, si no está definido el Estado, visualizará todo el catálogo, con la consecuencia de tomar demasiado tiempo para la carga. Además, este campo se valida considerando el Estado.

Municipio - En la consulta, muestra sólo los Municipios que correspondan al Estado, si no está definido el Estado, visualizará todo el catálogo, con la consecuencia de tomar demasiado tiempo para la carga. Además, este campo se valida considerando el Estado.

País - Es asignado al indicar estado.


FATSMEX.INI

Se recomienda editar el script actual de generación de CFDI (Archivo XML), actualizando las secciones de acuerdo al modelo siguiente, en donde las líneas resaltadas se agregaron o fueron modificadas para integrar el Complemento Carta Porte:

//FATSMEX.INI V3.3 --- Modelo 2017

[XXX POSICIONAMENTOS]
(PRE) If(AllTrim(SF2->F2_ESPECIE)=="NDI",SA2->(MSSeek(xFilial("SA2")+SF2->F2_CLIENTE+SF2->F2_LOJA)) , .T.)
(PRE) If(AllTrim(SF2->F2_ESPECIE)<>"NDI",SA1->(MSSeek(xFilial("SA1")+SF2->F2_CLIENTE+SF2->F2_LOJA)) , .T.)
(PRE) (SE4->(MSSeek(xFilial("SE4")+SF2->F2_COND)) , .T.)
(PRE) (AI0->(MSSeek(xFilial("AI0")+SF2->F2_CLIENTE+SF2->F2_LOJA)) , .T.)

[XXX INICIALIZACION]
(PRE) SD2->(DbSetOrder(1))
(PRE) SB1->(DbSetOrder(1))
(PRE) SYA->(DbSetOrder(1))
(PRE) SC6->(DbSetOrder(1))
(PRE) SE4->(DbSetOrder(1))
(PRE) CTO->(DbSetOrder(1))
(PRE) SAH->(DbSetOrder(1))
(PRE) _aTotal[094] := ""
(PRE) _aTotal[095] := ""
(PRE) _aTotal[033] := ""
(PRE) _aTotal[034] := ""
(PRE) _aTotal[035] := ""
(PRE) _aTotal[036] := 0
(PRE) _aTotal[037] := 0
(PRE) _aTotal[038] := 0
(PRE) _aTotal[075] := Alltrim(SM0->M0_NOMECOM)
(PRE) _aTotal[096] := DtoS(SF2->F2_EMISSAO)
(PRE) _aTotal[096] := Left(_aTotal[096],4) + "-" + Substr(_aTotal[096],5,2)+ "-" + Right(_aTotal[096],2)
(PRE) _aTotal[096] += "T" + SF2->F2_HORA
(PRE) _aTotal[097] := {"SD2",""}
(PRE) _aTotal[098] := "|"
(PRE) _aTotal[099] := "||"
(PRE) _aTotal[100] := ""
(PRE) _aTotal[101] := "OPERACION DE CONFORMIDAD CON EL ART. 29 FRACCION I DE LIVA Y LO ESTIPULADO EN LAS RGCE 5.2.6. FRACCION I, 5.2.7 Y 4.3.21"
(PRE) _aTotal[102] := "OPERACION DE CONFORMIDAD CON EL ART. 29 FRACCION I DE LIVA Y LO ESTIPULADO EN LAS RGCE 5.2.6. FRACCION II, 5.2.7 Y 4.3.21"
(PRE) _aTotal[103] := fSumBC(SF2->F2_DOC,SF2->F2_SERIE,SF2->F2_CLIENTE,SF2->F2_LOJA)
(PRE) _aTotal[104] := IIf(SF2->(ColumnPos("F2_TPCOMPL")) > 0 .And. AllTrim(SF2->F2_TPCOMPL)=="S",.T.,.F.)
(PRE) _aTotal[105] := ""
(PRE) _aTotal[106] := IIf(_aTotal[104] .And. Alltrim(SF2->F2_TIPODOC) == "21",0,2)
(PRE) lCCCE := .F.
(PRE) cNodoCCE := ""

(PREREG) FsQuery(_aTotal[097],1,"D2_DOC='" + SF2->F2_DOC + "' AND D2_SERIE='" + SF2->F2_SERIE + "' AND D2_CLIENTE='" + SF2->F2_CLIENTE + "' AND D2_LOJA='" + SF2->F2_LOJA + "'","SD2->D2_DOC=SF2->F2_DOC .AND. SD2->D2_SERIE=SF2->F2_SERIE .AND. SD2->D2_CLIENTE=SF2->F2_CLIENTE .AND. SD2->D2_LOJA=SF2->F2_LOJA","D2_ITEM") .And. .T.

(PRE) fImptosD(SF2->F2_DOC,SF2->F2_SERIE,SF2->F2_CLIENTE,SF2->F2_LOJA,IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.),"SD2", SF2->F2_GLOBAL == "1",@(_aTotal[036]),_aTotal[104],@_aTotal[037], @_aTotal[038] )

[SD2 CADENAORIGINAL_SELLO]
(PRE) If(AllTrim(SF2->F2_ESPECIE)=="NDI",SA2->(MSSeek(xFilial("SA2")+SF2->F2_CLIENTE+SF2->F2_LOJA)) , .T.)
(PRE) If(AllTrim(SF2->F2_ESPECIE)=="NDI",SYA->(MsSeek(xFilial("SYA")+SA2->A2_PAIS)) , .T.)
(PRE) If(AllTrim(SF2->F2_ESPECIE)=="NDI",CTO->(MsSeek(xFilial("CTO")+Strzero(SF2->F2_MOEDA,2))) , .T.)
(PRE) If(AllTrim(SF2->F2_ESPECIE)<>"NDI",SA1->(MSSeek(xFilial("SA1")+SF2->F2_CLIENTE+SF2->F2_LOJA)) , .T.)
(PRE) If(AllTrim(SF2->F2_ESPECIE)<>"NDI",SYA->(MsSeek(xFilial("SYA")+SA1->A1_PAIS)) , .T.)
(PRE) If(AllTrim(SF2->F2_ESPECIE)<>"NDI",CTO->(MsSeek(xFilial("CTO")+Strzero(SF2->F2_MOEDA,2))) , .T.)
//////////////////////////////////////////////CADENA ORIGINAL//////////////////////////////////////////////
(PRE) cCadOrig := _aTotal[099]
(PRE) lCCCE := IIf(SuperGetMV("MV_CFDIEXP",.F.,.F.) .And. !Empty(SF2->F2_TIPOPE), .T., .F.)
(PRE) cCadOriCCE := ""

//Cadena Original | Complemento de Comercio Exterior (Mercancias)
(PREREG) IIf(lCCCE .And. !Empty(SD2->D2_ITEM + SD2->D2_COD), (cCadOriCCE += Alltrim(SD2->D2_ITEM + SD2->D2_COD) + _aTotal[098],.T.),("",,.T.))
(PREREG) IIf(lCCCE .And. !Empty(SD2->D2_FRACCA), (cCadOriCCE += Alltrim(SD2->D2_FRACCA) + Alltrim(SD2->D2_NICO) + _aTotal[098],.T.), ("",,.T.))
(PREREG) IIf(lCCCE .And. !Empty(Str(SD2->D2_CANADU)), (cCadOriCCE += Alltrim(Str(SD2->D2_CANADU)) + _aTotal[098],.T.), ("",,.T.))
(PREREG) IIf(lCCCE .And. !Empty(SD2->D2_FRACCA), (cCadOriCCE += AllTrim(ObtColSAT("S014",AllTrim(SD2->D2_FRACCA),1,8,9,2)) + _aTotal[098],.T.), ("",,.T.))
(PREREG) IIf(lCCCE .And. !Empty(Str(SD2->D2_VALADU)), (cCadOriCCE += Alltrim(Str(SD2->D2_VALADU,14,2)) + _aTotal[098],.T.), ("",,.T.))
(PREREG) IIf(lCCCE .And. !Empty(Str(SD2->D2_USDADU)), (cCadOriCCE += Alltrim(Str(SD2->D2_USDADU,14,2)) + _aTotal[098],.T.), ("",,.T.))
(PREREG) IIf(lCCCE .And. SA1->A1_CONTRBE=="1" .And. Alltrim(SF2->F2_ESPECIE) == "NF", (cCadOriCCE += '1.0' +_aTotal[098],.T.), ("",,.T.))
(PREREG) IIf(lCCCE .And. SA1->A1_CONTRBE=="1" .And. SF2->F2_CONUNI=="1", (cCadOriCCE += 'IMMEX:' + ALLTRIM(SA1->A1_PFISICA) + ' ' + _aTotal[101] + _aTotal[098],.T.), IIf (lCCCE .And. SA1->A1_CONTRBE=="1" .And. SF2->F2_CONUNI=="2", (cCadOriCCE += 'IMMEX:' + ALLTRIM(SA1->A1_PFISICA) + ' ' + _aTotal[102] + _aTotal[098],.T.), ("",,.T.)))

///////////DATOS DE LA FACTURA/////////////////
(PRE) (SE4->(MSSeek(xFilial("SE4")+SF2->F2_COND)) , .T.)
(PRE) (AI0->(MSSeek(xFilial("AI0")+SF2->F2_CLIENTE+SF2->F2_LOJA)) , .T.)
//Version
(PRE) cCadOrig += "3.3" + _aTotal[098]
//Serie
(PRE) cCadOrig += Alltrim(SF2->F2_SERIE) + _aTotal[098]
//Folio
(PRE) cCadOrig += Alltrim(SF2->F2_DOC) + _aTotal[098]
//Fecha
(PRE) cCadOrig += Alltrim(_aTotal[096]) + _aTotal[098]
//FormaPago
(PRE) cCadOrig += IIf(Alltrim(SF2->F2_TIPODOC) == "21", "", IIf(SF2->F2_GLOBAL == '1',FormPagGlo(SF2->F2_DOC,SF2->F2_SERIE),IIf(Empty(AI0->AI0_MPAGO),"99",Alltrim(AI0->AI0_MPAGO))) + _aTotal[098] )
//NoCertificado
(PRE) cCadOrig += Alltrim(SF2->F2_CERTFOL) + _aTotal[098]
//CondicionesDePago
(PRE) cCadOrig += IIf(Alltrim(SF2->F2_TIPODOC) == "21", "", CFDCarEsp(Alltrim(SE4->E4_DESCRI)) + _aTotal[098] )
//Subtotal
(PRE) cCadOrig += Alltrim(STR(IIF(ALLTRIM(SF2->F2_TIPODOC) == "21", 0, (SF2->F2_VALMERC + _aTotal[103] + SF2->F2_DESCONT) - _aTotal[036] - _aTotal[037]),14,_aTotal[106])) + _aTotal[098]
//Descuento
(PRE) cCadOrig += IIF(ALLTRIM(SF2->F2_TIPODOC) == "21", "", IIf( SF2->F2_DESCONT == 0, "", Alltrim(STR(SF2->F2_DESCONT,14,2)) + _aTotal[098]) )
//Moneda
(PRE) cCadOrig += IIf(_aTotal[104] .And. Alltrim(SF2->F2_TIPODOC) == "21","XXX",Alltrim(CTO->CTO_MOESAT)) + _aTotal[098]
//TipoCambio
(PRE) cCadOrig += IIf(_aTotal[104] .And. Alltrim(SF2->F2_TIPODOC) == "21","",IIf(Alltrim(CTO->CTO_MOESAT) <> "MXN", Alltrim(STR(SF2->F2_TXMOEDA,14,2)), "1") + _aTotal[098])
//Total
(PRE) cCadOrig += Alltrim(Str(IIf(ALLTRIM(SF2->F2_TIPODOC) == "21", 0, iif(GetSx3Cache("F2_VALBRUT","X3_DECIMAL")<= 2,SF2->F2_VALBRUT + _aTotal[103]- _aTotal[037],Round(SF2->F2_VALBRUT,2) + _aTotal[103] - _aTotal[037])),14,_aTotal[106])) + _aTotal[098]
//TipoDeComprobante
(PRE) cCadOrig += IIf(Alltrim(SF2->F2_ESPECIE) == "NF",IIf(ALLTRIM(SF2->F2_TIPODOC) == "21", "T", "I" ), "E") + _aTotal[098]
//MetodoPago
(PRE) cCadOrig += IIf(Alltrim(SF2->F2_TIPODOC) == "21", "", Alltrim(SE4->E4_MPAGSAT) + _aTotal[098] )
//LugarExpedicion
(PRE) cCadOrig += CFDCarEsp(AllTrim(SM0->M0_CEPENT)) + _aTotal[098]

//////////////////////CFDI Relacionados//////////////////////////
(PREREG) AllTrim(SF2->F2_RELSAT) <> ""
(PRE) IIf(_aTotal[104] .And. Alltrim(SF2->F2_TIPODOC) == "21","",fGetFolRel("S",.T.))

///////////DATOS DEL EMISOR///////////////////////
//Rfc
(PRE) cCadOrig += CFDCarEsp(AllTrim(SM0->M0_CGC),.F.) + _aTotal[098]
//Nombre
(PRE) cCadOrig += CFDCarEsp(_aTotal[075],.F.) + _aTotal[098]
//RegimenFiscal
(PRE) cCadOrig += CFDCarEsp(Alltrim(SM0->M0_DSCCNA)) + _aTotal[098]

//////////////////////DATOS DEL RECEPTOR//////////////////////////
(PRE) AllTrim(SF2->F2_ESPECIE) <> "NDI"
(PRE) SA1->(MSSeek(xFilial("SA1")+SF2->F2_CLIENTE+SF2->F2_LOJA))
(PRE) SYA->(MsSeek(xFilial("SYA")+SA1->A1_PAIS))
//Rfc
(PRE) (cCadOrig += IIf(!_aTotal[104] .And. (ALLTRIM(SF2->F2_TIPODOC) == "21" .Or. SF2->F2_GLOBAL == "1"), "XAXX010101000", CFDCarEsp(AllTrim(SA1->A1_CGC), .F.)) + _aTotal[098])
//Nombre
(PRE) (cCadOrig += IIf(SF2->F2_GLOBAL <> "1",CFDCarEsp(Alltrim(SA1->A1_NOME),.F.) + _aTotal[098],""), .T.)
//ResidenciaFiscal
(PRE) IIf(lCCCE .And. !Empty(CFDCarEsp(Alltrim(SF2->F2_RESIDE))), cCadOrig += AllTrim(Posicione("SYA",1,xFilial("SYA")+SF2->F2_RESIDE,"YA_CCESAT")) + _aTotal[098], "")
//NumRegIdTrib
(PRE) IIf(lCCCE .And. !Empty(CFDCarEsp(Alltrim(SF2->F2_IDTRIB))), cCadOrig += CFDCarEsp(AllTrim(AllTrim(SF2->F2_IDTRIB))) + _aTotal[098], "")
//UsoCFDI
(PRE) (cCadOrig += Alltrim(SF2->F2_USOCFDI) + _aTotal[098], .T.)

(PRE) (cCadOrig += fXMLFUN("CO",.T., IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.),_aTotal[104]),.T.)
(PRE) (cCadOrig += fXMLFUN("TI",.T., IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.)),.T.)
(PRE) (cCadOrig += fXMLFUN("IL",.T., IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.)),.T.)

//Carta Porte
(PRE) (cCadOrig += LxFunaCaPo(SF2->F2_FILIAL,SF2->F2_DOC,SF2->F2_SERIE,.T.),.T.,IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.))

(POS) IIf(lCCCE, cCadOrig += "1.1" + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(SF2->F2_TRASLA), cCadOrig += Alltrim(SF2->F2_TRASLA) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(SF2->F2_TIPOPE), cCadOrig += Alltrim(SF2->F2_TIPOPE) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(SF2->F2_CVEPED), cCadOrig += Alltrim(SF2->F2_CVEPED) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(SF2->F2_CERORI), cCadOrig += Alltrim(SF2->F2_CERORI) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(SF2->F2_NUMCER), cCadOrig += Alltrim(SF2->F2_NUMCER) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(SF2->F2_EXPCONF), cCadOrig += Alltrim(SF2->F2_EXPCONF) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(SF2->F2_INCOTER), cCadOrig += Alltrim(SF2->F2_INCOTER) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(SF2->F2_SUBDIV), cCadOrig += Alltrim(SF2->F2_SUBDIV) + _aTotal[098], "")
(POS) IIf(lCCCE .And. SF2->(ColumnPos("F2_OBSCE")) > 0 .And. !Empty(SF2->F2_OBSCE), cCadOrig += CFDCarEsp(AllTrim(SF2->F2_OBSCE), .F.) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(Str(SF2->F2_TCUSD)), cCadOrig += Alltrim(Str(SF2->F2_TCUSD)) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(Str(SF2->F2_TOTUSD)), cCadOrig += Alltrim(Str(SF2->F2_TOTUSD,14,2)) + _aTotal[098], "")

//Emisor
(POS) IIf(lCCCE , cCadOrig += CFDCarEsp(AllTrim(SM0->M0_ENDCOB)) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(SM0->M0_CEPENT), cCadOrig += CFDCarEsp(AllTrim(ObtColSAT("S015",AllTrim(SM0->M0_CODZOSE)+ALLTRIM(SM0->M0_CEPENT),1,9,1,4))) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(SM0->M0_CODMUN), cCadOrig += AllTrim(SM0->M0_CODMUN) + _aTotal[098], "")
(POS) IIf(lCCCE , cCadOrig += CFDCarEsp(Alltrim(ObtColSAT("S004",AllTrim(SM0->M0_CEPENT),1,5,6,3))) + _aTotal[098], "")
(POS) IIf(lCCCE , cCadOrig += "MEX" + _aTotal[098], "")
(POS) IIf(lCCCE , cCadOrig += AllTrim(SM0->M0_CEPENT) + _aTotal[098], "")

//Receptor Domicilio
(POS) IIf(lCCCE, cCadOrig += CFDCarEsp(AllTrim(SA1->A1_END)) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(AllTrim(SA1->A1_NR_END)), cCadOrig += AllTrim(SA1->A1_NR_END) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(AllTrim(SA1->A1_NROINT)), cCadOrig += AllTrim(SA1->A1_NROINT) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(CFDCarEsp(AllTrim(SA1->A1_BAIRRO))), cCadOrig += CFDCarEsp(CFDCarEsp(AllTrim(SA1->A1_BAIRRO))) + _aTotal[098],"")
(POS) IIf(lCCCE .And. !Empty(CFDCarEsp(AllTrim(SA1->A1_MUN))), cCadOrig += CFDCarEsp(AllTrim(SA1->A1_MUN),.F.) + _aTotal[098],"")
(POS) IIf(lCCCE, cCadOrig += CFDCarEsp(Alltrim(Posicione("SX5",1,xFilial("SX5")+"12"+SA1->A1_EST,"X5_DESCRI"))) + _aTotal[098],"")
(POS) IIf(lCCCE, cCadOrig += AllTrim(Posicione("SYA",1,xFilial("SYA")+SA1->A1_PAIS,"YA_CCESAT")) + _aTotal[098], "")
(POS) IIf(lCCCE, cCadOrig += AllTrim(SA1->A1_CEP) + _aTotal[098], "")

(POS) cCadOrig += IIf(!Empty(cCadOriCCE), cCadOriCCE, "")

(POS) cCadOrig += _aTotal[098]
(POS) _aTotal[033] := cCadOrig

//SELLO
(POS) _aTotal[100] := EVPDigest(cCadOrig,5)
(POS) _aTotal[100] := PrivSignRSA(&(SuperGetMv("MV_CFDDIRS",,""))+SuperGetMv("MV_CFDARQS",,""),_aTotal[100],6,"assinatura")
(POS) _aTotal[100] := ENCODE64(_aTotal[100])
[XXX CABECERA]
Linha1 C 041 0 Chr(239) + Chr(187) + Chr(191) + '<?xml version="1.0" encoding="UTF-8"?>'
[XXX FACTURA]
//Certificado del SAT incluido para pruebas
(PRE) cCert := "MIIF+TCCA+GgAwIBAgIUMzAwMDEwMDAwMDAzMDAwMjM3MDgwDQYJKoZIhvcNAQEL"
(PRE) cCert += "BQAwggFmMSAwHgYDVQQDDBdBLkMuIDIgZGUgcHJ1ZWJhcyg0MDk2KTEvMC0GA1UE"
(PRE) cCert += "CgwmU2VydmljaW8gZGUgQWRtaW5pc3RyYWNpw7NuIFRyaWJ1dGFyaWExODA2BgNV"
(PRE) cCert += "BAsML0FkbWluaXN0cmFjacOzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5mb3JtYWNp"
(PRE) cCert += "w7NuMSkwJwYJKoZIhvcNAQkBFhphc2lzbmV0QHBydWViYXMuc2F0LmdvYi5teDEm"
(PRE) cCert += "MCQGA1UECQwdQXYuIEhpZGFsZ28gNzcsIENvbC4gR3VlcnJlcm8xDjAMBgNVBBEM"
(PRE) cCert += "BTA2MzAwMQswCQYDVQQGEwJNWDEZMBcGA1UECAwQRGlzdHJpdG8gRmVkZXJhbDES"
(PRE) cCert += "MBAGA1UEBwwJQ295b2Fjw6FuMRUwEwYDVQQtEwxTQVQ5NzA3MDFOTjMxITAfBgkq"
(PRE) cCert += "hkiG9w0BCQIMElJlc3BvbnNhYmxlOiBBQ0RNQTAeFw0xNzA1MTgwMzU0NTZaFw0y"
(PRE) cCert += "MTA1MTgwMzU0NTZaMIHlMSkwJwYDVQQDEyBBQ0NFTSBTRVJWSUNJT1MgRU1QUkVT"
(PRE) cCert += "QVJJQUxFUyBTQzEpMCcGA1UEKRMgQUNDRU0gU0VSVklDSU9TIEVNUFJFU0FSSUFM"
(PRE) cCert += "RVMgU0MxKTAnBgNVBAoTIEFDQ0VNIFNFUlZJQ0lPUyBFTVBSRVNBUklBTEVTIFND"
(PRE) cCert += "MSUwIwYDVQQtExxBQUEwMTAxMDFBQUEgLyBIRUdUNzYxMDAzNFMyMR4wHAYDVQQF"
(PRE) cCert += "ExUgLyBIRUdUNzYxMDAzTURGUk5OMDkxGzAZBgNVBAsUEkNTRDAxX0FBQTAxMDEw"
(PRE) cCert += "MUFBQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJdUcsHIEIgwivvA"
(PRE) cCert += "antGnYVIO3+7yTdD1tkKopbL+tKSjRFo1ErPdGJxP3gxT5O+ACIDQXN+HS9uMWDY"
(PRE) cCert += "naURalSIF9COFCdh/OH2Pn+UmkN4culr2DanKztVIO8idXM6c9aHn5hOo7hDxXMC"
(PRE) cCert += "3uOuGV3FS4ObkxTV+9NsvOAV2lMe27SHrSB0DhuLurUbZwXm+/r4dtz3b2uLgBc+"
(PRE) cCert += "Diy95PG+MIu7oNKM89aBNGcjTJw+9k+WzJiPd3ZpQgIedYBD+8QWxlYCgxhnta3k"
(PRE) cCert += "9ylgXKYXCYk0k0qauvBJ1jSRVf5BjjIUbOstaQp59nkgHh45c9gnwJRV618NW0fM"
(PRE) cCert += "eDzuKR0CAwEAAaMdMBswDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCBsAwDQYJKoZI"
(PRE) cCert += "hvcNAQELBQADggIBABKj0DCNL1lh44y+OcWFrT2icnKF7WySOVihx0oR+HPrWKBM"
(PRE) cCert += "Xxo9KtrodnB1tgIx8f+Xjqyphhbw+juDSeDrb99PhC4+E6JeXOkdQcJt50Kyodl9"
(PRE) cCert += "URpCVWNWjUb3F/ypa8oTcff/eMftQZT7MQ1Lqht+xm3QhVoxTIASce0jjsnBTGD2"
(PRE) cCert += "JQ4uT3oCem8bmoMXV/fk9aJ3v0+ZIL42MpY4POGUa/iTaawklKRAL1Xj9IdIR06R"
(PRE) cCert += "K68RS6xrGk6jwbDTEKxJpmZ3SPLtlsmPUTO1kraTPIo9FCmU/zZkWGpd8ZEAAFw+"
(PRE) cCert += "ZfI+bdXBfvdDwaM2iMGTQZTTEgU5KKTIvkAnHo9O45SqSJwqV9NLfPAxCo5eRR2O"
(PRE) cCert += "Gibd9jhHe81zUsp5GdE1mZiSqJU82H3cu6BiE+D3YbZeZnjrNSxBgKTIf8w+KNYP"
(PRE) cCert += "M4aWnuUMl0mLgtOxTUXi9MKnUccq3GZLA7bx7Zn211yPRqEjSAqybUMVIOho6aqz"
(PRE) cCert += "kfc3WLZ6LnGU+hyHuZUfPwbnClb7oFFz1PlvGOpNDsUb0qP42QCGBiTUseGugAzq"
(PRE) cCert += "OP6EYpVPC73gFourmdBQgfayaEvi3xjNanFkPlW1XEYNrYJB4yNjphFrvWwTY86v"
(PRE) cCert += "L2o8gZN0Utmc5fnoBTfM9r2zVKmEi6FUeJ1iaDaVNv47te9iS1ai4V4vBY8r"

(PRE) lCCCE := IIf(SuperGetMV("MV_CFDIEXP",.F.,.F.) .And. !Empty(SF2->F2_TIPOPE), .T., .F.)
(PRE) cNodoCCE := ""

(PRE) If(AllTrim(SF2->F2_ESPECIE)=="NDI",SYA->(MsSeek(xFilial("SYA")+SA2->A2_PAIS)) , .T.)
(PRE) (SE4->(MSSeek(xFilial("SE4")+SF2->F2_COND)) , .T.)
(PRE) (AI0->(MSSeek(xFilial("AI0")+SF2->F2_CLIENTE+SF2->F2_LOJA)) , .T.)
(PRE) _aTotal[001] := '<cfdi:Comprobante'
(PRE) _aTotal[001] += ' xmlns:cfdi="http://www.sat.gob.mx/cfd/3"'
(PRE) _aTotal[001] += ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'
(PRE) _aTotal[001] += ' xmlns:cartaporte20="http://www.sat.gob.mx/CartaPorte20"'
(PRE) _aTotal[001] += ' xmlns:implocal="http://www.sat.gob.mx/implocal"'
(PRE) _aTotal[001] += IIf(lCCCE .And. SA1->A1_CONTRBE == "1" .And. Alltrim(SF2->F2_ESPECIE) == "NF", ' xmlns:leyendasFisc="http://www.sat.gob.mx/leyendasFiscales"' , "")
(PRE) _aTotal[001] += ' xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd http://www.sat.gob.mx/CartaPorte20 http://www.sat.gob.mx/sitio_internet/cfd/CartaPorte/CartaPorte20.xsd http://www.sat.gob.mx/implocal http://www.sat.gob.mx/sitio_internet/cfd/implocal/implocal.xsd'
(PRE) _aTotal[001] += IIF(lCCCE,'http://www.sat.gob.mx/ComercioExterior11 http://www.sat.gob.mx/sitio_internet/cfd/ComercioExterior11/ComercioExterior11.xsd ','')
(PRE) _aTotal[001] += IIf(lCCCE .And. SA1->A1_CONTRBE == "1" .And. Alltrim(SF2->F2_ESPECIE) == "NF", ' http://www.sat.gob.mx/leyendasFiscales http://www.sat.gob.mx/sitio_internet/cfd/leyendasFiscales/leyendasFisc.xsd"' , '"')
(PRE) _aTotal[001] += IIf(lCCCE, ' xmlns:cce11="http://www.sat.gob.mx/ComercioExterior11"' , "")
(PRE) _aTotal[001] += ' Version="3.3"'
(PRE) _aTotal[001] += ' Serie="' + Alltrim(SF2->F2_SERIE) + '"'
(PRE) _aTotal[001] += ' Folio="' + Alltrim(SF2->F2_DOC) + '"'
(PRE) _aTotal[001] += ' Fecha="' + Alltrim(_aTotal[096]) + '"'
(PRE) _aTotal[001] += ' Sello="' + Alltrim(_aTotal[100]) + '"'
(PRE) _aTotal[001] += IIf(Alltrim(SF2->F2_TIPODOC) == "21", "", ' FormaPago="' + IIf(SF2->F2_GLOBAL == '1',FormPagGlo(SF2->F2_DOC,SF2->F2_SERIE),IIf(Empty(AI0->AI0_MPAGO),"99",Alltrim(AI0->AI0_MPAGO))) + '"' )
(PRE) _aTotal[001] += ' NoCertificado="' + Alltrim(SF2->F2_CERTFOL) + '"'
(PRE) _aTotal[001] += ' Certificado="' + cCert + '"'
(PRE) _aTotal[001] += IIf(Alltrim(SF2->F2_TIPODOC) == "21", "", ' CondicionesDePago="' + CFDCarEsp(Alltrim(SE4->E4_DESCRI)) + '"' )
(PRE) _aTotal[001] += ' SubTotal="' + Alltrim(STR(IIF(ALLTRIM(SF2->F2_TIPODOC) == "21", 0, (SF2->F2_VALMERC + _aTotal[103] + SF2->F2_DESCONT) - _aTotal[036] - _aTotal[037] ),14,_aTotal[106])) + '"'
(PRE) _aTotal[001] += IIF(ALLTRIM(SF2->F2_TIPODOC) == "21", "", IIf( SF2->F2_DESCONT == 0, "", ' Descuento="' + Alltrim(STR(SF2->F2_DESCONT,14,2)) + '"' ))
(PRE) _aTotal[001] += ' Moneda="' + IIf(_aTotal[104] .And. Alltrim(SF2->F2_TIPODOC) == "21","XXX",Alltrim(CTO->CTO_MOESAT)) + '"'
(PRE) _aTotal[001] += IIf(_aTotal[104] .And. Alltrim(SF2->F2_TIPODOC) == "21", "", ' TipoCambio="' + IIf(Alltrim(CTO->CTO_MOESAT) <> "MXN", Alltrim(STR(SF2->F2_TXMOEDA,14,2)), "1") + '"')
(PRE) _aTotal[001] += ' Total="' + Alltrim(Str(IIf(Alltrim(SF2->F2_TIPODOC) == "21", 0, IIf(GetSx3Cache("F2_VALBRUT","X3_DECIMAL") <= 2,SF2->F2_VALBRUT + _aTotal[103] - _aTotal[037] - _aTotal[038] ,Round(SF2->F2_VALBRUT,2) + _aTotal[103] - _aTotal[037] - _aTotal[038])),14,_aTotal[106])) + '"'
(PRE) _aTotal[001] += ' TipoDeComprobante="' + IIf(Alltrim(SF2->F2_ESPECIE) == "NF",IIf(Alltrim(SF2->F2_TIPODOC) == "21", "T", "I"), "E") + '"'
(PRE) _aTotal[001] += IIf(Alltrim(SF2->F2_TIPODOC) == "21", "", ' MetodoPago="' + Alltrim(SE4->E4_MPAGSAT) + '"' )
(PRE) _aTotal[001] += ' LugarExpedicion="' + CFDCarEsp(AllTrim(SM0->M0_CEPENT)) + '"'
(PRE) _aTotal[001] += '>'
(PREREG) _aTotal[001]


(POS) cNodoCCE := IIf(lCCCE, ' <cce11:ComercioExterior' , "")
(POS) cNodoCCE += IIf(lCCCE, ' xmlns:cfdi="http://www.sat.gob.mx/cfd/3"' , "")
(POS) cNodoCCE += IIf(lCCCE, ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' , "")
(POS) cNodoCCE += IIf(lCCCE, ' xmlns:cce11="http://www.sat.gob.mx/ComercioExterior11"' , "")
(POS) cNodoCCE += IIf(lCCCE, ' xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd"' , "")
(POS) cNodoCCE += IIf(lCCCE, ' Version="1.1"' , "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(SF2->F2_TRASLA), ' MotivoTraslado="' + Alltrim(SF2->F2_TRASLA) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(SF2->F2_TIPOPE), ' TipoOperacion="' + Alltrim(SF2->F2_TIPOPE) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(SF2->F2_CVEPED), ' ClaveDePedimento="' + Alltrim(SF2->F2_CVEPED) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(SF2->F2_CERORI), ' CertificadoOrigen="' + Alltrim(SF2->F2_CERORI) +'"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(SF2->F2_NUMCER), ' NumCertificadoOrigen="' + Alltrim(SF2->F2_NUMCER) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(SF2->F2_EXPCONF), ' NumeroExportadorConfiable="' + Alltrim(SF2->F2_EXPCONF) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(SF2->F2_INCOTER), ' Incoterm="' + Alltrim(SF2->F2_INCOTER) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(SF2->F2_SUBDIV), ' Subdivision="' + Alltrim(SF2->F2_SUBDIV) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. SF2->(ColumnPos("F2_OBSCE")) > 0 .And. !Empty(SF2->F2_OBSCE), ' Observaciones="' + CFDCarEsp(AllTrim(SF2->F2_OBSCE), .T.) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(Str(SF2->F2_TCUSD)), ' TipoCambioUSD="' + Alltrim(Str(SF2->F2_TCUSD)) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(Str(SF2->F2_TOTUSD)), ' TotalUSD="' + Alltrim(Str(SF2->F2_TOTUSD,14,2)) + '"', "")
(POS) cNodoCCE += IIf(lCCCE, '>' + ( chr(13)+chr(10) ), "")
(POS) _aTotal[094] := cNodoCCE

[XXX CFDIREL]
(PREREG) AllTrim(SF2->F2_RELSAT) <> ""
(PREREG) (_aTotal[001] := IIf(_aTotal[104] .And. Alltrim(SF2->F2_TIPODOC) == "21","",fGetFolRel("S"),.T.))
(PREREG) _aTotal[001]

[XXX EMISOR]
(PRE) (_aTotal[001] := ' <cfdi:Emisor' , .T.)
(PRE) (_aTotal[001] += ' Rfc="' + CFDCarEsp(AllTrim(SM0->M0_CGC))+ '"' , .T.)
(PRE) (_aTotal[001] += ' Nombre="' + CFDCarEsp(_aTotal[075],.T.) + '"' , .T.)
(PRE) (_aTotal[001] += ' RegimenFiscal="' + CFDCarEsp(Alltrim(SM0->M0_DSCCNA)) + '"' , .T.)
(PRE) (_aTotal[001] += '/>' , .T.)
(PRE) (_aTotal[001] := _aTotal[001] , .T.)
(PREREG) _aTotal[001]

[XXX RECEPTOR_CLIENTE]
(PRE) lCCCE := IIf(SuperGetMV("MV_CFDIEXP",.F.,.F.) .And. !Empty(SF2->F2_TIPOPE), .T., .F.)
(PRE) cNodoCCE := ""

(PREREG) AllTrim(SF2->F2_ESPECIE) <> "NDI"
(PREREG) (SA1->(MSSeek(xFilial("SA1")+SF2->F2_CLIENTE+SF2->F2_LOJA)) , .T.)
(PREREG) (SYA->(MsSeek(xFilial("SYA")+SA1->A1_PAIS)) , .T.)
(PREREG) (_aTotal[001] := ' <cfdi:Receptor' , .T.)
(PREREG) (_aTotal[001] += ' Rfc="' + CFDCarEsp(IIf(!_aTotal[104] .And.(Alltrim(SF2->F2_TIPODOC) == "21" .Or. SF2->F2_GLOBAL == "1"), "XAXX010101000", Alltrim(SA1->A1_CGC))) + '"' , .T.)
(PREREG) (_aTotal[001] += IIf(SF2->F2_GLOBAL <> "1",' Nombre="' + CFDCarEsp(Alltrim(SA1->A1_NOME),.T.) + '"',"") , .T.)
(PREREG) (_aTotal[001] += ' UsoCFDI="' + Alltrim(SF2->F2_USOCFDI) + '"' , .T.)
(PREREG) IIf(lCCCE .And. !Empty(CFDCarEsp(AllTrim(AllTrim(SF2->F2_IDTRIB)))), (_aTotal[001] += ' NumRegIdTrib="' + CFDCarEsp(AllTrim(AllTrim(SF2->F2_IDTRIB))) + '"' , .T.), "")
(PREREG) IIf(lCCCE .And. !Empty(CFDCarEsp(AllTrim(AllTrim(SF2->F2_RESIDE)))), (_aTotal[001] += ' ResidenciaFiscal="' + AllTrim(Posicione("SYA",1,xFilial("SYA")+SF2->F2_RESIDE,"YA_CCESAT")) + '"' , .T.), "")
(PREREG) (_aTotal[001] += '/>' ,.T.)
(PREREG) (_aTotal[001] := _aTotal[001] , .T.)
(PREREG) _aTotal[001]

(POS) cNodoCCE += IIf(lCCCE, ' <cce11:Emisor' , "")
(POS) cNodoCCE += IIf(lCCCE, '>' + ( chr(13)+chr(10) ), "")
(POS) cNodoCCE += IIf(lCCCE, ' <cce11:Domicilio' , "")
(POS) cNodoCCE += IIf(lCCCE, ' Calle="' + CFDCarEsp(AllTrim(SM0->M0_ENDCOB)) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(CFDCarEsp(CFDCarEsp(AllTrim(SM0->M0_CEPENT)))), ' Colonia="' + CFDCarEsp(AllTrim(ObtColSAT("S015",AllTrim(SM0->M0_CODZOSE)+ALLTRIM(SM0->M0_CEPENT),1,9,1,4))) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(CFDCarEsp(AllTrim(SM0->M0_CEPENT))), ' Municipio="' + CFDCarEsp(AllTrim(SM0->M0_CODMUN)) + '"', "")
(POS) cNodoCCE += IIf(lCCCE, ' Estado="' + CFDCarEsp(Alltrim(ObtColSAT("S004",AllTrim(SM0->M0_CEPENT),1,5,6,3))) + '"', "")
(POS) cNodoCCE += IIf(lCCCE, ' Pais="' + AllTrim("MEX") + '"', "")
(POS) cNodoCCE += IIf(lCCCE, ' CodigoPostal="' + AllTrim(SM0->M0_CEPENT) + '"', "")
(POS) cNodoCCE += IIf(lCCCE, '/>' + ( chr(13)+chr(10) ), "")
(POS) cNodoCCE += IIf(lCCCE, ' </cce11:Emisor>' + ( chr(13)+chr(10) ), "")

(POS) cNodoCCE += IIf(lCCCE, ' <cce11:Receptor' , "")
(POS) cNodoCCE += IIf(lCCCE, '>' + ( chr(13)+chr(10) ), "")

(POS) cNodoCCE += IIf(lCCCE, ' <cce11:Domicilio' , "")
(POS) cNodoCCE += IIf(lCCCE, ' Calle="' + CFDCarEsp(AllTrim(SA1->A1_END)) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(AllTrim(SA1->A1_NR_END)), ' NumeroExterior="' + AllTrim(SA1->A1_NR_END) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(AllTrim(SA1->A1_NROINT)), ' NumeroInterior="' + AllTrim(SA1->A1_NROINT) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(CFDCarEsp(AllTrim(SA1->A1_BAIRRO))), ' Colonia="' + CFDCarEsp(AllTrim(SA1->A1_BAIRRO)) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(AllTrim(SA1->A1_MUN)), ' Municipio="' + CFDCarEsp(AllTrim(SA1->A1_MUN),.T.) + '"', "")
(POS) cNodoCCE += IIf(lCCCE, ' Estado="' + CFDCarEsp(Alltrim(Posicione("SX5",1,xFilial("SX5")+"12"+SA1->A1_EST,"X5_DESCRI"))) + '"', "")
(POS) cNodoCCE += IIf(lCCCE, ' Pais="' + AllTrim(Posicione("SYA",1,xFilial("SYA")+SA1->A1_PAIS,"YA_CCESAT")) + '"', "")
(POS) cNodoCCE += IIf(lCCCE, ' CodigoPostal="' + AllTrim(SA1->A1_CEP) + '"', "")
(POS) cNodoCCE += IIf(lCCCE, '/>' + ( chr(13)+chr(10) ), "")
(POS) cNodoCCE += IIf(lCCCE, ' </cce11:Receptor>' + ( chr(13)+chr(10) ), "")

(POS) (cNodoCCE += IIf(lCCCE, ' <cce11:Mercancias>' + ( chr(13)+chr(10) ), ""),.T.)
(POS) _aTotal[094] += cNodoCCE

[SD2 CONCEPTO]
(PRE) lCCCE := IIf(SuperGetMV("MV_CFDIEXP",.F.,.F.) .And. !Empty(SF2->F2_TIPOPE), .T., .F.)
(PRE) cNodoCCE := ""

(PRE) DbGoTop()

(PREREG) (cNodoCCE += IIf(lCCCE, ' <cce11:Mercancia' , ""),.T.)
(PREREG) (cNodoCCE += IIf(lCCCE , ' NoIdentificacion="' + Alltrim(SD2->D2_ITEM + SD2->D2_COD) + '"', ""),.T.)
(PREREG) (cNodoCCE += IIf(lCCCE .And. !Empty(SD2->D2_FRACCA), ' FraccionArancelaria="' + Alltrim(SD2->D2_FRACCA) + Alltrim(SD2->D2_NICO) + '"', ""),.T.)
(PREREG) (cNodoCCE += IIf(lCCCE .And. !Empty(Str(SD2->D2_CANADU)), ' CantidadAduana="' + Alltrim(Str(SD2->D2_CANADU)) + '"', ""),.T.)
(PREREG) (cNodoCCE += IIf(lCCCE .And. !Empty(SD2->D2_FRACCA), ' UnidadAduana="' + AllTrim(ObtColSAT("S014",AllTrim(SD2->D2_FRACCA),1,8,9,2)) + '"', ""),.T.)
(PREREG) (cNodoCCE += IIf(lCCCE .And. !Empty(Str(SD2->D2_VALADU)), ' ValorUnitarioAduana="' + Alltrim(Str(SD2->D2_VALADU,14,2)) + '"', ""),.T.)
(PREREG) (cNodoCCE += IIf(lCCCE, ' ValorDolares="' + Alltrim(Str(SD2->D2_USDADU,14,2)) + '"', ""),.T.)
(PREREG) (cNodoCCE += IIf(lCCCE, '>' + ( chr(13)+chr(10) ) , ""),.T.)
(PREREG) (cNodoCCE += IIf(lCCCE, ' </cce11:Mercancia>' + ( chr(13)+chr(10) ), ""),.T.)

(POS) (cNodoCCE += IIf(lCCCE, ' </cce11:Mercancias>' + ( chr(13)+chr(10) ), ""),.T.)
(POS) (cNodoCCE += IIf(lCCCE, ' </cce11:ComercioExterior>' , ""),.T.)
(POS) _aTotal[094] += cNodoCCE

(POS) (_aTotal[034] := fXMLFUN("CO",.F., IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.),_aTotal[104]),.T.)

[XXX CONCEPTOS]
(POS) FsQuery(_aTotal[097],2)

(PREREG) (_aTotal[001] := _aTotal[034] ,.T.)
(PREREG) _aTotal[001]

[XXX IMPUESTOS]
(PREREG) (_aTotal[002] := fXMLFUN("TI",.F.,IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.)),.T.)
(PREREG) _aTotal[002]

//IMPUESTOS LOCALES//
(PRE) (_aTotal[095] := fXMLFUN("IL",.F.),.T.)

[XXX COMPLEMENT]
(PREREG) _aTotal[105] := LxFunaCaPo(SF2->F2_FILIAL,SF2->F2_DOC,SF2->F2_SERIE,.F.,IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.))
(PREREG) (_aTotal[001] := IIF(!EMPTY(_aTotal[094] ) .or. !EMPTY(_aTotal[095] ) .Or. !Empty(_aTotal[105]), ' <cfdi:Complemento', ""), .T.)
(PREREG) (_aTotal[001] += IIF(!EMPTY(_aTotal[094] ) .or. !EMPTY(_aTotal[095] ) .Or. !Empty(_aTotal[105]),'>',""),.T.)
(PREREG) _aTotal[001]
COMPLEMENT C 021 0 ENCODEUTF8(XMLConv("",,,"cfdi:Complemento",.T.,.F.,4))


[XXX COMERCIOEX]
(PREREG) (_aTotal[001] := _aTotal[094],.T.)
(PREREG) _aTotal[001]

[XXX CARTAPORTE]
(PREREG) (_aTotal[001] := _aTotal[105],.T.)
(PREREG) _aTotal[001]

[XXX IMPUESTOLOC]
(PREREG) (_aTotal[001] := _aTotal[095],.T.)
(PREREG) _aTotal[001]

[XXX LEYENDASFIS]
(PREREG) lCCCE := IIf(SuperGetMV("MV_CFDIEXP",.F.,.F.) .And. !Empty(SF2->F2_TIPOPE), .T., .F.) .And. SF2->(FieldPos("F2_CONUNI")) > 0
(PREREG) lCCCE
(PREREG) (_aTotal[001] := IIF((!EMPTY(_aTotal[094] ) .or. !EMPTY(_aTotal[095])) .And. !EMPTY(SF2->F2_CONUNI) .And. SA1->A1_CONTRBE == "1" .And. Alltrim(SF2->F2_ESPECIE) == "NF" , ' <leyendasFisc:LeyendasFiscales version="1.0" >'+ ( chr(13)+chr(10) ), ""), .T.)
(PREREG) (_aTotal[001] += IIF((!EMPTY(_aTotal[094] ) .or. !EMPTY(_aTotal[095])) .And. !EMPTY(SF2->F2_CONUNI) .And. SA1->A1_CONTRBE == "1" .And. Alltrim(SF2->F2_ESPECIE) == "NF" , ' <leyendasFisc:Leyenda textoLeyenda=', ""), .T.)
(PREREG) (_aTotal[001] += IIF((!EMPTY(_aTotal[094] ) .or. !EMPTY(_aTotal[095])) .And. SF2->F2_CONUNI=="1" .And. SA1->A1_CONTRBE == "1" .And. Alltrim(SF2->F2_ESPECIE) == "NF", '"IMMEX:'+ AllTrim(SA1->A1_PFISICA) +' ' + _aTotal[101] +'" />', IIF((!EMPTY(_aTotal[094] ) .or. !EMPTY(_aTotal[095])) .And. SF2->F2_CONUNI=="2" .And. SA1->A1_CONTRBE == "1" .And. Alltrim(SF2->F2_ESPECIE) == "NF",'"IMMEX:'+ AllTrim(SA1->A1_PFISICA) + ' ' + _aTotal[102] +'" />',"")), .T.)
(PREREG) _aTotal[001]
(PREREG) (_aTotal[001] := IIF((!EMPTY(_aTotal[094] ) .or. !EMPTY(_aTotal[095])) .And. !EMPTY(SF2->F2_CONUNI) .And. SA1->A1_CONTRBE == "1" .And. Alltrim(SF2->F2_ESPECIE) == "NF",' </leyendasFisc:LeyendasFiscales>', ""), .T.)
(PREREG) _aTotal[001]


[XXX COMPLEMENT]
(PREREG) (_aTotal[001] := IIF(!EMPTY(_aTotal[094]) .or. !EMPTY(_aTotal[095]) .or. !EMPTY(_aTotal[105]),' </cfdi:Complemento>',""), .T.)
(PREREG) _aTotal[001]
COMPLEMENT C 021 0 ENCODEUTF8(XMLConv("",,,"cfdi:Complemento",.F.,.T.,4))

//[XXX CAD_ORIG]
//(PREREG) _aTotal[033]

[XXX FACTURA]
(PRE) _aTotal[095] := &(GetNewPar("MV_CFDNAF2","Lower(AllTrim(SF2->F2_ESPECIE)) + '_' + Lower(AllTrim(SF2->F2_SERIE)) + '_' + Lower(AllTrim(SF2->F2_DOC)) + '.xml'"))
(ARQ) _aTotal[095]
FACTURA C 019 0 ENCODEUTF8(XMLConv("",,,"cfdi:Comprobante",.F.,.T.,0))

FATEMEX.INI

Se recomienda editar el script actual de generación de CFDI (Archivo XML), actualizando las secciones de acuerdo al modelo siguiente, en donde las líneas resaltadas se agregaron o fueron modificadas para que no afecte la implementación del Complemento Carta Porte en las Notas de Crédito.

//FATEMEX.INI V3.3 --- Modelo 2017
[XXX POSICIONAMENTOS]
(PRE) If(AllTrim(SF1->F1_ESPECIE)=="NCC",SA2->(MSSeek(xFilial("SA2")+SF1->F1_FORNECE+SF1->F1_LOJA)) , .T.)
(PRE) If(AllTrim(SF1->F1_ESPECIE)<>"NCC",SA1->(MSSeek(xFilial("SA1")+SF1->F1_FORNECE+SF1->F1_LOJA)) , .T.)
(PRE) (SE4->(MSSeek(xFilial("SE4")+SF1->F1_COND)) , .T.)
(PRE) (AI0->(MSSeek(xFilial("AI0")+SF1->F1_FORNECE+SF1->F1_LOJA)) , .T.)

[XXX INICIALIZACION]
(PRE) SD1->(DbSetOrder(1))
(PRE) SB1->(DbSetOrder(1))
(PRE) SYA->(DbSetOrder(1))
(PRE) SC6->(DbSetOrder(1))
(PRE) SE4->(DbSetOrder(1))
(PRE) CTO->(DbSetOrder(1))
(PRE) SAH->(DbSetOrder(1))
(PRE) _aTotal[094] := ""
(PRE) _aTotal[095] := ""
(PRE) _aTotal[033] := ""
(PRE) _aTotal[034] := ""
(PRE) _aTotal[035] := ""
(PRE) _aTotal[036] := 0
(PRE) _aTotal[075] := Alltrim(SM0->M0_NOMECOM)
(PRE) _aTotal[096] := DtoS(SF1->F1_EMISSAO)
(PRE) _aTotal[096] := Left(_aTotal[096],4) + "-" + Substr(_aTotal[096],5,2)+ "-" + Right(_aTotal[096],2)
(PRE) _aTotal[096] += "T" + SF1->F1_HORA
(PRE) _aTotal[097] := {"SD1",""}
(PRE) _aTotal[098] := "|"
(PRE) _aTotal[099] := "||"
(PRE) _aTotal[100] := ""
(PRE) _aTotal[101] := IIF(SuperGetMv("MV_DESCSAI",.T.,"2") == "1", .T., .F.)
(PRE) lCCCE := .F.
(PRE) cNodoCCE := ""

(PREREG) FsQuery(_aTotal[097],1,"D1_DOC='" + SF1->F1_DOC + "' AND D1_SERIE='" + SF1->F1_SERIE + "' AND D1_FORNECE='" + SF1->F1_FORNECE + "' AND D1_LOJA='" + SF1->F1_LOJA + "'","SD1->D1_DOC=SF1->F1_DOC .AND. SD1->D1_SERIE=SF1->F1_SERIE .AND. SD1->D1_FORNECE=SF1->F1_FORNECE .AND. SD1->D1_LOJA=SF1->F1_LOJA","D1_ITEM") .And. .T.

(PRE) fImptosD(SF1->F1_DOC,SF1->F1_SERIE,SF1->F1_FORNECE,SF1->F1_LOJA, .F. , "SD1", .F., @(_aTotal[036]))

[SD1 CADENAORIGINAL_SELLO]
(PRE) If(AllTrim(SF1->F1_ESPECIE)=="NCC",SA1->(MSSeek(xFilial("SA1")+SF1->F1_FORNECE+SF1->F1_LOJA)) , .T.)
(PRE) If(AllTrim(SF1->F1_ESPECIE)=="NCC",SYA->(MsSeek(xFilial("SYA")+SA1->A1_PAIS)) , .T.)
(PRE) If(AllTrim(SF1->F1_ESPECIE)=="NCC",CTO->(MsSeek(xFilial("CTO")+Strzero(SF1->F1_MOEDA,2))) , .T.)
(PRE) If(AllTrim(SF1->F1_ESPECIE)<>"NCC",SA2->(MSSeek(xFilial("SA2")+SF1->F1_FORNECE+SF1->F1_LOJA)) , .T.)
(PRE) If(AllTrim(SF1->F1_ESPECIE)<>"NCC",SYA->(MsSeek(xFilial("SYA")+SA1->A1_PAIS)) , .T.)
(PRE) If(AllTrim(SF1->F1_ESPECIE)<>"NCC",CTO->(MsSeek(xFilial("CTO")+Strzero(SF1->F1_MOEDA,2))) , .T.)
//////////////////////////////////////////////CADENA ORIGINAL//////////////////////////////////////////////
(PRE) cCadOrig := _aTotal[099]
(PRE) lCCCE := IIf(SuperGetMV("MV_CFDIEXP",.F.,.F.) .And. !Empty(SF1->F1_TIPOPE), .T., .F.)
(PRE) cCadOriCCE := ""

//Cadena Original | Complemento de Comercio Exterior
(PREREG) IIf(lCCCE .And. !Empty(SD1->D1_ITEM + SD1->D1_COD), (cCadOriCCE += Alltrim(SD1->D1_ITEM + SD1->D1_COD) + _aTotal[098],.T.), ("",,.T.))
(PREREG) IIf(lCCCE .And. !Empty(SD1->D1_FRACCA), (cCadOriCCE += Alltrim(SD1->D1_FRACCA) + Alltrim(SD1->D1_NICO) + _aTotal[098],.T.), ("",,.T.))
(PREREG) IIf(lCCCE .And. !Empty(Str(SD1->D1_CANADU)), (cCadOriCCE += Alltrim(Str(SD1->D1_CANADU)) + _aTotal[098],.T.), ("",,.T.))
(PREREG) IIf(lCCCE .And. !Empty(SD1->D1_FRACCA), (cCadOriCCE += AllTrim(ObtColSAT("S014",AllTrim(SD1->D1_FRACCA),1,8,9,2)) + _aTotal[098],.T.), ("",,.T.))
(PREREG) IIf(lCCCE .And. !Empty(Str(SD1->D1_VALADU)), (cCadOriCCE += Alltrim(Str(SD1->D1_VALADU,14,2)) + _aTotal[098],.T.), ("",,.T.))
(PREREG) IIf(lCCCE .And. !Empty(Str(SD1->D1_USDADU)), (cCadOriCCE += Alltrim(Str(SD1->D1_USDADU,14,2)) + _aTotal[098],.T.), ("",,.T.))

//Cadena Original | Complemento de Comercio Exterior
(POS) IIf(lCCCE, cCadOrig += "1.1" + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(SF1->F1_TRASLA), cCadOrig += Alltrim(SF1->F1_TRASLA) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(SF1->F1_TIPOPE), cCadOrig += Alltrim(SF1->F1_TIPOPE) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(SF1->F1_CVEPED), cCadOrig += Alltrim(SF1->F1_CVEPED) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(SF1->F1_CERORI), cCadOrig += Alltrim(SF1->F1_CERORI) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(SF1->F1_NUMCER), cCadOrig += Alltrim(SF1->F1_NUMCER) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(SF1->F1_EXPCONF), cCadOrig += Alltrim(SF1->F1_EXPCONF) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(SF1->F1_INCOTER), cCadOrig += Alltrim(SF1->F1_INCOTER) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(SF1->F1_SUBDIV), cCadOrig += Alltrim(SF1->F1_SUBDIV) + _aTotal[098], "")
(POS) IIf(lCCCE .And. SF1->(ColumnPos("F1_OBSCE")) > 0 .And. !Empty(SF1->F1_OBSCE), cCadOrig += CFDCarEsp(Alltrim(SF1->F1_OBSCE),.F.) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(Str(SF1->F1_TCUSD)), cCadOrig += Alltrim(Str(SF1->F1_TCUSD)) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(Str(SF1->F1_TOTUSD)), cCadOrig += Alltrim(Str(SF1->F1_TOTUSD,14,2)) + _aTotal[098], "")

///////////DATOS DE LA FACTURA/////////////////
(PRE) (SE4->(MSSeek(xFilial("SE4")+SF1->F1_COND)) , .T.)
(PRE) (AI0->(MSSeek(xFilial("AI0")+SF1->F1_FORNECE+SF1->F1_LOJA)) , .T.)
//Version
(PRE) cCadOrig += "3.3" + _aTotal[098]
//Serie
(PRE) cCadOrig += Alltrim(SF1->F1_SERIE) + _aTotal[098]
//Folio
(PRE) cCadOrig += Alltrim(SF1->F1_DOC) + _aTotal[098]
//Fecha
(PRE) cCadOrig += Alltrim(_aTotal[096]) + _aTotal[098]
//FormaPago
(PRE) cCadOrig += Iif(Empty(AI0->AI0_MPAGO),"99",Alltrim(AI0->AI0_MPAGO)) + _aTotal[098]
//NoCertificado
(PRE) cCadOrig += Alltrim(SF1->F1_CERTFOL) + _aTotal[098]
//CondicionesDePago
(PRE) cCadOrig += CFDCarEsp(Alltrim(SE4->E4_DESCRI)) + _aTotal[098]
//Subtotal
(PRE) cCadOrig += Alltrim(STR((SF1->F1_VALMERC + IIF(_aTotal[101], SF1->F1_DESCONT, 0 )) - _aTotal[036],14,2)) + _aTotal[098]
//Descuento
(PRE) cCadOrig += IIf(SF1->F1_DESCONT==0, "", Alltrim(STR(SF1->F1_DESCONT,14,2)) + _aTotal[098])
//Moneda
(PRE) cCadOrig += Alltrim(CTO->CTO_MOESAT) + _aTotal[098]
//TipoCambio
(PRE) cCadOrig += IIf(Alltrim(CTO->CTO_MOESAT) <> "MXN", Alltrim(STR(SF1->F1_TXMOEDA,14,2)), "1") + _aTotal[098]
//Total
(PRE) cCadOrig += Alltrim(STR(iif(GetSx3Cache("F1_VALBRUT","X3_DECIMAL")<= 2,SF1->F1_VALBRUT,Round(SF1->F1_VALBRUT,2)),14,2)) + _aTotal[098]
//TipoDeComprobante
(PRE) cCadOrig += IIf(Alltrim(SF1->F1_ESPECIE) == "NF", "I", "E") + _aTotal[098]
//MetodoPago
(PRE) cCadOrig += "PUE" + _aTotal[098]
//LugarExpedicion
(PRE) cCadOrig += CFDCarEsp(AllTrim(SM0->M0_CEPENT)) + _aTotal[098]
//Confirmacion
//(PRE) cCadOrig += "ClavePAC" + _aTotal[098]

//////////////////////CFDI Relacionados//////////////////////////
(PREREG) AllTrim(SF1->F1_RELSAT) <> ""
(PRE) fGetFolRel("E",.T.)

///////////DATOS DEL EMISOR///////////////////////
//Rfc
(PRE) cCadOrig += CFDCarEsp(AllTrim(SM0->M0_CGC),.F.) + _aTotal[098]
//Nombre
(PRE) cCadOrig += CFDCarEsp(_aTotal[075],.F.) + _aTotal[098]
//RegimenFiscal
(PRE) cCadOrig += CFDCarEsp(Alltrim(SM0->M0_DSCCNA)) + _aTotal[098]

//////////////////////DATOS DEL RECEPTOR//////////////////////////
(PRE) AllTrim(SF1->F1_ESPECIE) == "NCC"
(PRE) SA1->(MSSeek(xFilial("SA1")+SF1->F1_FORNECE+SF1->F1_LOJA))
(PRE) SYA->(MsSeek(xFilial("SYA")+SA1->A1_PAIS))
//Rfc
(PRE) (cCadOrig += CFDCarEsp(AllTrim(SA1->A1_CGC), .F.) + _aTotal[098], .T.)
//Nombre
(PRE) (cCadOrig += CFDCarEsp(Alltrim(SA1->A1_NOME),.F.) + _aTotal[098], .T.)
//ResidenciaFiscal
(PRE) IIf(lCCCE,(cCadOrig += Alltrim(SYA->YA_CCESAT) + _aTotal[098], .T.),"")
//NumRegIdTrib
(PRE) IIf(lCCCE,(cCadOrig += Alltrim(AI0->AI0_IDFIS) + _aTotal[098], .T.),"")
//UsoCFDI
(PRE) (cCadOrig += Alltrim(SF1->F1_USOCFDI) + _aTotal[098], .T.)

(PRE) (cCadOrig += fXMLFUN("CO",.T., .F. ,.F.))
(PRE) (cCadOrig += fXMLFUN("TI",.T., .F. ,.T.))
(PRE) (cCadOrig += fXMLFUN("IL",.T., .F. ,.T.))

//Cadena Original | Complemento de Comercio Exterior

//Emisor
(POS) IIf(lCCCE, cCadOrig += CFDCarEsp(AllTrim(SM0->M0_ENDCOB)) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(SM0->M0_BAIRENT), cCadOrig += ObtColSAT("S015",AllTrim(SM0->M0_CEPENT),5,5,1,4) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(SM0->M0_CODMUN), cCadOrig += AllTrim(SM0->M0_CODMUN) + _aTotal[098], "")
(POS) IIf(lCCCE, cCadOrig += CFDCarEsp(Alltrim(ObtColSAT("S004",AllTrim(SM0->M0_CEPENT),1,5,6,3))) + _aTotal[098], "")
(POS) IIf(lCCCE, cCadOrig += "MEX" + _aTotal[098], "")
(POS) IIf(lCCCE, cCadOrig += AllTrim(SM0->M0_CEPENT) + _aTotal[098], "")

//Receptor Domicilio
(POS) IIf(lCCCE, cCadOrig += CFDCarEsp(AllTrim(SA1->A1_END)) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(AllTrim(SA1->A1_NR_END)), cCadOrig += AllTrim(SA1->A1_NR_END) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(AllTrim(SA1->A1_NROINT)), cCadOrig += AllTrim(SA1->A1_NROINT) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(CFDCarEsp(AllTrim(SA1->A1_BAIRRO))), cCadOrig += CFDCarEsp(CFDCarEsp(AllTrim(SA1->A1_BAIRRO))) + _aTotal[098],"")
(POS) IIf(lCCCE .And. !Empty(CFDCarEsp(AllTrim(SA1->A1_MUN))), cCadOrig += CFDCarEsp(AllTrim(SA1->A1_MUN),.F.) + _aTotal[098],"")
(POS) IIf(lCCCE, cCadOrig += CFDCarEsp(Alltrim(Posicione("SX5",1,xFilial("SX5")+"12"+SA1->A1_EST,"X5_DESCRI"))) + _aTotal[098],"")
(POS) IIf(lCCCE .And. !Empty(AllTrim(SA1->A1_PAIS)), cCadOrig += AllTrim(Posicione("SYA",1,xFilial("SYA")+SA1->A1_PAIS,"YA_CCESAT")) + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(AllTrim(SA1->A1_CEP)), cCadOrig += AllTrim(SA1->A1_CEP) + _aTotal[098], "")

(POS) cCadOrig += IIf(!Empty(cCadOriCCE), cCadOriCCE, "")

(POS) cCadOrig += _aTotal[098]
(POS) _aTotal[033] := cCadOrig

//SELLO
(POS) _aTotal[100] := EVPDigest(cCadOrig,5)
(POS) _aTotal[100] := PrivSignRSA(&(SuperGetMv("MV_CFDDIRS",,""))+SuperGetMv("MV_CFDARQS",,""),_aTotal[100],6,"assinatura")
(POS) _aTotal[100] := ENCODE64(_aTotal[100])

[XXX CABECERA]
Linha1 C 041 0 Chr(239) + Chr(187) + Chr(191) + '<?xml version="1.0" encoding="UTF-8"?>'

[XXX FACTURA]
//Certificado del SAT incluido para pruebas
(PRE) cCert := "MIIFyDCCA7CgAwIBAgIUMzAwMDEwMDAwMDA0MDAwMDI0NDMwDQYJKoZIhvcNAQEL"
(PRE) cCert += "BQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFE"
(PRE) cCert += "TUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9y"
(PRE) cCert += "aXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0w"
(PRE) cCert += "GwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWRpejEOMAwGA1UEEQwFMDYzNzAxCzAJ"
(PRE) cCert += "BgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhD"
(PRE) cCert += "T1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3Bv"
(PRE) cCert += "bnNhYmxlOiBBQ0RNQS1TQVQwHhcNMTkwNjE3MjA0MDUxWhcNMjMwNjE3MjA0MDUx"
(PRE) cCert += "WjCB7zEqMCgGA1UEAxMhWEVOT04gSU5EVVNUUklBTCBBUlRJQ0xFUyBTIERFIENW"
(PRE) cCert += "MSowKAYDVQQpEyFYRU5PTiBJTkRVU1RSSUFMIEFSVElDTEVTIFMgREUgQ1YxKjAo"
(PRE) cCert += "BgNVBAoTIVhFTk9OIElORFVTVFJJQUwgQVJUSUNMRVMgUyBERSBDVjElMCMGA1UE"
(PRE) cCert += "LRMcWElBMTkwMTI4SjYxIC8gS0FITzY0MTEwMUIzOTEeMBwGA1UEBRMVIC8gS0FI"
(PRE) cCert += "TzY0MTEwMUhOVExLUzA2MSIwIAYDVQQLExlYZW5vbiBJbmR1c3RyaWFsIEFydGlj"
(PRE) cCert += "bGVzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiJQ5YcSgjwsGf29+"
(PRE) cCert += "3go7VGdtMZCcH9wUpn46ZMAlFwUojnCPTvwJ3+cSwjqJnw8ahr3DuRwekvGR4BJA"
(PRE) cCert += "b5b9Xi8kyoiWtwcGOSWxO38Bp9J1e/BO9HMbQBPAtLDuG47oqnH8zWLOeaoYRJDp"
(PRE) cCert += "ARw4RX1ko2+9tbj0ntBtM7Vk1E8EWiA/h2Meq0LIv1+ySGTUrEW46FM01J5pzELv"
(PRE) cCert += "5XupBghuJxR5DG9fiOW7u3dR5s3tZoVLwA1KdjJtY0mmnfCwxg6i5AqhvY+FAI5D"
(PRE) cCert += "6CF6/lHA8PWg63WasvrhuIv70xCLjgPT/j00ZcPrLvBf1DefGVic980Ch/SDvC+M"
(PRE) cCert += "dJ1F5wIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG"
(PRE) cCert += "9w0BAQsFAAOCAgEACjfTPoKY2N5MxjmAMltd5XZCV1vgAwEtrIRYTodhE8R0Tp1Q"
(PRE) cCert += "anAXb0luPyBv5hIXWK4VqAI4fcTtP+n7kkrwfha6ErkPWFNJWJm8ZsMmby/3WgVo"
(PRE) cCert += "JkOFyRYQqr5Il3N6wMa5kiDBtDRbqB3iEXmvtrvjWSHyxAER+zo3jWGFlhBZ0nQN"
(PRE) cCert += "Rtjx8sPFihVc5TUH682HJiU4oWvT63Dnra8ncqiW/uCuY86crnUq0fW7Lw/3+PY5"
(PRE) cCert += "xXjNxR/Hh3sUPITfJrGaLWurD1J9npr9yGAJ6t9zrhhZnepIC0DUMc5+j4pg1DrO"
(PRE) cCert += "32jzwUOLQqErDizh84NoJCWwbg+US8wi3zD0ZKiDv7XsTNWAW2Ap2JkzykKHjFTZ"
(PRE) cCert += "iEm3uZOkJNfcu3o+kefr5HfXFT+iN9K5FUEhaQwgUeZBRJ8V5F6gmhz3d6ixVbiZ"
(PRE) cCert += "oFNhYR8e2k8gF9gGrVMrEbJGQrl+6+ZYQLFiauXeG7fu1svk19PuyredRJGnseJq"
(PRE) cCert += "yV4RzcRGhJA+cLnmpdDOTEhignnvnhEuY6HVRYYXhOTyeeluET7KRCxbJGqO7TdW"
(PRE) cCert += "gjrHL3HRbNE4NY5GAdOZuLaWxElG5ZVCHqtG0Nh7UQAhcz+EKyZBAewv5XuH0Oom"
(PRE) cCert += "ZXw6mM2mY2soL6z1224NusM8/BbJcYTQUlAEKblEChhGK1XlxiVOU2nc9KE="

(PRE) lCCCE := IIf(SuperGetMV("MV_CFDIEXP",.F.,.F.) .And. !Empty(SF1->F1_TIPOPE), .T., .F.)
(PRE) cNodoCCE := ""

(PRE) If(AllTrim(SF1->F1_ESPECIE)=="NCC",SYA->(MsSeek(xFilial("SYA")+SA1->A1_PAIS)) , .T.)
(PRE) (SE4->(MSSeek(xFilial("SE4")+SF1->F1_COND)) , .T.)
(PRE) (AI0->(MSSeek(xFilial("AI0")+SF1->F1_FORNECE+SF1->F1_LOJA)) , .T.)
(PRE) _aTotal[001] := '<cfdi:Comprobante'
(PRE) _aTotal[001] += ' xmlns:cfdi="http://www.sat.gob.mx/cfd/3"'
(PRE) _aTotal[001] += ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'
(PRE) _aTotal[001] += ' xmlns:implocal="http://www.sat.gob.mx/implocal"'
(PRE) _aTotal[001] += ' xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd http://www.sat.gob.mx/implocal http://www.sat.gob.mx/sitio_internet/cfd/implocal/implocal.xsd"'
(PRE) _aTotal[001] += ' Version="3.3"'
(PRE) _aTotal[001] += ' Serie="' + Alltrim(SF1->F1_SERIE) + '"'
(PRE) _aTotal[001] += ' Folio="' + Alltrim(SF1->F1_DOC) + '"'
(PRE) _aTotal[001] += ' Fecha="' + Alltrim(_aTotal[096]) + '"'
(PRE) _aTotal[001] += ' Sello="' + Alltrim(_aTotal[100]) + '"'
(PRE) _aTotal[001] += ' FormaPago="' + Iif(Empty(AI0->AI0_MPAGO),"99",Alltrim(AI0->AI0_MPAGO)) + '"'
(PRE) _aTotal[001] += ' NoCertificado="' + Alltrim(SF1->F1_CERTFOL) + '"'
(PRE) _aTotal[001] += ' Certificado="' + cCert + '"'
(PRE) _aTotal[001] += ' CondicionesDePago="' + CFDCarEsp(Alltrim(SE4->E4_DESCRI)) + '"'
(PRE) _aTotal[001] += ' SubTotal="' + Alltrim(STR((SF1->F1_VALMERC + IIF(_aTotal[101], SF1->F1_DESCONT, 0 )) - _aTotal[036],14,2)) + '"'
(PRE) _aTotal[001] += IIf(SF1->F1_DESCONT==0, "", ' Descuento="' + Alltrim(STR(SF1->F1_DESCONT,14,2)) + '"')
(PRE) _aTotal[001] += ' Moneda="' + Alltrim(CTO->CTO_MOESAT) + '"'
(PRE) _aTotal[001] += ' TipoCambio="' + IIf(Alltrim(CTO->CTO_MOESAT) <> "MXN", Alltrim(STR(SF1->F1_TXMOEDA,14,2)), "1") + '"'
(PRE) _aTotal[001] += ' Total="' + Alltrim(STR(iif(GetSx3Cache("F1_VALBRUT","X3_DECIMAL")<= 2,SF1->F1_VALBRUT,Round(SF1->F1_VALBRUT,2)),14,2)) + '"'
(PRE) _aTotal[001] += ' TipoDeComprobante="' + IIf(Alltrim(SF1->F1_ESPECIE) == "NF", "I", "E") + '"'
(PRE) _aTotal[001] += ' MetodoPago="PUE"'
(PRE) _aTotal[001] += ' LugarExpedicion="' + CFDCarEsp(AllTrim(SM0->M0_CEPENT)) + '"'
(PRE) _aTotal[001] += '>'
(PREREG) _aTotal[001]

(POS) cNodoCCE := IIf(lCCCE, ' <cce11:ComercioExterior' , "")
(POS) cNodoCCE += IIf(lCCCE, ' xmlns:cfdi="http://www.sat.gob.mx/cfd/3"' , "")
(POS) cNodoCCE += IIf(lCCCE, ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' , "")
(POS) cNodoCCE += IIf(lCCCE, ' xmlns:cce11="http://www.sat.gob.mx/ComercioExterior11"' , "")
(POS) cNodoCCE += IIf(lCCCE, ' 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/ComercioExterior11 http://www.sat.gob.mx/sitio_internet/cfd/ComercioExterior11/ComercioExterior11.xsd"' , "")
(POS) cNodoCCE += IIf(lCCCE, ' Version="1.1"' , "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(SF1->F1_TRASLA), ' MotivoTraslado="' + Alltrim(SF1->F1_TRASLA) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(SF1->F1_TIPOPE), ' TipoOperacion="' + Alltrim(SF1->F1_TIPOPE) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(SF1->F1_CVEPED), ' ClaveDePedimento="' + Alltrim(SF1->F1_CVEPED) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(SF1->F1_CERORI), ' CertificadoOrigen="' + Alltrim(SF1->F1_CERORI) +'"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(SF1->F1_NUMCER), ' NumCertificadoOrigen="' + Alltrim(SF1->F1_NUMCER) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(SF1->F1_EXPCONF), ' NumeroExportadorConfiable="' + Alltrim(SF1->F1_EXPCONF) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(SF1->F1_INCOTER), ' Incoterm="' + Alltrim(SF1->F1_INCOTER) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(SF1->F1_SUBDIV), ' Subdivision="' + Alltrim(SF1->F1_SUBDIV) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. SF1->(ColumnPos("F1_OBSCE")) > 0 .And. !Empty(SF1->F1_OBSCE), ' Observaciones="' + CFDCarEsp(Alltrim(SF1->F1_OBSCE), .F.) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(Str(SF1->F1_TCUSD)), ' TipoCambioUSD="' + Alltrim(Str(SF1->F1_TCUSD)) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(Str(SF1->F1_TOTUSD)), ' TotalUSD="' + Alltrim(Str(SF1->F1_TOTUSD,14,2)) + '"', "")
(POS) cNodoCCE += IIf(lCCCE, '>' + ( chr(13)+chr(10) ), "")
(POS) _aTotal[094] := cNodoCCE

[XXX CFDIREL]
(PREREG) AllTrim(SF1->F1_RELSAT) <> ""
(PREREG) (_aTotal[001] := fGetFolRel("E"),.T.)
(PREREG) _aTotal[001]

[XXX EMISOR]
(PRE) _aTotal[001] := ' <cfdi:Emisor'
(PRE) _aTotal[001] += ' Rfc="' + CFDCarEsp(AllTrim(SM0->M0_CGC)) + '"'
(PRE) _aTotal[001] += ' Nombre="' + CFDCarEsp(_aTotal[075],.T.) + '"'
(PRE) _aTotal[001] += ' RegimenFiscal="' + CFDCarEsp(Alltrim(SM0->M0_DSCCNA)) + '"'
(PRE) _aTotal[001] += '/>'
(PREREG) _aTotal[001]

[XXX RECEPTOR_CLIENTE]
(PRE) lCCCE := IIf(SuperGetMV("MV_CFDIEXP",.F.,.F.) .And. !Empty(SF1->F1_TIPOPE), .T., .F.)
(PRE) cNodoCCE := ""

(PREREG) AllTrim(SF1->F1_ESPECIE) == "NCC"
(PREREG) (SA1->(MSSeek(xFilial("SA1")+SF1->F1_FORNECE+SF1->F1_LOJA)) , .T.)
(PREREG) (SYA->(MsSeek(xFilial("SYA")+SA1->A1_PAIS)) , .T.)
(PREREG) (_aTotal[001] := ' <cfdi:Receptor' , .T.)
(PREREG) (_aTotal[001] += ' Rfc="' + CFDCarEsp(AllTrim(SA1->A1_CGC)) + '"' , .T.)
(PREREG) (_aTotal[001] += ' Nombre="' + CFDCarEsp(Alltrim(SA1->A1_NOME),.T.) + '"' , .T.)
(PREREG) IIf(lCCCE,(_aTotal[001] += ' ResidenciaFiscal="' + Alltrim(SYA->YA_CCESAT) + '"' , .T.),"")
(PREREG) IIf(lCCCE,(_aTotal[001] += ' NumRegIdTrib="' + Alltrim(AI0->AI0_IDFIS) + '"' , .T.),"")
(PREREG) (_aTotal[001] += ' UsoCFDI="' + Alltrim(SF1->F1_USOCFDI) + '"' , .T.)
(PREREG) (_aTotal[001] += '/>' ,.T.)
(PREREG) _aTotal[001]


//Emisor
(POS) cNodoCCE += IIf(lCCCE, ' <cce11:Emisor' , "")
(POS) cNodoCCE += IIf(lCCCE, '>' + ( chr(13)+chr(10) ), "")
(POS) cNodoCCE += IIf(lCCCE, ' <cce11:Domicilio' , "")
(POS) cNodoCCE += IIf(lCCCE, ' Calle="' + CFDCarEsp(AllTrim(SM0->M0_ENDCOB)) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(CFDCarEsp(CFDCarEsp(AllTrim(SM0->M0_CEPENT)))), ' Colonia="' + CFDCarEsp(AllTrim(ObtColSAT("S015",AllTrim(SM0->M0_CEPENT),5,5,1,4))) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(CFDCarEsp(AllTrim(SM0->M0_CEPENT))), ' Municipio="' + CFDCarEsp(AllTrim(SM0->M0_CODMUN)) + '"', "")
(POS) cNodoCCE += IIf(lCCCE, ' Estado="' + CFDCarEsp(Alltrim(ObtColSAT("S004",AllTrim(SM0->M0_CEPENT),1,5,6,3))) + '"', "")
(POS) cNodoCCE += IIf(lCCCE, ' Pais="' + AllTrim("MEX") + '"', "")
(POS) cNodoCCE += IIf(lCCCE, ' CodigoPostal="' + AllTrim(SM0->M0_CEPENT) + '"', "")
(POS) cNodoCCE += IIf(lCCCE, '/>' + ( chr(13)+chr(10) ), "")
(POS) cNodoCCE += IIf(lCCCE, ' </cce11:Emisor>' + ( chr(13)+chr(10) ), "")

//Receptor
(POS) cNodoCCE += IIf(lCCCE, ' <cce11:Receptor' , "")
(POS) cNodoCCE += IIf(lCCCE, '>' + ( chr(13)+chr(10) ), "")

//Domicilio Receptor
(POS) cNodoCCE += IIf(lCCCE, ' <cce11:Domicilio' , "")
(POS) cNodoCCE += IIf(lCCCE, ' Calle="' + CFDCarEsp(AllTrim(SA1->A1_END)) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(AllTrim(SA1->A1_NR_END)), ' NumeroExterior="' + AllTrim(SA1->A1_NR_END) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(AllTrim(SA1->A1_NROINT)), ' NumeroInterior="' + AllTrim(SA1->A1_NROINT) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(CFDCarEsp(AllTrim(SA1->A1_BAIRRO))), ' Colonia="' + CFDCarEsp(AllTrim(SA1->A1_BAIRRO)) + '"', "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(AllTrim(SA1->A1_MUN)), ' Municipio="' + CFDCarEsp(AllTrim(SA1->A1_MUN),.T.) + '"', "")
(POS) cNodoCCE += IIf(lCCCE, ' Estado="' + CFDCarEsp(Alltrim(Posicione("SX5",1,xFilial("SX5")+"12"+SA1->A1_EST,"X5_DESCRI"))) + '"', "")
(POS) cNodoCCE += IIf(lCCCE, ' Pais="' + AllTrim(Posicione("SYA",1,xFilial("SYA")+SA1->A1_PAIS,"YA_CCESAT")) + '"', "")
(POS) cNodoCCE += IIf(lCCCE, ' CodigoPostal="' + AllTrim(SA1->A1_CEP) + '"', "")
(POS) cNodoCCE += IIf(lCCCE, '/>' + ( chr(13)+chr(10) ), "")
(POS) cNodoCCE += IIf(lCCCE, ' </cce11:Receptor>' + ( chr(13)+chr(10) ), "")

(POS) (cNodoCCE += IIf(lCCCE, ' <cce11:Mercancias>' + ( chr(13)+chr(10) ), ""),.T.)
(POS) _aTotal[094] += cNodoCCE

[SD1 CONCEPTO]
(PRE) lCCCE := IIf(SuperGetMV("MV_CFDIEXP",.F.,.F.) .And. !Empty(SF1->F1_TIPOPE), .T., .F.)
(PRE) cNodoCCE := ""

(PRE) DbGoTop()

(PREREG) (cNodoCCE += IIf(lCCCE, ' <cce11:Mercancia' , ""),.T.)
(PREREG) (cNodoCCE += IIf(lCCCE .And. !Empty(SD1->D1_ITEM + SD1->D1_COD), ' NoIdentificacion="' + Alltrim(SD1->D1_ITEM + SD1->D1_COD) + '"', ""),.T.)
(PREREG) (cNodoCCE += IIf(lCCCE .And. !Empty(SD1->D1_FRACCA), ' FraccionArancelaria="' + Alltrim(SD1->D1_FRACCA) + Alltrim(SD1->D1_NICO) + '"', ""),.T.)
(PREREG) (cNodoCCE += IIf(lCCCE .And. !Empty(Str(SD1->D1_CANADU)), ' CantidadAduana="' + Alltrim(Str(SD1->D1_CANADU)) + '"', ""),.T.)
(PREREG) (cNodoCCE += IIf(lCCCE .And. !Empty(SD1->D1_FRACCA), ' UnidadAduana="' + AllTrim(ObtColSAT("S014",AllTrim(SD1->D1_FRACCA),1,8,9,2)) + '"', ""),.T.)
(PREREG) (cNodoCCE += IIf(lCCCE .And. !Empty(Str(SD1->D1_VALADU)), ' ValorUnitarioAduana="' + Alltrim(Str(SD1->D1_VALADU,14,2)) + '"', ""),.T.)
(PREREG) (cNodoCCE += IIf(lCCCE .And. !Empty(Str(SD1->D1_USDADU)), ' ValorDolares="' + Alltrim(Str(SD1->D1_USDADU,14,2)) + '"', ""),.T.)
(PREREG) (cNodoCCE += IIf(lCCCE, '>' + ( chr(13)+chr(10) ) , ""),.T.)
(PREREG) (cNodoCCE += IIf(lCCCE, ' </cce11:Mercancia>' + ( chr(13)+chr(10) ), ""),.T.)

(POS) (cNodoCCE += IIf(lCCCE, ' </cce11:Mercancias>' + ( chr(13)+chr(10) ), ""),.T.)
(POS) (cNodoCCE += IIf(lCCCE, ' </cce11:ComercioExterior>' , ""),.T.)
(POS) _aTotal[094] += cNodoCCE

(POS) (_aTotal[034] := fXMLFUN("CO",.F., .F. ,.F.))

[XXX CONCEPTOS]
(POS) FsQuery(_aTotal[097],2)
(PREREG) (_aTotal[001] := _aTotal[034],.T.)
(PREREG) _aTotal[001]

[XXX IMPUESTOS]
(PREREG) (_aTotal[002] := fXMLFUN("TI",.F., .F. ,.T.))
(PREREG) _aTotal[002]

//IMPUESTOS LOCALES//
(PRE) (_aTotal[095] := fXMLFUN("IL",.F.),.T.)

[XXX COMPLEMENT]
(PREREG) (_aTotal[001] := IIF(!EMPTY(_aTotal[094] ) .or. !EMPTY(_aTotal[095]), ' <cfdi:Complemento', ""), .T.)
(PREREG) (_aTotal[001] += IIF(!EMPTY(_aTotal[094] ) .or. !EMPTY(_aTotal[095]),'>',""),.T.)
(PREREG) _aTotal[001]
COMPLEMENT C 021 0 ENCODEUTF8(XMLConv("",,,"cfdi:Complemento",.T.,.F.,4))

[XXX COMERCIOEX]
(PREREG) (_aTotal[001] := _aTotal[094],.T.)
(PREREG) _aTotal[001]

[XXX IMPUESTOLOC]
(PREREG) (_aTotal[001] := _aTotal[095],.T.)
(PREREG) _aTotal[001]

[XXX COMPLEMENT]
(PREREG) (_aTotal[001] := IIF(!EMPTY(_aTotal[094]) .or. !EMPTY(_aTotal[095]) ,' </cfdi:Complemento>',""), .T.)
(PREREG) _aTotal[001]
COMPLEMENT C 021 0 ENCODEUTF8(XMLConv("",,,"cfdi:Complemento",.F.,.T.,4))

//[XXX CAD_ORIG]
//(PREREG) _aTotal[033]

[XXX FACTURA]
(PRE) _aTotal[095] := &(GetNewPar("MV_CFDNAF1","Lower(AllTrim(SF1->F1_ESPECIE)) + '_' + Lower(AllTrim(SF1->F1_SERIE)) + '_' + Lower(AllTrim(SF1->F1_DOC)) + '.xml'"))
(ARQ) _aTotal[095]
FACTURA C 019 0 ENCODEUTF8(XMLConv("",,,"cfdi:Comprobante",.F.,.T.,0))

04. DICCIONARIO DE DATOS

En caso de contar con el archivo diferencial del diccionario (SDFMEX.TXT) para realizar la actualización, consulte el documento Actualizador de diccionario y base de datos - UPDDISTR el cual le guiará para aplicar las actualizaciones automáticamente desde el archivo diferencial.

Se realizan las siguientes actualizaciones al diccionario de datos:

Tablas y Campos


En la implementación de la versión 2.0 de Carta Porte, se realizaron cambios en las estructuras a continuación.

  • En sombreado verde se indican campos/disparadores nuevos.
  • En sombreado amarillo se indican campos con configuración modificada.


Nueva tabla A1X - CFDI Complemento Carta Porte.

CampoOrdenTipoTamañoDecimalFormatoContextoPropiedadTítuloDescripciónHelpListaInicializadorModo ediciónConsultaValidaciónObligatorioUsado
A1X_FILIAL01C80
RealAlterarSucursal    Sucursal del sistema     Código de identificación de la sucursal de la empresa usuaria del sistema.


      
NoNo
A1X_DOC   02C200@!RealAlterarDocumento   Número de docto/factura  Número de la factura.


      
No
A1X_SERIE 03C30!!!RealAlterarSerie       Serie                    Serie de la factura.


      
No
A1X_INTERN04C10@!RealAlterarTransp InterTransporte internacional Si los bienes o mercancías que son transportadas, ingresan o salen del territorio nacional. Solo se pueden registrar los valores “Sí” o “No”.S=Si;N=No

      Pertence("SN")
A1X_ENTSAL05C10@!RealAlterarTipo        Entrada o Salida         Si los bienes o mercancías ingresan o salen del territorio nacional.E=Entrada;S=Salida

      Pertence("ES")
A1X_PAIS06C30@!RealAlterarPaís Ori/DesPaís origen/Destino

Clave del país de origen o destino de los bienes y/o mercancías transportadas. Este campo debe contener una clave del catálogo c_Pais, publicado en el portal del SAT. Ejemplo: Pais= MEX

Nota: Si el valor registrado en el campo Transporte internacional es “No”, este campo se debe omitir.




MEX009IIF(M->A1X_INTERN=="S",ValidF3I("S009", M->A1X_PAIS,1,3),Vazio())No
A1X_TRANSP07C20@!RealAlterarTransporte  Clave de transporte      Clave del catálogo del complemento Carta Porte, *Los campos marcados con asterisco son obligatorios. c_CveTransporte, publicado en el portal del SAT, que identifica el medio por el cual se transportan los bienes o mercancías.


MEX017Vazio() .or. ValidF3I("S017", M->A1X_TRANSP,1,2)
A1X_PERSCT08C60@!RealAlterarPermiso SCT Tipo de permiso SCT      Clave del tipo de permiso proporcionado por la SCT, el cual debe corresponder de acuerdo al tipo de autotransporte utilizado para el traslado de los bienes o mercancías del catálogo del complemento Carta Porte, c_TipoPermiso, publicado en el portal del SAT.


MEX022Vazio() .or. ValidF3I("S022", M->A1X_PERSCT,1,6)
A1X_PERMIS09C200@!RealAlterarNum.Perm.SCTNúmero permiso SCT       Número del permiso otorgado por la SCT, el cual se debe registrar de acuerdo al tipo de autotransporte utilizado para el traslado de los bienes o mercancías. Ejemplo: NumPermisoSCT= 0X2XTXZ0X5X0X3X2X1X0


      
A1X_ASEGUR10C300@!RealAlterarAseguradora Nombre de la aseguradora Nombre de la aseguradora que cubre los riesgos del autotransporte utilizado para el traslado de los bienes o mercancías.


      
A1X_POLIZA11C60@!RealAlterarNúm. Póliza Número de póliza         Número de póliza asignado por la aseguradora, que cubre los riesgos del autotransporte utilizado para el traslado de los bienes o mercancías.


      
A1X_ASEGMA12C300@!RealAlterarAseg Med AmbAsegurador medio ambienteEn este campo se podrá registrar el nombre de la aseguradora que cubre los posibles daños al medio ambiente, que es aplicable para los transportistas que realicen el traslado de materiales o residuos peligrosos, es decir, cuando se capture información en el campo MaterialPeligroso.




No
A1X_POLMA13C100@!RealAlterarPóliza Med ANo. Póliza medio ambienteEn este campo se podrá registrar el número de póliza asignado por la aseguradora, que cubre los posibles daños al medio ambiente aplicable para los transportistas que realicen el traslado de materiales o residuos peligrosos.




No
A1X_ASECGA14C300@!RealAlterarAseg. CargaAseguradora de cargaEn este campo se podrá registrar el nombre de la aseguradora que cubre los riesgos de la carga (bienes y/o mercancías) transportada.




No
A1X_POLCGA15C100@!RealAlterarPóliza CargaNo. Póliza de cargaEn este campo se podrá registrar el número de póliza que emite la aseguradora que cubre los riesgos de la carga (bienes y/o mercancías) transportada.




No
A1X_PRISEG16N142@ 999,999,999.99RealAlterarPrima SeguroValor prima del seguroEn este campo se podrá registrar el valor del importe de la prima del seguro contratado, por el cargo adicional acordado entre el transportista y el cliente conforme a lo establecido en las disposiciones jurídicas que para tal efecto emita la SCT.



Positivo()No
A1X_VEHIC 17C80@!RealAlterarVehículo    Codigo de vehículo       Código de vehículo relacionada con la tabla de vehículos DA3. La categoría registrada en la tabla Tipos de Vehículo (DUT), relacionada con el vehículo correspondiente, debe ser diferente a 3-Remolque.


DA3   ExistCPO("DA3") 
A1X_PLACA 18C80@!VirtualVisualizarPlaca       Número de placa          Placa vehicular del autotransporte que es utilizado para transportar los bienes o mercancías, se deben registrar solo los caracteres alfanuméricos, sin guiones y espacios.


      
No
A1X_MODELO19C40@!VirtualVisualizarModeloAño modeloAño del autotransporte que es utilizado para transportar los bienes o mercancías.


      
No
A1X_CONFIG20C70@!VirtualVisualizarConfig.VehicConfiguración vehicular  Clave de nomenclatura del autotransporte, del catálogo del complemento Carta Porte, c_ConfigAutotransporte, publicado en el portal del SAT, que es utilizado para transportar los bienes o mercancías.


      
No
A1X_REMOLQ21C80@!RealAlterarRemolque    Código de remolque       Código de vehículo relacionada con la tabla de vehículos DA3. La categoría registrada en la tabla Tipos de Vehículo (DUT), relacionada con el vehículo correspondiente, debe ser igual a 3-Remolque.


DA3   ExistCPO("DA3") No
A1X_SUBREM22C60@!VirtualVisualizarSub remolqueSubtipo remolque         Clave del subtipo de remolque o semirremolques del catálogo del complemento Carta Porte, c_SubTipoRem, publicado en el portal del SAT, que se emplean con el autotransporte para el traslado de los bienes o mercancías.


      
No
A1X_PLAREM23C80@!VirtualVisualizarPlaca RemolqNúmero de placa remolque Placa vehicular del remolque o semirremolque que es utilizado para transportar los bienes o mercancías, se deben registrar solo los caracteres alfanuméricos, sin guiones y espacios.


      
No


Indice.

OrdenClaveDescripciónMuestra Busq.
1A1X_FILIAL+A1X_DOC+A1X_SERIEDocumento + Serie


Nueva tabla A1Y - Carta Porte - Ubicaciones.

CampoOrdenTipoTamañoDecimalFormatoContextoPropiedadTítuloDescripciónHelpListaInicializadorModo ediciónConsultaValidaciónObligatorioUsado
A1Y_FILIAL01C80
RealAlterarSucursal    Sucursal del sistema     Código de identificación de la sucursal de la empresa usuaria del sistema.


      
NoNo
A1Y_DOC   02C200@!RealAlterarDocumento   Número de docto/factura  Número de la factura.


      
No
A1Y_SERIE 03C30!!!RealAlterarSerie       Serie                    Serie de la factura.


      
No
A1Y_ITEM  04C20@!RealAlterarNum. Item   Número de ítem           Consecutivo en el registro de ubicaciones. (Asignar automáticamente, relleno de ceros a la izquierda.)


      
No
A1Y_TIPEST05C10@!RealAlterarT. UbicaciónTipo Ubicación         

En este campo se deberá registrar si la ubicación es de Origen o Destino:

O-Origen

D-Destino

O-Origen;D-Destino


Pertence("OD")Si
A1Y_DISREC06N122@E 999,999,999.99RealAlterarDistancia   Distancia recorrida      Distacia recorrida en kms de la ubicación Origen al Destino parcial o final.


      M487VLDDIS()No
A1Y_ORIGEN07C80@!RealAlterarId UbicaciónId UbicaciónCuando las mercancías tengan diferentes ubicaciones de tipo Origen y/o Destino, se les debe asignar un identificador el cual debe incluir el acrónimo “OR” para Origen y “DE” para Destino, seguido de 6 dígitos numéricos.



M487VLDUBI()


No
A1Y_RFCORI08C140@!RealAlterarRFCRFC        RFC del remitente de los bienes o mercancías que se trasladan.


      
A1Y_NOMORI09C500@!RealAlterarNombreNombre       En este campo se podrá registrar el nombre del remitente o destinatario de los bienes y/o mercancías que se trasladan.


      
No
A1Y_FECSAL10D80
RealAlterarFecha Sal/LlFecha de salida/llegadaFecha prevista de salida.


      
A1Y_HRASAL11C8099:99:99RealAlterarHora Sal/LleHora de salida/llegadaHora estimada de salida.
"00:00:00"
      
A1Y_CALORI12C400@!RealAlterarCalleCalleCalle en la que está ubicado  el domicilio de origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte.


      
A1Y_EXTORI13C50
RealAlterarNum. ExteriorNúmero exteriorNúmero exterior en donde se ubica el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte.


      
No
A1Y_INTORI14C50
RealAlterarNum. InteriorNúmero interiorNúmero interior en caso de existir, en donde se ubica el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte.


      
No
A1Y_EDOORI15C30@!RealAlterarEstadoEstadoEstado, entidad, región, comunidad, u otra figura análoga en donde se encuentra ubicado el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Si la clave del país es distinta a "MEX", “USA” o “CAN”, se debe registrar texto libre; en caso contrario el campo Estado debe contener una clave del catálogo, c_Estado, publicado en el portal del SAT, donde la columna c_Pais tenga el valor "MEX", “ USA” o “CAN”. Ejemplo: Estado= AGU


MEX025Vazio() .or. ValidF3I("S025", M->A1Y_EDOORI,1,3)
A1Y_CPORI 16C50
RealAlterarC.P.Código postalCódigo postal (PO, BOX) en donde se encuentra el domicilio del *Los campos marcados con asterisco son obligatorios. origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Si la clave del país es distinta a "MEX", se debe registrar texto libre; en caso contrario el campo CodigoPostal debe contener una clave del catálogo, c_CodigoPostal, publicado en el portal del SAT, donde la clave de la columna c_Estado, debe ser igual a la clave registrada en el campo Estado, la columna c_Municipio, debe ser igual a la clave registrada en el campo Municipio, y si existe el campo de Localidad, la columna de clave c_Localidad, debe ser igual a la clave registrada en el campo Localidad. Ejemplo: CodigoPostal= 20115


MEX004

Vazio() .or. VldF3ICP("S004", M->A1Y_CPORI,1,8) 

A1Y_COLORI17C40@!RealAlterarColoniaColoniaDonde se ubica el domicilio del origen o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Si la clave del país es distinta a "MEX", se debe registrar texto libre, en caso contrario este campo debe contener una clave del catálogo, c_Colonia, publicado en el portal del SAT, donde la columna c_CodigoPostal debe ser igual a la clave registrada en el campo CodigoPostal. Ejemplo: Colonia= 0069


MEX015Vazio() .or. VldF3ICP("S015", M->A1Y_COLORI,1,9)No
A1Y_LOCORI18C20@!RealAlterarLocalidadLocalidadRegistrar la ciudad, población, distrito u otro análogo en donde se encuentra ubicado el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Si la clave del país es distinta a "MEX" se debe registrar texto libre. Si la clave del país es “MEX” este campo debe contener una clave del catálogo, c_Localidad, publicado en el portal del SAT, donde la columna c_Estado, tiene el valor seleccionado en el campo Estado. Ejemplo: Localidad= 01


MEX023Vazio() .or. VldF3ICP("S023", M->A1Y_LOCORI,1,5)No
A1Y_MUNORI19C30@!RealAlterarMunicipioMunicipioMunicipio, delegación o alcaldía, condado u otro análogo en donde se encuentra ubicado el domicilio origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Si la clave del país es distinta a "MEX", se debe registrar texto libre; en caso contrario el campo Municipio debe contener una clave del catálogo, c_Municipio, publicado en el portal del SAT, donde la columna c_Estado, debe ser igual a la clave registrada en el campo Estado. Ejemplo: Municipio= 001


MEX024Vazio() .or. VldF3ICP("S024", M->A1Y_MUNORI,1,6)No
A1Y_PAIORI20C30@!RealAlterarPaísPaísClave del país en donde se encuentra ubicado el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Este campo debe contener una clave del catálogo c_Pais, publicado en el portal del SAT. Ejemplo: Pais= MEX


MEX009Vazio() .or. ValidF3I("S009", M->A1Y_PAIORI,1,3)

(°) Nota:

En caso de aplicar pacote diferencial de actualizaciones al diccionario, debe revisar y modificar manualmente los campos A1Y_TIPEST y A1Y_RFCORI.

Si está migrando de la versión 1.0 a la 2.0 de Carta Porte, debe eliminar los campos adicionales de la tabla; A1Y_RFCDES, A1Y_NOMDES, A1Y_FECLLE, A1Y_HRALLE, A1Y_CALDES, A1Y_EXTDES, A1Y_INTDES, A1Y_EDODES, A1Y_CPDES, A1Y_COLDES, A1Y_LOCDES, A1Y_MUNDES y A1Y_PAIDES.


Indice.

OrdenClaveDescripciónMuestra Busq.
1A1Y_FILIAL+A1Y_DOC+A1Y_SERIE+A1Y_ITEMDocumento + Serie + Num. Item


Nueva tabla A1Z - Carta Porte - Operadores.

CampoOrdenTipoTamañoDecimalFormatoContextoPropiedadTítuloDescripciónHelpListaInicializadorModo ediciónConsultaValidaciónObligatorioUsado
A1Z_FILIAL01C80
RealAlterarSucursal    Sucursal del sistemaCódigo de identificación de la sucursal de la empresa usuaria del sistema.


      
NoNo
A1Z_DOC   02C200@!RealAlterarDocumento   Número de docto/facturaNúmero de la factura.


      
No
A1Z_SERIE 03C30!!!RealAlterarSerie       SerieSerie de la factura.


      
No
A1Z_ITEM  04C20@!RealAlterarItem        Número de ítemConsecutivo en el registro de operadores. (Asignar automáticamente, relleno de ceros a la izquierda)


      
No
A1Z_OPERAD05C60@!RealAlterarOperador    Código de  operadorCódigo del operador relacionado con la tabla de conductores DA4.


DA4   ExistCPO("DA4") 
A1Z_RFC   06C140@!VirtualVisualizarRFC         RFC operadorRFC del operador del autotransporte de carga federal en el que se trasladan los bienes o mercancías.


      
A1Z_LICENC07C110@!VirtualVisualizarLicencia    Número de licenciaNúmero de folio de la licencia o el permiso otorgado al operador del autotransporte de carga federal en el que se trasladan los bienes o mercancías.


      
A1Z_NOMBRE08C400@!VirtualVisualizarNombre      Nombre operadorNombre del operador del autotransporte de carga federal en el que se trasladan los bienes o mercancías.


      
A1Z_CALLE 09C400@!VirtualVisualizarCalle       Calle operadorCalle en que está ubicado el domicilio del operador del autotransporte de carga federal en el que se trasladan los bienes o mercancías. Ejemplo: Calle= Álvaro Obregón


      
A1Z_NUMEXT10C50
VirtualVisualizarNum.ExteriorNúmero exteriorNúmero exterior en donde se ubica el domicilio del operador del autotransporte de carga federal en el que se trasladan los bienes o mercancías. Ejemplo: NumeroExterior = 22


      
No
A1Z_NUMINT11C50
VirtualVisualizarNum.InteriorNúmero interiorNúmero interior, en caso de existir, en donde se ubica el *Los campos marcados con asterisco son obligatorios. domicilio del operador del autotransporte de carga federal en el que se trasladan los bienes o mercancías.


      
No
A1Z_ESTADO12C30@!VirtualVisualizarEstadoEstadoClave del catálogo, c_Estado, publicado en el portal del SAT, del estado, entidad, región, comunidad, u otra figura análoga en donde se encuentra ubicado el domicilio del operador del autotransporte de carga federal en el que se trasladan los bienes o mercancías. *Los campos marcados con asterisco son obligatorios. Si la clave del país es distinta a "MEX", “USA” o “CAN”, se debe registrar texto libre; en caso contrario el campo Estado debe contener una clave del catálogo c_Estado, donde la columna c_Pais tenga el valor "MEX”, “USA” o “CAN ". Ejemplo: Estado= AGU




A1Z_CP    13C50
VirtualVisualizarC.P.        Código postalClave del código postal (PO, BOX) del catálogo, c_CodigoPostal, publicado en el portal del SAT, el en donde se encuentra ubicado el domicilio del operador del autotransporte de carga federal en el que se trasladan los bienes o mercancías. Si la clave del país es distinta a "MEX", se debe registrar texto libre; en caso contrario este campo debe contener una clave del catálogo c_CodigoPostal, donde la clave de la columna c_Estado, debe ser igual a la clave registrada en el campo Estado, la columna c_Municipio, debe ser igual a la clave registrada en el campo Municipio, y si existe el campo Localidad, la columna de clave c_Localidad, debe ser igual a la clave registrada en el campo Localidad. *Los campos marcados con asterisco son obligatorios. Ejemplo: CodigoPostal= 20115




A1Z_COLON 14C40@!VirtualVisualizarColonia     Colonia                  Clave del catálogo c_Colonia, publicado en el portal del SAT, de la colonia o dato análogo en donde se ubica el domicilio del operador del autotransporte de carga federal en el que se trasladan los bienes o mercancías. Si la clave del país es distinta a "MEX", se debe registrar texto libre, en caso contrario el campo “Colonia” debe contener una clave del catálogo c_Colonia, donde la columna c_CodigoPostal, debe ser igual a la clave registrada en el campo CodigoPostal.




No
A1Z_LOCAL 15C20@!VirtualVisualizarLocalidad   Localidad                Clave del catálogo c_Localidad, publicado en el portal del SAT, de la ciudad, población, distrito u análogo en donde se encuentra ubicado el domicilio del operador del autotransporte de carga federal en el que se trasladan los bienes o mercancías. Si la clave del país es distinta a "MEX", se debe registrar texto libre. Si la clave del país es “MEX” este campo debe contener una clave del catálogo c_Localidad, donde la columna c_Estado, tiene el valor seleccionado en el campo Estado. Ejemplo: Localidad= 01




No
A1Z_MUNIC 16C30@!VirtualVisualizarMunicipio   Municipio                Clave del catálogo c_Municipio, publicado en el portal del SAT, el municipio, delegación o alcaldía, condado u otro análogo en donde se encuentra ubicado el domicilio del operador del autotransporte de carga federal en el que se trasladan los bienes o mercancías. Si la clave del país es distinta a "MEX", se debe registrar texto libre; en caso contrario el campo Municipio debe contener una clave del catálogo c_Municipio, donde la columna c_Estado, debe ser igual a la clave registrada en el campo Estado. Ejemplo: Municipio= 001




No
A1Z_PAIS  17C30@!VirtualVisualizarPaís        Pais                     Clave del catálogo, c_Pais, publicado en el portal del SAT que está basado en la especificación ISO 3166-1, del país en donde se encuentra ubicado el domicilio del operador del autotransporte de carga federal en el que se trasladan los bienes o mercancías. Este campo debe contener una clave del catálogo c_Pais. Ejemplo: Pais= MEX





Indice.

OrdenClaveDescripciónMuestra Busq.
1A1Z_FILIAL+A1Z_DOC+A1Z_SERIE+A1Z_ITEMDocumento + Serie + Item


Nueva tabla AE0 - Carta Porte-Propietarios/Arrendatarios.

CampoOrdenTipoTamañoDecimalFormatoContextoPropiedadTítuloDescripciónHelpListaInicializadorModo ediciónConsultaValidaciónObligatorioUsado
AE0_FILIAL01C80
RealAlterarSucursal    Sucursal del sistemaCódigo de identificación de la sucursal de la empresa usuaria del sistema.


      
NoNo
AE0_DOC   02C200@!RealAlterarDocumento   Número docto/facturaNúmero de la factura.


      
No
AE0_SERIE 03C30!!!RealAlterarSerie       Serie de la facturaSerie de la factura.


      
No
AE0_ITEM  04C20@!RealAlterarItem        Número de ítemConsecutivo en el registro de propietarios/arrendatarios. (Asignar automáticamente, relleno de ceros a la izquierda)


      
No
AE0_TIPO  05C10@!RealAlterarTipo        Propietario/ArrendatarioIndica si el registro es de tipo Propietario o Arrendatario del vehículo de transporte.P=Propietario;A=Arrendatario

      Pertence("PA")
AE0_PARTE06C40@!RealAlterarParte TranspParte de transporteEn este campo se deberá registrar la clave que pertenece al transporte o la parte de transporte que no es propiedad del emisor del comprobante y que se encuentra en el catálogo c_ParteTransporte del complemento Carta Porte, publicado en el Portal del SAT.


MEX028Vazio() .or. ValidF3I("S028", M->AE0_PARTE,1,4)
AE0_TRANSP07C60@!RealAlterarTransportad.TransportadoraCódigo del transporte relacionado con la tabla de transportadoras, SA4.


SA4   ExistCPO("SA4") 
AE0_NOMBRE08C400@!VirtualVisualizarNombre      Nombre transportadoraNombre del propietario/arrendatario del medio de transporte.


      
No
AE0_RFC   09C140@!VirtualVisualizarRFC         RFC transportadoraRFC del propietario/arrendatario del medio de transporte.


      
No
AE0_CALLE 10C400@!VirtualVisualizarCalle       CalleCalle en que está ubicado el domicilio del propietario/arrendatario del medio de transporte. Ejemplo: Calle= Álvaro Obregón


      
No
AE0_NUMEXT11C50
VirtualVisualizarNum ExteriorNúmero exteriorNúmero exterior en donde se ubica el domicilio del propietario/arrendatario del transporte. Ejemplo: NumeroExterior = 22


      
No
AE0_NUMINT12C50
VirtualVisualizarNum InteriorNúmero interiorNúmero interior, en caso de existir, en donde se ubica el domicilio del propietario/arrendatario del autotransporte. Ejemplo: NumeroInterior = 33


      
No
AE0_ESTADO13C30@!VirtualVisualizarEstadoEstadoClave del catálogo, c_Estado, publicado en el portal del SAT, del estado, entidad, región, comunidad, u otra figura análoga en donde se encuentra ubicado el domicilio del propietario/arrendatario del transporte. Si la clave del país es distinta a "MEX", “USA” o “CAN”, se debe registrar texto libre; en caso contrario el campo de Estado debe contener una clave del catálogo c_Estado, donde la columna c_Pais tenga el valor "MEX", “USA” o “CAN”. Ejemplo: Estado= AGU




No
AE0_CP14C50
VirtualVisualizarC.P.Código postalClave del código postal (PO, BOX) del catálogo, c_CodigoPostal, publicado en el portal del SAT, el en donde se encuentra ubicado el domicilio del propietario/arrendatario del transporte. Si la clave del país es distinta a "MEX", se debe registrar texto libre; en caso contrario el campo CodigoPostal debe contener una clave del catálogo c_CodigoPostal, donde la clave de la columna c_Estado, debe ser igual a la clave registrada en el campo Estado, la columna c_Municipio, debe ser igual a la clave registrada en el campo Municipio, y si existe el campo Localidad, la columna de clave c_Localidad, debe ser igual a la clave registrada en el campo Localidad. Ejemplo: CodigoPostal= 20115




No
AE0_COLON 15C40@!VirtualVisualizarColonia     ColoniaClave del catálogo c_Colonia, publicado en el portal del SAT, de la colonia o dato análogo en donde se ubica el domicilio del propietario/arrendatario del transporte. Si la clave del país es distinta a "MEX", se debe registrar texto libre; en caso contrario el campo Colonia debe contener una clave del catálogo c_Colonia, donde la columna c_CodigoPostal, debe ser igual a la clave registrada en el campo CodigoPostal. Ejemplo: Colonia= 0069


      
No
AE0_LOCAL 16C20@!VirtualVisualizarLocalidad   LocalidadClave del catálogo c_Localidad, publicado en el portal del SAT, de la ciudad, población, distrito o análogo en donde se encuentra ubicado el domicilio del propietario/arrendatario del transporte. Si la clave del país es diferente de "MEX", se debe registrar texto libremente. El campo de Localidad debe contener una clave del catálogo c_Localidad, donde la columna c_Estado, tiene el valor seleccionado en el campo Estado. Ejemplo: Localidad= 01


      
No
AE0_MUNIC 17C30@!VirtualVisualizarMunicipio   MunicipioMunicipio, delegación o alcaldía, condado u otro análogo en donde se encuentra ubicado el domicilio del propietario/arrendatario del transporte. Si la clave del país es distinta a "MEX", se debe registrar texto libre; en caso contrario el campo Municipio debe contener una clave del catálogo c_Municipio, donde la columna c_Estado, debe ser igual a la clave registrada en el campo Estado. Ejemplo: Municipio= 001


      
No
AE0_PAIS  18C30@!VirtualVisualizarPaís        PaísClave del catálogo, c_Pais, publicado en el portal del SAT que está basado en la especificación ISO 3166-1, del país en donde se encuentra ubicado el domicilio del propietario/arrendatario del transporte. Este campo debe contener una clave del catálogo c_Pais. Ejemplo: Pais= MEX


      
No


Indice.

OrdenClaveDescripciónMuestra Busq.
1AE0_FILIAL+AE0_DOC+AE0_SERIE+AE0_ITEMDocumento + Serie + Item


Modificaciones a la tabla DA3 - Conductores.

CampoOrdenTipoTamañoDecimalFormatoContextoPropiedadTítuloDescripciónHelpListaInicializadorModo ediciónConsultaValidaciónObligatorioUsado
DA3_CONFIG
C70@!RealAlterarConfig VehicConfiguración vehicular  Clave de nomenclatura del autotransporte, del catálogo del complemento Carta Porte, c_ConfigAutotransporte, publicado en el portal del SAT, que es utilizado para transportar los bienes o mercancías.


MEX026Vazio() .or. ValidF3I("S026", M->DA3_CONFIG,1,7)No
DA3_SUBREM
C60@!RealAlterarSubt.Remolq.Subtipo remolque         Clave del subtipo de remolque o semirremolques del catálogo del complemento Carta Porte, c_SubTipoRem, publicado en el portal del SAT, que se emplean con el autotransporte para el traslado de los bienes o mercancías.


MEX027Vazio() .or. ValidF3I("S027", M->DA3_SUBREM,1,6)No


Modificaciones a la tabla DA4 - Vehículos.

Campos nuevos.

CampoOrdenTipoTamañoDecimalFormatoContextoPropiedadTítuloDescripciónHelpListaInicializadorModo ediciónConsultaValidaciónObligatorioUsado
DA4_NUMEXT
C50
RealAlterarNum.ExteriorNúmero exterior          Número exterior del domicilio.


      
No
DA4_NUMINT
C50
RealAlterarNum.InteriorNúmero interior          Número interior del domicilio.


      
No
DA4_CODBAI
C40@!RealAlterarCod. ColoniaCódigo de colonia        Código de la colonia correspondiente al catálogo c_Colonia del SAT.


MEX015Vazio() .or. ValidF3I("S015", M->DA4_CODBAI+M->DA4_CEP,1,9)No
DA4_LOCAL 
C20@!RealAlterarLocalidad   Localidad                Código de la localidad correspondiente al catálogo c_Localidad del SAT.


MEX023Vazio() .or. ValidF3I("S023", M->DA4_LOCAL+M->DA4_EST,1,5) No



Modificación de campos. (°)

CampoOrdenTipoTamañoDecimalFormatoContextoPropiedadTítuloDescripciónHelpListaInicializadorModo ediciónConsultaValidaciónObligatorioUsado
DA4_CODMUN
C30@9RealAlterarCd.MunicipioCodigo del MunicipioCódigo del municipio correspondiente al catálogo c_Municipio del SAT.


MEX024Vazio() .Or. ValidF3I("S024", Substr(M->DA4_CODMUN,1,3)+M->DA4_EST,1,6)No
DA4_EST   
C30@!RealAlterarEstado      Estado                   Código del estado correspondiente al catálogo c_Estado del SAT.


MEX025Vazio() .or. ValidF3I("S025", M->DA4_EST,1,3) No
DA4_PAIS  
C30@!RealAlterarPaís        Código del país          Código del país correspondiente al catálogo c_Pais del SAT.


MEX009Vazio() .or. ValidF3I("S009", M->DA4_PAIS,1,3)No
DA4_CEP   
C50@9RealAlterarCP          Codigo Postal            Código postal correspondiente al catálogo c_CodigoPostal del SAT.


MEX004Vazio() .or. ValidF3I("S004", Substr(M->DA4_CEP,1,5)+M->DA4_EST,1,8) No
DA4_ESTCNH
C30@!RealAlterarEstado Lic.Estado licencia               Código del estado correspondiente al catálogo c_Estado del SAT.


MEX025Vazio() .Or. ValidF3I("S025", M->DA4_ESTCNH,1,3)No
DA4_RGEST 
C30@!RealAlterarEstado ID  Estado IDCódigo del estado correspondiente al catálogo c_Estado del SAT.


MEX025Vazio() .or. ValidF3I("S025", M->DA4_RGEST,1,3) No
DA4_CGC

14
@!











(°) Nota:

En caso de aplicar pacote diferencial de actualizaciones al diccionario, debe revisar y modificar manualmente los campos DA4_CODMUN, DA4_EST, DA4_ESTCNH, DA4_RGEST, DA4_CEP y DA4_CGC.


Modificaciones a la tabla SA4 - Transportadoras. (°)

CampoOrdenTipoTamañoDecimalFormatoContextoPropiedadTítuloDescripciónHelpListaInicializadorModo ediciónConsultaValidaciónObligatorioUsado
A4_NUMEXT 
C50
RealAlterarNum ExteriorNúmero exterior          Número exterior del domicilio.


      
No
A4_NUMINT 
C50
RealAlterarNum InteriorNúmero interior          Número interior del domicilio.


      
No
A4_CBAIRRO
C40@!RealAlterarCod. ColoniaCodigo de colonia        Código de la colonia correspondiente al catálogo c_Colonia del SAT.


MEX015Vazio() .or. ValidF3I("S015", M->A4_CBAIRRO+M->A4_CEP,1,9)No
A4_CLOCALI
C20@!RealAlterarCod.Localid.Código localidad         Código de la localidad correspondiente al catálogo c_Localidad del SAT.


MEX023Vazio() .or. ValidF3I("S023", M->A4_CLOCALI+M->A4_EST,1,5)No
A4_COD_MUN
C30@!RealAlterarCod. mun.   Codigo del municipio     Código del municipio correspondiente al catálogo c_Municipio del SAT.


MEX024Vazio() .or. ValidF3I("S024", Substr(M->A4_COD_MUN,1,3)+M->A4_EST,1,6)No
A4_EST    
C30@!RealAlterarEstado      Estado del Transportista Código del estado correspondiente al catálogo c_Estado del SAT.


MEX025Vazio() .or. ValidF3I("S025", M->A4_EST,1,3)No
A4_CODPAIS
C30@!RealAlterarCod. pais   Codigo del pais          Código del país correspondiente al catálogo c_Pais del SAT.


MEX009Vazio() .or. ValidF3I("S009", M->A4_CODPAIS,1,3)No
A4_CEP    
C50@R 99999RealAlterarCP          Cod Direccion Postal     Código postal correspondiente al catálogo c_CodigoPostal del SAT.


MEX004Vazio() .or. ValidF3I("S004", Substr(M->A4_CEP,1,5)+M->A4_EST,1,8)No

(°) Nota:

En caso de aplicar pacote diferencial de actualizaciones al diccionario, debe revisar y modificar manualmente los campos A4_COD_MUN, A4_EST y A4_CEP.


Modificaciones a la tabla SD2 - Ítems de facturas de salida.

CampoOrdenTipoTamañoDecimalFormatoContextoPropiedadTítuloDescripciónHelpListaInicializadorModo ediciónConsultaValidaciónObligatorioUsado
D2_CFPS   
C80@!VirtualVisualizarProd.Serv.CPProducto / Servicio CP   Si el campo TipoDeComprobante contiene el valor “I” (Ingreso), el valor de este campo deberá contener una clave del catálogo del complemento Carta Porte c_ClaveProdServCP, publicado en el portal del SAT.


      
No
D2_METODO 
C10@!VirtualVisualizarMt.PeligrosoMaterial peligroso       Si los bienes o mercancías que se trasladan son considerados material peligroso. Los valores permitidos para este campo son “Sí” y “No”.


      
No
D2_GRPCST 
C50@!RealAlterarCve.Mat.Pel.Clave material peligroso Tipo de material peligroso que se transporta. Si el valor registrado en el campo MaterialPeligroso es “Sí”, este campo debe contener una clave del catálogo del complemento Carta Porte, c_MaterialPeligroso, publicado en el portal del SAT. Si el valor registrado en el campo MaterialPeligroso es “No”, este campo no debe existir.


MEX020Vazio() .or. ValidF3I("S020", M->D2_GRPCST,1,5) No
D2_TNATREC
C50@!RealAlterarEmbalaje    Clave de embalaje        Campo condicional para registrar la clave del tipo de embalaje del catálogo del complemento Carta Porte, c_TipoEmbalaje, publicado en el portal del SAT, que se requiere para transportar el material o residuo peligroso. Este campo debe existir siempre que el campo CveMaterialPeligroso tenga un valor del catálogo del complemento Carta Porte, c_MaterialPeligroso, publicado en el portal del SAT, en caso contrario este campo no debe existir


MEX021Vazio() .or. ValidF3I("S021", M->D2_TNATREC,1,5)No
D2_FCICOD 
C400@!RealAlterarUUID Com ExtUUID comercio exterior   El folio fiscal o UUID del comprobante de comercio exterior que se relaciona, este dato se vuelve requerido cuando el campo EntradaSalidaMerc contenga el valor “Salida”. Este campo puede existir siempre que el valor registrado en el campo TranspInternac es “Sí” y el campo EntradaSalidaMerc contiene el valor “Salida” y si la exportación es considerada definitiva (de tipo A1), en caso contrario este campo no debe existir.


      
No
D2_VLRFUE 
N142@E 99,999,999,999.99RealAlterarVl.MercancíaValor mercancía          Valor de los bienes o mercancías que se trasladan en los distintos medios de transporte, de acuerdo al valor de de mercado, el valor pactado en la contraprestación o al valor estimado que determine el contribuyente.


      Positivo()No
D2_CNATREC
C80@!RealAlterarId Ub OrigenId. ubicación origenEn este campo se deberá capturar un valor de los registrados en el campo “ID Ubicación Origen” de la sección “Ubicaciones”.



Substr(M->D2_CNATREC,1,2)=="OR".And.Val(Substr(M->D2_CNATREC,3))>0No
D2_GRUPONC
C80@!RealAlterarId Ub DestinoId. ubicación destinoEn este campo se deberá capturar un valor de los registrados en el campo “ID Ubicación Destino” de la sección “Ubicaciones”.



Substr(M->D2_GRUPONC,1,2)=="DE".And.Val(Substr(M->D2_GRUPONC,3))>0No


Modificaciones a la tabla SF2 - Encabezado de factura de salida.

CampoOrdenTipoTamañoDecimalFormatoContextoPropiedadTítuloDescripciónHelpListaInicializadorModo ediciónConsultaValidaciónObligatorioUsado
F2_TPCOMPL
C10@!RealAlterarCarta Porte?Usa Carta Porte?         Activar el uso de Carta Porte. S- Permite el uso del botón "Carta Porte"S=Si;N=No"N"
      Pertence("SN")


Consultas Estándar

Actualizaciones en la tabla SXB-Consultas Estándar.


Creación de la consulta específica MEX015 - Colonias.

Alias

Tipo

Secuencia

Columna

Descripción

Contenido

MEX015101REColoniasF3I
MEX01520101
F812SXB('S015','Clave') 
MEX015501

VAR_IXB


Creación de la consulta específica MEX017 - Clave del Transporte.

Alias

Tipo

Secuencia

Columna

Descripción

Contenido

MEX017101REClave del TransporteF3I
MEX01720101
F812SXB('S017','Transp')
MEX017501

VAR_IXB


Creación de la consulta específica MEX018 - Tipo de Estación.

Alias

Tipo

Secuencia

Columna

Descripción

Contenido

MEX018101RETipo de EstaciónF3I
MEX01820101
F812SXB('S018','Estacion')
MEX018501

VAR_IXB


Creación de la consulta específica MEX019 - Prods y Servs CP.

Alias

Tipo

Secuencia

Columna

Descripción

Contenido

MEX019101REProds y Servs CPF3I
MEX01920101
F812SXB('S019','Producto')
MEX019501

VAR_IXB


Creación de la consulta específica MEX020 - Material Peligroso.

Alias

Tipo

Secuencia

Columna

Descripción

Contenido

MEX020101REMaterial PeligrosoF3I
MEX02020101
F812SXB('S020','Material')
MEX020501

VAR_IXB


Creación de la consulta específica MEX021 - Tipo de Embalaje.

Alias

Tipo

Secuencia

Columna

Descripción

Contenido

MEX021101RETipo de EmbalajeF3I
MEX02120101
F812SXB('S021','Embalaje')
MEX021501

VAR_IXB


Creación de la consulta específica MEX022 - Tipo Permiso.

Alias

Tipo

Secuencia

Columna

Descripción

Contenido

MEX022101RETipo PermisoF3I
MEX02220101
F812SXB('S022','Permiso')
MEX022501

VAR_IXB


Creación de la consulta específica MEX023 - Localidades.

Alias

Tipo

Secuencia

Columna

Descripción

Contenido

MEX023101RELocalidadesF3I
MEX02320101
F812SXB('S023','Localidad')
MEX023501

VAR_IXB


Creación de la consulta específica MEX024 - Municipios.

Alias

Tipo

Secuencia

Columna

Descripción

Contenido

MEX024101REMunicipiosF3I
MEX02420101
F812SXB('S024','Municipio')
MEX024501

VAR_IXB


Creación de la consulta específica MEX025 - Estados.

Alias

Tipo

Secuencia

Columna

Descripción

Contenido

MEX025101REEstadosF3I
MEX02520101
F812SXB('S025','Estado')
MEX025501

VAR_IXB


Creación de la consulta específica MEX026 - Autotransporte Fed..

Alias

Tipo

Secuencia

Columna

Descripción

Contenido

MEX026101REAutotransporte Fed.F3I
MEX02620101
F812SXB('S026','Clave')
MEX026501

VAR_IXB


Creación de la consulta específica MEX027 - Tipo de Remolque.

Alias

Tipo

Secuencia

Columna

Descripción

Contenido

MEX027101RETipo de RemolqueF3I
MEX02720101
F812SXB('S027','Remolque')
MEX027501

VAR_IXB


Creación de la consulta específica MEX028 - Parte Transporte.

Alias

Tipo

Secuencia

Columna

Descripción

Contenido

MEX028101REParte TransporteF3I
MEX02820101
F812SXB('S028','Codigo')
MEX028501

VAR_IXB

Modificación de la consulta específica MEX004 - Códigos Postales. (°)

Alias

Tipo

Secuencia

Columna

Descripción

Contenido

MEX0042


F812SXB('S004','Codigo')

(°) Nota:

En esta consulta, ya existente, solo se actualiza el registro Tipo 2 con el Contenido que se indica.


Disparadores


CampoSecuenciaC. DominioTipoReglaPosicionaAliasOrdenClaveCondición
A1Y_CPDES 1A1Y_EDODESP - PrimarioObtColSAT("S004",M->A1Y_CPDES,1,5,6,3)N - No
0
!EMPTY(M->A1Y_CPDES)
A1Y_CPDES 2A1Y_LOCDESP - PrimarioObtColSAT("S004",M->A1Y_CPDES,1,5,12,2) N - No
0
!EMPTY(M->A1Y_CPDES)
A1Y_CPDES 3A1Y_MUNDESP - PrimarioObtColSAT("S004",M->A1Y_CPDES,1,5,9,3)N - No
0
!EMPTY(M->A1Y_CPDES)
A1Y_CPORI 1A1Y_EDOORIP - PrimarioObtColSAT("S004",M->A1Y_CPORI,1,5,6,3)N - No
0
!EMPTY(M->A1Y_CPORI)
A1Y_CPORI 2A1Y_LOCORIP - PrimarioObtColSAT("S004",M->A1Y_CPORI,1,5,12,2) N - No
0
!EMPTY(M->A1Y_CPORI)
A1Y_CPORI 3A1Y_MUNORIP - PrimarioObtColSAT("S004",M->A1Y_CPORI,1,5,9,3)N - No
0
!EMPTY(M->A1Y_CPORI)
A1Y_EDODES1A1Y_CPDES P - PrimarioSpace(Len(M->A1Y_CPDES))N - No
0

A1Y_EDODES2A1Y_COLDESP - PrimarioSpace(Len(M->A1Y_COLDES)) N - No
0

A1Y_EDODES3A1Y_LOCDESP - PrimarioSpace(Len(M->A1Y_LOCDES)) N - No
0

A1Y_EDODES4A1Y_MUNDESP - PrimarioSpace(Len(M->A1Y_MUNDES)) N - No
0

A1Y_EDODES5A1Y_PAIDESP - PrimarioObtColSAT("S025",M->A1Y_EDODES,1,3,4,3) N - No
0
!EMPTY(M->A1Y_EDODES) 
A1Y_EDOORI1A1Y_CPORI P - PrimarioSpace(Len(M->A1Y_CPORI))N - No
0

A1Y_EDOORI2A1Y_COLORIP - PrimarioSpace(Len(M->A1Y_COLORI)) N - No
0

A1Y_EDOORI3A1Y_LOCORIP - PrimarioSpace(Len(M->A1Y_LOCORI)) N - No
0

A1Y_EDOORI4A1Y_MUNORIP - PrimarioSpace(Len(M->A1Y_MUNORI)) N - No
0

A1Y_EDOORI5A1Y_PAIORIP - PrimarioObtColSAT("S025",M->A1Y_EDOORI,1,3,4,3) N - No
0
!EMPTY(M->A1Y_EDOORI) 
A4_CEP1A4_ESTP - PrimarioObtColSAT("S004",M->A4_CEP,1,5,6,3) N - No
0
!EMPTY(M->A4_CEP) 
A4_CEP2A4_CLOCALIP - PrimarioObtColSAT("S004",M->A4_CEP,1,5,12,2)N - No
0
!EMPTY(M->A4_CEP) 
A4_CEP3A4_COD_MUNP - PrimarioObtColSAT("S004",M->A4_CEP,1,5,9,3) N - No
0
!EMPTY(M->A4_CEP) 
A4_EST1A4_CEPP - PrimarioSpace(Len(M->A4_CEP)) N - No
0

A4_EST2A4_CBAIRROP - PrimarioSpace(Len(M->A4_CBAIRRO)) N - No
0

A4_EST3A4_CLOCALIP - PrimarioSpace(Len(M->A4_CLOCALI)) N - No
0

A4_EST4A4_COD_MUNP - PrimarioSpace(Len(M->A4_COD_MUN)) N - No
0

A4_EST5A4_CODPAISP - PrimarioObtColSAT("S025",M->A4_EST,1,3,4,3) N - No
0
!EMPTY(M->A4_EST) 
DA4_CEP 1DA4_EST P - PrimarioObtColSAT("S004",M->DA4_CEP,1,5,6,3)N - No
0
!EMPTY(M->DA4_CEP)
DA4_CEP 2DA4_LOCAL P - PrimarioObtColSAT("S004",M->DA4_CEP,1,5,12,2) N - No
0
!EMPTY(M->DA4_CEP)
DA4_CEP 3DA4_CODMUNP - PrimarioObtColSAT("S004",M->DA4_CEP,1,5,9,3)N - No
0
!EMPTY(M->DA4_CEP)
DA4_EST 1DA4_CEP P - PrimarioSpace(Len(M->DA4_CEP))N - No
0

DA4_EST 2DA4_CODBAIP - PrimarioSpace(Len(M->DA4_CODBAI)) N - No
0

DA4_EST 3DA4_LOCAL P - PrimarioSpace(Len(M->DA4_LOCAL))N - No
0

DA4_EST 4DA4_CODMUNP - PrimarioSpace(Len(M->DA4_CODMUN)) N - No
0

DA4_EST 5DA4_PAISP - PrimarioObtColSAT("S025",M->DA4_EST,1,3,4,3)N - No
0
!EMPTY(M->DA4_EST)
D2_COD6D2_METODOP - PrimarioIIf(FindFunction("LxMxDatPro"),LxMxDatPro(M->D2_COD),"")N - No
0

D2_COD7D2_CFPSP - PrimarioSB1->B1_PRODSATS - SiSB11

Los disparadores con orden 006 y 007 para el campo D2_COD fueron incluidos en el pacote 009897 - DMINA-14383 FUNCIONALIDA DE CARTA PORTE VERSION.


Menú SIGAFAT


Nuevas opciones de menú de catálogos en el módulo SIGAFAT:

MenúSubmenúNombre de la RutinaProgramaMóduloTipo
ActualizacionesArchivosTipos de VehículoTMSA530FacturaciónFunción Protheus
ActualizacionesArchivosVehículosOMSA060FacturaciónFunción Protheus
ActualizacionesArchivosConductoresOMSA040FacturaciónFunción Protheus


05. BITACORA DE CAMBIOS

Carga de Catálogos desde la rutina de Definición de catálogos/Mantenimiento de catálogos.

Para la carga de catálogos se realizaron los siguientes cambios en la issue 12543481 DMINA-13909 DT Carga de catálogos no funciona con más de 99999 registros MEX:


Las siguientes actualizaciones fueron incorporadas en el paquete: 009766 - DMINA-13909- ACTUALIZACIÓN CAMPO F3I_SEQUEN- MEX.


Actualización de campo en el archivo SX3 - Campos:

Tabla: F3I – Catálogo

Campo

F3I_SEQUEN

Tipo

C

Tamaño

6

Decimal

0

Formato

999999

Título

Secuencia

Descripción

Secuencia

Help

Secuencia

Obligatorio

No

Usado

Si

Browse

No


06. TABLAS UTILIZADAS