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:
- IDENTIFICADOR_VATE: VATE.IDENTIFICADOR_VATE
- IDENTIFICADOR_VALO: NULO
- ID_EPER: VATE.ID_EPER
- ID_EPER_VALO: NULO
- COD_ESTADO: 'GR' (fijo)
- FECHA: VATE.ECHA_GRABACION_VATE
- COD_USUA: VATE.COD_USUA
- 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:
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
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|
- AL-Alta: Cuando se da de alta una autoliquidación. Ya visto
- 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
- 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
- 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
- CO-Cobro (ya visto)
- DV-Confirmado devolución (Ya visto) Este movimeinto puede ser para una devolución total o parcial.
- 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
- GR-Grabación del valor. Ya visto
- 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
- L1-Inicio periodo ejecutiva (Ya visto)
- L2-Proviencia de apremio (ya visto)
- LE-Levantamiento de la suspensión. Viene precedido por SC-Suspensión cautelar
- PD-Propuesta de Devolución. Puede ser total o parcial. Termina con el movimiento DV (Confirmada devolución)
- 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