Í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:
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:
Importante
- El complemento de Carta Porte versión 3.0, se publicó en el portal del SAT el mes de septiembre del 2023.
- El inicio de vigencia del complemento Carta Porte versión 3.0, será a partir del 25 de noviembre de 2023, sin embargo, de acuerdo con lo establecido en el Segundo Transitorio de la Octava Resolución de Modificaciones a la Resolución Miscelánea Fiscal para 2023 se cuenta con un periodo de convivencia con la versión 2.0 del complemento, hasta el 31 de diciembre de 2023.
- El periodo comprendido del 1 al 31 de diciembre de 2023, 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 3.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)
- UUID (A1X_UUIDCP)
- Reg. ISTMO (A1X_RISTMO)
- Polo Origen (A1X_POLOOR)
- Polo Destino (A1X_POLODE)
- Rég. Aduana (A1X_REGADU)
- Peso Bruto V (A1X_PESOBV)
- Sec.COFEPRIS (B5_SECTOR)
- Nom.Gen.Prod (B5_NOMGER)
- Marca Comer (B5_NOMCOME)
- Fabricante (B5_FABRICA)
- Lote (D2_LOTECTL)
- Fecha caducidad (D2_DTVALID)
- Forma Farma (B5_CODFORM)
- Cond. Esp Tr (B5_CONDIC)
- Reg. Sanitar (B5_REGSAN)
- Permiso Imp (B5_PERIMP)
- VUCEM (B5_VUCEM)
- Ing. Activo (B5_INGREDI)
- Sust. Activa (B5_SUSACT)
- CAS (B5_CAS)
- Emp. Importa (B5_EMPIMP)
- Formulador (B5_DATFOR)
- Maquilador (B5_DATMAQ)
- Uso autorizado (B5_USOAUT)
- Tipo de materia (B5_TPOMAT)
- Desc. Mater (B5_DESMAT)
- Las actualizaciones al diccionario de datos para la versión 1.0 del Complemento de Carta Porte se realizaron en el pacote 009606 - DMINA-13147 CFDI CON COMPLEMENTO CARTA PORTE MÉX.
- 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.
- Los ajustes a diccionario para Complemento de Carta Porte versión 3.0 fueron realizados en el pacote 013132 - DMINA-21262 - COMPLEMENTO DE CARTA PORTE (CCP) v3.0.
- 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.
- La funcionalidad de Complemento de Carta Porte 3.0 solo está disponible para su uso desde el Módulo de Facturación (SIGAFAT).
- El archivo FATSMEX.INI debe tener actualizadas las URL'S que aplican para el esquema de Carta Porte versión 3.0 (Vea la sección FATSMEX.INI del apartado 03. CONFIGURACIONES)
- El complemento Carta Porte versión 3.1, se publicó en el Portal del SAT el 17 de junio de 2024.
- El complemento Carta Porte versión 3.1, se debe estar utilizando a partir del 17 de julio de 2024.
- Para desactivar la funcionalidad del Complemento de Carta Porte versión 3.1 se debe crear el parámetro MV_ACTCOCP de tipo lógico y configurarlo con el valor .F., con lo cual se revierten lo ajustes realizados para versión 3.1 y se generan de acuerdo a la versión 3.0.
- Para la generación del XML si se utiliza el archivo FATSMEX.INI, se debe hacer de manera manual el ajuste de las url's de la declaración del complemento de carta porte.
- Para la generación del Nodo cartaporte31:RegimenesAduaneros, actualmente el sistema Protheus sólo permite relacionar un código de Régimen Aduanero, el cual se informa en el campo Rég. Aduana (A1X_REGADU).
- En caso de presentar rechazos favor de contactar directo a su Proveedor Autorizado de Certificación (PAC), para descartar que los problemas son propios de ellos, ya que al ser una nueva legislación estos rechazos pueden ser errores de sus desarrollos.
Rutinas utilizadas
Para tener activa la funcionalidad de Complemento de Carta Porte para versión 3.0, es necesario tener actualizadas con una fecha mayor o igual las siguientes rutinas:
Rutina | Nombre Técnico | Fecha |
---|---|---|
LOCXNF | Captura de documentos fiscales | 14/12/2021 |
LOCXNF2 | Funciones de documentos fiscales | 14/12/2021 |
LOCXMEX | Funciones de documentos fiscales localizadas para México | 20/12/2023 |
LOCXFUNA | Funciones generales de documentos fiscales | 20/12/2023 |
MATA487 | Captura de Carta Porte | 15/12/2023 |
MATR475 | Informe de Notas Fiscales | 19/12/2023 |
FISA812 | Definición de catálogos | 27/08/2021 |
FISA813 | Mantenimiento de catálogos | 27/08/2021 |
FISA814 | Carga de catálogos desde archivos .CSV a la base de datos | 08/12/2023 |
FATEMEX.INI | Script de generación de XML para Documentos de Entrada | 13/10/2021 |
FATSMEX.INI | Script de generación de XML para Documentos de Salida | 08/12/2023 |
Para tener activa la funcionalidad de Complemento de Carta Porte para versión 3.1, es necesario tener actualizadas con una fecha mayor o igual las siguientes rutinas:
Rutina | Nombre Técnico | Fecha |
---|---|---|
LOCXFUNA | Funciones generales de documentos fiscales | 12/07/2024 |
MATR475 | Informe de Notas Fiscales | 11/07/2024 |
FATSMEX.PRW | Generación de XML para Documentos de Salida | 05/07/2024 |
FATSMEX.INI | Estructura de XML para Documentos de Salida | 05/07/2024 |
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 3.1 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.
Actualización de las direcciones URL de los esquemas XML y XSD para actualizarlos a Carta Porte 3.1:
Anterior
Nuevo
http://www.sat.gob.mx/sitio_internet/cfd/CartaPorte/CartaPorte30.xsd http://www.sat.gob.mx/sitio_internet/cfd/CartaPorte/CartaPorte31.xsd Realizar los ajustes que se marcan en color Naranja en el archivo de Estructura de XML para Documentos de Salida (FATSMEX.INI), que corresponde a las url's del Complemento de Carta Porte:
NOTA: Los ajustes al archivo FATSMEX.INI solo aplican, si no se tiene activa la funcionalidad por medio de la rutina FATSMEX.PRW, cuando el parámetro MV_FEXML no existe o está configurado con un valor diferente de .T.
FASTMEX.INI
//FATSMEX.INI V4.0 --- Modelo 2022
[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[009] := SuperGetMV("MV_CFDICPG", .F., "")
(PRE) _aTotal[010] := FindFunction("zh_FechaHoraUTC") .And. !Empty(_aTotal[009])
(PRE) _aTotal[011] := FindFunction("LxFunaCaPo")
(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[039] := SuperGetMV("MV_CFDIEXP",.F.,.F.)
(PRE) _aTotal[075] := Alltrim(SM0->M0_NOMECOM)
(PRE) _aTotal[076] := Alltrim(SF2->F2_TIPODOC) == "21" .And. ((!(Alltrim(SF2->F2_TIPOPE) $ "3|4")) .Or. SF2->(ColumnPos("F2_TPCOMPL")) > 0 .And. AllTrim(SF2->F2_TPCOMPL)=="S")
(PRE) IIf(_aTotal[010],_aTotal[096] := zh_FechaHoraUTC(Alltrim(_aTotal[009]),Alltrim(SM0->M0_CEPENT),SF2->F2_EMISSAO,SF2->F2_HORA),"")
(PRE) IIf(!_aTotal[010],_aTotal[096] := DtoS(SF2->F2_EMISSAO),"")
(PRE) IIf(!_aTotal[010],_aTotal[096] := Left(_aTotal[096],4) + "-" + Substr(_aTotal[096],5,2)+ "-" + Right(_aTotal[096],2),"")
(PRE) IIf(!_aTotal[010],_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(Alltrim(SF2->F2_TIPODOC) == "21",0,2)
(PRE) _aTotal[107] := IIf(SF2->(ColumnPos("F2_TPDOC")) > 0,ALLTRIM(SF2->F2_TPDOC),ALLTRIM(AI0->AI0_MPAGO))
(PRE) _aTotal[108] := IIf(_aTotal[076],AllTrim(SM0->M0_CGC),AllTrim(SA1->A1_CGC))
(PRE) _aTotal[109] := IIf(FindFunction("FxDelExp"),FxDelExp(IIf(_aTotal[076],_aTotal[075],Alltrim(SA1->A1_NOME))),IIf(_aTotal[076],_aTotal[075],Alltrim(SA1->A1_NOME)))
(PRE) _aTotal[110] := IIf(_aTotal[076],AllTrim(SM0->M0_CEPENT),Alltrim(SA1->A1_CEP))
(PRE) _aTotal[111] := IIf(_aTotal[076],Alltrim(SM0->M0_DSCCNA),Alltrim(AI0->AI0_REGFIS))
(PRE) _aTotal[112] := FormPagGlo(SF2->F2_DOC,SF2->F2_SERIE)
(PRE) _aTotal[113] := IIf(!_aTotal[039] .Or. (_aTotal[039] .And. Empty(SF2->F2_TIPOPE)),"01",IIf(Alltrim(SF2->F2_TIPOPE)== "4","03",IIf(SF2->F2_CVEPED !="A1" .Or. Alltrim(SF2->F2_TIPOPE)== "3","04","02")))
(PRE) _aTotal[114] := IIf(_aTotal[113] == "03" .Or.(_aTotal[113] == "04" .And.( Empty(SF2->F2_CERORI) .Or. Empty(SF2->F2_INCOTER) .Or. Empty(SF2->F2_SUBDIV) .Or. Empty(SF2->F2_TCUSD) .Or. Empty(SF2->F2_TOTUSD))) ,.F.,.T.)
(PRE) _aTotal[115] := {}
(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], ,@_aTotal[115])
[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) .And. _aTotal[114], .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 += "4.0" + _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',IIf(!Empty(_aTotal[112]),_aTotal[112],_aTotal[107]),IIf(Empty(_aTotal[107]).Or. Alltrim(SE4->E4_MPAGSAT) == "PPD","99",_aTotal[107])) + _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+F2_FRETE+F2_SEGURO+F2_DESPESA) + _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(Alltrim(SF2->F2_TIPODOC) == "21","XXX",Alltrim(CTO->CTO_MOESAT)) + _aTotal[098]
//TipoCambio
(PRE) cCadOrig += IIf(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] - IIf(Len(_aTotal[115]) > 0,_aTotal[115][1],0),Round(SF2->F2_VALBRUT,2) + _aTotal[103] - _aTotal[037] - IIf(Len(_aTotal[115]) > 0,_aTotal[115][1],0))),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]
//Exportacion
(PRE) cCadOrig += IIf(!Empty(_aTotal[113]),_aTotal[113],"01") + _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]
//Periodicidad
(PRE) cCadOrig += IIf(SF2->(ColumnPos("F2_IDCBAJA")) > 0 .And. SF2->F2_GLOBAL == "1", SF2->F2_IDCBAJA + _aTotal[098],"")
//Meses
(PRE) cCadOrig += IIf(SF2->(ColumnPos("F2_MODCONS")) > 0 .And. SF2->F2_GLOBAL == "1", SF2->F2_MODCONS + _aTotal[098],"")
//Año
(PRE) cCadOrig += IIf(SF2->(ColumnPos("F2_PTOEMIS")) > 0 .And. SF2->F2_GLOBAL == "1", SF2->F2_PTOEMIS + _aTotal[098],"")//////////////////////CFDI Relacionados//////////////////////////
(PREREG)!Empty(SF2->F2_RELSAT).Or. !Empty(SF2->F2_SERMAN).Or. !Empty(SF2->F2_DOCMAN)
(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(SF2->F2_GLOBAL == "1", "XAXX010101000", CFDCarEsp(_aTotal[108], .F.)) + _aTotal[098])
//Nombre
(PRE) (cCadOrig += IIF(SF2->F2_GLOBAL == "1", "PUBLICO EN GENERAL",CFDCarEsp(_aTotal[109],.F.)) + _aTotal[098], .T.)
//DomicilioFiscalReceptor
(PRE) (cCadOrig += CFDCarEsp(_aTotal[110],.F.) + _aTotal[098], .T.)
//ResidenciaFiscal
(PRE) IIf(lCCCE .And. !Empty(CFDCarEsp(Alltrim(SF2->F2_RESIDE))) .And. !_aTotal[076], 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))) .And. !_aTotal[076], cCadOrig += CFDCarEsp(AllTrim(AllTrim(SF2->F2_IDTRIB))) + _aTotal[098], "")
//RegimenFiscalReceptor
(PRE) (cCadOrig += IIf(AI0->(ColumnPos("AI0_REGFIS")) > 0,CFDCarEsp(_aTotal[111],.F.) + _aTotal[098],""), .T.)
//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.)(POS) IIf(lCCCE, cCadOrig += "2.0" + _aTotal[098], "")
(POS) IIf(lCCCE .And. !Empty(SF2->F2_TRASLA), cCadOrig += Alltrim(SF2->F2_TRASLA) + _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. 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 .And. _aTotal[108] == "XEXX010101000", cCadOrig += CFDCarEsp(AllTrim(AllTrim(SF2->F2_IDTRIB))) + _aTotal[098], "")
(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], "")//Destinatarios
(POS) IIf(lCCCE .And. FindFunction("LxCEDest") .And. SF2->(ColumnPos("F2_ACOPLA")) > 0, cCadOrig += LxCEDest(SF2->F2_CLIENTE,SF2->F2_LOJA,SF2->F2_ACOPLA, .T.), "")(POS) cCadOrig += IIf(!Empty(cCadOriCCE), cCadOriCCE, "")
//Carta Porte
(POS) IIf(_aTotal[011],(cCadOrig += LxFunaCaPo(SF2->F2_FILIAL,SF2->F2_DOC,SF2->F2_SERIE,.T.,IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.),_aTotal[104]),.T.),"")(POS) (cCadOrig += fXMLFUN("IL",.T., IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.)),.T.)
(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 := "MIIFuTCCA6GgAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0NDIwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDA"
(PRE) cCert +="ZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQ"
(PRE) cCert +="kBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYS"
(PRE) cCert +="UNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTI1OTI2WhcNMjcwNTE4MTI1OTI2WjCB4DEqM"
(PRE) cCert +="CgGA1UEAxMhWEVOT04gSU5EVVNUUklBTCBBUlRJQ0xFUyBTIERFIENWMSowKAYDVQQpEyFYRU5PTiBJTkRVU1RSSUFMIEFSVElDTEVTIFMgREUgQ1YxKjAoBgNVBAoTIVhFTk9OIElORFVTVFJJQUwgQVJUSUNMRVMgUyBERSBDVjElMCMGA1UEL"
(PRE) cCert +="RMcWElBMTkwMTI4SjYxIC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAga5zxQ4mEBE4LobElO0+UyMDcAYbY0NJbg4x"
(PRE) cCert +="Nbvwd66CUuTjyK2q11Y6nTzod1I1Nhv75cfZbJzdW/4EO/1bGLEt3zpTnP0yDVh9KL4/WJ0QW5kR4QVpxd84aBkJe7FltC5j+FUiDSCCLpSBlGvwZdFAwZhSZvHeFB1i1pDc3rA/PvqJwn35goEdIfhgfymg+31LuL1stU30pOSYtxltiEoM3QFePVurYhYq"
(PRE) cCert +="sxNmZMGkRvVNrf/SnZsiaLUonM8CNLfhJIFxBraH3qeZ3iCaeFgL8zO5ux+8D1XAg2RpJLf7gFVC9fWOc9yaHKNsjkt1E2YauH9KpHxRAjt3zKniywIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAR73vD"
(PRE) cCert +="0WGeWtnZyIFixfsNtvM3068JFvn4LJ0aF0ZZwTJhcff7OrUrpsrCjMzpIOB3Lfq5DLtaIPNeEkSa5W4yi1XJ930kcJ4kubi16jmTIMIZ7w9fy8p99gggTMbYiFf0Jzvfz+PQqqpsfnc3lMVV/GkHvs8QHEekZxpWHS22oE/S5wKq7b85oW649fC834EoZGIsb8"
(PRE) cCert +="0Rna4ATuDxbt3dvzTR/b/eyricihMBqQ1MPCi9D81o1/3EPEOZNYFcC+yQK7M+/C7pivs0A972q8LYxG8DzmaKV8zLg+IR9ygdYdl/y/Snoeo0udV4yUlzug7i5IGZbfUh2jo3WEkEdIpty+lcVt2PtWOTdR70V0oCivE0MV0qw9GRzFAr6G71fra6r+sUKUwxQB"
(PRE) cCert +="n07pi6hHmmZ7/DZ9QCaheqD9ttdhlQhpTTt0UPpWY9CDUJKpbWlkKYUzLPkdf/ppjiizbP1fqDcoIfZxl4RPKKtr0eIJWhEnuVirZ0kevHXEspI+igdMqk8MRndZSoohuIuLdjKjfXEGBALoqUzAB6avN2zzEy6ERRCGfR3cVhVUTcpd/iQffeGvw7tRZZOiWgwG3"
(PRE) cCert +="Sjc/zgUppnFXfVFHCTmRz1nr0dOqKjOpMEMncRSfY2Mk+Xm8rmJ7toBu4iAyJUDCP6v24as1uxiE9DVDaFwlugdYL9c="
(PRE) lCCCE := IIf(SuperGetMV("MV_CFDIEXP",.F.,.F.) .And. !Empty(SF2->F2_TIPOPE) .And. _aTotal[114], .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/4"'
(PRE) _aTotal[001] += ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'
(PRE) _aTotal[001] += Iif(_aTotal[104],' xmlns:cartaporte31="http://www.sat.gob.mx/CartaPorte31"','')
(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/4 http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd '
(PRE) _aTotal[001] += IIF(lCCCE,'http://www.sat.gob.mx/ComercioExterior20 http://www.sat.gob.mx/sitio_internet/cfd/ComercioExterior20/ComercioExterior20.xsd ','http://www.sat.gob.mx/implocal http://www.sat.gob.mx/sitio_internet/cfd/implocal/implocal.xsd')
(PRE) _aTotal[001] += IIf(_aTotal[104],' http://www.sat.gob.mx/CartaPorte31 http://www.sat.gob.mx/sitio_internet/cfd/CartaPorte/CartaPorte31.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:cce20="http://www.sat.gob.mx/ComercioExterior20" ' , "")
(PRE) _aTotal[001] += ' Version="4.0"'
(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',IIf(!Empty(_aTotal[112]),_aTotal[112],_aTotal[107]),IIf(Empty(_aTotal[107]) .Or. Alltrim(SE4->E4_MPAGSAT) == "PPD","99",_aTotal[107])) + '"' )
(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+F2_FRETE+F2_SEGURO+F2_DESPESA) + _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(Alltrim(SF2->F2_TIPODOC) == "21","XXX",Alltrim(CTO->CTO_MOESAT)) + '"'
(PRE) _aTotal[001] += IIf(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] - IIf(Len(_aTotal[115]) > 0,_aTotal[115][1],0),Round(SF2->F2_VALBRUT,2) + _aTotal[103] - _aTotal[037] - _aTotal[038] - IIf(Len(_aTotal[115]) > 0,_aTotal[115][1],0))),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] += ' Exportacion="'+IIf(!Empty(_aTotal[113]),_aTotal[113],"01")+'"'
(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, ' <cce20:ComercioExterior' , "")
(POS) cNodoCCE += IIf(lCCCE, ' Version="2.0"' , "")
(POS) cNodoCCE += IIf(lCCCE .And. !Empty(SF2->F2_TRASLA), ' MotivoTraslado="' + Alltrim(SF2->F2_TRASLA) + '"', "")
(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. 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) !Empty(SF2->F2_RELSAT).Or. !Empty(SF2->F2_SERMAN).Or. !Empty(SF2->F2_DOCMAN)
(PREREG) (_aTotal[001] := IIf(_aTotal[104] .And. Alltrim(SF2->F2_TIPODOC) == "21","",fGetFolRel("S")))
(PREREG) _aTotal[001][XXX FACTURA GLOBAL]
(PRE) (_aTotal[001] := IIF(SF2->F2_GLOBAL == "1",' <cfdi:InformacionGlobal ',""))
(PRE) (_aTotal[001] += Iif(SF2->(ColumnPos("F2_IDCBAJA")) > 0 .and. SF2->F2_GLOBAL == "1" ,' Periodicidad="' + SF2->F2_IDCBAJA + '"',""))
(PRE) (_aTotal[001] += Iif(SF2->(ColumnPos("F2_MODCONS")) > 0 .and. SF2->F2_GLOBAL == "1" ,' Meses="' + SF2->F2_MODCONS + '"',""))
(PRE) (_aTotal[001] += Iif(SF2->(ColumnPos("F2_PTOEMIS")) > 0 .and. SF2->F2_GLOBAL == "1" ,' Año="' + SF2->F2_PTOEMIS + '"',""))
(PRE) (_aTotal[001] += IIF(SF2->F2_GLOBAL == "1",'/>' ,""))
(PRE) (_aTotal[001] := IIF(SF2->F2_GLOBAL == "1",_aTotal[001] ,""))
(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) .And. _aTotal[114], .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(SF2->F2_GLOBAL == "1", "XAXX010101000", _aTotal[108])) + '"' , .T.)
(PREREG) (_aTotal[001] += ' Nombre="' + iif(SF2->F2_GLOBAL == "1","PUBLICO EN GENERAL",CFDCarEsp(_aTotal[109],.T.)) + '"' , .T.)
(PREREG) (_aTotal[001] += ' DomicilioFiscalReceptor="' + _aTotal[110] + '"' , .T.)
(PREREG) (_aTotal[001] += Iif(AI0->(ColumnPos("AI0_REGFIS")) > 0,' RegimenFiscalReceptor="' + _aTotal[111] + '"',""), .T.)
(PREREG) (_aTotal[001] += ' UsoCFDI="' + Alltrim(SF2->F2_USOCFDI) + '"' , .T.)
(PREREG) IIf(lCCCE .And. !Empty(CFDCarEsp(AllTrim(AllTrim(SF2->F2_IDTRIB)))) .And. !_aTotal[076], (_aTotal[001] += ' NumRegIdTrib="' + CFDCarEsp(AllTrim(AllTrim(SF2->F2_IDTRIB))) + '"' , .T.), "")
(PREREG) IIf(lCCCE .And. !Empty(CFDCarEsp(AllTrim(AllTrim(SF2->F2_RESIDE)))) .And. !_aTotal[076], (_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, ' <cce20:Emisor' , "")
(POS) cNodoCCE += IIf(lCCCE, '>' + ( chr(13)+chr(10) ), "")
(POS) cNodoCCE += IIf(lCCCE, ' <cce20: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, ' </cce20:Emisor>' + ( chr(13)+chr(10) ), "")
(POS) cNodoCCE += IIf(lCCCE, ' <cce20:Receptor ' + IIf(_aTotal[108]=="XEXX010101000", 'NumRegIdTrib="' + CFDCarEsp(AllTrim(SF2->F2_IDTRIB)) + '"',""), "")
(POS) cNodoCCE += IIf(lCCCE, '>' + ( chr(13)+chr(10) ), "")
(POS) cNodoCCE += IIf(lCCCE, ' <cce20: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, ' </cce20:Receptor>' + ( chr(13)+chr(10) ), "")
//Destintarios
(POS) cNodoCCE += IIf(lCCCE .And. FindFunction("LxCEDest") .And. SF2->(ColumnPos("F2_ACOPLA")) > 0, LxCEDest(SF2->F2_CLIENTE,SF2->F2_LOJA,SF2->F2_ACOPLA,.F.),"")
(POS) (cNodoCCE += IIf(lCCCE, ' <cce20: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) .And. _aTotal[114] , .T., .F.)
(PRE) cNodoCCE := ""(PRE) DbGoTop()
(PREREG) (cNodoCCE += IIf(lCCCE, ' <cce20: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, ' </cce20:Mercancia>' + ( chr(13)+chr(10) ), ""),.T.)(POS) (cNodoCCE += IIf(lCCCE, ' </cce20:Mercancias>' + ( chr(13)+chr(10) ), ""),.T.)
(POS) (cNodoCCE += IIf(lCCCE, ' </cce20: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) IIf(_aTotal[011],_aTotal[105] := LxFunaCaPo(SF2->F2_FILIAL,SF2->F2_DOC,SF2->F2_SERIE,.F.,IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.),_aTotal[104]),"")
(PREREG) (_aTotal[001] := IIF(!EMPTY(_aTotal[094] ) .or. !EMPTY(_aTotal[095] ) .Or. !Empty(_aTotal[105]) .or. _aTotal[104] , ' <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) .And. _aTotal[114], .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))
Campo | Descripción | Nodo | Uso | Dato en Protheus |
cfdi:Comprobante | ||||
Version | Versión CFDI. | cfdi:Comprobante | "4.0" | |
FormaPago | En 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 comprobante | cfdi:Comprobante | CFDI de tipo ingreso: "I" CFDI de tipo traslado: "T" | |
MetodoPago | Este 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 | |
Subtotal | Si 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. | |
Moneda | Si 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). | |
Total | Si 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 | ||||
TipoRelacion | Debe 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 | ||||
RFC | Si 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. | |
UsoCFDI | Si 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 Porte | cfdi:Comprobante:Complemento:cartaporte31: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. | ||
Version | Atributo requerido con valor prefijado que indica la versión del complemento Carta Porte. | cartaporte31:CartaPorte | Requerido | "3.1" |
TranspInternac | En 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. | cartaporte31:CartaPorte | Requerido | 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. | cartaporte31:CartaPorte | Condicional | 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. | cartaporte31:CartaPorte | Condicional | 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. | cartaporte31:CartaPorte | Condicional | 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). |
TotalDistRec | En 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. | cartaporte31:CartaPorte | Condicional | Suma de los valores Distancia recorrida (A1Y_DISREC) del nodo Ubicaciones. |
IdCCP | Atributo requerido para expresar los 36 caracteres del foliodel complemento Carta Porte (IdCCP) de la transacción de timbrado conforme al estándar RFC 4122, para la identificación del CFDI con complemento Carta Porte | cartaporte31:CartaPorte | Requerido | El valor de este atributo se visualizará en el campo UUID (A1X_UUIDCP), ya que el sistema lo generará automáticamente, como identificador de la Carta Porte registrada. |
RegistroISTMO | En este campo se deberá registrar si en las regiones, el traslado de los bienes y/o mercancías se realiza al interior de los Polos de Desarrollo para el Bienestar del istmo de Tehuantepec. | cartaporte31:CartaPorte | Condicional | Este atributo se informa si el campo de Carta Porte Reg. ISTMO (A1X_RISTMO) es "Sí". |
UbicacionPoloOrigen | En este campo se deberá registrar la región en donde inicia el traslado de los bienes y/o mercancias al interior de los Polos de Desarrollo para el Bienestar del istmo de Tehuantepec. | cartaporte31:CartaPorte | Condicional | Este atributo se informa si el campo de Carta Porte Reg. ISTMO (A1X_RISTMO) es "Sí". Campo de Carta Porte Polo Origen (A1X_POLOOR). |
UbicacionPoloDestino | En este campo se deberá registrar la región en donde termina el traslado de los bienes y/o mercancias al interior de los Polos de Desarrollo para el Bienestar del istmo de Tehuantepec | cartaporte31:CartaPorte | Condicional | Este atributo se informa si el campo de Carta Porte Reg. ISTMO (A1X_RISTMO) es "Sí". Campo de Carta Porte Polo Destino (A1X_POLODE). |
cartaporte31:RegimenesAduaneros | Condicional | 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). | ||
RegimenAduanero | Expresar el régimen aduanero al cual se destina el bien y/o mercancía. | cartaporte31:RegimenAduaneroCCP | Condicional | Debe contener un valor del catálogo S037 - Catálogo de Régimen Aduanero (c_RegimenAduanero) Cuando el Entrada o Salida (A1X_ENTSAL) contenga el valor E-Entrada, debe Campo de Carta Porte Rég. Aduana (A1X_REGADU). |
cartaporte31:Ubicaciones:Ubicacion | Requerido | Nodo 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. | ||
TipoUbicacion | En este campo se deberá registrar el valor que corresponda al tipo de ubicación, ya sea "Origen" o "Destino". | cartaporte31:Ubicaciones:Ubicacion | Requerido | Si el campo Tipo Ubicación (A1Y_TIPEST) es "D" "Origen" De lo contrario: "Destino" |
IDUbicacion | Cuando 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. | cartaporte31:Ubicaciones:Ubicacion | Opcional | Campo 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. | cartaporte31:Ubicaciones:Ubicacion | Requerido | Campo RFC (A1Y_RFCORI) de Ubicaciones. |
NombreRemitenteDestinatario | En este campo se podrá registrar el nombre del remitente o destinatario de los bienes y/o mercancías que se trasladan. | cartaporte31:Ubicaciones:Ubicacion | Opcional | Campo Nombre (A1Y_NOMORI) de Ubicaciones. |
NumRegIdTrib | En 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”. | cartaporte31:Ubicaciones:Ubicacion | Opcional | N/A |
ResidenciaFiscal | En 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”. | cartaporte31:Ubicaciones:Ubicacion | Opcional | N/A |
NumEstacion | Atributo 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. | cartaporte31:Ubicaciones:Ubicacion | Opcional | N/A |
NombreEstacion | Atributo 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. | cartaporte31:Ubicaciones:Ubicacion | Opcional | N/A |
NavegacionTrafico | Atributo 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. | cartaporte31:Ubicaciones:Ubicacion | Opcional | N/A |
FechaHoraSalidaLlegada | En 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. | cartaporte31:Ubicaciones:Ubicacion | Requerido | 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. | cartaporte31:Ubicaciones:Ubicacion | Condicional | N/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”. | cartaporte31:Ubicaciones:Ubicacion | Condicional | 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. |
cartaporte31:Ubicaciones:Ubicacion:Domicilio | Condicional | Nodo 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. | ||
Calle | En 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. | cartaporte31:Ubicaciones:Ubicacion:Domicilio | Requerido | Campo Calle (A1Y_CALORI) de Ubicaciones. |
NumeroExterior | En 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. | cartaporte31:Ubicaciones:Ubicacion:Domicilio | Opcional | Campo Número exterior (A1Y_EXTORI) de Ubicaciones. |
NumeroInterior | En 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. | cartaporte31:Ubicaciones:Ubicacion:Domicilio | Opcional | Campo Número interior (A1Y_INTORI) de Ubicaciones. |
Colonia | En 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”. | cartaporte31:Ubicaciones:Ubicacion:Domicilio | Opcional | 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”. | cartaporte31:Ubicaciones:Ubicacion:Domicilio | Opcional | Campo Localidad (A1Y_LOCORI) de Ubicaciones. |
Referencia | Este 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. | cartaporte31:Ubicaciones:Ubicacion:Domicilio | Opcional | N/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”. | cartaporte31:Ubicaciones:Ubicacion:Domicilio | Opcional | 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 “País”. | cartaporte31:Ubicaciones:Ubicacion:Domicilio | Requerido | Campo Estado (A1Y_EDOORI) de Ubicaciones. |
País | 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. | cartaporte31:Ubicaciones:Ubicacion:Domicilio | Requerido | 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. | cartaporte31:Ubicaciones:Ubicacion:Domicilio | Requerido | Campo Código postal (A1Y_CPORI) de Ubicaciones. |
cartaporte31:Mercancias | Requerido | Nodo requerido para registrar la información de los bienes o mercancías que se trasladan en los distintos medios de transporte. | ||
PesoBrutoTotal | En este campo se deberá registrar la suma del peso bruto de los bienes y/o mercancías que se trasladan. | cartaporte31:Mercancias | Requerido | Suma de PesoEnKg (D2_PESO). |
UnidadPeso | En este campo se deberá registrar la clave de la unidad de peso que corresponda al valor registrado en el campo PesoBrutoTotal. | cartaporte31:Mercancias | Requerido | "KGM" |
PesoNetoTotal | Atributo condicional para registrar la suma de los valores indicados en el atributo “PesoNeto” del nodo “DetalleMercancia”. | cartaporte31:Mercancias | Condicional | N/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. | cartaporte31:Mercancias | Requerido | Número de ítems de productos de la factura. |
CargoPorTasacion | En 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. | cartaporte31:Mercancias | Opcional | N/A |
LogisticaInversaRecoleccionDevolucion | Atributo condicional para expresar si se hace uso de alguno de los servicios de logística inversa, recolección o devolución para el traslado de los bienes y/o mercancías. | cartaporte31:Mercancias | Opcional | Campo (A1X_LOGDEV) de Carta Porte: "Sí" o "No" |
cartaporte31:Mercancias:Mercancia | Requerido | Nodo 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. | cartaporte31:Mercancias:Mercancia | Requerido | Campo Producto o Servicio SAT (B1_PRODSAT) correspondiente al producto del ítem de la factura. |
ClaveSTCC | En 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. | cartaporte31:Mercancias:Mercancia | Opcional | N/A |
Descripcion | En este campo se deberá registrar la descripción de los bienes y/o mercancías que se trasladan vía autotransporte. | cartaporte31:Mercancias:Mercancia | Condicional | 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. |
Cantidad | En este campo se deberá registrar la cantidad de bienes y/o mercancías que se trasladan. | cartaporte31:Mercancias:Mercancia | Condicional | Campo 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. | cartaporte31:Mercancias:Mercancia | Condicional | Campo Unidad medida SAT (AH_UNIDSAT) que corresponde al producto del ítem de la factura. |
Unidad | En este campo se podrá registrar la descripción de la unidad de medida propia de los bienes y/o mercancías que se trasladan. | cartaporte31:Mercancias:Mercancia | Opcional | N/A |
Dimensiones | En 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. | cartaporte31:Mercancias:Mercancia | Opcional | N/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. | cartaporte31:Mercancias:Mercancia | Opcional | 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: |
CveMaterialPeligroso | En 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. | cartaporte31:Mercancias:Mercancia | Condicional | Campo Clave material peligroso (D2_GRPCST) del ítem de la factura. |
Embalaje | En 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. | cartaporte31:Mercancias:Mercancia | Condicional | Campo Clave de embalaje (D2_TNATREC) del ítem de la factura. |
DescripEmbalaje | En 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. | cartaporte31:Mercancias:Mercancia | Condicional | Descripción del Catálogo Tipos de Embalaje (S021) de acuerdo al campo Clave de embalaje (D2_TNATREC) del ítem de la factura. |
SectorCOFEPRIS | En este campo se podrá registrar la clasificación del producto que se traslada a través de los distintos medios de transporte y que debe contar con autorización por la autoridad correspondiente. | cartaporte31:Mercancias:Mercancia | Condicional | Campo Sec.COFEPRIS (B5_SECTOR) correspondiente al producto del ítem de la factura. |
NombreIngredienteActivo | En este campo se podrá registrar el nombre común del ingrediente activo de los precursores, químicos de uso dual, plaguicidas o fertilizantes que se trasladan a través de los distintos medios de transporte. | cartaporte31:Mercancias:Mercancia | Condicional | Campo Ing. Activo (B5_INGREDI) correspondiente al producto del ítem de la factura. Debe existir si SectorCOFEPRIS es "02-Precursores y químicos de uso dual o 05-Plaguicidas y fertilizantes". |
NomQuimico | En este campo se podrá registrar el nombre de la sustancia activa de los precursores, químicos de uso dual o sustancias tóxicas que se traslada a través de los distintos medios de transporte. | cartaporte31:Mercancias:Mercancia | Condicional | Campo Sust. Activa (B5_SUSACT) correspondiente al producto del ítem de la factura. Debe existir si SectorCOFEPRIS es "02-Precursores y químicos de uso dual o 04-Sustancias toxicas". |
DenominacionGenericaProd | En este campo se podrá registrar el fármaco o la sustancia activa del medicamento, psicotrópico o estupefaciente que se traslada a través de los distintos medios de transporte. | cartaporte31:Mercancias:Mercancia | Condicional | Campo Nom.Gen.Prod (B5_NOMGER) correspondiente al producto del ítem de la factura. Debe existir si SectorCOFEPRIS es "01-Medicamento o 03-Psicotropicos y estupefacientes". |
DenominacionDistintivaProd | En este campo se podrá registrar la marca con la que se comercializa el producto o nombre que le asigna el laboratorio o fabricante a sus especialidades farmacéuticas con el fin de distinguirlas de otras similares del medicamento, psicotrópico o estupefaciente que se traslada a través de los distintos medios de transporte. | cartaporte31:Mercancias:Mercancia | Condicional | Campo Marca Comer (B5_NOMCOME) correspondiente al producto del ítem de la factura. Debe existir si SectorCOFEPRIS es "01-Medicamento o 03-Psicotropicos y estupefacientes". |
Fabricante | En este campo se podrá registrar el nombre o razón social del establecimiento que realiza la fabricación o manufactura del medicamento, precursor, químico de uso dual, psicotrópico o estupefaciente que se traslada a través de los distintos medios de transporte. | cartaporte31:Mercancias:Mercancia | Condicional | Campo Fabricante (B5_FABRICA) correspondiente al producto del ítem de la factura. Debe existir si SectorCOFEPRIS es "01-Medicamento o 02-Precursores y químicos de uso dual o 03-Psicotropicos y estupefacientes". |
FechaCaducidad | En este campo se podrá registrar la fecha de caducidad del medicamento, psicotrópico o estupefaciente; o para expresar la fecha de reanálisis del precursor o químico de uso dual que se traslada a través de los distintos medios de transporte. Se expresa en la forma AAAA-MM-DD. | cartaporte31:Mercancias:Mercancia | Condicional | Campo Fecha caducidad (D2_DTVALID) del ítem de la factura. Debe existir si SectorCOFEPRIS es "01-Medicamento o 02-Precursores y químicos de uso dual o 03-Psicotropicos y estupefacientes". |
LoteMedicamento | En este campo se podrá registrar la denominación que identifica y confiere trazabilidad del medicamento, precursor, químico de uso dual, psicotrópico o estupefaciente elaborado en un ciclo de producción, bajo condiciones equivalentes de operación y durante un periodo. | cartaporte31:Mercancias:Mercancia | Condicional | Campo Lote (D2_LOTECTL) del ítem de la factura. Debe existir si SectorCOFEPRIS es "01-Medicamento o 02-Precursores y químicos de uso dual o 03-Psicotropicos y estupefacientes". |
FormaFarmaceutica | En este campo se podrá registrar la forma farmacéutica o mezcla del medicamento, precursor, químico de uso dual, psicotrópico o estupefaciente que presenta ciertas características físicas para su adecuada dosificación, conservación y administración. | cartaporte31:Mercancias:Mercancia | Condicional | Campo Cód.For.Farm (B5_CODFORM) correspondiente al producto del ítem de la factura. Debe existir si SectorCOFEPRIS es "01-Medicamento o 02-Precursores y químicos de uso dual o 03-Psicotropicos y estupefacientes". |
CondicionesEspTransp | En este campo se podrá registrar la condición en la cual es necesario mantener el medicamento, precursor, químico de uso dual, psicotrópicos o estupefacientes durante el traslado y almacenamiento. | cartaporte31:Mercancias:Mercancia | Condicional | Campo Reg. Sanitar (B5_REGSAN) correspondiente al producto del ítem de la factura. Debe existir si SectorCOFEPRIS es "01-Medicamento o 03-Psicotropicos y estupefacientes". |
RegistroSanitarioFolioAutorizacion | En este campo se podrá registrar el registro sanitario o folio de autorización con el que cuenta la empresa para el traslado del medicamento, psicotrópico o estupefaciente. | cartaporte31:Mercancias:Mercancia | Condicional | Campo Cond. Esp Tr (B5_CONDIC) correspondiente al producto del ítem de la factura. Debe existir si SectorCOFEPRIS es "01-Medicamento o 03-Psicotropicos y estupefacientes". |
PermisoImportacion | En este campo se podrá registrar el folio del permiso de importación con el que cuenta el medicamento, precursor, químico de uso dual, psicotrópico o estupefaciente. | cartaporte31:Mercancias:Mercancia | Condicional | Campo FolioPer.mp (B5_PERIMP) correspondiente al producto del ítem de la factura. Cuando el campo Transporte internacional (A1X_INTERN) se registre "Sí", el campo Entrada o Salida (A1X_ENTSAL) contenga el valor "E-Entrada" y el atributo SectorCOFEPRIS contenga el valor "01-Medicamento o 02-Precursores y químicos de uso dual o 03-Psicotropicos y estupefacientes" este atributo debe existir, en caso contrario se debe omitir. |
FolioImpoVUCEM | En este campo se podrá registrar el número de folio de importación VUCEM para la identificación del documento, para el traslado de medicamentos, precursores o químicos de uso dual, sustancias tóxicas, plaguicidas o fertizantes. | cartaporte31:Mercancias:Mercancia | Condicional | Campo VUCEM (B5_VUCEM) correspondiente al producto del ítem de la factura. Cuando el campo Transporte internacional (A1X_INTERN) se registre "Sí", el campo Entrada o Salida (A1X_ENTSAL) contenga el valor "E-Entrada" y el atributo SectorCOFEPRIS contenga el valor "01-Medicamento o 02-Precursores y químicos de uso dual o 04-Sustancias toxicas o 05-Plaguicidas y fertilizantes" este atributo debe existir, en caso contrario se debe omitir. |
NumCAS | En este campo se podrá registrar el número Chemical Abstracts Service (CAS) con el que se identifica el compuesto químico de la sustancia tóxica. | cartaporte31:Mercancias:Mercancia | Condicional | Campo CAS (B5_CAS) correspondiente al producto del ítem de la factura. Cuando el campo Transporte internacional (A1X_INTERN) se registre "Sí", el campo Entrada o Salida (A1X_ENTSAL) contenga el valor "E-Entrada" y el atributo SectorCOFEPRIS contenga el valor "04-Sustancias toxicas" este atributo debe existir, en caso contrario se debe omitir. |
RazonSocialEmpImp | En este campo se podrá registrar el nombre o razón social de la empresa importadora de las sustancias tóxicas. | cartaporte31:Mercancias:Mercancia | Condicional | Campo Emp. Importa (B5_EMPIMP) correspondiente al producto del ítem de la factura. Debe existir si SectorCOFEPRIS es "04-Sustancias toxicas". |
NumRegSanPlagCOFEPRIS | En este campo se podrá registrar el número de registro sanitario para plaguicidas o fertilizantes cuya importación, comercialización y uso están permitidos en México, mismo que emite la Comisión Intersecretarial para el Control del Proceso y Uso de Plaguicidas, Fertilizantes y Sustancias Tóxicas (CICLOPLAFEST). | cartaporte31:Mercancias:Mercancia | Condicional | Campo Reg. Sanitar (B5_REGSAN) correspondiente al producto del ítem de la factura. Debe existir si SectorCOFEPRIS es "05-Plaguicidas y fertilizantes". |
DatosFabricante | En este campo se podrá registrar el país y nombre o razón social de quien produce o fabrica el ingrediente activo del plaguicida o fertilizante. | cartaporte31:Mercancias:Mercancia | Condicional | Campo Fabricante (B5_FABRICA) correspondiente al producto del ítem de la factura. Debe existir si SectorCOFEPRIS es "05-Plaguicidas y fertilizantes". |
DatosFormulador | En este campo se podrá registrar el país y nombre o razón social de quien formula el ingrediente activo del plaguicida o fertilizante | cartaporte31:Mercancias:Mercancia | Condicional | Campo Formulador (B5_DATFOR) correspondiente al producto del ítem de la factura. Debe existir si SectorCOFEPRIS es "05-Plaguicidas y fertilizantes". |
DatosMaquilador | En este campo se podrá registrar el país y nombre o razón social de quien maquila el ingrediente activo del plaguicida o fertilizante. | cartaporte31:Mercancias:Mercancia | Condicional | Campo Maquilador (B5_DATMAQ) correspondiente al producto del ítem de la factura. Debe existir si SectorCOFEPRIS es "05-Plaguicidas y fertilizantes". |
UsoAutorizado | En este campo se podrá registrar el uso autorizado del plaguicida o fertilizante de acuerdo a la regulación del país | cartaporte31:Mercancias:Mercancia | Condicional | Campo Uso autorizado (B5_USOAUT) correspondiente al producto del ítem de la factura. Debe existir si SectorCOFEPRIS es "05-Plaguicidas y fertilizantes". |
PesoEnKg | En este campo se deberá registrar el peso estimado en kilogramos de los bienes y/o mercancías que se trasladan. | cartaporte31:Mercancias:Mercancia | Requerido | Campo Peso Producto Prorrateo (D2_PESO) del ítem de la factura. |
ValorMercancia | En este campo se podrá registrar el valor estimado de los bienes y/o mercancías que se trasladan. | cartaporte31:Mercancias:Mercancia | Condicional | Campo Valor mercancía (D2_VLRFUE) del ítem de la factura. |
Moneda | En 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. | cartaporte31:Mercancias:Mercancia | Condicional | Campo Moneda SAT (CTO_MOESAT) relacionado con el campo Moneda de la Factura (F2_MOEDA). |
FraccionArancelaria | En 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. | cartaporte31:Mercancias:Mercancia | Condicional | Campo Fracción arancelaria (D2_FRACCA) del ítem de la factura. |
UUIDComercioExt | Atributo opcional para expresar el folio fiscal (UUID) del comprobante de comercio exterior que se relaciona. | cartaporte31:Mercancias:Mercancia | Condicional | Campo UUID comercio exterior (D2_FCICOD) del ítem de la factura. |
TipoMateria | En este campo se podrá registrar el estado de la materia o producto al realizar una operación de comercio exterior a través de los distintos medios de transporte. | cartaporte31:Mercancias:Mercancia | Condicional | Campo Tipo de materia (B5_TPOMAT) correspondiente al producto del ítem de la factura. Cuando el campo Transporte internacional (A1X_INTERN) se registre "Sí", el campo Entrada o Salida (A1X_ENTSAL) contenga el valor "E-Entrada" y contener un valor del catálogo c_TipoMateria, en caso contrario se debe omitir este atributo debe existir, en caso contrario se debe omitir. |
DescripcionMateria | En este campo se podrá registrar la descripción del estado de la materia o producto al realizar una operación de comercio exterior a través de los distintos medios de transporte. | cartaporte31:Mercancias:Mercancia | Condicional | Campo Descripción de materia (B5_DESMAT) correspondiente al producto del ítem de la factura. Cuando el campo Tipo de materia (B5_TPOMAT) contenga el valor "05 - Otra", este atributo debe existir, en caso contrario se debe omitir |
cartaporte31:Mercancias:Mercancia:Documentacionaduanera | Opcional | Nodo condicional para registrar la información del(los) documento(s) | ||
TipoDocumento | En este campo se podrá registrar el tipo de documento aduanero que se encuentra asociado al traslado de los bienes y/o mercancías de procedencia extranjera durante su traslado en territorio nacional. | cartaporte31:Mercancias:Mercancia:Documentacionaduanera | Requerido | Campo Tpo Doc Adu (D2_PAFMD5) del ítem de la factura. Cuando el campo Entrada o Salida (A1X_ENTSAL) contenga el valor "S-Salida", este atributo debe contener una clave distinta de "01-Pedimento" del catálogo "c_DocumentoAduanero". |
NumPedimento | En este campo se podrá registrar el número de pedimento de importación que se encuentra asociado con el traslado de los bienes y/o mercancías de procedencia extranjera para acreditar la legal estancia y tenencia durante su traslado en territorio nacional, el cual se expresa en el siguiente formato: ú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. | cartaporte31:Mercancias:Mercancia:Documentacionaduanera | Condicional | Campo Num. Ped. (D2_PEDISAT) del ítem de la factura. Cuando el campo Entrada o Salida (A1X_ENTSAL) contenga el valor "S-Salida" y el atributo “TipoDocumento” contenga el valor "01-Pedimento" del catálogo "c_DocumentoAduanero", este atributo debe existir, en caso contrario se debe omitir. |
IdentDocAduanero | En este campo se podrá registrar el identificador o folio del documento aduanero que se encuentra asociado 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. | cartaporte31:Mercancias:Mercancia:Documentacionaduanera | Condicional | Campo Num. Ped. (D2_LIQGR) del ítem de la factura. Cuando el campo Tpo Doc Adu (D2_PAFMD5) contenga una clave de "01-Pedimento" del catálogo "c_DocumentoAduanero", este atributo debe existir y contener un RFC que se encuentre en la lista de RFC inscritos no cancelados del SAT (l_RFC) o un RFC genérico, en caso contrario se debe omitir. |
RFCImpo | En este campo se podrá registrar el RFC del importador de los bienes y/o mercancías que fue registrado en la documentación aduanera correspondiente y este se encuentre en la lista de RFC inscritos no cancelados del SAT (l_RFC) | cartaporte31:Mercancias:Mercancia:Documentacionaduanera | Opcional | Campo RFC Imp (D2_NRECAGR) del ítem de la factura. Cuando el campo Num. Ped. (D2_PEDISAT) contenga una valor, este atributo debe existir, en caso contrario se debe omitir. |
cartaporte31:Mercancias:Mercancia:Pedimentos | Opcional | Nodo 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. | cartaporte31:Mercancias:Mercancia:Pedimentos | Requerido | Campo Num. Ped. (D2_PEDISAT) del ítem de la factura. |
cartaporte31:Mercancias:Mercancia:GuiasIdentificacion | Opcional | 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 | ||
NumeroGuiaIdentificacion | Atributo 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. | cartaporte31:Mercancias:Mercancia:GuiasIdentificacion | Requerido | N/A |
DescripGuiaIdentificacion | Atributo 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. | cartaporte31:Mercancias:Mercancia:GuiasIdentificacion | Requerido | N/A |
PesoGuiaIdentificacion | Atributo 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. | cartaporte31:Mercancias:Mercancia:GuiasIdentificacion | Requerido | N/A |
cartaporte31:Mercancias:Mercancia:CantidadTransporta | Opcional | 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. | ||
Cantidad | En este campo se podrá registrar el número de los bienes y/o mercancías que se trasladan. | cartaporte31:Mercancias:Mercancia:CantidadTransporta | Requerido | Campo Cantidad del producto (D2_QUANT), del ítem de la factura. |
IDOrigen | En este campo se deberá capturar un valor de los registrados en el campo “IDUbicacion”, con valor “Origen” en el campo “TipoUbicacion”. | cartaporte31:Mercancias:Mercancia:CantidadTransporta | Requerido | 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". |
IDDestino | En este campo se deberá capturar un valor de los registrados en el campo “IDUbicacion”, con valor “Destino” en el campo “TipoUbicacion”. | cartaporte31:Mercancias:Mercancia:CantidadTransporta | Requerido | 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". |
CvesTransporte | En 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. | cartaporte31:Mercancias:Mercancia:CantidadTransporta | Opcional | "01" |
cartaporte31:Mercancias:Mercancia:DetalleMercancia | Condicional | 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. | ||
UnidadPesoMerc | En 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. | cartaporte31:Mercancias:Mercancia:DetalleMercancia | Requerido | N/A |
PesoBruto | En este campo se deberá registrar el peso bruto total de los bienes y/o mercancías que se trasladan. | cartaporte31:Mercancias:Mercancia:DetalleMercancia | Requerido | N/A |
PesoNeto | En este campo se deberá registrar el peso neto de los bienes y/o mercancías que se trasladan. | cartaporte31:Mercancias:Mercancia:DetalleMercancia | Requerido | N/A |
PesoTara | En 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. | cartaporte31:Mercancias:Mercancia:DetalleMercancia | Requerido | N/A |
NumPiezas | En este campo se podrá registrar el número de piezas de los bienes y/o mercancías que se trasladan. | cartaporte31:Mercancias:Mercancia:DetalleMercancia | Opcional | N/A |
cartaporte31:Mercancias:Autotransporte | Condicional | Nodo 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. | cartaporte31:Mercancias:Autotransporte | Requerido | Campo Tipo de permiso SCT (A1X_PERSCT) de Carta Porte. |
NumPermisoSCT | Este 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. | cartaporte31:Mercancias:Autotransporte | Requerido | Campo Número permiso SCT (A1X_PERMIS) de Carta Porte. |
cartaporte31:Mercancias:Autotransporte:IdentificacionVehicular | Requerido | Nodo requerido para registrar los datos de identificación del autotransporte en el que se trasladan los bienes y/o mercancías. | ||
ConfigVehicular | En 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. | cartaporte31:Mercancias:Autotransporte:IdentificacionVehicular | Requerido | Campo Configuración vehicular (DA3_CONFIG) del Vehículo, relacionado con el campo Código de vehículo (A1X_VEHIC) de Carta Porte. |
PesoBrutoVehicular | En este campo se debe registrar en toneladas el peso bruto vehicular permitido del autotransporte de acuerdo a la NOM-SCT-012-2017 que es utilizado para realizar el traslado de los bienes y/o mercancías. | cartaporte31:Mercancias:Autotransporte:IdentificacionVehicular | Requerido | Campo Peso Bruto V (A1X_PESOBV) de Carta Porte. |
PlacaVM | En 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. | cartaporte31:Mercancias:Autotransporte:IdentificacionVehicular | Requerido | Campo Placa (DA3_PLACA) del Vehículo, relacionado con el campo Código de vehículo (A1X_VEHIC) de Carta Porte. |
AnioModeloVM | En este campo se deberá registrar el año del vehículo que se está utilizando para trasladar los bienes y/o mercancías. | cartaporte31:Mercancias:Autotransporte:IdentificacionVehicular | Requerido | Campo Número de placa (DA3_ANOMOD) del Vehículo, relacionado con el campo Código de vehículo (A1X_VEHIC) de Carta Porte. |
cartaporte31:Mercancias:Autotransporte:Seguros | Requerido | 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. | ||
AseguraRespCivil | En 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. | cartaporte31:Mercancias:Autotransporte:Seguros | Requerido | Campo Nombre de la aseguradora (A1X_ASEGUR) de Carta Porte. |
PolizaRespCivil | En 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. | cartaporte31:Mercancias:Autotransporte:Seguros | Requerido | Campo Número de póliza (A1X_POLIZA) de Carta Porte. |
AseguraMedAmbiente | En 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. | cartaporte31:Mercancias:Autotransporte:Seguros | Opcional | Campo Aseg Med Amb (A1X_ASEGMA) de Carta Porte. |
PolizaMedAmbiente | En 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. | cartaporte31:Mercancias:Autotransporte:Seguros | Opcional | Campo Póliza Med A (A1X_POLMA) de Carta Porte. |
AseguraCarga | En este campo se podrá registrar el nombre de la aseguradora que cubre los riesgos de la carga (bienes y/o mercancías) transportada. | cartaporte31:Mercancias:Autotransporte:Seguros | Opcional | Campo Aseg. Carga (A1X_ASECGA) de Carta Porte. |
PolizaCarga | En 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. | cartaporte31:Mercancias:Autotransporte:Seguros | Opcional | Campo Póliza Carga (A1X_POLCGA) de Carta Porte. |
PrimaSeguro | En 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. | cartaporte31:Mercancias:Autotransporte:Seguros | Opcional | Campo Prima Seguro (A1X_PRISEG) de Carta Porte. |
cartaporte31:Mercancias:Autotransporte:Remolques:Remolque | Opcional | 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. | ||
SubTipoRem | En 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. | cartaporte31:Mercancias:Autotransporte:Remolques:Remolque | Requerido | Campo Subtipo remolque (DA3_SUBREM) del Vehículo, relacionado con el campo Código de remolque (A1X_REMOLQ | A1XREMOL2) de Carta Porte. |
Placa | En 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. | cartaporte31:Mercancias:Autotransporte:Remolques:Remolque | Requerido | Campo Placa (DA3_PLACA) del Vehículo, relacionado con el campo Código de remolque (A1X_REMOLQ | A1XREMOL2) de Carta Porte. |
cartaporte31:FiguraTransporte | Opcional | Nodo 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. | ||
cartaporte31:FiguraTransporte:TiposFigura | ||||
TipoFigura | En 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. | cartaporte31:FiguraTransporte:TiposFigura | Requerido | 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. | cartaporte31:FiguraTransporte:TiposFigura | Condicional | 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. |
NumLicencia | En 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. | cartaporte31:FiguraTransporte:TiposFigura | Condicional | 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 |
NombreFigura | En este campo se deberá registrar el nombre de la figura de transporte que interviene en el traslado de bienes y/o mercancías. | cartaporte31:FiguraTransporte:TiposFigura | Opcional | 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. |
NumRegIdTribFigura | En este campo se podrá registrar el número de identificación fiscal que corresponde al tipo de la figura de transporte. | cartaporte31:FiguraTransporte:TiposFigura | Condicional | N/A |
ResidenciaFiscalFigura | En 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”. | cartaporte31:FiguraTransporte:TiposFigura | Condicional | N/A |
cartaporte31:FiguraTransporte:TiposFigura:PartesTransporte | Condicional | 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. | ||
ParteTransporte | En 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. | cartaporte31:FiguraTransporte:TiposFigura:PartesTransporte | Requerido | Campo Parte Transporte (AE0_PARTE) de Propietarios/Arrendatarios. |
cartaporte31:FiguraTransporte:TiposFigura:Domicilio | Opcional | Nodo 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. | ||
Calle | En este campo se podrá registrar el nombre de la calle en la que está ubicado el domicilio de la Figura de transporte. | cartaporte31:FiguraTransporte:TiposFigura:Domicilio | Requerido | Campo Dirección de la Transportad. (A4_END) del catálogo de transportes, relacionado con el campo Transportadora (AE0_TRANSP) de Propietarios/Arrendatarios. |
NumeroExterior | En este campo se podrá registrar el número exterior en donde se ubica el domicilio de la Figura de transporte. | cartaporte31:FiguraTransporte:TiposFigura:Domicilio | Opcional | Campo Número exterior (A4_NUMEXT) del catálogo de transportes, relacionado con el campo Transportadora (AE0_TRANSP) de Propietarios/Arrendatarios. |
NumeroInterior | En este campo se podrá registrar el número interior en caso de existir, en donde se ubica el domicilio de la Figura de transporte. | cartaporte31:FiguraTransporte:TiposFigura:Domicilio | Opcional | Campo Número exterior (A4_NUMINT) del catálogo de transportes, relacionado con el campo Transportadora (AE0_TRANSP) de Propietarios/Arrendatarios. |
Colonia | En 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”. | cartaporte31:FiguraTransporte:TiposFigura:Domicilio | Opcional | Campo 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”. | cartaporte31:FiguraTransporte:TiposFigura:Domicilio | Opcional | Campo Código localidad (A4_CLOCALI) del catálogo de transportes, relacionado con el campo Transportadora (AE0_TRANSP) de Propietarios/Arrendatarios. |
Referencia | Este 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. | cartaporte31:FiguraTransporte:TiposFigura:Domicilio | Opcional | N/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”. | cartaporte31:FiguraTransporte:TiposFigura:Domicilio | Opcional | Campo 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”. | cartaporte31:FiguraTransporte:TiposFigura:Domicilio | Requerido | Campo 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. | cartaporte31:FiguraTransporte:TiposFigura:Domicilio | Requerido | Campo 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. | cartaporte31:FiguraTransporte:TiposFigura:Domicilio | Requerido | Campo 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
- Realice las actualizaciones y configuración de catálogos indicados en la sección 03. CONFIGURACIONES.
IMPORTANTE
Para el correcto funcionamiento de los casos que a continuación se mencionan es necesario tener actualizadas las rutinas con fecha igual o superior a las mencionadas en la sección 01. VISIÓN GENERAL en el apartado de Rutina utilizadas, y algunos rechazos o validaciones pueden ser validaciones propias del PAC ya que se encuentra en etapa de pruebas de la nueva funcionalidad de Carta Porte.
Sector COFEPRIS
A partir de la versión del Complemento Carta Porte 3.0 los contribuyentes que prestan servicios de autotransporte a empresas de la industria farmacéutica y se encargan del transporte de sustancias controladas deberán dar nueva información mas detallada de sus operaciones al SAT a partir del 1 de Enero de 2024.
Para ello se agregó el S032- Catálogo de Sector Cofepris (c_SectorCOFEPRIS.csv), está información es importante indicarla antes de generar una Factura con Complemento de Carta Porte dentro del Complementos del Producto (Tabla SB5), e indicarlo en el campo Sec.COFEPRIS (B5_SECTOR).
Al indicar algún dato en el campo Sec.COFEPRIS (B5_SECTOR), al realizar el timbrado podrá solicitar algún otra información requerida según el código de Sector seleccionado para conocer la información requerida en base al sector Cofepris véase Esquema de generación del XML de Complemento de Carta Porte
Factura de Ingresos (Normal) - Facturación del Servicio y los Productos se Trasladan (Los Productos solo se visualizan en nodo de Mercancías)
El presente caso aplica para cuando únicamente se Factura el Servicio y los Productos se trasladan, es decir, los productos ya fueron facturados previamente.
- En el módulo Facturación (SIGAFAT) ir al menú Actualizaciones | Facturación | Facturaciones (MATA467N).
- Incluir una Factura de Venta de tipo Normal.
- Informar el campo ¿Carta Porte? (F2_TPCOMPL) con el valor S-Si.
- En el detalle informar:
- El Producto que fue configurado como Servicio (el Campo Tipo (B1_TIPO) contienen el valor "SV").
- Utilizar una Tipo de Salida con cálculo de impuestos y retenciones.
El o los productos a transportar, utilizando un Tipo de Salida que no afecte a stock ni a financiero.
IMPORTANTE
Se deben dejar los campos Valor Unit. (D2_PRCVEN) y Valor Total (D2_TOTAL) vacíos e informar el campo el campo Vl.Mercancía (D2_VLRFUE).
Si el Producto es considerado como material peligroso según la columna Material peligroso del catálogo c_ClaveProdServCP del SAT se deben informar los campos Cve.Mat.Pel. (D2_GRPCST) y Embalaje (D2_TNATREC).
Si en la configuración del Complementos del Producto el campo Sec COFEPRIS (B5_SECTOR) tiene el valor 01, 02 o 03, se deben informar los campos Lote (D2_LOTECTL) y Validez Lote (D2_DTVALID).
- El Producto que fue configurado como Servicio (el Campo Tipo (B1_TIPO) contienen el valor "SV").
- Desde Otras acciones ejecutar la acción Carta Porte.
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).
- Presionar Grabar para confirmar el guardado de la Factura de Venta,
- Confirmar la generación del comprobante fiscal digital
- Confirmar el timbrado del comprobante fiscal digital.
- Validar que el timbrado haya sido exitoso, que en el XML se visualice el nodo Complemento:cartaporte30.
Factura de Ingresos (Normal) - Facturación del Servicio, y los Productos se Facturan/Trasladan (Los Productos se visualizan en el nodo de Conceptos y en el nodo de Mercancías)
El presente caso aplica para se Factura el Servicio y donde también se Facturan los Productos a trasladar, es decir, los productos que NO fueron facturados previamente (Para esta funcionalidad es importante tener en el repositorio la rutina LOCXFUNA con fecha igual o mayor al 17/12/2021).
- En el módulo Facturación (SIGAFAT) ir al menú Actualizaciones | Facturación | Facturaciones (MATA467N).
- Incluir una Factura de Venta de tipo Normal.
- Informar el campo ¿Carta Porte? (F2_TPCOMPL) con el valor S-Si.
- En el detalle informar:
- El Producto que fue configurado como Servicio (el Campo Tipo (B1_TIPO) contienen el valor "SV").
- Utilizar una Tipo de Salida con cálculo de impuestos y retenciones.
El o los productos a transportar, utilizando un Tipo de Salida que afecte a financiero (F4_DUPLIC igual a 'S') y con cálculo de Impuesto.
IMPORTANTE
Se deben informar los campos Valor Unit. (D2_PRCVEN) y Valor Total (D2_TOTAL) con valor mayor a cero y dejar el campo Vl.Mercancía (D2_VLRFUE) vacío.
Si el Producto es considerado como material peligroso según la columna Material peligroso del catálogo c_ClaveProdServCP del SAT se deben informar los campos Cve.Mat.Pel. (D2_GRPCST) y Embalaje (D2_TNATREC).
- Desde Otras acciones ejecutar la acción Carta Porte.
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).
- Presionar Grabar para confirmar el guardado de la Factura de Venta,
- Confirmar la generación del comprobante fiscal digital
- Confirmar el timbrado del comprobante fiscal digital.
- Validar que el timbrado haya sido exitoso, que en el XML se visualice el nodo cartaporte31:CartaPorte y que los Productos se visualicen en el nodo de cfdi:Conceptos y cartaporte31:Mercancias.
Factura de Traslado
El presente caso aplica para cuando exclusivamente se realizará el traslado de los Productos (es decir no habrá el cobro de un servicio porque se tiene transporte propio)
- En el módulo Facturación (SIGAFAT) ir al menú Actualizaciones | Facturación | Facturaciones (MATA467N).
Incluir una Factura de Venta de tipo Traslado.
IMPORTANTE
Para el proceso de Traslados con Complemento Carta Porte 3.0 o superios es necesario que el RFC del Cliente (A1_CGC) sea el mismo que el RFC del Emisor (SM0_CGC).
- Informar el campo ¿Carta Porte? (F2_TPCOMPL) con el valor S-Si.
- En el detalle informar:
El o los productos a transportar, utilizando un Tipo de Salida que no afecte a stock ni a financiero (sin utilizar impuestos a calcular y configurando el campo Ctd. Cero (F4_QTDZERO) con opción 2-No).
IMPORTANTE
Se deben dejar los campos Valor Unit. (D2_PRCVEN) y Valor Total (D2_TOTAL) vacíos e informar el campo el campo Vl.Mercancía (D2_VLRFUE).
Si el Producto es considerado como material peligroso según la columna Material peligroso del catálogo c_ClaveProdServCP del SAT se deben informar los campos Cve.Mat.Pel. (D2_GRPCST) y Embalaje (D2_TNATREC).
Si en la configuración del Complementos del Producto el campo Sec COFEPRIS (B5_SECTOR) tiene el valor 01, 02 o 03, se deben informar los campos Lote (D2_LOTECTL) y Validez Lote (D2_DTVALID).
- Desde Otras acciones ejecutar la acción Carta Porte.
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).
- Presionar Grabar para confirmar el guardado de la Factura de Venta,
- Confirmar la generación del comprobante fiscal digital
- Confirmar el timbrado del comprobante fiscal digital.
- Validar que el timbrado haya sido exitoso, que en el XML se visualice el nodo Complemento:cartaporte30.
Importante
Para la generación de documentos con Complemento de Carta porte de Ingresos o Traslado, se deben seleccionar las opciones 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) - (Obligatorio para TransporteAereo, caso contrario se puede omitir).
- 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á catalogado 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) o si utiliza más de un remolque el campo Remolque 2(A1XREMOL2).
- 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.
Información básica a registrar para el correcto timbrado del CFDI con Complemento Carta Porte.
- Encabezado e ítems de la factura:
- Carta Porte:
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.
IMPORTANTE
- 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.
- Los siguientes catálogos, solo pueden ser cargados si se tiene actualizada la rutina FISA814.PRW con una fecha mayor o igual a XX/XX/2023
- S032 - Catálogo de Sector COFEPRIS (c_SectorCOFEPRIS.csv)
- S033 - Catálogo de Tipo Materia (c_TipoMateria.csv)
- S034 - Catálogo de Forma Farmacéutica (c_FormaFarmaceutica.csv)
- S035 - Catálogo de Registro ISTMO (c_RegistroISTMO.csv)
- S036 - Catálogo de Cond.Esp de Transp (c_CondicionesEspeciales.csv)
- S037 - Catálogo de Régimen Aduanero (c_RegimenAduanero.csv)
- S038 - Catálogo de Docs Aduaneros (c_DocumentoAduanero.csv)
- c_CveTransporte.csv
- c_TipoEstacion.csv
- c_ClaveProdServCP.csv
- c_MaterialPeligroso.csv
- c_TipoEmbalaje.csv
- c_TipoPermiso.csv
- c_Colonias.csv
- c_Localidad.csv
- c_Municipio.csv
- c_Estado.csv
- c_ConfigAutotransporte.csv
- c_SubTipoRem.csv
- c_CodigoPostal.csv
- c_FraccionArancelaria.csv
- c_ParteTransporte.csv
- c_SectorCOFEPRIS.csv
- c_TipoMateria.csv
- c_FormaFarmaceutica.csv
- c_RegistroISTMO.csv
- c_CondicionesEspeciales.csv
- c_RegimenAduanero.csv
- c_DocumentoAduanero.csv
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:
- Operadores
- Transportadoras
- Carta Porte
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:cartaporte30="http://www.sat.gob.mx/CartaPorte30"'
(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/4 http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd http://www.sat.gob.mx/CartaPorte30 http://www.sat.gob.mx/sitio_internet/cfd/CartaPorte/CartaPorte30.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/4 http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd http://www.sat.gob.mx/CartaPorte30 http://www.sat.gob.mx/sitio_internet/cfd/CartaPorte/CartaPorte30.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
Importante
En la implementación de la versión 3.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.
Campo | Orden | Tipo | Tamaño | Decimal | Formato | Contexto | Propiedad | Título | Descripción | Help | Lista | Inicializador | Modo edición | Consulta | Validación | Obligatorio | Usado |
A1X_FILIAL | 01 | C | 8 | 0 | Real | Alterar | Sucursal | Sucursal del sistema | Código de identificación de la sucursal de la empresa usuaria del sistema. | No | No | ||||||
A1X_DOC | 02 | C | 20 | 0 | @! | Real | Alterar | Documento | Número de docto/factura | Número de la factura. | No | Sí | |||||
A1X_SERIE | 03 | C | 3 | 0 | !!! | Real | Alterar | Serie | Serie | Serie de la factura. | No | Sí | |||||
A1X_INTERN | 04 | C | 1 | 0 | @! | Real | Alterar | Transp Inter | Transporte 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") | Sí | Sí | |||
A1X_ENTSAL | 05 | C | 1 | 0 | @! | Real | Alterar | Tipo | Entrada o Salida | Si los bienes o mercancías ingresan o salen del territorio nacional. | E=Entrada;S=Salida | Pertence("ES") | Sí | Sí | |||
A1X_PAIS | 06 | C | 3 | 0 | @! | Real | Alterar | País Ori/Des | Paí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. | MEX009 | IIF(M->A1X_INTERN=="S",ValidF3I("S009", M->A1X_PAIS,1,3),Vazio()) | No | Sí | |||
A1X_TRANSP | 07 | C | 2 | 0 | @! | Real | Alterar | Transporte | 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. | MEX017 | Vazio() .or. ValidF3I("S017", M->A1X_TRANSP,1,2) | Sí | Sí | |||
A1X_PERSCT | 08 | C | 6 | 0 | @! | Real | Alterar | Permiso 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. | MEX022 | Vazio() .or. ValidF3I("S022", M->A1X_PERSCT,1,6) | Sí | Sí | |||
A1X_PERMIS | 09 | C | 20 | 0 | @! | Real | Alterar | Num.Perm.SCT | Nú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 | Sí | Sí | |||||
A1X_ASEGUR | 10 | C | 30 | 0 | @! | Real | Alterar | Aseguradora | Nombre de la aseguradora | Nombre de la aseguradora que cubre los riesgos del autotransporte utilizado para el traslado de los bienes o mercancías. | Sí | Sí | |||||
A1X_POLIZA | 11 | C | 6 | 0 | @! | Real | Alterar | Nú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. | Sí | Sí | |||||
A1X_ASEGMA | 12 | C | 30 | 0 | @! | Real | Alterar | Aseg Med Amb | Asegurador medio ambiente | En 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 | Sí | |||||
A1X_POLMA | 13 | C | 10 | 0 | @! | Real | Alterar | Póliza Med A | No. Póliza medio ambiente | En 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 | Sí | |||||
A1X_ASECGA | 14 | C | 30 | 0 | @! | Real | Alterar | Aseg. Carga | Aseguradora de carga | En este campo se podrá registrar el nombre de la aseguradora que cubre los riesgos de la carga (bienes y/o mercancías) transportada. | No | Sí | |||||
A1X_POLCGA | 15 | C | 10 | 0 | @! | Real | Alterar | Póliza Carga | No. Póliza de carga | En 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 | Sí | |||||
A1X_PRISEG | 16 | N | 14 | 2 | @ 999,999,999.99 | Real | Alterar | Prima Seguro | Valor prima del seguro | En 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 | Sí | ||||
A1X_VEHIC | 17 | C | 8 | 0 | @! | Real | Alterar | Vehí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") | Sí | Sí | |||
A1X_PLACA | 18 | C | 8 | 0 | @! | Virtual | Visualizar | Placa | 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 | Sí | |||||
A1X_MODELO | 19 | C | 4 | 0 | @! | Virtual | Visualizar | Modelo | Año modelo | Año del autotransporte que es utilizado para transportar los bienes o mercancías. | No | Sí | |||||
A1X_CONFIG | 20 | C | 7 | 0 | @! | Virtual | Visualizar | Config.Vehic | Configuració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 | Sí | |||||
A1X_REMOLQ | 21 | C | 8 | 0 | @! | Real | Alterar | Remolque | 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 | Sí | |||
A1X_SUBREM | 22 | C | 6 | 0 | @! | Virtual | Visualizar | Sub remolque | 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. | No | Sí | |||||
A1X_PLAREM | 23 | C | 8 | 0 | @! | Virtual | Visualizar | Placa Remolq | Nú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 | Sí | |||||
A1X_UUIDCP | 24 | C | 36 | 0 | @! | Real | Real | UUID | UUID de Carta Porte | Folio del complemento Carta Porte (IdCCP) de la transacción de timbrado conforme al estándar RFC 4122, para la identificación del CFDI con complemento Carta Porte. | Sí | Sí | |||||
A1X_RISTMO | 25 | C | 1 | 0 | @! | Real | Alterar | Reg. ISTMO | Registro ISTMO | Permite registrar las regiones, sí el traslado de los bienes y/o mercancías se realiza al interior de los Polos de Desarrollo para el Bienestar del istmo de Tehuantepec. | S=Si;N=No | Pertence("SN") | No | Sí | |||
A1X_POLOOR | 26 | C | 2 | 0 | @! | Real | Alterar | Polo Origen | Polo de Origen ITSMO | Registrar la región en donde inicia el traslado de los bienes y/o mercancías al interior de los Polos de Desarrollo para el Bienestar del istmo de Tehuantepec. | MEX035 | Vazio() .or. ValidF3I("S035", M->A1X_POLOOR,1,2) | No | Sí | |||
A1X_DESPOO | 27 | C | 25 | 0 | @! | Virtual | Visualizar | Desc. Polo O | Desc. Polo Origen | Visualización de la descripción del Polo Origen del ISTMO, al informar el campo Polo Origen (A1X_POLOOR) de acuerdo al catálogo S035 - Catálogo de Registro ISTMO. | No | Sí | |||||
A1X_POLODE | 28 | C | 2 | 0 | @! | Real | Alterar | Polo Destino | Polo Destino ITSMO | Registrar la región en donde termina el traslado de los bienes y/o mercancías al interior de los Polos de Desarrollo para el Bienestar del istmo de Tehuantepec. | MEX035 | Vazio() .or. ValidF3I("S035", M->A1X_POLODE,1,2) | No | Sí | |||
A1X_DESPOD | 29 | C | 25 | 0 | @! | Virtual | Visualizar | Desc. Polo D | Desc. Polo Destino | Visualización de la descripción del Polo Destino del ISTMO, se llena al informar el campo Polo Destino (A1X_POLODE) de acuerdo al catálogo S035 - Catálogo de Registro ISTMO. | No | Sí | |||||
A1X_REGADU | 30 | C | 3 | 0 | @! | Real | Alterar | Rég. Aduana | Rég. Aduanero | Expresa el tipo de régimen que se encuentra asociado con el traslado de los bienes y/o mercancías de procedencia extranjera, cuando el atributo “TranspInternac” contenga el valor “Sí” y el campo “EntradaSalidaMerc” contenga un valor, este atributo debe existir y contener un valor del catálogo catCartaPorte:c_RegimenAduanero. | MEX037 | Vazio() .or. ValidF3I("S037", M->A1X_REGADU,1,3) | No | Sí | |||
A1X_DESREG | 31 | C | 100 | 0 | @! | Virtual | Visualizar | Desc. Rég. | Desc. Régimen Aduanero | Visualización de la descripción del Régimen Aduanero, se llena al informar el campo Rég. Aduana (A1X_REGADU) de acuerdo al catálogo S037 - Catálogo de Régimen Aduanero. | No | Sí | |||||
A1X_LOGDEV | 32 | C | 1 | 0 | @! | Real | Alterar | Log. Inversa | Log.Inv.Rec.Dev. | Expresa si se hace uso de alguno de los servicios de logística inversa, recolección o devolución para el traslado de los bienes y/o mercancías. | S=Si;N=No | Pertence("SN") | No | Sí | |||
A1X_PESOBV | 33 | N | 5 | 0 | @E 99999 | Real | Alterar | Peso Bruto V | Peso Bruto Vehícular | Peso bruto vehicular: Suma del peso vehicular y el peso de la carga, en el caso de vehículos de carga; o suma del peso vehicular y el peso de los pasajeros, equipaje y paquetería, en el caso de los vehículos destinados al servicio de pasajeros. | No | Sí | |||||
A1X_REMOL2 | 34 | C | 8 | 0 | @! | Real | Alterar | Remolque 2 | Código de remolque no 2 | 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 | Vazio() .Or. ExistCPO("DA3") | No | Sí | |||
A1X_SUBRE2 | 35 | C | 6 | 0 | @! | Virtual | Visualizar | Sub Remol. 2 | SubTipo remolque 2 | 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 | Sí | |||||
A1X_PLARE2 | 36 | C | 8 | 0 | @! | Virtual | Visualizar | Placa Remo 2 | Número de placa remolq 2 | 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 | Sí |
Indice.
Orden | Clave | Descripción | Muestra Busq. |
---|---|---|---|
1 | A1X_FILIAL+A1X_DOC+A1X_SERIE | Documento + Serie | Sí |
Nueva tabla A1Y - Carta Porte - Ubicaciones.
Campo | Orden | Tipo | Tamaño | Decimal | Formato | Contexto | Propiedad | Título | Descripción | Help | Lista | Inicializador | Modo edición | Consulta | Validación | Obligatorio | Usado |
A1Y_FILIAL | 01 | C | 8 | 0 | Real | Alterar | Sucursal | Sucursal del sistema | Código de identificación de la sucursal de la empresa usuaria del sistema. | No | No | ||||||
A1Y_DOC | 02 | C | 20 | 0 | @! | Real | Alterar | Documento | Número de docto/factura | Número de la factura. | No | Sí | |||||
A1Y_SERIE | 03 | C | 3 | 0 | !!! | Real | Alterar | Serie | Serie | Serie de la factura. | No | Sí | |||||
A1Y_ITEM | 04 | C | 2 | 0 | @! | Real | Alterar | Num. Item | Número de ítem | Consecutivo en el registro de ubicaciones. (Asignar automáticamente, relleno de ceros a la izquierda.) | No | Sí | |||||
A1Y_TIPEST | 05 | C | 1 | 0 | @! | Real | Alterar | T. Ubicación | Tipo 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 | Sí | |||
A1Y_DISREC | 06 | N | 12 | 2 | @E 999,999,999.99 | Real | Alterar | Distancia | Distancia recorrida | Distacia recorrida en kms de la ubicación Origen al Destino parcial o final. | M487VLDDIS() | No | Sí | ||||
A1Y_ORIGEN | 07 | C | 8 | 0 | @! | Real | Alterar | Id Ubicación | Id Ubicación | Cuando 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 | Sí | ||||
A1Y_RFCORI | 08 | C | 14 | 0 | @! | Real | Alterar | RFC | RFC | RFC del remitente de los bienes o mercancías que se trasladan. | Sí | Sí | |||||
A1Y_NOMORI | 09 | C | 50 | 0 | @! | Real | Alterar | Nombre | Nombre | En este campo se podrá registrar el nombre del remitente o destinatario de los bienes y/o mercancías que se trasladan. | No | Sí | |||||
A1Y_FECSAL | 10 | D | 8 | 0 | Real | Alterar | Fecha Sal/Ll | Fecha de salida/llegada | Fecha prevista de salida. | Sí | Sí | ||||||
A1Y_HRASAL | 11 | C | 8 | 0 | 99:99:99 | Real | Alterar | Hora Sal/Lle | Hora de salida/llegada | Hora estimada de salida. | "00:00:00" | Sí | Sí | ||||
A1Y_CALORI | 12 | C | 40 | 0 | @! | Real | Alterar | Calle | Calle | Calle 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. | Sí | Sí | |||||
A1Y_EXTORI | 13 | C | 5 | 0 | Real | Alterar | Num. Exterior | Número exterior | Nú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 | Sí | ||||||
A1Y_INTORI | 14 | C | 5 | 0 | Real | Alterar | Num. Interior | Número interior | Nú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 | Sí | ||||||
A1Y_EDOORI | 15 | C | 3 | 0 | @! | Real | Alterar | Estado | Estado | Estado, 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 | MEX025 | Vazio() .or. ValidF3I("S025", M->A1Y_EDOORI,1,3) | Sí | Sí | |||
A1Y_CPORI | 16 | C | 5 | 0 | Real | Alterar | C.P. | Código postal | Có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) | Sí | Sí | ||||
A1Y_COLORI | 17 | C | 4 | 0 | @! | Real | Alterar | Colonia | Colonia | Donde 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 | MEX015 | Vazio() .or. VldF3ICP("S015", M->A1Y_COLORI,1,9) | No | Sí | |||
A1Y_LOCORI | 18 | C | 2 | 0 | @! | Real | Alterar | Localidad | Localidad | Registrar 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 | MEX023 | Vazio() .or. VldF3ICP("S023", M->A1Y_LOCORI,1,5) | No | Sí | |||
A1Y_MUNORI | 19 | C | 3 | 0 | @! | Real | Alterar | Municipio | Municipio | Municipio, 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 | MEX024 | Vazio() .or. VldF3ICP("S024", M->A1Y_MUNORI,1,6) | No | Sí | |||
A1Y_PAIORI | 20 | C | 3 | 0 | @! | Real | Alterar | País | País | Clave 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 | MEX009 | Vazio() .or. ValidF3I("S009", M->A1Y_PAIORI,1,3) | Sí | Sí |
(°) 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 3.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.
Orden | Clave | Descripción | Muestra Busq. |
---|---|---|---|
1 | A1Y_FILIAL+A1Y_DOC+A1Y_SERIE+A1Y_ITEM | Documento + Serie + Num. Item | Sí |
Nueva tabla A1Z - Carta Porte - Operadores.
Campo | Orden | Tipo | Tamaño | Decimal | Formato | Contexto | Propiedad | Título | Descripción | Help | Lista | Inicializador | Modo edición | Consulta | Validación | Obligatorio | Usado |
A1Z_FILIAL | 01 | C | 8 | 0 | Real | Alterar | Sucursal | Sucursal del sistema | Código de identificación de la sucursal de la empresa usuaria del sistema. | No | No | ||||||
A1Z_DOC | 02 | C | 20 | 0 | @! | Real | Alterar | Documento | Número de docto/factura | Número de la factura. | No | Sí | |||||
A1Z_SERIE | 03 | C | 3 | 0 | !!! | Real | Alterar | Serie | Serie | Serie de la factura. | No | Sí | |||||
A1Z_ITEM | 04 | C | 2 | 0 | @! | Real | Alterar | Item | Número de ítem | Consecutivo en el registro de operadores. (Asignar automáticamente, relleno de ceros a la izquierda) | No | Sí | |||||
A1Z_OPERAD | 05 | C | 6 | 0 | @! | Real | Alterar | Operador | Código de operador | Código del operador relacionado con la tabla de conductores DA4. | DA4 | ExistCPO("DA4") | Sí | Sí | |||
A1Z_RFC | 06 | C | 14 | 0 | @! | Virtual | Visualizar | RFC | RFC operador | RFC del operador del autotransporte de carga federal en el que se trasladan los bienes o mercancías. | Sí | Sí | |||||
A1Z_LICENC | 07 | C | 11 | 0 | @! | Virtual | Visualizar | Licencia | Número de licencia | Nú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. | Sí | Sí | |||||
A1Z_NOMBRE | 08 | C | 40 | 0 | @! | Virtual | Visualizar | Nombre | Nombre operador | Nombre del operador del autotransporte de carga federal en el que se trasladan los bienes o mercancías. | Sí | Sí | |||||
A1Z_CALLE | 09 | C | 40 | 0 | @! | Virtual | Visualizar | Calle | Calle operador | Calle 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 | Sí | Sí | |||||
A1Z_NUMEXT | 10 | C | 5 | 0 | Virtual | Visualizar | Num.Exterior | Número exterior | Nú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 | Sí | ||||||
A1Z_NUMINT | 11 | C | 5 | 0 | Virtual | Visualizar | Num.Interior | Número interior | Nú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 | Sí | ||||||
A1Z_ESTADO | 12 | C | 3 | 0 | @! | Virtual | Visualizar | Estado | Estado | Clave 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 | Sí | Sí | |||||
A1Z_CP | 13 | C | 5 | 0 | Virtual | Visualizar | C.P. | Código postal | Clave 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 | Sí | Sí | ||||||
A1Z_COLON | 14 | C | 4 | 0 | @! | Virtual | Visualizar | Colonia | 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 | Sí | |||||
A1Z_LOCAL | 15 | C | 2 | 0 | @! | Virtual | Visualizar | Localidad | 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 | Sí | |||||
A1Z_MUNIC | 16 | C | 3 | 0 | @! | Virtual | Visualizar | Municipio | 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 | Sí | |||||
A1Z_PAIS | 17 | C | 3 | 0 | @! | Virtual | Visualizar | Paí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 | Sí | Sí |
Indice.
Orden | Clave | Descripción | Muestra Busq. |
---|---|---|---|
1 | A1Z_FILIAL+A1Z_DOC+A1Z_SERIE+A1Z_ITEM | Documento + Serie + Item | Sí |
Nueva tabla AE0 - Carta Porte-Propietarios/Arrendatarios.
Campo | Orden | Tipo | Tamaño | Decimal | Formato | Contexto | Propiedad | Título | Descripción | Help | Lista | Inicializador | Modo edición | Consulta | Validación | Obligatorio | Usado |
AE0_FILIAL | 01 | C | 8 | 0 | Real | Alterar | Sucursal | Sucursal del sistema | Código de identificación de la sucursal de la empresa usuaria del sistema. | No | No | ||||||
AE0_DOC | 02 | C | 20 | 0 | @! | Real | Alterar | Documento | Número docto/factura | Número de la factura. | No | Sí | |||||
AE0_SERIE | 03 | C | 3 | 0 | !!! | Real | Alterar | Serie | Serie de la factura | Serie de la factura. | No | Sí | |||||
AE0_ITEM | 04 | C | 2 | 0 | @! | Real | Alterar | Item | Número de ítem | Consecutivo en el registro de propietarios/arrendatarios. (Asignar automáticamente, relleno de ceros a la izquierda) | No | Sí | |||||
AE0_TIPO | 05 | C | 1 | 0 | @! | Real | Alterar | Tipo | Propietario/Arrendatario | Indica si el registro es de tipo Propietario o Arrendatario del vehículo de transporte. | P=Propietario;A=Arrendatario | Pertence("PA") | Sí | Sí | |||
AE0_PARTE | 06 | C | 4 | 0 | @! | Real | Alterar | Parte Transp | Parte de transporte | En 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. | MEX028 | Vazio() .or. ValidF3I("S028", M->AE0_PARTE,1,4) | Sí | Sí | |||
AE0_TRANSP | 07 | C | 6 | 0 | @! | Real | Alterar | Transportad. | Transportadora | Código del transporte relacionado con la tabla de transportadoras, SA4. | SA4 | ExistCPO("SA4") | Sí | Sí | |||
AE0_NOMBRE | 08 | C | 40 | 0 | @! | Virtual | Visualizar | Nombre | Nombre transportadora | Nombre del propietario/arrendatario del medio de transporte. | No | Sí | |||||
AE0_RFC | 09 | C | 14 | 0 | @! | Virtual | Visualizar | RFC | RFC transportadora | RFC del propietario/arrendatario del medio de transporte. | No | Sí | |||||
AE0_CALLE | 10 | C | 40 | 0 | @! | Virtual | Visualizar | Calle | Calle | Calle en que está ubicado el domicilio del propietario/arrendatario del medio de transporte. Ejemplo: Calle= Álvaro Obregón | No | Sí | |||||
AE0_NUMEXT | 11 | C | 5 | 0 | Virtual | Visualizar | Num Exterior | Número exterior | Número exterior en donde se ubica el domicilio del propietario/arrendatario del transporte. Ejemplo: NumeroExterior = 22 | No | Sí | ||||||
AE0_NUMINT | 12 | C | 5 | 0 | Virtual | Visualizar | Num Interior | Número interior | Número interior, en caso de existir, en donde se ubica el domicilio del propietario/arrendatario del autotransporte. Ejemplo: NumeroInterior = 33 | No | Sí | ||||||
AE0_ESTADO | 13 | C | 3 | 0 | @! | Virtual | Visualizar | Estado | Estado | Clave 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 | Sí | |||||
AE0_CP | 14 | C | 5 | 0 | Virtual | Visualizar | C.P. | Código postal | Clave 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 | Sí | ||||||
AE0_COLON | 15 | C | 4 | 0 | @! | Virtual | Visualizar | Colonia | 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 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 | Sí | |||||
AE0_LOCAL | 16 | C | 2 | 0 | @! | Virtual | Visualizar | Localidad | Localidad | Clave 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 | Sí | |||||
AE0_MUNIC | 17 | C | 3 | 0 | @! | Virtual | Visualizar | Municipio | Municipio | Municipio, 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 | Sí | |||||
AE0_PAIS | 18 | C | 3 | 0 | @! | Virtual | Visualizar | País | País | 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 propietario/arrendatario del transporte. Este campo debe contener una clave del catálogo c_Pais. Ejemplo: Pais= MEX | No | Sí |
Indice.
Orden | Clave | Descripción | Muestra Busq. |
---|---|---|---|
1 | AE0_FILIAL+AE0_DOC+AE0_SERIE+AE0_ITEM | Documento + Serie + Item | Sí |
Modificaciones a la tabla DA3 - Conductores.
Campo | Orden | Tipo | Tamaño | Decimal | Formato | Contexto | Propiedad | Título | Descripción | Help | Lista | Inicializador | Modo edición | Consulta | Validación | Obligatorio | Usado |
DA3_CONFIG | C | 7 | 0 | @! | Real | Alterar | Config Vehic | Configuració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. | MEX026 | Vazio() .or. ValidF3I("S026", M->DA3_CONFIG,1,7) | No | Sí | ||||
DA3_SUBREM | C | 6 | 0 | @! | Real | Alterar | Subt.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. | MEX027 | Vazio() .or. ValidF3I("S027", M->DA3_SUBREM,1,6) | No | Sí |
Modificaciones a la tabla DA4 - Vehículos.D2_LIQGR
Campos nuevos.
Campo | Orden | Tipo | Tamaño | Decimal | Formato | Contexto | Propiedad | Título | Descripción | Help | Lista | Inicializador | Modo edición | Consulta | Validación | Obligatorio | Usado |
DA4_NUMEXT | C | 5 | 0 | Real | Alterar | Num.Exterior | Número exterior | Número exterior del domicilio. | No | Sí | |||||||
DA4_NUMINT | C | 5 | 0 | Real | Alterar | Num.Interior | Número interior | Número interior del domicilio. | No | Sí | |||||||
DA4_CODBAI | C | 4 | 0 | @! | Real | Alterar | Cod. Colonia | Código de colonia | Código de la colonia correspondiente al catálogo c_Colonia del SAT. | MEX015 | Vazio() .or. ValidF3I("S015", M->DA4_CODBAI+M->DA4_CEP,1,9) | No | Sí | ||||
DA4_LOCAL | C | 2 | 0 | @! | Real | Alterar | Localidad | Localidad | Código de la localidad correspondiente al catálogo c_Localidad del SAT. | MEX023 | Vazio() .or. ValidF3I("S023", M->DA4_LOCAL+M->DA4_EST,1,5) | No | Sí |
Modificación de campos. (°)
Campo | Orden | Tipo | Tamaño | Decimal | Formato | Contexto | Propiedad | Título | Descripción | Help | Lista | Inicializador | Modo edición | Consulta | Validación | Obligatorio | Usado |
DA4_CODMUN | C | 3 | 0 | @9 | Real | Alterar | Cd.Municipio | Codigo del Municipio | Código del municipio correspondiente al catálogo c_Municipio del SAT. | MEX024 | Vazio() .Or. ValidF3I("S024", Substr(M->DA4_CODMUN,1,3)+M->DA4_EST,1,6) | No | Sí | ||||
DA4_EST | C | 3 | 0 | @! | Real | Alterar | Estado | Estado | Código del estado correspondiente al catálogo c_Estado del SAT. | MEX025 | Vazio() .or. ValidF3I("S025", M->DA4_EST,1,3) | No | Sí | ||||
DA4_PAIS | C | 3 | 0 | @! | Real | Alterar | País | Código del país | Código del país correspondiente al catálogo c_Pais del SAT. | MEX009 | Vazio() .or. ValidF3I("S009", M->DA4_PAIS,1,3) | No | Sí | ||||
DA4_CEP | C | 5 | 0 | @9 | Real | Alterar | CP | Codigo Postal | Código postal correspondiente al catálogo c_CodigoPostal del SAT. | MEX004 | Vazio() .or. ValidF3I("S004", Substr(M->DA4_CEP,1,5)+M->DA4_EST,1,8) | No | Sí | ||||
DA4_ESTCNH | C | 3 | 0 | @! | Real | Alterar | Estado Lic. | Estado licencia | Código del estado correspondiente al catálogo c_Estado del SAT. | MEX025 | Vazio() .Or. ValidF3I("S025", M->DA4_ESTCNH,1,3) | No | Sí | ||||
DA4_RGEST | C | 3 | 0 | @! | Real | Alterar | Estado ID | Estado ID | Código del estado correspondiente al catálogo c_Estado del SAT. | MEX025 | Vazio() .or. ValidF3I("S025", M->DA4_RGEST,1,3) | No | Sí | ||||
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. (°)
Campo | Orden | Tipo | Tamaño | Decimal | Formato | Contexto | Propiedad | Título | Descripción | Help | Lista | Inicializador | Modo edición | Consulta | Validación | Obligatorio | Usado |
A4_NUMEXT | C | 5 | 0 | Real | Alterar | Num Exterior | Número exterior | Número exterior del domicilio. | No | Sí | |||||||
A4_NUMINT | C | 5 | 0 | Real | Alterar | Num Interior | Número interior | Número interior del domicilio. | No | Sí | |||||||
A4_CBAIRRO | C | 4 | 0 | @! | Real | Alterar | Cod. Colonia | Codigo de colonia | Código de la colonia correspondiente al catálogo c_Colonia del SAT. | MEX015 | Vazio() .or. ValidF3I("S015", M->A4_CBAIRRO+M->A4_CEP,1,9) | No | Sí | ||||
A4_CLOCALI | C | 2 | 0 | @! | Real | Alterar | Cod.Localid. | Código localidad | Código de la localidad correspondiente al catálogo c_Localidad del SAT. | MEX023 | Vazio() .or. ValidF3I("S023", M->A4_CLOCALI+M->A4_EST,1,5) | No | Sí | ||||
A4_COD_MUN | C | 3 | 0 | @! | Real | Alterar | Cod. mun. | Codigo del municipio | Código del municipio correspondiente al catálogo c_Municipio del SAT. | MEX024 | Vazio() .or. ValidF3I("S024", Substr(M->A4_COD_MUN,1,3)+M->A4_EST,1,6) | No | Sí | ||||
A4_EST | C | 3 | 0 | @! | Real | Alterar | Estado | Estado del Transportista | Código del estado correspondiente al catálogo c_Estado del SAT. | MEX025 | Vazio() .or. ValidF3I("S025", M->A4_EST,1,3) | No | Sí | ||||
A4_CODPAIS | C | 3 | 0 | @! | Real | Alterar | Cod. pais | Codigo del pais | Código del país correspondiente al catálogo c_Pais del SAT. | MEX009 | Vazio() .or. ValidF3I("S009", M->A4_CODPAIS,1,3) | No | Sí | ||||
A4_CEP | C | 5 | 0 | @R 99999 | Real | Alterar | CP | Cod Direccion Postal | Código postal correspondiente al catálogo c_CodigoPostal del SAT. | MEX004 | Vazio() .or. ValidF3I("S004", Substr(M->A4_CEP,1,5)+M->A4_EST,1,8) | No | Sí |
(°) 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.
Campo | Orden | Tipo | Tamaño | Decimal | Formato | Contexto | Propiedad | Título | Descripción | Help | Lista | Inicializador | Modo edición | Consulta | Validación | Obligatorio | Usado |
D2_CFPS | C | 8 | 0 | @! | Virtual | Visualizar | Prod.Serv.CP | Producto / 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 | Sí | ||||||
D2_METODO | C | 1 | 0 | @! | Virtual | Visualizar | Mt.Peligroso | Material 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 | Sí | ||||||
D2_GRPCST | C | 5 | 0 | @! | Real | Alterar | Cve.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. | MEX020 | Vazio() .or. ValidF3I("S020", M->D2_GRPCST,1,5) | No | Sí | ||||
D2_TNATREC | C | 5 | 0 | @! | Real | Alterar | Embalaje | 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 | MEX021 | Vazio() .or. ValidF3I("S021", M->D2_TNATREC,1,5) | No | Sí | ||||
D2_FCICOD | C | 40 | 0 | @! | Real | Alterar | UUID Com Ext | UUID 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 | Sí | ||||||
D2_VLRFUE | N | 14 | 2 | @E 99,999,999,999.99 | Real | Alterar | Vl.Mercancía | Valor 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 | Sí | |||||
D2_CNATREC | C | 8 | 0 | @! | Real | Alterar | Id Ub Origen | Id. ubicación origen | En 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))>0 | No | Sí | |||||
D2_GRUPONC | C | 8 | 0 | @! | Real | Alterar | Id Ub Destino | Id. ubicación destino | En 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))>0 | No | Sí | |||||
D2_PEDISAT | C | 90 | 0 | @! | Real | Alterar | Num. Ped. | Número de Pedimento | En este campo se podrá registrar el número de pedimento de importación que se encuentra asociado con el traslado de los bienes y/o mercancías de procedencia extranjera para acreditar la legal estancia y tenencia durante su traslado en territorio nacional | No | Sí | ||||||
D2_PAFMD5 | C | 2 | 0 | @! | Real | Alterar | Tpo Doc Adu | Tipo de Documento Aduanero | En este campo se podrá registrar el tipo de documento aduanero que se encuentra asociado al traslado de los bienes y/o mercancías de procedencia extranjera durante su traslado en territorio nacional. | MEX038 | Vazio() .or. ValidF3I("S038", M->D2_PAFMD5,1,2) | No | Sí | ||||
D2_LIQGR | C | 50 | 0 | @! | Real | Alterar | Id Doc Aduan | Id de Documento Aduanero | En este campo se podrá registrar el identificador o folio del documento aduanero que se encuentra asociado 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. | No | Sí | ||||||
D2_NRECAGR | C | 14 | 0 | @! | Real | Alterar | RFC Imp | RFC del importador | En este campo se podrá registrar el RFC del importador de los bienes y/o mercancías que fue registrado en la documentación aduanera correspondiente y este se encuentre en la lista de RFC inscritos no cancelados del SAT (l_RFC) | No | Sí | ||||||
D2_LOTECTL | C | 10 | 0 | @! | Real | Alterar | Lote | Lote | En este campo se podrá registrar la denominación que identifica y confiere trazabilidad del medicamento, precursor, químico de uso dual, psicotrópico o estupefaciente elaborado en un ciclo de producción, bajo condiciones equivalentes de operación y durante un periodo. | LocXVlot() | No | Sí | |||||
D2_DTVALID | D | 8 | 0 | @! | Real | Alterar | Fecha cad | Fecha caducidad | En este campo se podrá registrar la fecha de caducidad del medicamento, psicotrópico o estupefaciente; o para expresar la fecha de reanálisis del precursor o químico de uso dual que se traslada a través de los distintos medios de transporte. Se expresa en la forma AAAA-MM-DD. | M->D2_DTVALID >= dDataBase | No | Sí |
Modificaciones a la tabla SF2 - Encabezado de factura de salida.
Campo | Orden | Tipo | Tamaño | Decimal | Formato | Contexto | Propiedad | Título | Descripción | Help | Lista | Inicializador | Modo edición | Consulta | Validación | Obligatorio | Usado |
F2_TPCOMPL | C | 1 | 0 | @! | Real | Alterar | Carta 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") | Sí | Sí |
Modificaciones a la tabla SB1 - Productos.
Campo | Orden | Tipo | Tamaño | Decimal | Formato | Contexto | Propiedad | Título | Descripción | Help | Lista | Inicializador | Modo edición | Validación | Obligatorio | Usado |
B1_TPCLAS | C | 1 | 0 | @! | Real | Alterar | Mat. Peligroso | Material Peligroso | Indica si el material será considerado o no como material peligroso, la selección será mostrada en el Complemento de Carta Porte | 0=No;1=Sí; | ObtColSAT("S019",M->B1_PRODSAT,1,8,189,3) =='0,1' | Pertence(" 01") | No | Sí |
Modificaciones a la tabla SB5 - Datos Adicionales del Producto.
Campo | Orden | Tipo | Tamaño | Decimal | Formato | Contexto | Propiedad | Título | Descripción | Help | Inic. estándar | Validación | When | Consulta | Obligatorio | Usado |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
B5_SECTOR | C | 2 | 0 | @! | Real | Alterar | Sec.COFEPRIS | Sector COFEPRIS | Expresa la clasificación del producto que se traslada a través de los distintos medios de transporte y que debe contar con autorización por la autoridad correspondiente. Utilizado para el complemento de Carta porte. | Vazio() .or. ValidF3I("S032", M->B5_SECTOR,1,2) | MEX032 | No | Sí | |||
B5_DESCSEC | C | 50 | 0 | @! | Virtual | Visualizar | Desc. Sector | Descripción Sector COFEPR | Visualización de la descripción del Sector COFEPRIS, se llena al informar el campo Sec.COFEPRIS (B5_SECTOR) de acuerdo al catálogo S032 - Catálogo de Sector COFEPRIS. | IIf(FindFunction("LXMXF3IDES"),LXMXF3IDES(1,M->B5_SECTOR),"") | No | Sí | ||||
B5_NOMGER | M | 10 | 0 | @! | Real | Alterar | Nom.Gen.Prod | Nombre Genérico del Prod. | Fármaco o la sustancia activa del medicamento, psicotrópico o estupefaciente. Utilizado para el complemento de Carta porte. | M->B5_SECTOR $ "01|03" | No | Sí | ||||
B5_NOMCOME | M | 10 | 0 | @! | Real | Alterar | Marca Comerc | Marca comercial | Marca con la que se comercializa el producto o nombre que le asigna el laboratorio o fabricante a sus especialidades farmacéuticas con el fin de distinguirlas de otras similares del medicamento, psicotrópico o estupefaciente. Utilizado para el complemento de Carta porte. | M->B5_SECTOR $ "01|03" | No | Sí | ||||
B5_FABRICA | M | 10 | 0 | @! | Real | Alterar | Fabricante | Datos del Fabricante | Nombre o razón social del establecimiento que realiza la fabricación o manufactura del medicamento, precursor, químico de uso dual, psicotrópico o estupefaciente. Utilizado para el complemento de Carta porte. | M->B5_SECTOR $ "01|02|03|05" | No | Sí | ||||
B5_CODFORM | C | 2 | 0 | @! | Real | Alterar | Cód.For.Farm | Código Forma Farmacéutica | Forma farmacéutica o mezcla del medicamento, precursor, químico de uso dual, psicotrópico o estupefaciente que presenta ciertas características físicas para su adecuada dosificación, conservación y administración. Utilizado para el complemento de Carta porte. | Vazio() .or. ValidF3I("S034", M->B5_CODFORM,1,2) | M->B5_SECTOR $ "01|02|03" | MEX034 | No | Sí | ||
B5_DESCFOR | C | 50 | 0 | @! | Virtual | Visualizar | Desc.Form.Fa | Desc.Form.Farmacéutica | Visualización de la descripción de la Forma Farmacéutica, se llena al informar el campo Cód.For.Farm (B5_CODFORM) de acuerdo al catálogo S034 - Catálogo de Forma Farmacéutica. | IIf(FindFunction("LXMXF3IDES"),LXMXF3IDES(3,M->B5_CODFORM),"") | No | Sí | ||||
B5_CONDIC | C | 2 | 0 | @! | Real | Alterar | Cond. Esp Tr | Código Condicion de Trans | Condición en la cual es necesario mantener el medicamento, precursor, químico de uso dual, psicotrópicos o estupefacientes durante el traslado y almacenamiento. Utilizado para el complemento de Carta porte. | Vazio() .or. ValidF3I("S036", M->B5_CONDIC,1,2) | M->B5_SECTOR $ "01|02|03" | MEX036 | No | Sí | ||
B5_DESCCON | C | 50 | 0 | @! | Virtual | Visualizar | Desc.Cond.Es | Desc. Condición Especial | Visualización de la descripción del Sector COFEPRIS, se llena al informar el campo Sec.COFEPRIS (B5_SECTOR) de acuerdo al catálogo S032 - Catálogo de Sector COFEPRIS. | IIf(FindFunction("LXMXF3IDES"),LXMXF3IDES(4,M->B5_CONDIC),"") | No | Sí | ||||
B5_REGSAN | C | 15 | 0 | @! | Real | Alterar | Reg. Sanitar | Registro Sanitario | Registro sanitario o folio de autorización con el que cuenta la empresa para el traslado del medicamento, psicotrópico o estupefaciente. | M->B5_SECTOR $ "01|02|03" | No | Sí | ||||
B5_PERIMP | C | 6 | 0 | @! | Real | Alterar | Permiso Imp | Folio Permiso Importación | Folio del permiso de importación con el que cuenta el medicamento, precursor, químico de uso dual, psicotrópico o estupefaciente. Utilizado para el complemento de Carta porte. | M->B5_SECTOR $ "01|02|03" | No | Sí | ||||
B5_VUCEM | C | 25 | 0 | @! | Real | Alterar | VUCEM | Folio VUCEM | Número de folio de importación VUCEM para la identificación del documento, para el traslado de medicamentos, precursores o químicos de uso dual, sustancias tóxicas, plaguicidas o fertilizantes. | M->B5_SECTOR == "04" | No | Sí | ||||
B5_INGREDI | M | 10 | 0 | @! | Real | Alterar | Ing. Activo | Ingrediente Activo | Nombre común del ingrediente activo de los precursores, químicos de uso dual, plaguicidas o fertilizantes. Utilizado para el complemento de Carta porte. | M->B5_SECTOR $ 02|05" | No | Sí | ||||
B5_SUSACT | M | 10 | 0 | @! | Real | Alterar | Sust. Activa | Sustancia Activa | Nombre de la sustancia activa de los precursores, químicos de uso dual o sustancias tóxicas. Utilizado para el complemento de Carta porte. | No | Sí | |||||
B5_CAS | C | 15 | 0 | @! | Real | Alterar | CAS | CAS | Número Chemical Abstracts Service (CAS). Utilizado para el complemento de Carta porte. | M->B5_SECTOR == "04" | No | Sí | ||||
B5_EMPIMP | M | 10 | 0 | @! | Real | Alterar | Emp. Importa | Empresa Importadora | Nombre o razón social de la empresa importadora de las sustancias tóxicas.Utilizado para el complemento de Carta porte. | M->B5_SECTOR == "04" | No | Sí | ||||
B5_DATFOR | M | 10 | 0 | @! | Real | Alterar | Formulador | Formulador | Registrar el país y nombre o razón social de quien formula el ingrediente activo del plaguicida o fertilizante. | M->B5_SECTOR == "05" | No | Sí | ||||
B5_DATMAQ | M | 10 | 0 | @! | Real | Alterar | Maquilador | Maquilador | Registrar el país y nombre o razón social de quien maquila el ingrediente activo del plaguicida o fertilizante. Utilizado para el complemento de Carta porte. | M->B5_SECTOR == "05" | No | Sí | ||||
B5_USOAUT | M | 10 | 0 | @! | Real | Alterar | Uso autorizado | Uso autorizado | Registrar el uso autorizado del plaguicida o fertilizante de acuerdo a la regulación del país. Utilizado para el complemento de Carta porte. | M->B5_SECTOR == "05" | No | Sí | ||||
B5_TPOMAT | C | 2 | 0 | @! | Real | Alterar | Tipo Materia | Tipo Materia | Estado de la materia o producto al realizar una operación de comercio exterior a través de los distintos medios de transporte. Utilizado para el complemento de Carta porte. | Vazio() .or. ValidF3I("S033", M->B5_TPOMAT,1,2) | MEX033 | No | Sí | |||
B5_DESMAT | C | 50 | 0 | @! | Virtual | Visualizar | Desc. Tpo.Mat | Desc. Tipo Materia | Visualización de la descripción del Tipo de Materia se llena al informar el campo Tipo Materia (B5_TPOMAT) de acuerdo al catálogo S033 - Catálogo de Tipo Materia. | IIf(FindFunction("LXMXF3IDES"),LXMXF3IDES(2,M->B5_TPOMAT),"") | No | Sí | ||||
B5_OTROS | M | 10 | 0 | @! | Real | Alterar | Otros | Otros | Cuando "TipoMateria" contenga el valor "05" con descripción "Otra", este dato debe existir, en caso contrario se debe omitir. Utilizado para el complemento de Carta porte. | No | Sí |
Aviso
Las modificaciones y nuevos campos para versión Carta Porte 3.0 fueron incluidas en el pacote 013132 - DMINA-21262 - COMPLEMENTO DE CARTA PORTE (CCP) v3.0.
Consultas Estándar;
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 |
---|---|---|---|---|---|
MEX015 | 1 | 01 | RE | Colonias | F3I |
MEX015 | 2 | 01 | 01 | F812SXB('S015','Clave') | |
MEX015 | 5 | 01 | VAR_IXB |
Creación de la consulta específica MEX017 - Clave del Transporte.
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
---|---|---|---|---|---|
MEX017 | 1 | 01 | RE | Clave del Transporte | F3I |
MEX017 | 2 | 01 | 01 | F812SXB('S017','Transp') | |
MEX017 | 5 | 01 | VAR_IXB |
Creación de la consulta específica MEX018 - Tipo de Estación.
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
---|---|---|---|---|---|
MEX018 | 1 | 01 | RE | Tipo de Estación | F3I |
MEX018 | 2 | 01 | 01 | F812SXB('S018','Estacion') | |
MEX018 | 5 | 01 | VAR_IXB |
Creación de la consulta específica MEX019 - Prods y Servs CP.
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
---|---|---|---|---|---|
MEX019 | 1 | 01 | RE | Prods y Servs CP | F3I |
MEX019 | 2 | 01 | 01 | F812SXB('S019','Producto') | |
MEX019 | 5 | 01 | VAR_IXB |
Creación de la consulta específica MEX020 - Material Peligroso.
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
---|---|---|---|---|---|
MEX020 | 1 | 01 | RE | Material Peligroso | F3I |
MEX020 | 2 | 01 | 01 | F812SXB('S020','Material') | |
MEX020 | 5 | 01 | VAR_IXB |
Creación de la consulta específica MEX021 - Tipo de Embalaje.
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
---|---|---|---|---|---|
MEX021 | 1 | 01 | RE | Tipo de Embalaje | F3I |
MEX021 | 2 | 01 | 01 | F812SXB('S021','Embalaje') | |
MEX021 | 5 | 01 | VAR_IXB |
Creación de la consulta específica MEX022 - Tipo Permiso.
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
---|---|---|---|---|---|
MEX022 | 1 | 01 | RE | Tipo Permiso | F3I |
MEX022 | 2 | 01 | 01 | F812SXB('S022','Permiso') | |
MEX022 | 5 | 01 | VAR_IXB |
Creación de la consulta específica MEX023 - Localidades.
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
---|---|---|---|---|---|
MEX023 | 1 | 01 | RE | Localidades | F3I |
MEX023 | 2 | 01 | 01 | F812SXB('S023','Localidad') | |
MEX023 | 5 | 01 | VAR_IXB |
Creación de la consulta específica MEX024 - Municipios.
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
---|---|---|---|---|---|
MEX024 | 1 | 01 | RE | Municipios | F3I |
MEX024 | 2 | 01 | 01 | F812SXB('S024','Municipio') | |
MEX024 | 5 | 01 | VAR_IXB |
Creación de la consulta específica MEX025 - Estados.
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
---|---|---|---|---|---|
MEX025 | 1 | 01 | RE | Estados | F3I |
MEX025 | 2 | 01 | 01 | F812SXB('S025','Estado') | |
MEX025 | 5 | 01 | VAR_IXB |
Creación de la consulta específica MEX026 - Autotransporte Fed..
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
---|---|---|---|---|---|
MEX026 | 1 | 01 | RE | Autotransporte Fed. | F3I |
MEX026 | 2 | 01 | 01 | F812SXB('S026','Clave') | |
MEX026 | 5 | 01 | VAR_IXB |
Creación de la consulta específica MEX027 - Tipo de Remolque.
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
---|---|---|---|---|---|
MEX027 | 1 | 01 | RE | Tipo de Remolque | F3I |
MEX027 | 2 | 01 | 01 | F812SXB('S027','Remolque') | |
MEX027 | 5 | 01 | VAR_IXB |
Creación de la consulta específica MEX028 - Parte Transporte.
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
---|---|---|---|---|---|
MEX028 | 1 | 01 | RE | Parte Transporte | F3I |
MEX028 | 2 | 01 | 01 | F812SXB('S028','Codigo') | |
MEX028 | 5 | 01 | VAR_IXB |
Modificación de la consulta específica MEX004 - Códigos Postales. (°)
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
---|---|---|---|---|---|
MEX004 | 2 | F812SXB('S004','Codigo') |
(°) Nota:
En esta consulta, ya existente, solo se actualiza el registro Tipo 2 con el Contenido que se indica.
Creación de la consulta específica MEX032 - Sector COFEPRIS.
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
---|---|---|---|---|---|
MEX032 | 1 | 01 | RE | Sector COFEPRIS | F3I |
MEX032 | 2 | 01 | 01 | F812SXB("S032","Clave") | |
MEX032 | 5 | 01 | VAR_IXB |
Creación de la consulta específica MEX033 - Tipo Materia.
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
---|---|---|---|---|---|
MEX033 | 1 | 01 | RE | Tipo Materia | F3I |
MEX033 | 2 | 01 | 01 | F812SXB("S033","Clave") | |
MEX033 | 5 | 01 | VAR_IXB |
Creación de la consulta específica MEX034 - Forma Farmacéutica.
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
---|---|---|---|---|---|
MEX034 | 1 | 01 | RE | Forma Farmacéutica | F3I |
MEX034 | 2 | 01 | 01 | F812SXB("S034","Clave") | |
MEX034 | 5 | 01 | VAR_IXB |
Creación de la consulta específica MEX035 - Registro ISTMO.
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
---|---|---|---|---|---|
MEX035 | 1 | 01 | RE | Registro ISTMO | F3I |
MEX035 | 2 | 01 | 01 | F812SXB("S035","Clave") | |
MEX035 | 5 | 01 | VAR_IXB |
Creación de la consulta específica MEX036 - Cond. Especial Trasp.
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
---|---|---|---|---|---|
MEX036 | 1 | 01 | RE | Cond. Especial Trasp | F3I |
MEX036 | 2 | 01 | 01 | F812SXB("S036","Clave") | |
MEX036 | 5 | 01 | VAR_IXB |
Creación de la consulta específica MEX037 - Régimen Aduanero.
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
---|---|---|---|---|---|
MEX037 | 1 | 01 | RE | Régimen Aduanero | F3I |
MEX037 | 2 | 01 | 01 | F812SXB("S037","Clave") | |
MEX037 | 5 | 01 | VAR_IXB |
Creación de la consulta específica MEX038 - Documento Aduanero.
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
---|---|---|---|---|---|
MEX038 | 1 | 01 | RE | Documento Aduanero | F3I |
MEX038 | 2 | 01 | 01 | F812SXB("S038","Clave") | |
MEX038 | 5 | 01 | VAR_IXB |
Aviso
Las consultas especificas "MEX032, MEX033, MEX034, MEX035, MEX036, MEX037 y MEX038" fueron incluidas en el pacote 013132 - DMINA-21262 - COMPLEMENTO DE CARTA PORTE (CCP) v3.0.
Disparadores
Campo | Secuencia | C. Dominio | Tipo | Regla | Posiciona | Alias | Orden | Clave | Condición |
A1Y_CPDES | 1 | A1Y_EDODES | P - Primario | ObtColSAT("S004",M->A1Y_CPDES,1,5,6,3) | N - No | 0 | !EMPTY(M->A1Y_CPDES) | ||
A1Y_CPDES | 2 | A1Y_LOCDES | P - Primario | ObtColSAT("S004",M->A1Y_CPDES,1,5,12,2) | N - No | 0 | !EMPTY(M->A1Y_CPDES) | ||
A1Y_CPDES | 3 | A1Y_MUNDES | P - Primario | ObtColSAT("S004",M->A1Y_CPDES,1,5,9,3) | N - No | 0 | !EMPTY(M->A1Y_CPDES) | ||
A1Y_CPORI | 1 | A1Y_EDOORI | P - Primario | ObtColSAT("S004",M->A1Y_CPORI,1,5,6,3) | N - No | 0 | !EMPTY(M->A1Y_CPORI) | ||
A1Y_CPORI | 2 | A1Y_LOCORI | P - Primario | ObtColSAT("S004",M->A1Y_CPORI,1,5,12,2) | N - No | 0 | !EMPTY(M->A1Y_CPORI) | ||
A1Y_CPORI | 3 | A1Y_MUNORI | P - Primario | ObtColSAT("S004",M->A1Y_CPORI,1,5,9,3) | N - No | 0 | !EMPTY(M->A1Y_CPORI) | ||
A1Y_EDODES | 1 | A1Y_CPDES | P - Primario | Space(Len(M->A1Y_CPDES)) | N - No | 0 | |||
A1Y_EDODES | 2 | A1Y_COLDES | P - Primario | Space(Len(M->A1Y_COLDES)) | N - No | 0 | |||
A1Y_EDODES | 3 | A1Y_LOCDES | P - Primario | Space(Len(M->A1Y_LOCDES)) | N - No | 0 | |||
A1Y_EDODES | 4 | A1Y_MUNDES | P - Primario | Space(Len(M->A1Y_MUNDES)) | N - No | 0 | |||
A1Y_EDODES | 5 | A1Y_PAIDES | P - Primario | ObtColSAT("S025",M->A1Y_EDODES,1,3,4,3) | N - No | 0 | !EMPTY(M->A1Y_EDODES) | ||
A1Y_EDOORI | 1 | A1Y_CPORI | P - Primario | Space(Len(M->A1Y_CPORI)) | N - No | 0 | |||
A1Y_EDOORI | 2 | A1Y_COLORI | P - Primario | Space(Len(M->A1Y_COLORI)) | N - No | 0 | |||
A1Y_EDOORI | 3 | A1Y_LOCORI | P - Primario | Space(Len(M->A1Y_LOCORI)) | N - No | 0 | |||
A1Y_EDOORI | 4 | A1Y_MUNORI | P - Primario | Space(Len(M->A1Y_MUNORI)) | N - No | 0 | |||
A1Y_EDOORI | 5 | A1Y_PAIORI | P - Primario | ObtColSAT("S025",M->A1Y_EDOORI,1,3,4,3) | N - No | 0 | !EMPTY(M->A1Y_EDOORI) | ||
A4_CEP | 1 | A4_EST | P - Primario | ObtColSAT("S004",M->A4_CEP,1,5,6,3) | N - No | 0 | !EMPTY(M->A4_CEP) | ||
A4_CEP | 2 | A4_CLOCALI | P - Primario | ObtColSAT("S004",M->A4_CEP,1,5,12,2) | N - No | 0 | !EMPTY(M->A4_CEP) | ||
A4_CEP | 3 | A4_COD_MUN | P - Primario | ObtColSAT("S004",M->A4_CEP,1,5,9,3) | N - No | 0 | !EMPTY(M->A4_CEP) | ||
A4_EST | 1 | A4_CEP | P - Primario | Space(Len(M->A4_CEP)) | N - No | 0 | |||
A4_EST | 2 | A4_CBAIRRO | P - Primario | Space(Len(M->A4_CBAIRRO)) | N - No | 0 | |||
A4_EST | 3 | A4_CLOCALI | P - Primario | Space(Len(M->A4_CLOCALI)) | N - No | 0 | |||
A4_EST | 4 | A4_COD_MUN | P - Primario | Space(Len(M->A4_COD_MUN)) | N - No | 0 | |||
A4_EST | 5 | A4_CODPAIS | P - Primario | ObtColSAT("S025",M->A4_EST,1,3,4,3) | N - No | 0 | !EMPTY(M->A4_EST) | ||
DA4_CEP | 1 | DA4_EST | P - Primario | ObtColSAT("S004",M->DA4_CEP,1,5,6,3) | N - No | 0 | !EMPTY(M->DA4_CEP) | ||
DA4_CEP | 2 | DA4_LOCAL | P - Primario | ObtColSAT("S004",M->DA4_CEP,1,5,12,2) | N - No | 0 | !EMPTY(M->DA4_CEP) | ||
DA4_CEP | 3 | DA4_CODMUN | P - Primario | ObtColSAT("S004",M->DA4_CEP,1,5,9,3) | N - No | 0 | !EMPTY(M->DA4_CEP) | ||
DA4_EST | 1 | DA4_CEP | P - Primario | Space(Len(M->DA4_CEP)) | N - No | 0 | |||
DA4_EST | 2 | DA4_CODBAI | P - Primario | Space(Len(M->DA4_CODBAI)) | N - No | 0 | |||
DA4_EST | 3 | DA4_LOCAL | P - Primario | Space(Len(M->DA4_LOCAL)) | N - No | 0 | |||
DA4_EST | 4 | DA4_CODMUN | P - Primario | Space(Len(M->DA4_CODMUN)) | N - No | 0 | |||
DA4_EST | 5 | DA4_PAIS | P - Primario | ObtColSAT("S025",M->DA4_EST,1,3,4,3) | N - No | 0 | !EMPTY(M->DA4_EST) | ||
D2_COD | 6 | D2_METODO | P - Primario | IIf(FindFunction("LxMxDatPro"),LxMxDatPro(M->D2_COD),"") | N - No | 0 | |||
D2_COD | 7 | D2_CFPS | P - Primario | SB1->B1_PRODSAT | S - Si | SB1 | 1 | xFilial()+M->D2_COD | |
B5_SECTOR | 1 | B5_DESCSEC | P - Primario | IIf(FindFunction("LXMXF3IDES"),LXMXF3IDES(1,M->B5_SECTOR),"") | N - No | 0 | |||
B5_TPOMAT | 1 | B5_DESMAT | P - Primario | IIf(FindFunction("LXMXF3IDES"),LXMXF3IDES(2,M->B5_TPOMAT),"") | N - No | ||||
B5_CODFORM | 1 | B5_DESCFOR | P - Primario | IIf(FindFunction("LXMXF3IDES"),LXMXF3IDES(3,M->B5_CODFORM),"") | N - No | ||||
B5_CONDIC | 1 | B5_DESCCON | P - Primario | IIf(FindFunction("LXMXF3IDES"),LXMXF3IDES(4,M->B5_CONDIC),"") | N - No |
Aviso
Los disparadores con orden 006 y 007 para el campo D2_COD fueron incluidos en el pacote 009897 - DMINA-14383 FUNCIONALIDAD DE CARTA PORTE VERSION.
Menú SIGAFAT
Nuevas opciones de menú de catálogos en el módulo SIGAFAT:
Menú | Submenú | Nombre de la Rutina | Programa | Módulo | Tipo |
Actualizaciones | Archivos | Tipos de Vehículo | TMSA530 | Facturación | Función Protheus |
Actualizaciones | Archivos | Vehículos | OMSA060 | Facturación | Función Protheus |
Actualizaciones | Archivos | Conductores | OMSA040 | Facturación | Función Protheus |
05. BITACORA DE CAMBIOS
5.1 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:
- Dentro de la rutina de Carga de Catálogos en formato .csv (FISA814), en la función encargada de Insertar los registros en la tabla de Catálogos (f814ReadFile), se toma de forma dinámica el tamaño del campo secuencia (F3I_SEQUEN) al momento de realizar la inserción de registros.
- Para que la inserción masiva de registros en la tabla Catálogos (F3I) sea más eficiente, se implementa la clase FWBulk.
Paquete:
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 |
5.2 Carta Porte con versión CFDI 4.0
Con fecha 30 de diciembre de 2021 el Servicio de Administración Tributaria (SAT) da a conocer cambios a la versión 2.0 del Complemento Carta Porte (CCP) del Comprobante Fiscal Digital por Internet (CFDI), aplicable a la versión CFDI 4.0:
Actualización de las direcciones URL de los esquemas XML y XSD para actualizarlos a CFDI 4.0:
- Se actualizan los siguientes catálogos.
- Productos/Servicios Carta Porte - C_ClaveProdServCP
El catálogo de claves de productos y servicios mantiene la versión 2.0, pero se actualiza a la Revisión “A”, y actualizando los siguientes conceptos para señalar que en el campo “Material peligroso” pueden contener 0 o 1. Antes se preveía solamente el 0.
- Estibas
- Empaques (Embalaje, Paquetería)
Para descargar los catálogos actualizados - Catálogos Carta Porte - Uso CFDI - c_UsoCFDI
Si el documento realizado es de tipo Traslado, el uso de CFDI debe ser "S01", por lo cual se requiere actualizar el catalogo.
Para descargar los catálogos actualizados - Catálogos CFDI versión 4.0
Con fecha 31 de diciembre de 2021 el Servicio de Administración Tributaria (SAT) actualiza los instructivos de llenado del Comprobante Fiscal Digital por Internet (CFDI) con Complemento Carta Porte (CCP).
- Uso CFDI
Si es documento de tipo traslado, el uso de CFDI debe ser S01.
Para esto, es necesario tener la actualización del CFDI 4.0, puede ver detalles en DT CFDI Versión 4.0
En el caso de Carta Porte en Facturas de Traslado, el atributo uso de CFDI cambia el código de "P01 - Por definir" a "S01 - Sin obligaciones fiscales".
- En el módulo Facturación (SIGAFAT) ir al menú Actualizaciones | Facturación | Facturaciones (MATA467N).
- Incluir una Factura de Venta de tipo Traslado.
- Informar el campo ¿Carta Porte? (F2_TPCOMPL) con el valor S-Si.
- Informar el campo Uso CFDI (F2_USOCFDI) con valor S01.
- En el detalle informar:
El o los productos a transportar (mercancías), utilizando una TES (D2_TES - Tipo de Salida) sin afectar stock ni financiero y sin cálculo de Impuesto.
IMPORTANTE
Si el Producto es considerado como material peligroso según la columna Material peligroso del catálogo c_ClaveProdServCP (S020) del SAT, se deben informar los campos Cve.Mat.Pel. (D2_GRPCST) y Embalaje (D2_TNATREC), en caso de no informar los campos en el detalle, se presenta el siguiente mensaje y no se permite cambiar de ítem o guardar el documento:
- Desde Otras acciones ejecutar la acción Carta Porte.
Informar los datos para el Complemento de Carta Porte y presionar Confirmar.
IMPORTANTE
Es necesario informar los datos de la sección Ubicaciones, registrando al menos un Origen y/o Destino, e indicando el campo RFC (A1Y_RFCORI) en cada caso.
- Presionar Grabar para confirmar el guardado de la Factura de Traslado,
- Confirmar la generación del comprobante fiscal digital
- Confirmar el timbrado del comprobante fiscal digital.
- Validar que el timbrado haya sido exitoso, que en el XML se visualice el nodo CartaPorte30, que los XSD y versión correspondan a la versión 4.0 y el uso de CFDI igual a S01
Ejemplo:
5.3 Carta Porte con atributo MaterialPeligroso para Bienes con código de material peligroso "0,1"
Para los Productos, se añade el nuevo campo Mat. Peligroso (B1_TPCLAS) el cual es editable cuando el producto indicado en Producto/Servicio SAT(B1_PRODSAT) cuenta como código de material peligroso el valor "0,1" en el catálogo S019 - Catalogo Producto/Servicio CP; en el campo se podrá indicar la opción Si o No, y será el valor a mostrar en el atributo "Mercancia:MaterialPeligroso".
- Productos(MATA010)
- Catálogo S019 - Catalogo Producto/Servicio CP
- Generacion de XML
Actualizaciones a diccionario realizadas en el paquete de actualización 010110.
Tabla SB1 - Productos:
Campo | Contenido |
---|---|
Campo | B1_TPCLAS |
Tipo | 1 - Caracter |
Tamaño | 1 |
Decimal | 0 |
Formato | !@ |
Contexto | Real |
Propiedad | Modificar |
Tit. Español | Mt.Peligroso |
Des. Español | Material peligroso |
Lista Opciones | 0=No;1=Si; |
Modo Edicion | ObtColSAT("S019",M->B1_PRODSAT,1,8,189,3) =='0,1' |
Validación | Pertence(" 01") |
Usado | Si |
Help | Indica si será considerado o no como material peligroso, la selección será mostrada en el Complemento de Carta Porte |
5.3 - Ajustes del Atributo ObjetoImp de una Factura de Venta (NF)
Producto | TOTVS Backoffice | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | Línea Protheus | ||||||||||||
Segmento: | Backoffice | ||||||||||||
Módulo: | SIGAFAT - Facturación | ||||||||||||
Función: |
| ||||||||||||
País: | México (Pacote: 012207) | ||||||||||||
Ticket: | No aplica | ||||||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-19024 |
Se solicita realizar ajustes para permitir al usuario modificar el valor del atributo ObjetoImp, para el timbrado de Facturas de Venta (NF) de tipo Ingreso (Normal) cuando se tiene complemento con Carta Porte, permitiendo utilizar los valores que se definen en el catálogo del SAT c_ObjetoImp:
En la rutina de Carga de Catálogos (FISA814):
Se realizó ajuste para que al entrar a las rutinas de Definición de Catálogos (FISA812) o Mantenimiento de Catálogos (FISA813), si en la ruta local definida en el parámetro MV_PATH814 existe el archivo c_ObjetoImp.csv, se realice la carga de la estructura y datos de la tabla S031 - Catálogo de Objeto de Impuesto.
En la rutina de Funciones Genéricas de Notas Fiscales (LOCXFUNA):
Se realizaron ajustes para:
- Acumular el valor de impuestos, sumando Traslados y restando las Retenciones, para cuando el campo Objeto Imp (D2_NIT) contiene los valores 01, 03 o 04.
- No generar el nodo de Impuestos, para los Conceptos, si el campo Objeto Imp (D2_NIT) contiene los valores 01, 03 o 04.
En el archivo de Generación de XML de Documentos de Salida (FATSMEX.INI):
Se realizaron los siguientes ajustes:
- Restar el valor de Impuestos (Traslados menos Retenciones), del atributo Total, de los ítems que el campo Objeto Imp (D2_NIT) contiene los valores 01, 03 o 04.
- La generación de los datos del Complemento de Impuestos Locales para la Cadena Original se generen después de los datos del Complemento de Carta Porte.
IMPORTANTE
La funcionalidad del campo Objeto Imp (D2_NIT), solo aplica para Facturas con Complemento de Carta Porte, y en caso de no existir el campo o estar vacío, se tomará la funcionalidad anterior para la generación del nodo de Impuestos por Concepto.
En el archivo FATSMEX.INI, se deberán realizar los siguientes ajustes:
//FATSMEX.INI V4.0 --- Modelo 2022
[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[009] := SuperGetMV("MV_CFDICPG", .F., "")
(PRE) _aTotal[010] := FindFunction("zh_FechaHoraUTC") .And. !Empty(_aTotal[009])
(PRE) _aTotal[011] := FindFunction("LxFunaCaPo")
(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[039] := SuperGetMV("MV_CFDIEXP",.F.,.F.)
(PRE) _aTotal[075] := Alltrim(SM0->M0_NOMECOM)
(PRE) _aTotal[076] := ((_aTotal[039] .And. !Empty(SF2->F2_TIPOPE)) .Or. SF2->(ColumnPos("F2_TPCOMPL")) > 0 .And. AllTrim(SF2->F2_TPCOMPL)=="S") .And. Alltrim(SF2->F2_TIPODOC) == "21"
(PRE) IIf(_aTotal[010],_aTotal[096] := zh_FechaHoraUTC(Alltrim(_aTotal[009]),Alltrim(SM0->M0_CEPENT),SF2->F2_EMISSAO,SF2->F2_HORA),"")
(PRE) IIf(!_aTotal[010],_aTotal[096] := DtoS(SF2->F2_EMISSAO),"")
(PRE) IIf(!_aTotal[010],_aTotal[096] := Left(_aTotal[096],4) + "-" + Substr(_aTotal[096],5,2)+ "-" + Right(_aTotal[096],2),"")
(PRE) IIf(!_aTotal[010],_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(Alltrim(SF2->F2_TIPODOC) == "21",0,2)
(PRE) _aTotal[107] := IIf(SF2->(ColumnPos("F2_TPDOC")) > 0,ALLTRIM(SF2->F2_TPDOC),ALLTRIM(AI0->AI0_MPAGO))
(PRE) _aTotal[108] := IIf(_aTotal[076],AllTrim(SM0->M0_CGC),AllTrim(SA1->A1_CGC))
(PRE) _aTotal[109] := IIf(_aTotal[076],_aTotal[075],Alltrim(SA1->A1_NOME))
(PRE) _aTotal[110] := IIf(_aTotal[076],AllTrim(SM0->M0_CEPENT),Alltrim(SA1->A1_CEP))
(PRE) _aTotal[111] := IIf(_aTotal[076],Alltrim(SM0->M0_DSCCNA),Alltrim(AI0->AI0_REGFIS))
(PRE) _aTotal[112] := FormPagGlo(SF2->F2_DOC,SF2->F2_SERIE)
(PRE) _aTotal[113] := IIf(!_aTotal[039] .Or. (_aTotal[039] .And. Empty(SF2->F2_TIPOPE)),"01",IIf(SF2->F2_CVEPED !="A1" .Or. Alltrim(SF2->F2_TIPOPE)== "3","04","02"))
(PRE) _aTotal[114] := IIf(_aTotal[113] == "04" .And.( Empty(SF2->F2_CERORI) .Or. Empty(SF2->F2_INCOTER) .Or. Empty(SF2->F2_SUBDIV) .Or. Empty(SF2->F2_TCUSD) .Or. Empty(SF2->F2_TOTUSD)) ,.F.,.T.)
(PRE) _aTotal[115] := {}
(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], ,@_aTotal[115])
[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) .And. _aTotal[114], .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 += "4.0" + _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',IIf(!Empty(_aTotal[112]),_aTotal[112],_aTotal[107]),IIf(Empty(_aTotal[107]).Or. Alltrim(SE4->E4_MPAGSAT) == "PPD","99",_aTotal[107])) + _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+F2_FRETE+F2_SEGURO+F2_DESPESA) + _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(Alltrim(SF2->F2_TIPODOC) == "21","XXX",Alltrim(CTO->CTO_MOESAT)) + _aTotal[098]
//TipoCambio
(PRE) cCadOrig += IIf(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] - IIf(Len(_aTotal[115]) > 0,_aTotal[115][1],0),Round(SF2->F2_VALBRUT,2) + _aTotal[103] - _aTotal[037] - IIf(Len(_aTotal[115]) > 0,_aTotal[115][1],0))),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]
//Exportacion
(PRE) cCadOrig += IIf(!Empty(_aTotal[113]),_aTotal[113],"01") + _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]
//Periodicidad
(PRE) cCadOrig += IIf(SF2->(ColumnPos("F2_IDCBAJA")) > 0 .And. SF2->F2_GLOBAL == "1", SF2->F2_IDCBAJA + _aTotal[098],"")
//Meses
(PRE) cCadOrig += IIf(SF2->(ColumnPos("F2_MODCONS")) > 0 .And. SF2->F2_GLOBAL == "1", SF2->F2_MODCONS + _aTotal[098],"")
//Año
(PRE) cCadOrig += IIf(SF2->(ColumnPos("F2_PTOEMIS")) > 0 .And. SF2->F2_GLOBAL == "1", SF2->F2_PTOEMIS + _aTotal[098],"")
//////////////////////CFDI Relacionados//////////////////////////
(PREREG)!Empty(SF2->F2_RELSAT).Or. !Empty(SF2->F2_SERMAN).Or. !Empty(SF2->F2_DOCMAN)
(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" .And. !lCCCE) .Or. SF2->F2_GLOBAL == "1"), "XAXX010101000", CFDCarEsp(_aTotal[108], .F.)) + _aTotal[098])
//Nombre
(PRE) (cCadOrig += IIF(SF2->F2_GLOBAL == "1", "PUBLICO EN GENERAL",CFDCarEsp(_aTotal[109],.F.)) + _aTotal[098], .T.)
//DomicilioFiscalReceptor
(PRE) (cCadOrig += CFDCarEsp(_aTotal[110],.F.) + _aTotal[098], .T.)
//ResidenciaFiscal
(PRE) IIf(lCCCE .And. !Empty(CFDCarEsp(Alltrim(SF2->F2_RESIDE))) .And. !_aTotal[076], 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))) .And. !_aTotal[076], cCadOrig += CFDCarEsp(AllTrim(AllTrim(SF2->F2_IDTRIB))) + _aTotal[098], "")
//RegimenFiscalReceptor
(PRE) (cCadOrig += IIf(AI0->(ColumnPos("AI0_REGFIS")) > 0,CFDCarEsp(_aTotal[111],.F.) + _aTotal[098],""), .T.)
//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.) Se debe mover después de la generación de la Cadena Original del Complemento de Carta Porte
(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 += IIf(Alltrim(SF2->F2_TIPOPE)=="3","2",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 .And. _aTotal[108] == "XEXX010101000", cCadOrig += CFDCarEsp(AllTrim(AllTrim(SF2->F2_IDTRIB))) + _aTotal[098], "")
(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, "")
//Carta Porte
(POS) IIf(_aTotal[011],(cCadOrig += LxFunaCaPo(SF2->F2_FILIAL,SF2->F2_DOC,SF2->F2_SERIE,.T.,IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.),_aTotal[104]),.T.),"")
(POS) (cCadOrig += fXMLFUN("IL",.T., IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.)),.T.)
(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 := "MIIF5TCCA82gAwIBAgIUMDAwMDEwMDAwMDA1MDI2MzYxOTcwDQYJKoZIhvcNAQEL"
(PRE) cCert += "BQAwggGEMSAwHgYDVQQDDBdBVVRPUklEQUQgQ0VSVElGSUNBRE9SQTEuMCwGA1UE"
(PRE) cCert += "CgwlU0VSVklDSU8gREUgQURNSU5JU1RSQUNJT04gVFJJQlVUQVJJQTEaMBgGA1UE"
(PRE) cCert += "CwwRU0FULUlFUyBBdXRob3JpdHkxKjAoBgkqhkiG9w0BCQEWG2NvbnRhY3RvLnRl"
(PRE) cCert += "Y25pY29Ac2F0LmdvYi5teDEmMCQGA1UECQwdQVYuIEhJREFMR08gNzcsIENPTC4g"
(PRE) cCert += "R1VFUlJFUk8xDjAMBgNVBBEMBTA2MzAwMQswCQYDVQQGEwJNWDEZMBcGA1UECAwQ"
(PRE) cCert += "Q0lVREFEIERFIE1FWElDTzETMBEGA1UEBwwKQ1VBVUhURU1PQzEVMBMGA1UELRMM"
(PRE) cCert += "U0FUOTcwNzAxTk4zMVwwWgYJKoZIhvcNAQkCE01yZXNwb25zYWJsZTogQURNSU5J"
(PRE) cCert += "U1RSQUNJT04gQ0VOVFJBTCBERSBTRVJWSUNJT1MgVFJJQlVUQVJJT1MgQUwgQ09O"
(PRE) cCert += "VFJJQlVZRU5URTAeFw0yMDAxMDYyMjIwMzhaFw0yNDAxMDYyMjIwMzhaMIGzMR4w"
(PRE) cCert += "HAYDVQQDExVUT1RWUyBNRVhJQ08gU0EgREUgQ1YxHjAcBgNVBCkTFVRPVFZTIE1F"
(PRE) cCert += "WElDTyBTQSBERSBDVjEeMBwGA1UEChMVVE9UVlMgTUVYSUNPIFNBIERFIENWMSUw"
(PRE) cCert += "IwYDVQQtExxUTUUwMzExMTJCQzAgLyBIRVJNNjcwODI4MkU0MR4wHAYDVQQFExUg"
(PRE) cCert += "LyBIRVJNNjcwODI4SERGUkJOMDMxCjAIBgNVBAsTATEwggEiMA0GCSqGSIb3DQEB"
(PRE) cCert += "AQUAA4IBDwAwggEKAoIBAQDSxcVwA52Ec5xakhUEyuaeozyzccDhukYJuXYDuLxH"
(PRE) cCert += "lDtiTdCE5Bof3c1wVN+EAvTvOBCvXcCOeLgo6EJlc6hArdFIKaiH+Ylf2xmq3u89"
(PRE) cCert += "X1JgwwbrqyTJoC6bw1fbyeDAGVsV7yGRs8YsZ65AU2RKK6L5GiyQKampRpaTiBoU"
(PRE) cCert += "pp5NR+B41+lc46rFI2wQrXGzry+vIkCnyJSH7w0XUgrDChyk8ORLdmQicUY0xkcy"
(PRE) cCert += "b3ql5Uvkd3AF+7RMck8gow8dby10rctjoCN4KY/wyWu5j7PHguH9rgbuOpo14hON"
(PRE) cCert += "Hx7720Eo1KA6GK3jPqVdpG7wfm6EVE0Kf9K7F471wZoRAgMBAAGjHTAbMAwGA1Ud"
(PRE) cCert += "EwEB/wQCMAAwCwYDVR0PBAQDAgbAMA0GCSqGSIb3DQEBCwUAA4ICAQBa+6i9/Qto"
(PRE) cCert += "ouwZNQIOZALwkAzEJfEasxQkm+Ggu2xhNJc75A1/qMxaKi84YCFDMr1eWwjQEs9H"
(PRE) cCert += "nfdwZKjkF/55vgQoTMEZBlemG5IJPwMDy01ho4FAShYG780sdPpa9RMYzjE1o82O"
(PRE) cCert += "226yv5ksy1yBySoGY7NWyRj1f5zCXQfyE8fAwAkaNiMmZYljztWg0cPvEG+gOgFl"
(PRE) cCert += "aLhy9YFMkFp3wEZjn/vZP5tbMvXCm3wRbf5ncJUCbr0xkpkDMIvgV/obTAfllvB0"
(PRE) cCert += "mQuVjLsTTA43NkvmpaV9+yYhvvzD24TOnZE8goB6C1bu8MooyMnVg6+RthZxLmzb"
(PRE) cCert += "syw+FkMzpjfMJU/J5nZL9VAZgdDX4H3wtmupAfKmL1hm95D9s0VA7sSFeAJkPvWG"
(PRE) cCert += "8ZcjlridsAFbSIFcfc8S8+NqBMKNFJsRF4X2Yj2Wxq3ZrNe9lPeq5skot9iJ9bz/"
(PRE) cCert += "1sfVTTqmqw1S3w13aCIqkwzU2aFpC7aMHT13Fx2SK5djvlnR0aHNycGxjA46iq+b"
(PRE) cCert += "vdHtC2Tqf/ZHJB/jeogiUeISbJ+uUHNEbXaE3YLsuhEsbNi7E++MRS/CtUeOxXZx"
(PRE) cCert += "FgnV6luIS1kzu+7aj4WR+m3Gweo6pOuz2s1MhtASDIucGWMyJm30DiWSZkrKmyTr"
(PRE) cCert += "OG6983CcMAhLkT16E0a32/Fn9OgZfiSMsg=="
(PRE) lCCCE := IIf(SuperGetMV("MV_CFDIEXP",.F.,.F.) .And. !Empty(SF2->F2_TIPOPE) .And. _aTotal[114], .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/4"'
(PRE) _aTotal[001] += ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'
(PRE) _aTotal[001] += Iif(_aTotal[104],' xmlns:cartaporte30="http://www.sat.gob.mx/CartaPorte30"','')
(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/4 http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd '
(PRE) _aTotal[001] += IIF(lCCCE,'http://www.sat.gob.mx/ComercioExterior11 http://www.sat.gob.mx/sitio_internet/cfd/ComercioExterior11/ComercioExterior11.xsd ','http://www.sat.gob.mx/implocal http://www.sat.gob.mx/sitio_internet/cfd/implocal/implocal.xsd')
(PRE) _aTotal[001] += IIf(_aTotal[104],'http://www.sat.gob.mx/CartaPorte30 http://www.sat.gob.mx/sitio_internet/cfd/CartaPorte/CartaPorte30.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="4.0"'
(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',IIf(!Empty(_aTotal[112]),_aTotal[112],_aTotal[107]),IIf(Empty(_aTotal[107]) .Or. Alltrim(SE4->E4_MPAGSAT) == "PPD","99",_aTotal[107])) + '"' )
(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+F2_FRETE+F2_SEGURO+F2_DESPESA) + _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(Alltrim(SF2->F2_TIPODOC) == "21","XXX",Alltrim(CTO->CTO_MOESAT)) + '"'
(PRE) _aTotal[001] += IIf(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] - IIf(Len(_aTotal[115]) > 0,_aTotal[115][1],0),Round(SF2->F2_VALBRUT,2) + _aTotal[103] - _aTotal[037] - _aTotal[038] - IIf(Len(_aTotal[115]) > 0,_aTotal[115][1],0))),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] += ' Exportacion="'+IIf(!Empty(_aTotal[113]),_aTotal[113],"01")+'"'
(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, ' 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="' + IIF(Alltrim(SF2->F2_TIPOPE)== "3","2",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) !Empty(SF2->F2_RELSAT).Or. !Empty(SF2->F2_SERMAN).Or. !Empty(SF2->F2_DOCMAN)
(PREREG) (_aTotal[001] := IIf(_aTotal[104] .And. Alltrim(SF2->F2_TIPODOC) == "21","",fGetFolRel("S")))
(PREREG) _aTotal[001]
[XXX FACTURA GLOBAL]
(PRE) (_aTotal[001] := IIF(SF2->F2_GLOBAL == "1",' <cfdi:InformacionGlobal ',""))
(PRE) (_aTotal[001] += Iif(SF2->(ColumnPos("F2_IDCBAJA")) > 0 .and. SF2->F2_GLOBAL == "1" ,' Periodicidad="' + SF2->F2_IDCBAJA + '"',""))
(PRE) (_aTotal[001] += Iif(SF2->(ColumnPos("F2_MODCONS")) > 0 .and. SF2->F2_GLOBAL == "1" ,' Meses="' + SF2->F2_MODCONS + '"',""))
(PRE) (_aTotal[001] += Iif(SF2->(ColumnPos("F2_PTOEMIS")) > 0 .and. SF2->F2_GLOBAL == "1" ,' Año="' + SF2->F2_PTOEMIS + '"',""))
(PRE) (_aTotal[001] += IIF(SF2->F2_GLOBAL == "1",'/>' ,""))
(PRE) (_aTotal[001] := IIF(SF2->F2_GLOBAL == "1",_aTotal[001] ,""))
(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) .And. _aTotal[114], .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" .And. !lCCCE) .Or. SF2->F2_GLOBAL == "1"), "XAXX010101000", _aTotal[108])) + '"' , .T.)
(PREREG) (_aTotal[001] += ' Nombre="' + iif(SF2->F2_GLOBAL == "1","PUBLICO EN GENERAL",CFDCarEsp(_aTotal[109],.T.)) + '"' , .T.)
(PREREG) (_aTotal[001] += ' DomicilioFiscalReceptor="' + _aTotal[110] + '"' , .T.)
(PREREG) (_aTotal[001] += Iif(AI0->(ColumnPos("AI0_REGFIS")) > 0,' RegimenFiscalReceptor="' + _aTotal[111] + '"',""), .T.)
(PREREG) (_aTotal[001] += ' UsoCFDI="' + Alltrim(SF2->F2_USOCFDI) + '"' , .T.)
(PREREG) IIf(lCCCE .And. !Empty(CFDCarEsp(AllTrim(AllTrim(SF2->F2_IDTRIB)))) .And. !_aTotal[076], (_aTotal[001] += ' NumRegIdTrib="' + CFDCarEsp(AllTrim(AllTrim(SF2->F2_IDTRIB))) + '"' , .T.), "")
(PREREG) IIf(lCCCE .And. !Empty(CFDCarEsp(AllTrim(AllTrim(SF2->F2_RESIDE)))) .And. !_aTotal[076], (_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 ' + IIf(_aTotal[108]=="XEXX010101000", 'NumRegIdTrib="' + CFDCarEsp(AllTrim(SF2->F2_IDTRIB)) + '"',""), "")
(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) .And. _aTotal[114] , .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) IIf(_aTotal[011],_aTotal[105] := LxFunaCaPo(SF2->F2_FILIAL,SF2->F2_DOC,SF2->F2_SERIE,.F.,IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.),_aTotal[104]),"")
(PREREG) (_aTotal[001] := IIF(!EMPTY(_aTotal[094] ) .or. !EMPTY(_aTotal[095] ) .Or. !Empty(_aTotal[105]) .or. _aTotal[104] , ' <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) .And. _aTotal[114], .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))
Catálogo de Objeto Impuesto:
Actualizaciones en la tabla SXB-Consultas Estándar.
Creación de la consulta específica MEX015 - Colonias.
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
---|---|---|---|---|---|
MEX031 | 1 | 01 | RE | Objeto Impuesto | F3I |
MEX031 | 2 | 01 | 01 | F812SXB("S031","Codigo") | |
MEX031 | 5 | 01 | VAR_IXB |
Activar el siguiente campo en la tabla SD2 - Ítems de Venta de la Fact:
Campo | Contenido |
---|---|
Campo | D2_NIT |
Tipo | 1 - Caracter |
Tamaño | 2 |
Decimal | 0 |
Formato | !@ |
Contexto | Real |
Propiedad | Modificar |
Tit. Español | Objeto Imp |
Des. Español | Objeto Impuesto |
Validación | Vazio() .or. ValidF3I("S031", M->D2_NIT,1,2) |
Usado | Si |
Help | Indica si el Concepto del CFDI es Objeto de Impuesto, y el valor debe corresponder a un valor del catálogo c_ObjetoImp definido por el SAT. (Tabla S031 - Catálogo Objeto Impuesto), si el código es 01, 03 o 04 no se generará el nodo de Impuestos del Concepto. |
5.4 Facilitador para selección de productos para facturas de traslado e ingreso.
Producto | TOTVS Backoffice | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | Línea Protheus | ||||||||||||
Segmento: | Backoffice | ||||||||||||
Módulo: | SIGAFAT - Facturación. | ||||||||||||
Función: |
| ||||||||||||
País: | México | ||||||||||||
Ticket: | 18954604 | 12928232 | ||||||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-21955 | DMINA-14374 |
Se requiere agregar funcionalidad en la rutina de Facturaciones (MATA67N) para la emisión de Facturas de Traslado (¿Tipo Factura? - Traslado) y Facturas de Ingreso(¿Tipo Factura? - Normal) con complemento de Carta Porte (Carta Porte - Si) donde permite realizar la selección de los productos de una Factura de Venta realizada previamente.
En la rutina Funciones genéricas (LOCXNF):
Se activa la opción Facturas en el menú de "Otras acciones", solo disponible en la Factura Normal (Ingreso), cuando es una Carta Porte (el campo F2_TPCOMPL tiene informado el valor S-Si).
En la rutina Funciones genéricas localizadas para México (LOCMEX):
Se agregan las funciones:
- LxMxPFact() - Función que muestra la pantalla de los productos disponibles de las Facturas de tipo "Normal" creadas previamente para su selección.
- LxMxProd() - Realiza el query de los productos disponibles para ser mostrados.
- LxMxVldPrd() - Función que valida si fue seleccionado al menos un producto de la pantalla de Facturas.
- LxMxMarcaI() - Función que permite realizar las selecciones "Marcar Todos", "Desmarcar Todos" o "Invertir selección".
- LxMxBusCve() - Función que permite la búsqueda de un producto específico en base a las claves "Factura+Serie+Item+Cod producto" o "Cod Producto+Factura+Serie".
- LxMxCrgPrd() - Función que realiza la carga de los productos seleccionados a los ítems de la Factura.
- LxMxQtdNF() - Función que valida que la cantidad digitada no sea mayor a la del documento original.
- LxMxAQtDel() - Función que actualiza la cantidad disponible del documento original cuando se realiza la eliminación de una Factura de tipo Traslado e Ingreso.
En la rutina Eliminación de documentos de Salida (MATA521):
Se realizó ajuste para que si el documento es de Tipo de Documento Normal (F2_TIPODOC = "01"), se llame la función que actualiza la cantidad disponible del documento original cuando se realiza la eliminación de una Factura (LxMxAQtDel), para actualizar los saldos de las cantidades al borrar la Factura de Venta.
- En el módulo Facturación (SIGAFAT) ir al menú Actualizaciones | Facturación | Facturaciones (MATA467N).
- Incluir una Factura de Venta de tipo Traslado.
- Informar en el Encabezado los datos Cliente, Tienda, Serie Docto, N. Documento, Uso CFDI.
- Solo para las facturas de Traslado, el opción "Facturas" esta habilitada independientemente del valor del campo Carta Porte.
- Dar clic en "Otras acciones > Facturas", seleccionar parámetros de las facturas que desee filtrar para mostrarlas.
¿Serie? - Indicar la serie de la Factura.
¿Documento Inicial ? - Indicar el folio inicial de documentos.
¿Documento Final? - Indicar el folio final de documentos.
¿TES de Traslado? - Indicar la TES configurada de traslado para que asigne a los ítems. - Se visualizan los productos asociados a la factura indicada, se seleccionan los productos que se requieran cargar en esta factura y dar clic en “Grabar”.
Se cargaran los productos seleccionados en la Factura de Traslado.
Si el campo Carta Porte es igual a "S - Si", se indica los datos requeridos para Carta Porte de los ítems y se guarda la Factura.
- Seleccionar la Factura en el browse y dar clic en "Otras acciones > Carta Porte".
- Llenar la información de la Carta Porte.
- En el módulo Facturación (SIGAFAT) ir al menú Actualizaciones | Facturación | Facturaciones (MATA467N).
- Incluir una Factura de Venta de tipo Normal.
- Informar en el Encabezado los datos Cliente, Tienda, Serie Docto, N. Documento, Uso CFDI y Carta Porte - Si.
- Dar clic en "Otras acciones > Facturas", seleccionar parámetros de las facturas que desee filtrar para mostrarlas.
¿Serie? - Indicar la serie de la Factura.
¿Documento Inicial ? - Indicar el folio inicial de documentos.
¿Documento Final? - Indicar el folio final de documentos.
¿TES de Traslado? - Indicar la TES configurada de traslado para que asigne a los ítems. - Se visualizan los productos asociados a la factura indicada, se seleccionan los productos que se requieran cargar en esta factura y dar clic en “Grabar”.
Se cargaran los productos seleccionados en la Factura.
Se indica los datos requeridos para Carta Porte de los ítems y se guarda la Factura.
- Seleccionar la Factura en el browse y dar clic en "Otras acciones > Carta Porte".
- Llenar la información de la Carta Porte.
06. OTRAS DOCUMENTACIONES
07. TABLAS UTILIZADAS
- SF2 - Encabezado de facturas de salida
- SD2 - Ítems de facturas de salida
- SB1 - Productos
- A1X - Encabezado de carta porte
- A1Y - Ubicaciones de carta porte
- A1Z - Operadores de carta porte
- AE0 - Propietarios/Arrendatarios (Transportistas) de carta porte
- DA3 - Conductores
- DA4 - Transportadoras
- F3H - Estructuras de catálogos del SAT
- F3I - Catálogos del SAT