lunes, 4 de diciembre de 2023

GTT (12) - BD MUNICIPIO (12). Históricos de valores (II). Histórico de Autoliquidaciones. pROBLEMA DE CUADRE DE INGRESOS Y BAJAS!!!!

 

1.Autoliquidaciones. Estados actuales

Vamos a modificar la consulta anterior para ver solo los estados de las Autiliquidaciones

SELECT DISTINCT count(*), VALORS.ESTADO_VATE, VALORS.COD_TVAL, VALORS.COD_TESV, VALORS.DESCR_TESV, VALORS.COD_TSEV , VALORS.DESCR_TSEV

FROM XIMO_SCHM.XIMO_VALORS VALORS

WHERE VALORS.COD_TVAL ='A'

AND VALORS.ESTADO_VATE NOT IN ('E','P','G')

GROUP BY VALORS.ESTADO_VATE, VALORS.COD_TVAL, VALORS.COD_TESV, VALORS.DESCR_TSEV, VALORS.COD_TSEV , VALORS.DESCR_TESV

ORDER BY VALORS.COD_TESV, VALORS.COD_TSEV,VALORS.COD_TVAL ;

Y nos sale

COUNT(*)|ESTADO_VATE|COD_TVAL|COD_TESV|DESCR_TESV           |COD_TSEV|DESCR_TSEV                |
--------+-----------+--------+--------+---------------------+--------+--------------------------+
       1|V          |A       |CE      |Cobrado en Ejecutiva |O       |Confirmado no facturado   |
      32|V          |A       |CV      |Cobrado en Voluntaria|DP      |Devuelto Parcial          |
     128|V          |A       |CV      |Cobrado en Voluntaria|DT      |Devuelto Total            |
   27904|V          |A       |CV      |Cobrado en Voluntaria|O       |Confirmado no facturado   |
       3|V          |A       |CV      |Cobrado en Voluntaria|PDT     |Propuesta Devolución Total|
     860|I          |A       |        |                     |        |                          |


Caso 1: ESTADO_VATE='I' 

Si miramos el histórico vemos:


Por tanto este estado se puede obtener de la vista XIMO_VALORS (o directamente de la tabla VATE) y los campos que necesitamos:

  1. IDENTIFICADOR_VATE:  VATE.IDENTIFICADOR_VATE
  2. IDENTIFICADOR_VALO: NULO
  3. ID_EPER: VATE.ID_EPER
  4. ID_EPER_VALO: NULO
  5. COD_ESTADO: 'GR' (fijo)
  6. FECHA: VATE.ECHA_GRABACION_VATE
  7. COD_USUA: VATE.COD_USUA
  8. OBSE: 'Grabación del valor temporal'

Y su estado es 'Grabación del Valor' que lo pondremos a mano. Y la consulta que nos lo daría es:

SELECT VALORS.IDENTIFICADOR_VATE, VALORS.IDENTIFICADOR_VALO, VALORS.ID_EPER, VALORS.ID_EPER_VALOR, 'GR' AS COD_ESTADO,

VALORS.FECHA_GRABACION_VATE,VALORS.COD_USUA, 'Grabación del valor temporal',

0,0,0,0,NULL,NULL,NULL

FROM XIMO_SCHM.XIMO_VALORS VALORS

WHERE VALORS.COD_TVAL ='A'AND VALORS.ESTADO_VATE ='I';

Y nos resultaría :

IDENTIFICADOR_VATE |IDENTIFICADOR_VALO|ID_EPER |ID_EPER_VALOR|COD_ESTADO|FECHA_GRABACION_VATE |COD_USUA |'GRABACIÓNDELVALORTEMPORAL' | ----------------------+------------------+---------+-------------+----------+-----------------------+---------+----------------------------+ 0108282308180019603452| |108282308| |GR |2018-03-16 10:56:31.000|20005913 |Grabación del valor temporal| 0108152132180011094893| |108152132| |GR |2018-02-23 13:32:23.000|20809081 |Grabación del valor temporal| 0107726552170336799591| |107726552| |GR |2017-12-18 08:06:13.000|20809081 |Grabación del valor temporal| 0108210743180016624556| |108210743| |GR |2018-03-09 13:16:45.000|20005913 |Grabación del valor temporal| 0108415842180021216502| |108415842| |GR |2018-03-26 14:40:30.000|20809081 |Grabación del valor temporal|

