Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- BEGIN
- DECLARE li_aniop INT;
- DECLARE li_mesp INT;
- DECLARE lperiodop_int INT;
- DECLARE vper INT;
- DECLARE vverif INT;
- DECLARE vperiodo, vmes CHAR(20);
- IF mes < 10 THEN
- SET vmes = CONCAT('0', mes);
- ELSE
- SET vmes = mes;
- END IF;
- SET vperiodo = CONCAT(anio, vmes);
- IF mes = 1 THEN
- SET li_mesp = 12;
- SET li_aniop = anio - 1;
- ELSE
- SET li_mesp = mes - 1;
- SET li_aniop = anio;
- END IF;
- SET lperiodop_int = li_aniop * 100 + li_mesp;
- SET vper = anio * 100 + mes;
- -- Verificar si hay registros en p_lecturas para este periodo
- SELECT COUNT(idpuesto) INTO vverif
- FROM p_lecturas
- WHERE periodo = vperiodo AND tipo = aserv;
- -- Si no hay registros en p_lecturas, hacer insert en g_recibo_cargos
- IF vverif = 0 THEN
- IF (SELECT COUNT(*) FROM g_recibo_cargos WHERE idconcepto = 7 AND periodo = vperiodo) = 0 THEN
- INSERT INTO g_recibo_cargos (`idconcepto`, `periodo`, `m_desague_carne`, `m_desague_otros`)
- VALUES (7, vperiodo, 10, 5);
- END IF;
- END IF;
- -- Obtener solo puestos con idservicio = 2 y servicio activo
- SELECT
- p.idpuesto,
- p.codigo,
- p.codigo_ant,
- (SELECT idsocio FROM p_puesto_socio WHERE idpuesto = p.idpuesto AND activo = 1) AS idsocio,
- f_g_nombres((SELECT idsocio FROM p_puesto_socio WHERE idpuesto = p.idpuesto AND activo = 1)) AS wnombres,
- -- ***Mantener lectura_ant siempre en 0***
- 0 AS lectura_ant,
- -- ***Personalización única de lectura_actual***
- CASE
- WHEN p.idpuesto = 697 THEN 120 -- AQUI SE INGRESA LOS ID
- WHEN p.idgiro IN (2,9,6) THEN 15
- WHEN p.idgiro IN (13,14) THEN 25
- ELSE 10
- END AS lectura_actual,
- IFNULL(l.lectura_dif, 0) AS diferencia,
- '' AS tension,
- l.e_tipo AS tipo,
- e_apublico AS e_apublico,
- l.e_gastos AS gastos,
- l.e_mant AS mant,
- IFNULL(l.igv, 0) AS igv,
- IFNULL(l.cargo, vfactor) AS cargo,
- l.num_recibo,
- 0 AS sw,
- 1 AS a_tipo,
- 'M3' AS a_vol,
- IFNULL(l.reposicion, 0) AS reposicion,
- f_get_cargo_desague_periodo(vperiodo, p.idpuesto) AS m_desague,
- f_get_giro(p.idgiro) AS giro
- FROM p_puesto p
- JOIN p_puesto_servicio s ON p.idpuesto = s.idpuesto
- AND s.idservicio = 2 -- Solo listar puestos con idservicio = 2
- AND s.activo = 1 -- Solo si el servicio está activo
- LEFT JOIN p_lecturas l ON p.idpuesto = l.idpuesto AND l.periodo = vperiodo AND l.tipo = aserv
- WHERE p.activo = 1
- ORDER BY p.codigo;
- -- **Si no existe un registro en cargo_fijo_agua, insertarlo UNA SOLA VEZ**
- IF NOT EXISTS (SELECT 1 FROM cargo_fijo_agua WHERE periodo = vperiodo) THEN
- INSERT INTO cargo_fijo_agua (periodo_anio, periodo_mes, periodo, lect_ant, lect_act, lect_dif, tipo, cargo, activo)
- SELECT anio, mes, vperiodo, 0,
- CASE
- WHEN 697 IS NOT NULL THEN 250
- WHEN idgiro IN (2,9,6) THEN 15
- ELSE 10
- END,
- 0, 'A', 0, 1
- FROM p_puesto
- WHERE idpuesto = 697;
- END IF;
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement