Herramientas de usuario

Herramientas del sitio


ada:habilitacion_nomina_electronica

¡Esta es una revisión vieja del documento!


CONFIGURACION DE AMBIENTES PARA HABILITAR NOMINA ELECTRONICA (SET DE PRUEBAS)

Bases de datos a utilizar

base de datos centralizada

  • db104

db104_ADA = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.140.101)(PORT = 1521)) (CONNECT_DATA = SERVER = DEDICATED) (SERVICE_NAME = db104)))

base de datos de configuración

  • db101

db101_NE = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.140.101)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = db101)))

En la base de datos db101 que va ser utilizada para liquidar la nomina y realizar el envió de los documentos se debe parametrizar el cliente según la empresa que se requiera habilitar

Paso 1

Con el siguiente UPDATE se va realizar la actualización de la configuración de la base datos, se ingresa el nit del la empresa a realiza el set de pruebas sin digito de verificación. El tipo de ambiente siempre es 2

UPDATE NOMINA.NE_PARAMETROS_VISTAS NPV
SET NPV.NIT_PROVEEDOR_XML = 901273165 , --nit cliente que se requiere habilitar sin DV
    NPV.DV_NIT_PROVEEDOR_XML = 6 , -- dv del nit del cliente 
    NPV.NIT_CLIENTE = 901273165 , -- nit del cliente que se requiere habilitar sin dv
    NPV.DV_NIT_CLIENTE =  6  , -- dv del nit del cliente 
    NPV.CODIGO_CLIENTE = 'MADASS_TEST' -- nombre del cliente con el sinónimo _TEST para identificar que es habilitación
WHERE AMBIENTE_ID = 2 -- ID 1 = producción 2 = pruebas o habilitación
;
COMMIT;

Paso 2

Se debe crear el tercero de la empresa que se va habilitar En el modulo de nomina esta el maestro de terceros para realizar la creación del tercero - empresa

* Nomina / administrador del sistema / maestro de terceros

Paso 3

Se debe realizar la actualización del nit de la empresa en las tablas de configuración de nomina

UPDATE NOMINA.PARAMETROS_SISTEMA PS
SET PS.NIT_EMPRESA = 901273165 -- Nit sin DV
;
UPDATE NOMINA.EMPRESAS E
SET E.K_N_NIT = 901273165 ,-- Nit sin DV
    E.SC_DIGITO_VERIFICACION = 6 --DV del nit
;
UPDATE NOMINA.EMPRESAS_NOMINA EN
SET EN.K_N_NIT = 901273165 -- Nit sin DV
;
COMMIT;

Paso 4

Se deben ejecutar los ACL de habilitación solo si no están ejecutados

  • Método de validacion

la ip de habilitación de nomina electrónica es 10.1.140.102:8081

La petición de validacion se debe realizar con el usuario SYS

SELECT UTL_HTTP.REQUEST('http://10.1.140.102:8081/NominaElectronica') FROM DUAL

La subconsulta debe visualizar la siguiente información

si la respuesta del servicio es diferente a la de la imagen se deben ejecutar los ACL con el usuario SYS

Inicialmente se debe validar que ACL hay creados en la base de datos solo se realiza en la db101

En la siguiente consulta se pueden visualizar; si ya existe un registro con el HOST 10.1.140.102 y LOWER_PORT 8081 no hay que ejecutarlos

SELECT * FROM DBA_NETWORK_ACLS

Si en la tabla no hay registros se ejecuta el siguiente query

grant execute on utl_http to NOMINA;
grant execute on dbms_lock to NOMINA;

ALTER SESSION SET NLS_LANGUAGE = 'AMERICAN';
ALTER SESSION SET NLS_NUMERIC_CHARACTERS = '.,';
 
BEGIN   
  DBMS_NETWORK_ACL_ADMIN.create_acl (
    acl          => 'acls_ne_test.xml', 
    description  => 'Lista de control de acceso a los servicios de nomina electrónica',
    principal    => 'NOMINA',
    is_grant     => TRUE, 
    privilege    => 'connect',
    start_date   => SYSDATE,
    end_date     => NULL);
  COMMIT;    
