====== CONFIGURACION DE AMBIENTES PARA HABILITAR NOMINA ELECTRONICA (SET DE PRUEBAS)======
====== Bases de datos a utilizar ======
** base de datos centralizada **
* ** //db104_ADA//**
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
====== TENER EN CUENTA ======
Antes de iniciar con el paso 1, el ticket sobre el cual se realizó la solicitud de la habilitación se debe enviar al área de fabrica con el fin de que se cree la carpeta en el servidor de pruebas y producción de nómina electrónica y se deben enviar los siguientes documentos.
- Certificado de facturación electrónica (se utiliza el mismo certificado para nomina y facturación) se debe enviar en extensión P12 ó pfx
- Clave del certificado
- Nit de la empresa sin dv
==== 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
Tener presente que siempre para nomina electrónica el nombre debe de ser {cliente}_NE_PROD con el fin de identificar el servicio de nómina y facturación. ejemplo FALVA_NE_PROD
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
{{ :ada:peticion_servicio.png?direct&600 |}}
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 deben borrar los registros de las dos tablas que tienen la sentencia **DELETE** y actualizar el periodo 202401 a estado borrador con el **UPDATE**
En caso de que en la tabla NE_PERIODOS_GENERADOS no exista el periodo 202401 se ejecuta el insert
DELETE FROM NOMINA.NE_WS_INFORME_ERROR
;
DELETE FROM NOMINA.NE_ENVIADOS_WS
;
UPDATE NOMINA.NE_PERIODOS_GENERADOS
SET ESTADO = 'B'
WHERE PERIODO = 202401
;
COMMIT
;
--El insert solo se debe ejecutar si en NE_PERIODOS_GENERADOS no esta el periodo 202401
INSERT INTO NOMINA.NE_PERIODOS_GENERADOS (ID,
PERIODO,
ANO,
MES,
FECHA_INICIAL,
FECHA_FINAL,
TIPO_ARCHIVO,
ESTADO,
CODIGO_MEMPRESA,
FECHA_REGISTRO,
USUARIO_REGISTRO)
VALUES (2,
'202401',
2024,
1,
TO_DATE ('01/01/2024', 'DD/MM/YYYY'),
TO_DATE ('31/01/2024', 'DD/MM/YYYY'),
1,
'B',
'9999999999',
SYSDATE,
'NOMINA')
;
COMMIT
==== paso 8 ====
En la base de datos existe una nómina liquidada en el periodo 202401 con el número de nómina 10628 con el tipo liquidación denominado **NOMINA ELECTRONICA TEST** la cual tiene 11 empleados, la nómina está en estado aprobada ya que lo requiere el proceso para poder que se visualice en las vistas de envió.
para validar que la nómina si este correcta ejecutar la consulta y debe retomar datos de los empleados y conceptos
SELECT MT.CODIGO_TERCERO,
MT.NIT AS NUMERO_DOCUMENTO,
MT.NOMBRE AS NOMBRE,
TL.SS_TIPO_LIQUIDACION AS TIPO_LIQUIDACION,
MN.KA_NL_DCTO_NOMINA AS NUMERO_NOMINA,
CPTO.SS_CODIGO AS CODIGO_CONCEPTO,
CPTO.SS_CONCEPTO AS DESCRIPCION_CONCEPTO,
NETC.TIPO,
NETC.DESCRIPCION AS DESCRIPCION_TIPO_CONCEPTO,
CPTO.SC_SIGNO AS SIGNO,
SUM (ROUND (MNCC.ND_VALOR)) AS VALOR
FROM NOMINA.MOVIMIENTOS_NOMINA MN,
NOMINA.MOVIMIENTOS_NOMINA_DETALLE MND,
NOMINA.CONCEPTOS CPTO,
NOMINA.MAESTRO_TERCEROS MT,
NOMINA.TIPOS_LIQUIDACIONES TL,
NOMINA.NE_TIPOS_CONCEPTO NETC,
NOMINA.NE_CONCEPTOS_RELACION NECR,
NOMINA.EMPLEADOS E,
NOMINA.MOVIMIENTOS_NOMINA_CCOSTO MNCC
WHERE MN.KA_NL_MOVIMIENTO = MND.KA_NL_MOVIMIENTO
AND MND.KA_NL_MOVIMIENTO_NOMINA = MNCC.KA_NL_MOVIMIENTO_DETALLE
AND MN.SC_ESTADO = 'A'
AND CPTO.KA_NL_CONCEPTO = MND.KA_NL_CONCEPTO
AND MN.KA_NL_TERCERO = MT.CODIGO_TERCERO
AND MN.KA_NL_TIPO_LIQUIDACION = TL.KA_NL_TIPO_LIQUIDACION
AND MN.KA_NL_TERCERO = E.KA_NL_TERCERO
AND TO_CHAR (MN.DD_DESDE, 'yyyymm') = 202401
AND MND.KA_NL_CONCEPTO = NECR.CONCEPTO_ID(+)
AND NECR.TIPO_CONCEPTO_ID = NETC.ID(+)
AND MN.KA_NL_TERCERO NOT IN
(SELECT CODIGO_EMPLEADO
FROM NOMINA.NE_ENVIADOS_WS
WHERE PERIODO = 202401 AND TIPO_ARCHIVO = 1 AND ERROR = 0)
GROUP BY MT.CODIGO_TERCERO,
MT.NIT,
MT.NOMBRE,
TL.SS_TIPO_LIQUIDACION,
MN.KA_NL_DCTO_NOMINA,
CPTO.SS_CODIGO,
CPTO.SS_CONCEPTO,
NETC.TIPO,
NETC.DESCRIPCION,
CPTO.SC_SIGNO
ORDER BY MT.NIT
==== Paso 9 ====
Cuando se esté realizando el envió y se generan errores se deben consultar en la siguiente tabla la cual tiene la descripción del error generado por el envió.
SELECT * FROM NOMINA.NE_WS_INFORME_ERROR
Después de validado los errores se deben eliminar para poder continuar con el proceso.
1. inicialmente validar que el periodo que se está 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
{{ :ada:procedimiento.png?direct&600 |}}
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;
/
==== Paso 10 envió - Nomina de ajuste====
Para enviar la nómina de ajuste (Eliminar un registro el cual ya esta en al Dian)
- En la Pestaña de nomina de ajuste se debe seleccionar el periodo para el cual corresponde el ajuste
- Se da en VALIDAR para cargar los registros correspondientes a los envíos
- En el tipo de nota se debe seleccionar eliminar a los registros que corresponda.
- Se debe ejecutar los dos update con los datos que solicita el query en la base de datos con el periodo que corresponda.
- En la ventana del modulo de nomina se hace el ultimo paso que es enviar los registros.
{{ :ada:sicoferp:nomina_electronica.png?direct&600 |}}
UPDATE NOMINA.NE_PERIODOS_GENERADOS
SET TIPO_ARCHIVO = 2 , ESTADO = 'B'
WHERE PERIODO =
/*Ingrese el periodo correspondiente al ajuste*/
UPDATE NOMINA.NE_ENVIADOS_WS
SET TIPO_ARCHIVO = 2 , TIPO_NOTA = 2
WHERE PERIODO = /*Ingrese el periodo correspondiente al ajuste*/
AND CODIGO_TERCERO = /*Ingrese el codigo del empleado del cual se va realizar la eliminacion del registro en la dian*/
Después de enviados los registros se debe restablecer los registros modificados con el siguiente update
UPDATE NOMINA.NE_ENVIADOS_WS
SET TIPO_ARCHIVO = 1 , TIPO_NOTA = 9
WHERE PERIODO = /*Ingrese el periodo correspondiente al ajuste*/
AND CODIGO_TERCERO = /*Ingrese el codigo del empleado del cual se va realizar la eliminacion del registro en la dian*/
AND TIPO_XML = 102
UPDATE NOMINA.NE_PERIODOS_GENERADOS
SET TIPO_ARCHIVO = 1 , ESTADO = 'T'
WHERE PERIODO = /*Ingrese el periodo correspondiente al ajuste*/