0. Introducción
Parece ser que tanto los recibos, liquidaciones y autoliquidaciones correctos se guardan en la tabla de valores OPS$GTTORA.VALO_VALORES VALO. Pero también existen elementos en la tabla OPS$GTTORA.VATE_VALORES_TEMPORALES
Para distinguir si son autoliquidaciones, liquidaciones o recibos el campo COD_TVAL de las tablas anteriores toma los valorres A,L,R respectivamente
Cuando se trata de liquidaciones y autoliquidaciones, muchas veces pero no siempre, suelen crear registros en la tabla OPS$GTTORA.TPDL_TP_DETALLE_LIQUIDACION TPDL.
La tabla TPDL.. tiene un campo llamado CONFIRMADA_LIQ_TPDL que en función de su valor puede generar registros en la tabla VALO.. o también en la tabla VATE (valores tempoorales), o no generar ningun registro en dichas tablas con lo que son liquidaciones que se han quedado a mitad de camino y no son válidas.
Veamos el campo CONFIRMADA_LIQ_TPDL que valores puede tomar y las consecuencias que conllevan:
- "S" de ???. Genera un Recibo y un apunte en la tabla VALO.. con enganche TPDL.ID_EPER_VALO=VALO.ID_EPER.
- "L" de liquidación: Genera un apunte en la tabla VALO de tipo liquidación o autoliquidación que se enganchan con TPDL.ID_EPER_VALO=VALO.ID_EPER. Cada registro de esta clase viene acompañado generalmente de 2 registros previos con dicho campo a 'N' y que quedan referenciados en el campo ID_TPDL_REL
- "T" de Temporal: A veces generan un valor temporal de la tabla VATE.. que enlaza con el campo TPDL.ID_EPER_VALO=VATE.ID_EPER Viene precedido de un registro tipo "N". Muchas veces no genera nada y se queda ahí perdidad
- "N" de Nula??: No genera nada. Solo son precursoresd de otro tipo de regisdtro dentro de la misma tabla. Anteceden 2 registros de este tipo a otro tipo "L". Anticipa un solo registro a otro de tipo "T".
- "G" de grabada. De momento no genera ningún otro registro y no se pagan. Tampoco acompañan ni son acompañadas
1. Vista que engloba tanto a valores temporales (VATE) como "permanentes"(VALO)
CREATE OR REPLACE VIEW XIMO_SCHM.XIMO_VALORS
AS
SELECT VATE.IDENTIFICADOR_VATE,
LPAD(VALO.ANYO_CARGO_CARG,4,'0')||LPAD(VALO.ID_ORGA ,2,'0') ||
LPAD(VALO.ID_SUBO,5,'0') || VALO.COD_CONC || LPAD(VALO.EMISION_CARG,2,'0') ||
VALO.COD_TVAL || LPAD(VALO.NUMERO_VALO,6,'0') AS IDENTIFICADOR_VALO,
VATE.ID_EPER,
VALO.ID_EPER AS ID_EPER_VALOR ,
TPDL.ID_TPDL,
OT.ID_EPER_OT,
EPER.ID_PERS,
PERS.NIF_PERG, PERS.NOMBRE_PERG,
NVL(VATE.COD_TVAL,VALO.COD_TVAL) AS COD_TVAL,
NVL(VATE.COD_CONC,VALO.COD_CONC) AS COD_CONC,
VATE.TIPO_VATE,
VATE.ESTADO_VATE,
TESV.*,
TSEV.*,
TFVA.*,
SVAL.DESCR_SVAL,
VATE.COD_USUA,
NVL(VATE.FECHA_GRABACION_VATE,
NVL(VALO.FECHA_CARGA_VALO,
TO_DATE(TO_CHAR(NVL(VATE.EJERCICIO_VATE,2000))||'-01-01','YYYY-MM-DD'))) AS FECHA_GRABACION_VATE,
VATE.PERIODO_VATE,
VALO.ANYO_CARGO_CARG, VALO.EMISION_CARG, VALO.NUMERO_VALO,
VALO.ID_CARG, VALO.NUMERO_CARG,
NVL(VATE.OBJETO_TRIB_VATE,VALO.OBJETO_TRIB_VALO) AS OBJETO_TRIB_VATE,
NVL(VATE.DEUDA_VATE,VALO.IMPORTE_VALO) AS IMPORTE,
VATE.ID_EPER_ORIG_VATE,
NVL(VATE.NUM_EXP_LID_VATE, VALO.NUM_EXP_LID_VALO) AS NUM_EXP_LID_VATE,
NVL(VATE.ID_CSUB,VALO.ID_CSUB) AS ID_CSUB,
CSUB.NOMBRE_PARA_SUBO_CSUB,
VALO.ID_REGE
--SELECT COUNT(*)
FROM OPS$GTTORA.VATE_VALORES_TEMPORALES VATE -- NUM_EXP_LID_VATE, ID_EPER_ORIG_VATE-> ID_TPDL??, IDENTIFIADOR_VATE, ID_EPER_VALO-> VALO.ID_EPER,COPD_CONC,
FULL OUTER JOIN OPS$GTTORA.VALO_VALORES VALO ON VALO.ID_EPER=VATE.ID_EPER_VALOR -- ID_CARG, NUMERO_VALO!!!
LEFT JOIN OPS$GTTORA.TPDL_TP_DETALLE_LIQUIDACION TPDL ON TPDL.ID_TPDL =VATE.ID_EPER_ORIG_VATE
LEFT JOIN OPS$GTTORA.OT_OBJETO_TRIBUTARIO OT ON OT.ID_EPER_OT =VATE.ID_EPER_ORIG_VATE
LEFT JOIN OPS$GTTORA.EPER_ELEMENTOS_PERSONA EPER ON EPER.ID_EPER = GREATEST (NVL(VATE.ID_EPER,-1), NVL(VALO.ID_EPER,-1))
LEFT JOIN OPS$GTTORA.CSUB_CONCEPTOS_SUBORGANISMO CSUB ON CSUB.ID_CSUB = GREATEST (NVL(VATE.ID_CSUB,-1), NVL(VALO.ID_CSUB ,-1))
LEFT JOIN OPS$GTTORA.PERS_PERSONAS pers ON pers.ID_PERS =EPER.ID_PERS
LEFT JOIN OPS$GTTORA.TESV_TIPOS_ESTADO_VALOR TESV ON TESV.COD_TESV =VALO.COD_TESV
LEFT JOIN OPS$GTTORA.TSEV_TSUBE_VALOR TSEV ON TSEV.COD_TSEV =VALO.COD_TSEV
LEFT JOIN OPS$GTTORA.TFVA_TIPOS_FORMATO_VALOR TFVA ON TFVA.COD_TFVA =VALO.COD_TFVA
LEFT JOIN OPS$GTTORA.SVAL_SUBTIPO_VALORES SVAL ON SVAL.COD_SVAL =VALO.COD_SVAL
;
2. Recibos
Como hemos dicho antes, los recibos son los valores (vista XIMO_SCHM.XIMO_VALORS ) que tienen el campo COD_TVAL='R'. Por tanto la forma simple de obtener los valores es:
SELECT *
--DISTINCT VALO.COD_CONC -- SALE: BA,CA,GU,IA,IR,IU,IV,PP
FROM XIMO_SCHM.XIMO_VALORS VALORS
WHERE VALORS.COD_TVAL='R'
ORDER BY VALORS.ID_EPER
;
Pero hay que tener en cuenta que hay muchas tablas relacionadas con los recibos específicos de un concepto, que aportan información complementaria. Hay tablas para Tasas (Basura, Cajeros, Vados), Vehículos, IBI rústica y urbana, IAE
Veamos los valores y la mayoría de tablas que se asocian para complementar información de la tabla VALO_VALORES. OJO: Para los valores temporales hay otras tablas que enganchan que no las hemos tenido en cuenta
SELECT COUNT(*)
FROM OPS$GTTORA.VALO_VALORES VALO -- (64,117)
LEFT JOIN OPS$GTTORA.OTPT_OBJETOS_TRIB_PREV_VOLU OTPT -- (69,978) (63,007): OJO: hay duplicados y otros que NO estan
ON OTPT.ID_EPER_VALO =VALO.ID_EPER
AND NOT EXISTS (
SELECT *
FROM OPS$GTTORA.OTPT_OBJETOS_TRIB_PREV_VOLU OTPT1
WHERE OTPT1.ID_EPER_VALO=OTPT.ID_EPER_VALO -- eSCOGEMOS SOLO UN DEGLOSE
AND OTPT1.ID_OTPT >OTPT.ID_OTPT
)
LEFT JOIN OPS$GTTORA.VIBI_VALOR_IBI VIBI -- (64,117) (21,742): Rebuts d'IBI
ON VIBI.ID_EPER =VALO.ID_EPER
LEFT JOIN OPS$GTTORA.IBVA_IBI_VALOR IBVA -- (64,117) (3.679) Rebuts IBI ???
ON IBVA.ID_EPER_VALO=VALO.ID_EPER
LEFT JOIN OPS$GTTORA.VIAE_VALOR_IAE VIAE -- (64,117) (199): Rebuts d'IAE
ON VIAE.ID_EPER =VALO.ID_EPER
LEFT JOIN OPS$GTTORA.VAIV_VALORES_IVTM VAIV -- (64,117) (11,870): Rebuts de vehicles
ON VAIV.ID_EPER =VALO.ID_EPER
LEFT JOIN OPS$GTTORA.VATR_VALOR_TRAFICO VATR -- (64,117) (275): Sancions de transit
ON VATR.ID_EPER =VALO.ID_EPER
LEFT JOIN OPS$GTTORA.PLSP_PLUSVALIAS_SUJ_PAS PLSP -- (64,117) (688):PLusvalues
ON PLSP.ID_EPER_VALO=VALO.ID_EPER
LEFT JOIN OPS$GTTORA.VBOL_VALORES_BOLETIN VBOL -- (64,117) (2,172): OJO: Duplicats. Rebuts desde boletins (multes, infraccions)
ON VBOL.ID_EPER =VALO.ID_EPER
AND NOT EXISTS (
SELECT *
FROM OPS$GTTORA.VBOL_VALORES_BOLETIN VBOL1
WHERE VBOL1.ID_EPER=VBOL.ID_EPER
AND VBOL1.ID_BOLE>VBOL.ID_BOLE
)
LEFT JOIN OPS$GTTORA.VSUB_VALOR_SUBCONCEPTOS VSUB -- (70,684) (24,552): OJO: Duplicats. Subconceptes que té cada rebut
ON VSUB.ID_EPER =VALO.ID_EPER -- (64,117) (24,181): OJO: SI QUITAMOS LOS DUPLICADOPS
AND NOT EXISTS(
SELECT *
FROM OPS$GTTORA.VSUB_VALOR_SUBCONCEPTOS VSUB1 --SOLO COGEMOS ELPRIMER DESGLOSE DE SUBCONCEPTO
WHERE VSUB1.ID_EPER=VSUB.ID_EPER
AND VSUB1.ID_VSUB>VSUB.ID_VSUB
)
LEFT JOIN OPS$GTTORA.SUBC_SUBCONCEPTOS SUBC -- (64,117) (24,181): OJO: SI QUITAMOS LOS DUPLICADOPS
ON SUBC.ID_EPER= VALO.ID_EPER
AND NOT EXISTS(
SELECT *
FROM OPS$GTTORA.SUBC_SUBCONCEPTOS SUBC1 --SOLO COGEMOS ELPRIMER DESGLOSE DE SUBCONCEPTO
WHERE SUBC1.ID_EPER=SUBC.ID_EPER
AND SUBC1.NUMERO_SUBC >SUBC.NUMERO_SUBC
)
LEFT JOIN OPS$GTTORA.VCON_VALORES_CONCEPTO VCON -- (64,117) (24,552): Rebuts de conceptes
ON VCON.ID_EPER =VALO.ID_EPER
LEFT JOIN OPS$GTTORA.TPDL_TP_DETALLE_LIQUIDACION TPDL -- (64,117) (24,552): Liquidacions.
--ON TPDL.ID_TPDL =OTPT.ID_TPDL -- (20,089)
--OR TPDL.ID_EPER_VALO =VALO.ID_EPER -- (6,288)
ON TPDL.ID_TPDL =VCON.ID_TPDL -- (24,552) Este ON substitueix als 2 anteriors!!!!
LEFT JOIN OPS$GTTORA.VATE_VALORES_TEMPORALES VATE -- (64,117) (31,829)
ON VATE.ID_EPER_VALOR =VALO.ID_EPER
LEFT JOIN OPS$GTTORA.RECA_REGISTROS_CARGA RECA -- (64,117) (561)
ON RECA.ID_EPER_RECA =VALO.ID_EPER
LEFT JOIN OPS$GTTORA.VPRV_VALORES_RELACION VPRV -- (64,117) (3,911)
ON VPRV.ID_EPER_VALO =VALO.ID_EPER
WHERE
--VALO.COD_CONC ='IR'
--AND
VALO.ANYO_CARGO_CARG =2022;
3. Liquidaciones
Como hemos dicho antes, las liquidaciones son los valores (vista XIMO_SCHM.XIMO_VALORS) que tienen el campo COD_TVAL='L'. Por tanto la forma simple de obtener los valores es:
SELECT *
--DISTINCT VALO.COD_CONC -- SALE: BA,CA,GU,IA,IR,IU,IV,PP
FROM XIMO_SCHM.XIMO_VALORS VALORS
WHERE VALORS.COD_TVAL='L'
ORDER BY VALORS.ID_EPER
;
Pero se sabe que hay muchas tablas relacionadas con las liquidaciones específicas de un concepto, que aportan información complementaria.
Y hay que tener en cuenta que los elementos de la vista XIMO_VALORS de tipo liquidación, muchos de ellos no tienen correspondencia con la tabla TPDL ???? Parece ser que parte de estos registros ausentes, se han producido en la parte de MULTAS
Si queremos obtener mas detalle con respecto a esta tabla en lo que respecta a Liquidaciones y Autoliquidaciones se puede ver esta consulta que se adjunta teniendo en cuenta que:
- La tabla TPDL puede tener varios registros para una misma liquidación
- Solo hay que hacer caso a las liquidaciones TPDL cuyo campo CONFIRMADA_LIQ_TPDL= 'S' o 'L'
- La mayoria de tablas que se asocian para complementar información, tienen varios regisros (desgloses) para una misma liquidación, con lo que para simplificar solo se utiliza un solo desglose (cosa mal hecha si queremos saber toda la información)
- Por otra parte el calculo de las liquidaciones se realiza utilizando la tabla TPUT_TP_UNIDADES_TARIFAS que destroza la consulta. Por ello se la ha comentado.
Hay que tener en cuenta solo las liquidaciones que están confirmadas.
SELECT count(*)
-- VALO.ID_EPER, TPDL.*,'-----------------------------',VALO.*
FROM OPS$GTTORA.TPDL_TP_DETALLE_LIQUIDACION TPDL --(36.144)
LEFT JOIN OPS$GTTORA.BTPL_BONIF_TPDL BTPL ON BTPL.ID_TPDL=TPDL.ID_TPDL --(36.144) (1) BONIF DE ICIO
LEFT JOIN OPS$GTTORA.OTPT_OBJETOS_TRIB_PREV_VOLU OTPT ON OTPT.ID_TPDL=TPDL.ID_TPDL --(36.144) (20.358) PREVIOS DE TASAS
LEFT JOIN OPS$GTTORA.TPBA_TP_BENEFICIOS_APLICADOS TPBA ON TPBA.ID_TPDL=TPDL.ID_TPDL --(36.144) (188) BENEFICIOS PERIODOS
LEFT JOIN OPS$GTTORA.TPBE_TP_BENEFICIOS TPBE ON TPBE.ID_TPDL=TPDL.ID_TPDL --(36.144) (188) BENEFICIOS DETALLE
LEFT JOIN OPS$GTTORA.TPDE_TP_DETALLE_EJERCICIOS TPDE ON TPDE.ID_TPDL=TPDL.ID_TPDL --(36.144) (34.801) DETALLE EJERCICIOS
LEFT JOIN OPS$GTTORA.TPDP_TP_DETALLE_PERIODOS TPDT ON TPDT.ID_TPDL=TPDL.ID_TPDL --(36.144 (34.801) DETALLE PERIODOS (duplica)
AND NOT EXISTS (SELECT * FROM OPS$GTTORA.TPDP_TP_DETALLE_PERIODOS TPDT1
WHERE TPDT1.ID_TPDL=TPDT.ID_TPDL AND TPDT1.ORDEN_TPDP<TPDT.ORDEN_TPDP)
LEFT JOIN OPS$GTTORA.TPDS_TP_DETALLE_SUBCONCEPTOS TPDS ON TPDS.ID_TPDL=TPDL.ID_TPDL --(36.144) (36.032) DETALLE SUBCONCEPTOS OJO: duplica
AND NOT EXISTS (SELECT * FROM OPS$GTTORA.TPDS_TP_DETALLE_SUBCONCEPTOS TPDS1
WHERE TPDS1.ID_TPDL=TPDS.ID_TPDL AND TPDS1.ORDEN_TPDS<TPDS.ORDEN_TPDS)
LEFT JOIN OPS$GTTORA.TPDT_TP_DETALLE_TARIFAS TPDT ON TPDT.ID_TPDL=TPDL.ID_TPDL --(36.144) (34.733) DETALLE TARIFAS OJO:Duplica
AND NOT EXISTS (SELECT * FROM OPS$GTTORA.TPDT_TP_DETALLE_TARIFAS TPDT1
WHERE TPDT1.ID_TPDL=TPDT.ID_TPDL AND (TPDT1.ORDEN_TPDT*100+TPDT1.ORDEN_TPDS)>(TPDT.ORDEN_TPDT*100+TPDT.ORDEN_TPDS))
LEFT JOIN OPS$GTTORA.TPUA_TP_UNIDADES_TARIFAS_ALT TPUA ON TPUA.ID_TPDL=TPDL.ID_TPDL --(36.144) (1.650) -OJO DUPLICA
AND NOT EXISTS (SELECT * FROM OPS$GTTORA.TPUA_TP_UNIDADES_TARIFAS_ALT TPUA1
WHERE TPUA1.ID_TPDL=TPUA.ID_TPDL
AND (TPUA1.ORDEN_TPDS*1000000+TPUA1.ORDEN_TPDT *10000+TPUA1.ORDEN_TPDA*100+TPUA1.ORDEN_TPUA)>
(TPUA.ORDEN_TPDS *1000000+TPUA.ORDEN_TPDT *10000+TPUA.ORDEN_TPDA *100+TPUA.ORDEN_TPUA)
)
--LEFT JOIN OPS$GTTORA.TPUT_TP_UNIDADES_TARIFAS TPUT --OJO: PETAAAAAAAA PARA ver el cálculo de la liquidacion
-- ON TPUA.ID_TPDL=TPDL.ID_TPDL
-- AND NOT EXISTS (SELECT * FROM OPS$GTTORA.TPUT_TP_UNIDADES_TARIFAS TPUT1
-- WHERE TPUT1.ID_TPDL=TPUT.ID_TPDL
-- AND (TPUT1.ORDEN_TPDS*10000+TPUT1.ORDEN_TPDT *100+TPUT1.ORDEN_TPUT)>
-- (TPUT.ORDEN_TPDS *10000+TPUT.ORDEN_TPDT *100+TPUT.ORDEN_TPUT)
-- )
LEFT JOIN OPS$GTTORA.VALO_VALORES VALO ON VALO.ID_EPER=TPDL.ID_EPER_VALO --(36.144) (6.506)
LEFT JOIN OPS$GTTORA.VCON_VALORES_CONCEPTO VCON ON VCON.ID_TPDL=TPDL.ID_TPDL --(36.144) (25.039)
;
4. Autoliquidaciones
Como hemos dicho antes, las liquidaciones son los valores (vista XIMO_SCHM.XIMO_VALORS) que tienen el campo COD_TVAL='A'. Por tanto la forma simple de obtener los valores es:
SELECT *
--DISTINCT VALO.COD_CONC -- SALE: BA,CA,GU,IA,IR,IU,IV,PP
FROM XIMO_SCHM.XIMO_VALORS VALORS
WHERE VALORS.COD_TVAL='A'
ORDER BY VALORS.ID_EPER
;
Pero se sabe que hay muchas tablas relacionadas con las liquidaciones específicas de un concepto, que aportan información complementaria.
5. Estados de los valores temporales VATE
ESTADO_VATE Descripción ID_EPER_VALO ID_EPER_ORIG_VATE En_gtt COD_TVAL FECHA_BORRADO_VATE Tablas Comentarios =========== =============== ============ ================= ====== ======== ================== =================== ============== E Eliminado Null Null/SI No A,L SI VTRG ? ------------------------------------------------------------------------------------------------------------------------------------------- G Grabado Null Null/SI No A,L Null VTRG ? Comienza por SL Sin tributación PLSP /TPDL O es plusvalia o tasa ------------------------------------------------------------------------------------------------------------------------------------------- I valor temporal Null Null/Si Si A,L Null VTRG ? Emitidas y no cobradas
no definitivo ------------------------------------------------------------------------------------------------------------------------------------------- P No generado Null NULL/SI No A,L Null/Si OTPT No se ha generado el valor pues han aparecido problemas
por problemas
-------------------------------------------------------------------------------------------------------------------------------------------
R Recibos IBI que SI NULL/SI SI R Null OTPT Recibos
han pasado a
definitivos
-------------------------------------------------------------------------------------------------------------------------------------------
V Liq y AutoLi SI NULL/SI SI A,L Null Liq y Autoliq pagadas
que han pasado
a definitivos
No hay comentarios :
Publicar un comentario