Árvore de páginas

01. DATOS GENERALES


Producto

TOTVS Backoffice

Línea de producto: 

Línea Protheus

Segmento:

Backoffice

Módulo:SIGAFAT - Facturación
Función:
RutinaNombre TécnicoFecha
LOCXFUNA.PRXFunciones genéricas de localizaciones.18/12/2024
FATEMEX.INIScript de generación de los archivos XML para Notas Fiscales de Entrada.18/12/2024
FATSMEX.INIScript de generación de los archivos XML para Notas Fiscales de Salida.18/12/2024
País:México
Ticket:21947550 
Requisito/Story/Issue (informe el requisito vinculado):DMICNS-22041


02. SITUACIÓN/REQUISITO

Se identifica que al generar una Factura de Venta con comercio exterior donde no se indica la (Frac.Arance =D2_FRACCA) en el ítem y se indica la Unidad Adu. (D2_UNIADU) igual a "99" no se está mostrando el nodo UnidadAduana dentro del XML lo cual provoca los siguientes rechazos:

    • CCE160: El atributo cce20:ComercioExterior:Mercancias:Mercancia:FraccionArancelaria no existe y el atributo cce20:ComercioExterior:Mercancias:Mercancia:UnidadAduana tiene una clave distinta de "99"; o el atributo cfdi:Comprobante:Conceptos:Concepto:ClaveUnidad tiene una clave distinta de "E48".
    • CCE165: No se registró todos o alguno de los atributos CantidadAduana, UnidadAduana o ValorUnitarioAduana, o el atributo NoIdentificacion registrado en los conceptos son diferentes.
    • CCE166: No se registraron todos o alguno de los atributos CantidadAduana, UnidadAduana o ValorUnitarioAduana.
    • CCE172: El valor del atributo ValorDolares es diferente al producto del valor del atributo cfdi:Comprobante:Conceptos:Concepto:Importe por el valor del atributo cfdi:Comprobante:TipoCambio y dividido entre el valor del atributo cce20:ComercioExterior:TipoDeCambioUSD; o es diferente de Cero, cuando el atributo cce20:ComercioExterior:Mercancias:Mercancia:UnidadAduana o el atributo cfdi:Comprobante:Conceptos:Concepto:ClaveUnidad tienen el valor "99" y "E48" respectivamente, que corresponde a los servicios y el servicio no forma parte del valor en aduana.


03. SOLUCIÓN

En la rutina de Funciones genéricas de localizaciones (LOCXFUNA):

  • Se realiza ajuste para el llenado de la información de comercio exterior, donde cuando se indique la unidad aduana igual a "99" (D2_UNIADU/D1_UNIADU) el nodo de UnidadAduana sea contenido dentro de la información de comercio exterior y posterior pueda ser mostrados dentro del XML.

Estos cambios fueron realizados también en los Scripts de generación de los archivos XML para Notas Fiscales de Salida y Entrada (FATSMEX.INI/FATEMEX.INI).


  1. Realizar las modificaciones resaltadas en azul, sugeridas en la sección 04. INFORMACIÓN ADICIONAL.
  2. Configurar parámetro MV_CFDIEXP igual a ".T." para activar el complemento de comercio exterior.
  3. Contar con un servicio configurado con unidad de medida del SAT (AH_UNIDSAT = "E48").
  4. Contar con un producto configurado.

IMPORTANTE

La modificación de las líneas indicados en el punto uno solo aplica para la generación de XML que se realice mediante los archivos INI en caso que se utilicen las rutinas que generan los XML mediante el parámetro MV_FEXML=S no se requiere realizar ningún cambio.

  1. Ingresar al módulo Facturación (SIGAFAT), ir al menú "Actualizaciones | Facturación | Facturaciones (MATA467N)
  2. Indicar los parámetros de la rutina, informando la pregunta ¿Normal/Benef./Anticipo? con la opción Normal.
  3. Incluir una Factura de Venta (NF).
  4. Indicar el producto configurado previamente indicando la información de "Cant. Aduana","Fracc. Arance.", "Unidad Adua.","Valor USD", Val Aduana"
  5. Indicar el servicio configurado previamente indicando la información de "Cant. Aduana","Unidad Adua.="99"","Valor USD*", Val Aduana*" 

    IMPORTANTE

    Los campos Valor USD y Val Aduana algunos Proveedores Autorizados de Certificación (PAC´S) verifican que cuando se trata de unidad aduana igual a "99" estos nodos deber ir en cero debido a lo que indica la guía que solo debe ser mayor a cero cuando se trate de un producto que no se indicó con UnidadAduana igual "99"

    Para más detalle se puede consultar la Guía de llenado del SAT Guia_complemento_Comercio_Exterior.pdf

    Por lo tanto, tampoco estos valores deben considerarse en la suma del valor total de la factura en USD que se indica en el encabezado de la factura "Total USD(F2_TOTUSD)" este valor solo es la suma de todas las mercancías y el servicio no forma parte del valor en aduana.

  6. Confirmar el grabado de la Factura de Venta.
  7. Confirmar la generación y timbrado del Comprobante Fiscal Digital para Internet (Ésta confirmación puede presentarse o no de acuerdo a la configuración del parámetro MV_CFDUSO).
  8. Validar el timbrado exitoso del documento.


04. INFORMACIÓN ADICIONAL


FATSMEX

//FATSMEX.INI V4.0 --- Modelo 2022

[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) .or. AllTrim(SD2->D2_UNIADU)== "99"), (cCadOriCCE += IIF(AllTrim(SD2->D2_UNIADU)!= "99",AllTrim(ObtColSAT("S014",AllTrim(SD2->D2_FRACCA),1,8,9,2)),"99") + _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.)))


[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) .or. AllTrim(SD2->D2_UNIADU)== "99"),' UnidadAduana="' + IIF(AllTrim(SD2->D2_UNIADU)!= "99",AllTrim(ObtColSAT("S014",AllTrim(SD2->D2_FRACCA),1,8,9,2)),"99") + '"', ""),.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.)


FATEMEX

//FATEMEX.INI V4.0 --- Modelo 2022

[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) .And. _aTotal[104] , .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) .or. AllTrim(SD1->D1_UNIADU)== "99"), (cCadOriCCE += IIF(AllTrim(SD1->D1_UNIADU)!= "99",AllTrim(ObtColSAT("S014",AllTrim(SD1->D1_FRACCA),1,8,9,2)),"99")  + _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.))


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

(PRE) DbGoTop()
 
(PREREG) (cNodoCCE += IIf(lCCCE, '                  <cce20: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) .or. AllTrim(SD1->D1_UNIADU)== "99"), ' UnidadAduana="' + IIF(AllTrim(SD1->D1_UNIADU)!= "99",AllTrim(ObtColSAT("S014",AllTrim(SD1->D1_FRACCA),1,8,9,2)),"99")  + '"', ""),.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, '                  </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.,  .F. ,.F.))

Paquetes de actualización

Las actualizaciones al Diccionario de Datos, se realizaron en el siguiente pacote (Uso Interno):

Código: 014955

Contenido: MI - DMICNS-22041 - UNIDAD ADUANA


SX5 - TABLAS GENERICAS

TABLAITEMDESCRIPCION
XO - Unidad Aduana22CARAT
XO - Unidad Aduana99SERVICIOS


¡IMPORTANTE!

Esta solución aplica para versión 12.1.2310 o superiores


05. ASUNTOS RELACIONADOS