end;

BEGIN
   DBMS_NETWORK_ACL_ADMIN.add_privilege (
    acl          => 'acls_ne_test.xml',
    principal  => 'NOMINA',
    is_grant   => TRUE,
    privilege  => 'connect',
    start_date => SYSTIMESTAMP,
    end_date   => null
  );
  COMMIT;
END;

BEGIN
   DBMS_NETWORK_ACL_ADMIN.add_privilege (
    acl          => 'acls_ne_test.xml',
    principal  => 'NOMINA',
    is_grant   => TRUE,
    privilege  => 'resolve',
    start_date => SYSTIMESTAMP,
    end_date   => null
  );
  COMMIT;
END;

begin
  DBMS_NETWORK_ACL_ADMIN.assign_acl (
    acl          => 'acls_ne_test.xml',
    host        => '10.1.140.102', 
    lower_port  => 8081,
    upper_port  => NULL);
  COMMIT;          
end;

Paso 5

en la db104_ADA se debe parametrizar la empresa que va realizar el set de pruebas

En el siguiente INSERT solo se deben de modificar los datos que tienen comentarios y realizar el insert

INSERT INTO INTEGRACION.TBL_FE_CONEXION_CLIENTE (CODIGO_CLIENTE,
                                                 NIT_CLIENTE,
                                                 CODIGO_MEMPRESA,
                                                 TYPE_SERVICE,
                                                 TYPE_CLIENT,
                                                 DB_PORT,
                                                 DB_IP,
                                                 DB_NAME,
                                                 DB_USER,
                                                 DB_PSWD,
                                                 ESTADO,
                                                 FECHA_REGISTRO,
                                                 USUARIO_REGISTRO,
                                                 ENVIRONMENT_SERVICE,
                                                 DIAN_ID_SOFTWARE,
                                                 DIAN_PIN,
                                                 DIAN_NOMBRE_SOFTWARE,
                                                 DIAN_ESTADO,
                                                 DIAN_URL,
                                                 DIAN_FECHA,
                                                 PROFILEEXECUTIONID,
                                                 HASH_SET_PRUEBAS,
                                                 MODO_VALIDACION_PRUEBAS,
                                                 URL_VAL_ACEPTACION,
                                                 URL_VAL_ACEPTACION_FORM,
                                                 EMAIL_NOTIFY,
                                                 FORM_USER_LOGIN,
                                                 FORM_USER_PASSWORD,
                                                 MULTIEMPRESA,
                                                 TIPO_SOFTWARE,
                                                 NE_URL,
                                                 NEV_URL,
                                                 NUMERACION_URL,
                                                 NOTIFICACION_ELECTRONICA)
         VALUES (   'MADASS_TEST_1', --CODIGO CLIENTE QUE VA A REALIZAR EL SET DE PRUEBAS
                    901273165, -- NIT DE LA EMPRESA SIN DV
                    '9999999999',
                    'WS-SOAP',
                    'DIAN',
                    1521,
                    '10.1.140.101',
                    'db101',
                    'NOMINA',
                    'nomina',--CLAVE DEL USUARIO NOMINA DE LA BASE DE DATOS
                    'A',
                    SYSDATE,
                    'INTEGRACION',
                    'DEVELOPMENT',
                       '47099f8c-899d-4978-a4b0-1b2a85defede' --SOFTWARE ID DEL SET DE PRUEBAS
                    || CHR (13)
                    || CHR (10)
                    || '',
                    '73165', -- PIN DEL SET DE PRUEBAS
                    'SICOF',
                    'En Proceso',
                    'https://vpfe-hab.dian.gov.co/WcfDianCustomerServices.svc?wsdl',
                    SYSDATE,
                    2,
                    '30932093-9364-4919-8149-31988cb22a49',-- HAST DEL SET DE PRUEBAS
                    0,
                    'http://10.1.140.102:8080/ADAFE/webresources/forms/efevento/{codigo_cliente}/{nit_empresa}/{pst}/{cufe}',
                    'http://10.1.140.102:8080/ADAFE/webresources/forms/formulario/{codigo_cliente}/{nit_empresa}/{pst}/{cufe}',
                    'mesaservicios@ada.co',
                    'MADASS_TEST_1',--CODIGO CLIENTE QUE VA A REALIZAR EL SET DE PRUEBAS
                    '50459d2dd34cad16a1de85e6a39d7a338539158cefa1d5d6edfbb13acaadcfdc1a9f7abe990729eb8867f54350160363',
                    'N',
                    'NE',
                    'http://127.0.0.1:8081/dianWsRest/v1/nomina',
                    'http://127.0.0.1:8081/dianWsRest/v1/habilitacion',
                    'http://127.0.0.1:8081/dianWsRest/v1/numeracion',
                    'S');
