Frequently Asked Question
Los datos adicionales son una forma de extender el sistema para guardar valores en los imponibles y en las cuentas, de manera que se puedan utilizar en el momento de la liquidación.
Ejemplo
Una de las características de los datos adicionales, es que cuando se asignan en los imponibles, guardan "la historia" de los valores, lo que permite retrotraer evaluaciones de primitivas a los valores históricos.
Los valores que podremos almacenar, los podemos resumir en números, fecha, cadenas , lógicos ( si o no) y podremos restringir en algunos casos , valores de un conjunto de opciones que se muestran en la pantalla de carga como una lista desplegable.
Definir Datos Adicionales
Para utilizar los datos adicionales en primitivas deberemos definirlo y luego a través de funciones podremos recuperar los valores.
Por un lado necesitamos definir los tipos de datos, generalmente las instalaciones tiene configurado un tipo de dato numérico, uno de fecha y uno de caracteres, pero es posible definir también tipos de datos donde los datos se obtengan desde una consulta, eso se puede hacer desde Configuración | Tipos de Datos
En la definición del tipo de datos, le pondremos un nombre al Tipo de Dato, una descripción, Tipo ( A: Alfanumérico, N:numérico y D:Fecha), podremos indicar una máscara.
Ejemplo
Si el campo tuviera que obtenerse de una lista de opciones, se podrá indicar una consulta donde recuperar los datos, la consulta siempre debe tener 2 alias, "codigo" y "lov_descripcion", donde "codigo" retorna el valor a almacenar en el dato adiconal y "lov_descripcion" la descripción que se mostrará en la lista despegable.
Ejemplo
Una vez definido el tipo de dato, podemos definir Datos Adicionales a los imponibles. Eso lo hacemos desde Configuración | Datos Adicionales
Detallaremos para cada dato adicional el tipo de datos, el título con el que aparecerá en la ventana de datos adicionales, el orden y a que imponible está relacionado el dato adicional.
ej. de definición de un dato adiciona lógico ( s/n) para una partida.
NOTA: Cada dato adicional tiene un identificador único que lo vemos como "Campo" en el formulario y ese identificador se utilizará para poder identificarlo y recuperar datos.
Uso de Datos Adicionales
Para utilizar los datos adicionales en primitivas, se pueden utilizar las funciones del paquete PKG_DATOS_ADICIONALES
FUNCTION pkg_datos_adicionales.valor (p_id_imponible NUMBER, p_campo NUMBER, p_fecha DATE , P_Default varchar2) RETURN VARCHAR2;
FUNCTION pkg_datos_adicionales.valor_numerico (p_id_imponible NUMBER,
p_campo NUMBER,
p_fecha DATE)
RETURN NUMBER;
FUNCTION pkg_datos_adicionales.valor_numerico (p_id_imponible NUMBER,
p_campo NUMBER,
p_fecha DATE,
p_default NUMBER)
RETURN NUMBER;
FUNCTION pkg_datos_adicionales.valor_fecha (p_id_imponible NUMBER, p_campo NUMBER, p_fecha DATE)
RETURN DATE;
FUNCTION pkg_datos_adicionales.valor_fecha (p_id_imponible NUMBER, p_campo NUMBER, p_fecha DATE,p_default DATE)
RETURN DATE;
Parámetros:
- p_id_imponible se corresponde con el identificador del imponible ( id_partida, id_comercion,id_automotor, etc.)
- p_campo: identificador del "Campo " que se desea consultar
- p_default: es un valor por defecto si no está cargado.
- p_fecha: Fecha de vigencia del valor.
Ejemplos de Usos:
Ejemplo de campo lógico para utilizar en una condición de concepto / impuesto.
SELECT CASE
WHEN pkg_datos_adicionales.valor
(:p_param2 /* En la evaluación de primitivas , p_param2 tiene el id_imponible */
,1 /* identificador del "Campo" lógico */
,liq.fecha_servicio_desde, /* Tomar vigencia de la liqudiaciín */
'N' /* Valor por defecto */
) = 'S'
THEN 1
ELSE 0
END
FROM re_liquidaciones_deuda liq Notar que es conveniente utilizar como fecha de vigencias los campos fecha_servicio_desde de la liquidación.
Otro ejemplo para recuperar un valor numerico en una primitiva
select pkg_DAtos_Adicionales.VALOR( :P_PARAM2,21,FECHA_SERVICIO_HASTA,'0' ) FROM RE_LIQUIDACIONES_DEUDA WHERE ID_LIQUIDACION=:p_id_liquidacion