Closed AlexFBP closed 1 year ago
De acuerdo al modelo, debería de haber, por cada registro de subgrupo con tipo_nivel producto; un registro en cuentas_subgrupo que lo vincule con otro registro en subgrupo con tipo_nivel clase.
(Para el ambiente de pruebas, a la fecha de escribir este mensaje)
Identificación preliminar de la consistencia de los datos:
Se traen los registros subgrupo de tipo producto, y "su" (posible) registro asociado en subgrupo_subgrupo
SELECT
S.id as s_id,
S.codigo as s_codigo,
SS.id as ss_id,
SS.subgrupo_padre_id as padre_id,
S_bis.codigo as codigo_padre
FROM catalogo.subgrupo S
FULL JOIN catalogo.subgrupo_subgrupo SS ON S.id = SS.subgrupo_hijo_id
INNER JOIN catalogo.tipo_nivel TN ON TN.id = S.tipo_nivel_id
FULL JOIN catalogo.subgrupo S_bis ON SS.subgrupo_padre_id = S_bis.id
WHERE
TN.nombre = 'Producto'
ORDER BY S.id desc
-- LIMIT 20
;
Con esta se identifican los resultados que tienen (o no) un subgrupo padre (clase?) asociado y se obtuvieron estos datos, de los cuales se observa que son contados los registros en subgrupo_subgrupo que vinculan adecuadamente un producto con su clase
Ajustado provisionalmente con https://github.com/udistrital/catalogo_elementos_crud/commit/fc17b7f463ceea8573ecb52bb78f3119a26f740d
Se recomienda a medio/largo plazo ajustar bodega de consumo para que no trabaje con productos desde la tabla elemento sino simplemente con elementos de la tabla subgrupo tales que el tipo_nivel corresponda a producto
Se ejecuta script para ajustar las relaciones según lo mencionado:
/*
* Ajuste registros subgrupo_subgrupo productos
* Jeisson P.
* 23-05-2022
* */
-- 1. Relación subgrupo clase y subgrupo producto
-- 49.201 registros
select s1.codigo, s2.codigo,* from subgrupo s1
join subgrupo s2 on s2.codigo like s1.codigo || '%'
where s1.tipo_nivel_id = 4 and s2.tipo_nivel_id = 5;
-- 2. Eliminación subgrupo_subgrupo
-- 39.024 registros
delete from subgrupo_subgrupo where id in (
select ss.id from subgrupo_subgrupo ss
join subgrupo s on s.id = ss.subgrupo_hijo_id
where s.tipo_nivel_id = 5);
-- 3. Insert subgrupo_subgrupo
-- 49.201 registros
insert into subgrupo_subgrupo(fecha_creacion, fecha_modificacion, activo, subgrupo_padre_id, subgrupo_hijo_id)
select now() fecha_creacion, now() fecha_modificacion, true activo, s1.id subgrupo_padre_id, s2.id subgrupo_hijo_id
from subgrupo s1
join subgrupo s2 on s2.codigo like s1.codigo || '%'
where s1.tipo_nivel_id = 4 and s2.tipo_nivel_id = 5;
-- 4. Borrado de subgrupos producto sin subgrupo clase
-- 54 registros
delete from subgrupo where id in (
select s.id from subgrupo s
left join subgrupo_subgrupo ss on s.id = ss.subgrupo_hijo_id
where s.tipo_nivel_id = 5 and ss.id is null);
Ejecutando el primer bloque SQL, aparentemente ya se están retornando resultados coherentes Por otro lado, revirtiendo temporalmente y en local lo efectuado en https://github.com/udistrital/catalogo_elementos_crud/commit/fc17b7f463ceea8573ecb52bb78f3119a26f740d , se observa (a comparación de la imagen en la descripción de este Issue) que ya está entregando datos coherentes:
Consideraciones