COMMIT;

Paso 6

Insertar el certificado en la tabla de la db104_ADA

Solo se deben modificar los campos comentariados

INSERT INTO PRESUP01.FE_CERTIFICATE_INFO ( FECHA_INICIO_VIGENCIA,
                                          FECHA_FIN_VIGENCIA,
                                          EMISOR_NIT,
                                          EMISOR_NOMBRE,
                                          EMISOR_DIRECCION,
                                          EMISOR_CORREO,
                                          EMISOR_CONTACTO,
                                          EMISOR_CEL_TEL,
                                          NOTIFICACION_EMAIL_WS,
                                          NOTIFICACION_EMAIL_ERP,
                                          NOTIFICACION_FRECU_DIAS,
                                          NOTIFICACION_FRECU_ENVIO,
                                          NOTIFICACION_MSG_PREVIO,
                                          NOTIFICACION_MSG_VENCIDO,
                                          ESTADO,
                                          FECHA_REGISTRO,
                                          CODIGO_USUARIO,
                                          CODIGO_MEMPRESA,
                                          NOTIFICACION_TRAS_VENCER,
                                          PATH_CLIENT_PROPERTIES,
                                          NIT_CLIENTE,
                                          TIPO_SOFTWARE,
                                          CODIGO_CLIENTE)
         VALUES (   TO_DATE ('21/02/2023 19:00:00', 'DD/MM/YYYY HH24:MI:SS'),--TENER PRESENTE LAS FECHA DE INICIO(LA FECHA REAL DE HABILITACION DEBE ESTAR EN EL RANGO)
                    TO_DATE ('21/02/2025 19:00:00', 'DD/MM/YYYY HH24:MI:SS'),--TENER PRESENTE LA FECHA FINAL (LA FECHA REAL DE HABILITACION DEBE ESTAR EN EL RANGO)
                    900204272,
                    'GESTION DE SEGURIDAD ELECTRONICA S.A',
                    'CL 73 7 31 P3 TO B ED EL CAMINO',
                    'info@gse.com.co',
                    'ALVARO CARRERAS AMOROS',
                    '4050082',
                    'contratosprogresar@gmail.com',
                    'contratosprogresar@gmail.com',
                    1,
                    2,
                    'Proximo a vencer',
                    ' ',
                    'A',
                    TO_DATE ('27/02/2023 15:51:38', 'DD/MM/YYYY HH24:MI:SS'),
                    1,
                    '228',
                    '0',
                    'adafe_home/com/ada/adafe/certificado/901273165/Cliente_NE.properties',--EN LA RUTA QUE ESTA EN LA LINEA SE DEBE REEMPLAZAR EL NIT DE LA EMPRESA
                    901273165,--NIT DE LA EMPRESA A REALIZAR EL SET DE PRUEBAS SIN DV
                    'NE',
                    'MADASS_TEST_1');--INGRESAR EL CODIGO DEL CLIENTE PREVIAMENTE SELECCIONADO E INSERTADO EN LA TABLA TBL_FE_CONEXION_CLIENTE

