Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Línea de producto: Microsiga Protehus.
Segmento:Servicios - Mercado Internacional.
Módulo:SIGAFAT - Facturación.
Función:
Rutina(s)Nombre Técnico
LOCXNFNotas Fiscales.
Rutina(s) involucradasNombre Técnico
LOCXNF2Cálculo de Valores para Notas Fiscales.
Ticket:5728391
Issue:DMINA-6666
Versión:12.1.17 | 12.1.23


02. SITUACIÓN/REQUISITO

Se requiere un Punto de Entrada en la rutina Recibo de Nómina CFDi – GPER884, para insertar información del recibo timbrado en una tabla de usuario y posteriormente poder generar un reporte de CFDi que requiere el contador de la empresareporta un error log en la rutina Generación de Remitos de Devolución - MATA462DN, al momento de generar un remito de devolución ligado a un documento original de tipo Remisión de Salida. Se observa que el error ocurre cuando no se informa una TES de Devolución y se desplaza para incluir un nuevo ítem, sin embargo, también fue identificado que al intentar incluir una TES manualmente o utilizando la consulta, la TES nunca es informada.

03. SOLUCIÓN

Se incluye Punto de Entrada "G884GENTAB" en excluye a la rutina Timbrado de CFDi con Complemento Generación de Recibo Remitos de Nómina Devolución - TimbreRN, para ser utilizado al finalizar el proceso de timbrado.

El Punto de Entrada - G884GENTAB, recibe los siguientes parámetros que pueden ser utilizados mediante la variable PARAMIXB como se describe a continuación:

  • PARAMIXB[1] - Contiene el Código del Proceso.
  • PARAMIXB[2] - Contiene el Código del Procedimiento.
  • PARAMIXB[3] - Contiene el Código del Periodo.
  • PARAMIXB[4] - Contiene el Número de Pago.
  • PARAMIXB[5] - Array con recibos enviados a timbrar:
    1. PARAMIXB[5][1] - Contiene el nombre del archivo XML.
    2. PARAMIXB[5][2] - Contiene la respuesta del timbrado:
      1. Si el recibo fue timbrado correctamente, contendrá la palabra "Timbrado".
      2. Si en el proceso de timbrado ocurrió un error, se encontrará vacía la posición del array o contendrá la descripción del error.

Ejemplo de Punto de Entrada:

#Include "protheus.ch"

User Function G884GENTAB()

/*
* Variables enviadas al Punto de Entrada.
*/
Local cProceso := PARAMIXB[1] //Proceso
Local cProcedi := PARAMIXB[2] //Procedimiento
Local cPeriodo := PARAMIXB[3] //Periodo
Local cNumPago := PARAMIXB[4] //Numero de Pago
Local aRecibos := PARAMIXB[5] //Array con recibos

...

MATA462DN para que no haga uso de la función LxTESAutoCOL(); lo anterior se realiza en la función LxDocOri() de la rutina LOCXNF.


Pasos para validar la solución:

Pre-condiciones:

  • Configurar un Tipo de Salida sin TES de Devolución (F4_TESDV).
  • Crear una Remisión de Venta utilizando el código del Tipo de Salida configurado anteriormente.

Pasos para validar la solución:

  1. Ingresa al módulo SIGAFAT - Facturación.
  2. Ingresar a la rutina "Actualizaciones | Form. de Remisón | Generac. de Remitos de Devolución".
  3. Informar los datos obligatorios del encabezado.
  4. Dar clic en la opción "Doc Orig", ubicada en el botón "Otras acciones".
  5. Seleccionar la opción "Remisión".
  6. Seleccionar la remisión de venta creada previamente.
  7. Validar que la información es cargada correctamente en la sección "Ítems".
  8. Ingresar otra línea en la sección de ítems sin informar el campo Tipo Entrada (D1_TES) de la línea anterior.
  9. Validar que no es mostrado el mensaje de error reportado y que es mostrado un mensaje de validación para informar la TES.
  10. Informar el código del Tipo de Entrada de forma manual o utilizando la consulta estándar del campo.
  11. Validar que es cargado el código del Tipo de Entrada correctamente en el campo.
  12. Grabar el documento.
  13. Visualizar el documento y validar que el código del Tipo de Entrada es el informado en el punto 10

For nIter := 1 To Len(aRecibos) //Se inicia el procesamiento de cada recibo.

If aRecibos[nIter][2] == "Timbrado" //Se valida que solo se procesen recibos correctamente timbrados.

If File(cPathXML+aRecibos[nIter][1]) //Valida si el archivo XML a procesar, se encuentra en el directorio.

oXML := XmlParserFile(cPathXML + aRecibos[nIter][1], "_", @cAviso, @cErro) //Se realiza el parseo del XML y se guarda en un objeto
If Empty(cAviso) .and. Empty(cErro) .And. oXML <> Nil //Se valida que no haya errores en el parseo del XML.

RecLock("ZZ1", .T.)
ZZ1->ZZ1_FILIAL := cFilZZ1
ZZ1->ZZ1_PROCES := cProceso
ZZ1->ZZ1_PROCED := cProcedi
ZZ1->ZZ1_PERIOD := cPeriodo
ZZ1->ZZ1_NUMPAG := cNumPago
ZZ1->ZZ1_UUID := oXML:_CFDI_COMPROBANTE:_CFDI_COMPLEMENTO:_TFD_TIMBREFISCALDIGITAL:_UUID:TEXT
ZZ1->ZZ1_NOMXML := aRecibos[nIter][1]
ZZ1->(MsUnlock())

EndIf

EndIf

EndIf

Next nIter

EndIf

Return

Pasos para validar e implementar la solución:

Pre-condiciones:

  • Contar con tabla de usuario configurada en el diccionario de datos.
  • Crear y compilar el Punto de Entrada G884GENTAB.
  • Correr Cálculo de Nómina para los empleados a procesar.

Pasos para validar la solución:

  1. Entre al módulo de Gestión de Personal (SIGAGPE).
  2. Ingresar a la rutina "Informes | Periódicos | Recibo de Nómina CFDi(GPER884)".
  3. Informar los parámetros solicitados. (Indicar el parámetro de ¿Enviar Timbrar?-Si)
  4. Al finalizar el proceso de timbrado, validar que se haya ingresado correctamente la información en la tabla de usuario.