Caso 2: ESTADO_VATE='V', COD_TESV=CV, COD_TSEV=O (Cobrado en Voluntaria, Confirmado no facturado)

Corresponde a una autoliquidación que se ha pagado por el C60. Si miramos el histórico vemos:



El primer movimiento de grabación lo vimos en el punto anterior.

Ahora nos toca buscar la tablas donde se almacenan  los dos últimos movimientos (alta en voluntaria y cobro por C60). Para ello buscamos por ID_EPER e ID_EPER_VALO

Existe una tabla que guarda los moviemientos que es REOV_REGISTRO_OP_VALOR, que nos permite eliminar el movimiento de grabación del punto anterior para los casos que XIMO_VALORS.ID_EPER_VALO sea distinto de NULL.

Este caso permite ser unido al siguiente punto

Caso 3: ESTADO_VATE='V', COD_TESV=CV, COD_TSEV=DT (Cobrado en Voluntaria, Devuelto Total)

Corresponde a una autoliquidación que se ha pagado por el C60 y se ha devuelto íntegra. Si miramos el histórico vemos:



En el resto de casos, la tabla REOV contiene tosos los movimientos así como las cantidades afectadas. En el caso de devoluciones, las cantidades indicadas corresponden a las devoluciones practicadas. Por tanto la consulta a realizar para todos los casos de Autoliquidaciones es

La tabla REOV contiene los movimientos. aquí aparecen 2 nuevos códigos PD (propuesta de devolución) y DT (Devolución total).

Para los casos de devoluciones parciales aparecen los códigos PDP y DP , siendo el primero la propuesta y el segundo la devolución