COMMIT;

Paso 7

Se debe liquidar una nómina y marcarla como aprobada

Se toma el numero de la nomina que genero el sistema y se ejecuta

En la DB101 existe un tipo de liquidación denominado NOMINA ELECTRONICA TEST favor liquidar en esa nomina.

UPDATE NOMINA.MOVIMIENTOS_NOMINA
SET SC_ESTADO = 'A'
WHERE KA_NL_DCTO_NOMINA = 10292 --Reemplazar por el numero de nomina liquidada
;
Commit;

Paso 8

Cuando se esté realizando el envió y se generan errores en los documentos enviados se debe eliminar los errores.

1. inicialmente validar que el periodo que se esta enviando exista en la siguiente tabla

SELECT T.*,ROWID FROM NOMINA.NE_PERIODOS_GENERADOS T ORDER BY PERIODO DESC

Al validar el registro el ESTADO tiene que ser B y se ejecuta el siguiente query.

DECLARE 
    v_periodo NUMBER;
BEGIN 
  SELECT PERIODO
  INTO v_periodo
  FROM NOMINA.NE_PERIODOS_GENERADOS
  WHERE ESTADO = 'B';
  MODIFICA.SP_ELIMINAR_ERRORES_NE(v_periodo, 1);
END;COMMIT;

Si se genera error por que el procedimiento esta invalido

Se debe ejecutar el query que crea el procedimiento SP_ELIMINAR_ERRORES_NE y volver a ejecutar el proceso

CREATE OR REPLACE PROCEDURE MODIFICA.SP_ELIMINAR_ERRORES_NE (
    AS_PERIODO   VARCHAR2,
    AN_CEDULA    NUMBER)                       /*1 si es todos los empleados*/
AS
    LL_REG            NUMBER;
    LL_COD_EMPLEADO   NUMBER;
    LS_ERROR          VARCHAR2 (1000); /*-------------------------------------   Se crea procedimiento   ----------   Autor: Brahian Castañeda   brahian.castañeda@ada.co   Fecha: 12/10/2022   ----------   Descripcion: Se crea procedimiento,   este procedimiento elimina uno o todos   los registros de nomina electronica en   un periodo, los cuales tienen un error   durante su ejecucion (error tipo 1 o 2)   --------------------------------------   Nota: la clasificacion de los errores   es el siguiente:     (Error: 0): Significa que proceso sin   ningun percance.     (Error: 1): Este error significa que   nomina electronica no pudo ejecutarse   ni en el inicio, por lo tanto no pudo   generar un CUNE y no se proceso en la   DIAN.     (Error: 2): Este error significa 2 cosas:     1.Durante la ejecución se consume un CUNE,   el llamado a la DIAN es exitoso, pero en   la DIAN se encontro una inconsistencia,   pero aun asi se recibio la informacion   correctamente.     2.Durante la ejecución se consume un CUNE,   pero al llamar a la DIAN no es exitoso, debido   a que el certificado no esta vigente, los   servicios estan caidos, el servidor demoro   en responder, el servidor esta caido, ETC.,   debido a esto la DIAN no recibe la informacion   del empleado enviado.   -------------------------------------- */
