El proceso de reconstrucción de documentos se presenta cuando ocurren demoras en la respuesta de la DIAN ya sean por temas de red, latencia o errores no controlados. en estos casos no se obtiene respuesta exitosa de la DIAN, pero el procesamiento del documentos es realizado correctamente. La funcionalidad controla los consecutivos por medio de un consumo sincrónico razón por la cuál los consecutivos no se procesan cuando se recibe un error en la respuesta y eso genera el bloqueo de posteriores consumos.
La solución de esta situación sólo aplica para el PST Interno en los modos de instalación:
El directorio de scripts se encuentra en la url del svn: SVN Directorio
A continuación se describen los pasos que deben ejecutarse en la solución de reconstrucción de documentos, tener presente que algunos scripts no se ejecutarán secuencial sino dependiendo de la situación del proceso, además algunos deben ser adaptados al cliente y al documento por procesar. por lo tanto se recomienda siempre leer el archivo “Leeme.txt” de cada directorio antes de ejecutar cualquier scripts. Además se recomienda leer la documentación interna de cada scripts ya que define los pasos de configuración y ejecución.
No se debe estar trabajando en:
El control de consecutivos y afectaciones presupuestales y contables van a ser afectados por el proceso.
A Continuación se describen los pasos según y el rol1) y el script que se debe parametrizar.
Identificar documento a procesar (Se puede identificar en la mayoría de los casos en la ventana de documentos enviados).
Inactivar Constante: 0000d Inactivar el Envío de Documentos.sql (Se debe preparar el script).
DECLARE --============================================================================== -- Fecha: 7:15 a. m. domingo, 22 de noviembre de 2020 - carlos.torres@ada.co -- Variables de control --============================================================================== ERROR_FE EXCEPTION; PRAGMA EXCEPTION_INIT(ERROR_FE, -20999); GCVN_ERROR_NUMBER CONSTANT NUMBER := -20999; lva_msg VARCHAR2(2048) DEFAULT NULL; --============================================================================== -- Fecha: 7:15 a. m. domingo, 22 de noviembre de 2020 - carlos.torres@ada.co -- Variables de procesos --============================================================================== lva_CODIGO_CLIENTE VARCHAR2(256) DEFAULT NULL; lva_COD_PST VARCHAR2(256) DEFAULT NULL; BEGIN --============================================================================== -- Fecha: 12:11 p. m. sábado, 21 de noviembre de 2020 - carlos.torres@ada.co -- Captura de parametros de configuración del cliente --============================================================================== ROLLBACK; lva_msg := 'Captura de parametros de configuración del cliente'; --============================================================================== -- Fecha: 12:55 p. m. sábado, 21 de noviembre de 2020 - carlos.torres@ada.co -- El codigo del cliente por lo generar se refiere al nombrede cliente sin espacios acompañado del contexto de ejecución -- Ejemplo para el cliente ADA en el ambiente de producción seria ADA_PROD -- Ejemplo para el cliente ADA en el ambiente de pruebas seria ADA_TEST --============================================================================== lva_CODIGO_CLIENTE := NULL;--REQUERIDO: código del cliente con el contexto (TEST o PROD) --============================================================================== -- Fecha: 7:20 a. m. domingo, 22 de noviembre de 2020 - carlos.torres@ada.co -- El código del PST es una codificación interna que se le denota al cliente -- del servicio web que realizará el envio de documentos para los PST internos -- este código será ADA para los PST Externos este codigo será un acronimo -- del nombre del proveedor externo EJ (BytheWave = BTW, Tecnofactor = TNF) --============================================================================== lva_COD_PST := 'ADA';--REQUERIDO: código del pst --****************************************************************************** --****************************************************************************** -- NO MODIFICAR EL CODIGO FUENTE A PARTIR DE ACA --****************************************************************************** --****************************************************************************** --============================================================================== -- Fecha: 7:17 a. m. domingo, 22 de noviembre de 2020 - carlos.torres@ada.co -- Validaciones de control --============================================================================== lva_msg := 'Validaciones de control'; IF lva_CODIGO_CLIENTE IS NULL THEN lva_msg := 'No se ha definido el codigo del cliente en la configuración'; RAISE ERROR_FE; END IF; IF lva_COD_PST IS NULL THEN lva_msg := 'No se ha definido el codigo del pst en la configuración'; RAISE ERROR_FE; END IF; --============================================================================== -- Fecha: 10:59 a. m. martes, 29 de septiembre de 2020 - carlos.torres@ada.co -- Inactivar configuración --============================================================================== lva_msg := 'Inactivar configuración'; --============================================================================== -- Fecha: 8:12 a. m. domingo, 22 de noviembre de 2020 - carlos.torres@ada.co -- Inactivar el envío de documentos --============================================================================== UPDATE PRESUP01.PARAMETROS_FE_PST U SET U.ENVIAR_DOCUMENTOS = 'N' WHERE U.COD_CLIENTE = lva_CODIGO_CLIENTE AND U.COD_PST = lva_COD_PST; COMMIT; EXCEPTION WHEN OTHERS THEN dbms_output.put_line(SQLCODE || ' - ' || SQLERRM || ' - msg: ' || lva_msg); ROLLBACK; SICOF.PCK_UTILIDADES.P_REGISTER_ERROR(SQLCODE, lva_msg, 'ERROR: ' || SQLERRM || dbms_utility.format_error_backtrace, 'BLOQUE ANONIMO'); raise_application_error(GCVN_ERROR_NUMBER,lva_msg); END;
Realizar la aprobación de la factura desde SICOF ERP.
Actualizar el columna de envio_dian y prefijo del documento de la nota (Se debe preparar el script).
DECLARE --============================================================================== -- Fecha: 7:15 a. m. domingo, 22 de noviembre de 2020 - carlos.torres@ada.co -- Variables de control --============================================================================== ERROR_FE EXCEPTION; PRAGMA EXCEPTION_INIT(ERROR_FE, -20999); GCVN_ERROR_NUMBER CONSTANT NUMBER := -20999; lva_msg VARCHAR2(2048) DEFAULT NULL; --============================================================================== -- Fecha: 7:15 a. m. domingo, 22 de noviembre de 2020 - carlos.torres@ada.co -- Variables de procesos --============================================================================== lva_CODIGO_NOTA NUMBER DEFAULT NULL; BEGIN --============================================================================== -- Fecha: 12:11 p. m. sábado, 21 de noviembre de 2020 - carlos.torres@ada.co -- Captura de parametros de configuración del cliente --============================================================================== ROLLBACK; lva_msg := 'Captura de parametros de configuración del cliente'; --============================================================================== -- Fecha: 12:55 p. m. sábado, 21 de noviembre de 2020 - carlos.torres@ada.co -- El codigo de la Nota, este identificador puede obtenerse al revisar el log -- de documentos enviados: -- Ejemplo:en el siguiente log -- http://10.1.20.84:3123/ADAFETEST/webresources/pst/ef/VIVA_TEST/9999999999/BTW/CreditNoteType/19778/1473924/NC222 -- el numero 1473924 representa el codigo interno de la nota --============================================================================== lva_CODIGO_NOTA := NULL;--REQUERIDO: código de la nota que se debe procesar --****************************************************************************** --****************************************************************************** -- NO MODIFICAR EL CODIGO FUENTE A PARTIR DE ACA --****************************************************************************** --****************************************************************************** --============================================================================== -- Fecha: 7:17 a. m. domingo, 22 de noviembre de 2020 - carlos.torres@ada.co -- Validaciones de control --============================================================================== lva_msg := 'Validaciones de control'; IF NVL(lva_CODIGO_NOTA, 0) = 0 THEN lva_msg := 'No se ha definido el codigo de la nota en la configuración'; RAISE ERROR_FE; END IF; --============================================================================== -- Fecha: 10:59 a. m. martes, 29 de septiembre de 2020 - carlos.torres@ada.co -- Inactivar configuración --============================================================================== lva_msg := 'Inactivar configuración'; --============================================================================== -- Fecha: 8:12 a. m. domingo, 22 de noviembre de 2020 - carlos.torres@ada.co -- Actualizar documento --============================================================================== UPDATE PRESUP01.MAE_NOTAS_CPCOBRAR SET ENVIO_DIAN = 'S', PREFIJO = DECODE(NVL(TIPO_DOCUMENTO, 'C'), 'NC', 'ND') WHERE CODIGO_NOTA = :lva_CODIGO_NOTA; COMMIT; EXCEPTION WHEN OTHERS THEN dbms_output.put_line(SQLCODE || ' - ' || SQLERRM || ' - msg: ' || lva_msg); ROLLBACK; SICOF.PCK_UTILIDADES.P_REGISTER_ERROR(SQLCODE, lva_msg, 'ERROR: ' || SQLERRM || dbms_utility.format_error_backtrace, 'BLOQUE ANONIMO'); raise_application_error(GCVN_ERROR_NUMBER,lva_msg); END;
Recomendación: Verificar documento procesado y saldos contables.
Activar Constante: 0000d Activar el Envío de Documentos.sql (Se debe preparar el script).
DECLARE --============================================================================== -- Fecha: 7:15 a. m. domingo, 22 de noviembre de 2020 - carlos.torres@ada.co -- Variables de control --============================================================================== ERROR_FE EXCEPTION; PRAGMA EXCEPTION_INIT(ERROR_FE, -20999); GCVN_ERROR_NUMBER CONSTANT NUMBER := -20999; lva_msg VARCHAR2(2048) DEFAULT NULL; --============================================================================== -- Fecha: 7:15 a. m. domingo, 22 de noviembre de 2020 - carlos.torres@ada.co -- Variables de procesos --============================================================================== lva_CODIGO_CLIENTE VARCHAR2(256) DEFAULT NULL; lva_COD_PST VARCHAR2(256) DEFAULT NULL; BEGIN --============================================================================== -- Fecha: 12:11 p. m. sábado, 21 de noviembre de 2020 - carlos.torres@ada.co -- Captura de parametros de configuración del cliente --============================================================================== ROLLBACK; lva_msg := 'Captura de parametros de configuración del cliente'; --============================================================================== -- Fecha: 12:55 p. m. sábado, 21 de noviembre de 2020 - carlos.torres@ada.co -- El codigo del cliente por lo generar se refiere al nombrede cliente sin espacios acompañado del contexto de ejecución -- Ejemplo para el cliente ADA en el ambiente de producción seria ADA_PROD -- Ejemplo para el cliente ADA en el ambiente de pruebas seria ADA_TEST --============================================================================== lva_CODIGO_CLIENTE := NULL;--REQUERIDO: código del cliente con el contexto (TEST o PROD) --============================================================================== -- Fecha: 7:20 a. m. domingo, 22 de noviembre de 2020 - carlos.torres@ada.co -- El código del PST es una codificación interna que se le denota al cliente -- del servicio web que realizará el envio de documentos para los PST internos -- este código será ADA para los PST Externos este codigo será un acronimo -- del nombre del proveedor externo EJ (BytheWave = BTW, Tecnofactor = TNF) --============================================================================== lva_COD_PST := 'ADA';--REQUERIDO: código del pst --****************************************************************************** --****************************************************************************** -- NO MODIFICAR EL CODIGO FUENTE A PARTIR DE ACA --****************************************************************************** --****************************************************************************** --============================================================================== -- Fecha: 7:17 a. m. domingo, 22 de noviembre de 2020 - carlos.torres@ada.co -- Validaciones de control --============================================================================== lva_msg := 'Validaciones de control'; IF lva_CODIGO_CLIENTE IS NULL THEN lva_msg := 'No se ha definido el codigo del cliente en la configuración'; RAISE ERROR_FE; END IF; IF lva_COD_PST IS NULL THEN lva_msg := 'No se ha definido el codigo del pst en la configuración'; RAISE ERROR_FE; END IF; --============================================================================== -- Fecha: 10:59 a. m. martes, 29 de septiembre de 2020 - carlos.torres@ada.co -- Inactivar configuración --============================================================================== lva_msg := 'Inactivar configuración'; --============================================================================== -- Fecha: 8:12 a. m. domingo, 22 de noviembre de 2020 - carlos.torres@ada.co -- Inactivar el envío de documentos --============================================================================== UPDATE PRESUP01.PARAMETROS_FE_PST U SET U.ENVIAR_DOCUMENTOS = 'S' WHERE U.COD_CLIENTE = lva_CODIGO_CLIENTE AND U.COD_PST = lva_COD_PST; COMMIT; EXCEPTION WHEN OTHERS THEN dbms_output.put_line(SQLCODE || ' - ' || SQLERRM || ' - msg: ' || lva_msg); ROLLBACK; SICOF.PCK_UTILIDADES.P_REGISTER_ERROR(SQLCODE, lva_msg, 'ERROR: ' || SQLERRM || dbms_utility.format_error_backtrace, 'BLOQUE ANONIMO'); raise_application_error(GCVN_ERROR_NUMBER,lva_msg); END;
Una vez sean ejecutados todos los scripts el sistema esta preparado para el continuar con el flujo normal de envio de documentos.