Para el caso de ejecutiva aparecen dso códigos más L1 (Inicio período ejecutivo) y L2 (Providencia de apremio

Pero tenemos que averiguar donde se guardan los importes devueltos

Veamos la consulta propuesta, donde ademas hemos incluido el estado y subestado actuales para no perder de vista en que estado se encuentran, pues con el histórico de gtt no queda claro.

NOTA: En un mismo ID_COBRO puede haber cobros duplicados. Ahí entra en acción la tabal CIOP y su campo CIOP.COD_OPERACION_CIOP nos indica con "DUP" si hay un duplicado

SELECT FECHA_GRABACION_VATE, NVL(REOV.ID_REOV,-1) AS ID_MOV,

VALORS.IDENTIFICADOR_VATE, VALORS.IDENTIFICADOR_VALO, VALORS.ID_EPER, VALORS.ID_EPER_VALOR,

VALORS.IMPORTE,

VALORS.COD_TVAL, VALORS.COD_TESV AS ESTADO_ACTUAL, VALORS.COD_TSEV AS SUBESTADO_ACTUAL,

REOV.COD_TOVA AS COD_ESTADO_TOVA,

REOV.COD_TESV, REOV.COD_TSEV,

CIOP.COD_TESV_CIOP, CIOP.COD_TSEV_CIOP,

NVL(CIOP.COD_TESV_CIOP,NVL(REOV.COD_TOVA, 'GR'))AS COD_ESTADO,

NVL(CIOP.COD_TSEV_CIOP,

CASE

WHEN REOV.COD_TOVA='AL' THEN REOV.COD_TSEV

WHEN REOV.COD_TOVA='DV' THEN REOV.COD_TSEV

ELSE NULL

END ) AS COD_SUBESTADO,

NVL(REOV.FECHA_EFECTOS_REOV,VALORS.FECHA_GRABACION_VATE) AS FECHA,

NVL(REOV.COD_USUA,VALORS.COD_USUA) AS COD_USUA,

NVL(

CASE

WHEN REOV.COD_TOVA IS NULL THEN 'Grabación del valor temporal'

WHEN REOV.COD_TOVA='GR' THEN 'Grabación'

WHEN REOV.COD_TOVA='AL' THEN 'Alta en voluntaria. Decreto:' || TO_CHAR(CARG.FECHA_DECRETO_CARG ,'DD/MM/YY')

WHEN REOV.COD_TOVA='CO' THEN TESV.DESCR_TESV || ' ' || TSEV.DESCR_TSEV

ELSE TOVA.DESCR_TOVA

END, '---NO ENCONTRADO---') AS OBSE,

CIOP.ID_IMPO ,

CIOP.COD_OPERACION_CIOP,

CIOP.REFERENCIA_CIOP,

CIOP.IMPORTE_CIOP,

--NVL(REEM.PRINCIPAL_RV,REOV.PRINCIPAL_REOV) AS IMP_PPAL,

--NVL(REEM.RECARGO_RV ,REOV.RECARGO_REOV ) AS IMP_RECA,

--NVL(REEM.INTERESES_RV,REOV.INTERESES_REOV) AS IMP_INTE,

--NVL(REEM.COSTAS_RV ,REOV.COSTAS_REOV ) AS IMP_COST,

REOV.PRINCIPAL_REOV AS IMP_PPAL,

REOV.RECARGO_REOV AS IMP_RECA,

REOV.INTERESES_REOV AS IMP_INTE,

REOV.COSTAS_REOV AS IMP_COST,

REEM.PRINCIPAL_RV AS IMP_REEM_PPAL,

REEM.INGRESOS_RV AS IMP_INGRESOS_RV,

REEM.RECARGO_RV AS IMP_REEM_RECA,

REEM.INTERESES_RV AS IMP_REEM_INTE,

REEM.COSTAS_RV AS IMP_REEM_COST,

NVL(COBR.ID_SOCO ,VALORS.ID_CARG ) AS ID_CARGO_SOCO, REOV.ID_COBR,

COBR.ID_CUBA, COBR.COD_CAPA, REOV.NUMEXP_ORGA_REOV

--SELECT CIOP.*

FROM XIMO_SCHM.XIMO_VALORS VALORS

LEFT JOIN OPS$GTTORA.REOV_REGISTRO_OP_VALOR REOV ON REOV.ID_EPER=VALORS.ID_EPER_VALOR

LEFT JOIN OPS$GTTORA.COBR_COBROS COBR ON COBR.ID_COBR =REOV.ID_COBR

LEFT JOIN OPS$GTTORA.CIOP_CIERRE_OPERACIONES CIOP ON CIOP.ID_SOCO =COBR.ID_SOCO AND CIOP.ID_EPER =VALORS.ID_EPER_VALOR

LEFT JOIN OPS$GTTORA.REEM_VALO REEM ON REEM.REFERENCIA_REEM =CIOP.REFERENCIA_CIOP AND REEM.ID_EPER=VALORS.ID_EPER_VALOR

LEFT JOIN OPS$GTTORA.CARG_CARGOS CARG ON CARG.ID_CARG=VALORS.ID_CARG

LEFT JOIN OPS$GTTORA.TESV_TIPOS_ESTADO_VALOR TESV ON TESV.COD_TESV=NVL(CIOP.COD_TESV_CIOP,NVL(REOV.COD_TOVA, 'GR'))

LEFT JOIN OPS$GTTORA.TSEV_TSUBE_VALOR TSEV ON TSEV.COD_TSEV =NVL(CIOP.COD_TSEV_CIOP,REOV.COD_TSEV)

LEFT JOIN OPS$GTTORA.TOVA_TIPOS_OPERAC_VALOR TOVA ON TOVA.COD_TOVA =REOV.COD_TOVA

WHERE

--EXISTS (SELECT * FROM OPS$GTTORA.REOV_REGISTRO_OP_VALOR REOV1 WHERE REOV1.ID_EPER =VALORS.ID_EPER_VALOR AND REOV1.COD_TOVA='BA') AND

VALORS.COD_TVAL ='A'

ORDER BY FECHA_GRABACION_VATE DESC, ID_EPER DESC, ID_EPER_VALOR DESC, NVL(REOV.ID_REOV,-1);

Y nos resultaría :

FECHA_GRABACION_VATE |ID_MOV |IDENTIFICADOR_VATE |IDENTIFICADOR_VALO |ID_EPER |ID_EPER_VALOR|COD_TVAL|ESTADO_ACTUAL|SUBESTADO_ACTUAL|COD_ESTADO_TOVA|COD_ESTADO|COD_SUBESTADO|FECHA |COD_USUA |OBSE |IMP_PPAL|IMP_RECA|IMP_INTE|IMP_COST|ID_CARGO|ID_CUBA|COD_CAPA|NUMEXP_ORGA_REOV| -----------------------+---------+----------------------+----------------------+---------+-------------+--------+-------------+----------------+---------------+----------+-------------+-----------------------+-----------+---------------------------------------------+--------+--------+--------+--------+--------+-------+--------+----------------+ 2023-07-04 12:13:21.000|157401364|0134568986230116944015|20230946240GU07A000004|134568986| 134571986|A |CV |DT |GR |GR | |2023-07-04 12:13:21.000|20809081 |Grabación | 19140| 0| 0| 0| 6589849| | | | 2023-07-04 12:13:21.000|157401365|0134568986230116944015|20230946240GU07A000004|134568986| 134571986|A |CV |DT |AL |AL |Pem |2023-07-04 12:13:21.000|SYS |Alta en voluntaria. Decreto:27/07/23 | 19140| 0| 0| 0| 6589849| | | | 2023-07-04 12:13:21.000|157401367|0134568986230116944015|20230946240GU07A000004|134568986| 134571986|A |CV |DT |CO |CV |O |2023-07-04 00:00:00.000|SYS |Cobrado en Voluntaria Confirmado no facturado| 19140| 0| 0| 0| 856263| 571|2 | | 2023-07-04 12:13:21.000|157929261|0134568986230116944015|20230946240GU07A000004|134568986| 134571986|A |CV |DT |PD |PD | |2023-07-04 12:13:21.000|73916807 |Propuesta de Devolución | 19140| 0| 0| 0| 6589849| | |09032023001303 | 2023-07-04 12:13:21.000|157979775|0134568986230116944015|20230946240GU07A000004|134568986| 134571986|A |CV |DT |DV |DV |PDT |2023-07-04 12:13:21.000|PORTAFIRMAS|Confirmación Devolución | 19140| 0| 0| 0| 6589849| | |09032023001303 | 2023-07-04 00:20:14.000|157447865|0134565481230116842746|20230946240DE02A000029|134565481| 134586018|A |CV |DT |GR |GR | |2023-07-04 00:20:14.000|INTERNET |Grabación | 1720| 0| 0| 0| 6589742| | | | 2023-07-04 00:20:14.000|157447866|0134565481230116842746|20230946240DE02A000029|134565481| 134586018|A |CV |DT |AL |AL |Pem |2023-07-04 00:20:14.000|SYS |Alta en voluntaria. Decreto:28/07/23 | 1720| 0| 0| 0| 6589742| | | | 2023-07-04 00:20:14.000|157447868|0134565481230116842746|20230946240DE02A000029|134565481| 134586018|A |CV |DT |CO |CV |O |2023-07-06 00:00:00.000|SYS |Cobrado en Voluntaria Confirmado no facturado| 1720| 0| 0| 0| 856417| 573|3 | | 2023-07-04 00:20:14.000|157973156|0134565481230116842746|20230946240DE02A000029|134565481| 134586018|A |CV |DT |PD |PD | |2023-07-04 00:20:14.000|73916807 |Propuesta de Devolución | 1720| 0| 0| 0| 6589742| | |09032023001151 | 2023-07-04 00:20:14.000|157988276|0134565481230116842746|20230946240DE02A000029|134565481| 134586018|A |CV |DT |DV |DV |PDT |2023-07-04 00:20:14.000|PORTAFIRMAS|Confirmación Devolución | 1720| 0| 0| 0| 6589742| | |09032023001151 | 2023-06-30 08:24:11.000|157391940|0134538489230113292679|20230946240DE02A000003|134538489| 134563401|A |CV |DT |GR |GR | |2023-06-30 08:24:11.000|INTERNET |Grabación | 5050| 0| 0| 0| 6589742| | | |

2. Autoliquidaciones. Tipos de movimientos habidos

Ahora sabemos que la tabla REOV contiene los movimientos efectuados en las autoliquidaciones. Veamos que tipos de movimientos se han efectuado en las autoliquidaciones. Para ello ejecutamos la consulta, donde aparece el estado y una autoliquidación afectada por el movimiento


SELECT DISTINCT COUNT(*), REOV.COD_TOVA, TOVA.DESCR_TOVA,MAX(REOV.ID_EPER)

FROM OPS$GTTORA.REOV_REGISTRO_OP_VALOR REOV

JOIN OPS$GTTORA.TOVA_TIPOS_OPERAC_VALOR TOVA ON TOVA.COD_TOVA =REOV.COD_TOVA

JOIN OPS$GTTORA.VALO_VALORES VALO ON VALO.ID_EPER =REOV.ID_EPER AND VALO.COD_TVAL ='A'

GROUP BY REOV.COD_TOVA, TOVA.DESCR_TOVA

ORDER BY REOV.COD_TOVA ;

Y nos resultaría :

COUNT(*)|COD_TOVA|DESCR_TOVA |MAX(REOV.ID_EPER)| --------+--------+------------------------------+-----------------+ 53946|AL |Alta | 135115218| 809|BA |Baja | 98469123| 9|CC |Cambiar valor de contribuyente| 98450485| 53137|CO |Cobro | 135115218| 1|DE |Descuento | 116417155| 170|DV |Confirmación Devolución | 134586018| 7|FR |Fraccionado | 98462887| 28071|GR |Grabación de Valor | 135115218| 57|IP |Ingreso Parcial | 133896896|
344|L1 |Inicio periodo ejecutivo | 98469228| 344|L2 |Providencia de apremio | 98469228| 45|LE |Levantamiento Suspensión | 98467326| 173|PD |Propuesta de Devolución | 135029416| 45|SC |Suspensión Cautelar | 98467326|


Veamos cada caso:
  1. AL-Alta: Cuando se da de alta una autoliquidación. Ya visto
  2. BA-Baja: Se da de baja una liquidación pero solo en MIGRACIÓN. Suele aparecer en 2 movimientos (AL+BA) y en unos pocos casos además se intercalan los 2 movimientos SC: Suspensión Cautelar y LE_ Levantamiento Suspensión. El estado finalen que aparecen las liquidaciones despues de todo los procesos es B-VOF que corresponde a  VBOMF - Voluntaria Baja Otros Motivos Facturada
  3. CC-Cambiar valor de contribuyente. Se cambia el titular de la autoliquidación. Aparece en la MIGRACIÓN y en valores que ya han sido pagados. Creo que no tienen importancia. Hay en total 9 registros. El estado final despues de las gestiones queda como CV-OF que corresponde a  VCCF - Voluntaria Cobrado Facturado

  4. DE-Descuento. Cuando se le descuenta una parte del importe del valor. En este caso se detalla el valor descontado. El importe toal recaudado será el del cobro (CO) menos el descuento (DE). El estado final despues de las gestiones es CV-O que corresponde a VCCO - Voluntaria Cobrado no Facturado  

  5. CO-Cobro (ya visto)
  6. DV-Confirmado devolución (Ya visto) Este movimeinto puede ser para una devolución total o parcial.
  7. FR-Fraccionado. Solo aparece en la MIGRACIÓN y corresponde a recibos que se han fraccionado y no se han terminado de pagar. Viene acompañados de varios movimientos IP. Son registros antiguos. El estado final después de todos los procesos es CE-O que corrsponde a  ECCO - Ejecutiva Cobrado no facturado  

  8. GR-Grabación del valor. Ya visto
  9. IP-Ingresos parciales. Solo aparece en la MIGRACIÓN y son pagos parciales de autoliquidaciones que acompñan al movimiento FR visto antes. Como se vió El estado final después de todos los procesos es CE-O que corrsponde a  ECCO - Ejecutiva Cobrado no facturado  
  10. L1-Inicio periodo ejecutiva (Ya visto)
  11. L2-Proviencia de apremio (ya visto)
  12. LE-Levantamiento de la suspensión. Viene precedido por SC-Suspensión cautelar
  13. PD-Propuesta de Devolución. Puede ser total o parcial. Termina con el movimiento DV (Confirmada devolución)
  14. SC-Suspensión Cautelar. Para que un valor no le corran los plazos. Cuando se resuelve la suspensión aparece el movimeinto LE(Levantamiento de la suspensión)

3. PROBLEMA DE CUADRE DE INGRESOS Y BAJAS

SELECT

VALORS.IDENTIFICADOR_VALO, VALORS.ID_EPER_VALOR, VALORS.COD_TESV, VALORS.COD_TSEV,

VALORS.IMPORTE,

SUM(

CASE

WHEN REOV.COD_TOVA IN ('CO') THEN REOV.PRINCIPAL_REOV

ELSE 0

END

) AS COBROS_TOTALES,

SUM(

CASE

WHEN REOV.COD_TOVA IN ('IP') THEN REOV.PRINCIPAL_REOV

ELSE 0

END

) AS COBROS_PARCIALES,

SUM(

CASE

WHEN REOV.COD_TOVA IN ('BA') THEN REOV.PRINCIPAL_REOV

ELSE 0

END

) AS BAJAS_TOTALES,

SUM(

CASE

WHEN REOV.COD_TOVA IN ('BP') THEN REOV.PRINCIPAL_REOV

ELSE 0

END

) AS BAJAS_PARCIALES,

SUM(

CASE

WHEN REOV.COD_TOVA IN ('DV') THEN REOV.PRINCIPAL_REOV

ELSE 0

END

) AS DEVOLUCIONES,

SUM(

CASE

WHEN REOV.COD_TOVA IN ('DE') THEN REOV.PRINCIPAL_REOV

ELSE 0

END

) AS DESCUENTOS

FROM XIMO_SCHM.XIMO_VALORS VALORS

JOIN OPS$GTTORA.REOV_REGISTRO_OP_VALOR REOV ON REOV.ID_EPER =VALORS.ID_EPER_VALOR

WHERE

EXISTS(SELECT * FROM OPS$GTTORA.REOV_REGISTRO_OP_VALOR REOV1 WHERE REOV1.ID_EPER=VALORS.ID_EPER_VALOR AND REOV1.COD_TOVA IN ('BP')) --('IP','DV','BP','BA')

GROUP BY VALORS.IDENTIFICADOR_VALO, VALORS.ID_EPER_VALOR, VALORS.COD_TESV, VALORS.COD_TSEV,

VALORS.IMPORTE

ORDER BY VALORS.ID_EPER_VALOR DESC;

No hay comentarios :

Publicar un comentario