BEGIN     /*Si el parametro AN_CEDULA es 1 entonces es para hacer una limpieza general*/
    IF AN_CEDULA = 1
    THEN              /*Validamos que si se ha procesado el periodo seleccionado*/
        SELECT COUNT (*)
          INTO LL_REG
          FROM NOMINA.NE_ENVIADOS_WS
         WHERE PERIODO = AS_PERIODO;

        IF LL_REG = 0
        THEN
            ROLLBACK;
            LS_ERROR :=
                   'Error: El periodo '
                || AS_PERIODO
                || ' no existe en los periodos procesados en Nomina Electronica (NE_ENVIADOS_WS)';
            DBMS_OUTPUT.PUT_LINE (LS_ERROR);
            raise_application_error (-20001, LS_ERROR);
        ELSE             /*Verificamos si hay errores en el periodo seleccionado*/
            SELECT COUNT (*)
              INTO LL_REG
              FROM NOMINA.NE_ENVIADOS_WS
             WHERE PERIODO = AS_PERIODO AND ERROR IN (1, 2);

            IF LL_REG = 0
            THEN
                ROLLBACK;
                LS_ERROR :=
                       'Error: En el periodo '
                    || AS_PERIODO
                    || ' no se registran errores en Nomina Electronica (NE_ENVIADOS_WS)';
                DBMS_OUTPUT.PUT_LINE (LS_ERROR);
                raise_application_error (-20001, LS_ERROR);
            ELSE                   /*Borramos los registros con error tipo 1 y 2*/
                DELETE FROM NOMINA.NE_ENVIADOS_WS
                      WHERE PERIODO = AS_PERIODO AND ERROR IN (1, 2);
            END IF;
        END IF;
    ELSE                                      /*Validamos que el empleado exista*/
        SELECT NVL (CODIGO_TERCERO, 0)
          INTO LL_COD_EMPLEADO
          FROM TESORE01.MAESTRO_TERCEROS
         WHERE NITSD = AN_CEDULA;

        IF LL_COD_EMPLEADO = 0
        THEN
            ROLLBACK;
            LS_ERROR :=
                   'Error: El empleado con cedula '
                || AN_CEDULA
                || ' no existe (MAESTRO_TERCEROS)';
            DBMS_OUTPUT.PUT_LINE (LS_ERROR);
            raise_application_error (-20001, LS_ERROR);
        ELSE     /*Validamos que durante el periodo el empleado si sse haya procesado al menos una vez en nomina electronica*/
            SELECT COUNT (*)
              INTO LL_REG
              FROM NOMINA.NE_ENVIADOS_WS
             WHERE PERIODO = AS_PERIODO AND CODIGO_EMPLEADO = LL_COD_EMPLEADO;

            IF LL_REG = 0
            THEN
                ROLLBACK;
                LS_ERROR :=
                       'Error: El empleado con cedula '
                    || AN_CEDULA
                    || ' no ha sido procesado en nomina electronica (NE_ENVIADOS_WS) en el periodo '
                    || AS_PERIODO;
                DBMS_OUTPUT.PUT_LINE (LS_ERROR);
                raise_application_error (-20001, LS_ERROR);
            ELSE     /*Validamos si el empleado tuvo errores durante el periodo ejecutado*/
                SELECT COUNT (*)
                  INTO LL_REG
                  FROM NOMINA.NE_ENVIADOS_WS
                 WHERE     PERIODO = AS_PERIODO
                       AND CODIGO_EMPLEADO = LL_COD_EMPLEADO
                       AND ERROR IN (1, 2);

                IF LL_REG = 0
                THEN
                    ROLLBACK;
                    LS_ERROR :=
                           'Error: El empleado con cedula '
                        || AN_CEDULA
                        || ' no tiene registro de errores en nomina electronica (NE_ENVIADOS_WS) en el periodo '
                        || AS_PERIODO;
                    DBMS_OUTPUT.PUT_LINE (LS_ERROR);
                    raise_application_error (-20001, LS_ERROR);
                ELSE                        /*Borramos los registros con errores*/
                    DELETE FROM
                        NOMINA.NE_ENVIADOS_WS
                          WHERE     PERIODO = AS_PERIODO
                                AND CODIGO_EMPLEADO = LL_COD_EMPLEADO
                                AND ERROR IN (1, 2);
                END IF;
            END IF;
        END IF;
    END IF;
EXCEPTION
    WHEN VALUE_ERROR
    THEN
        DBMS_OUTPUT.PUT_LINE (
            'Error durante la ejecucion del procedimiento SP_ELIMINAR_ERRORES_NE');
END;
/
ada/habilitacion_nomina_electronica.1714675242.txt.gz · Última modificación: 2024/05/02 18:40 por 192.168.175.87