
//actualiza lo cobrado en una tabla auxiliar
//ALTER TABLE `clvgb`.`comprobante_pagos` ADD INDEX `idfacturacion` (`idfacturacion`) USING BTREE;


//EVENTOS ACTUALIZAR TABLA comprobante_pagos 

SET GLOBAL event_scheduler="ON"

CREATE EVENT e_actualizar_pagos1
ON SCHEDULE
     EVERY 1 DAY STARTS '2020-04-20 02:00:01'
DO
truncate table comprobante_pagos;

CREATE EVENT e_actualizar_pagos2
ON SCHEDULE
     EVERY 1 DAY STARTS '2020-04-20 02:10:01'
DO
insert into `comprobante_pagos` (`cuenta`, `nombre`, `idfacturacion`, `cuota`, `servicio`, `numero`, `vencimiento`, `total`, `cobrado`, `saldo`)
select c.cuentareferencia as cuenta, c.nombre as nombre, MIN(f.idfacturacion) as idfacturacion,
	CONCAT(LEFT(TRIM(p.descripcion),2), '/', RIGHT(TRIM(p.descripcion),4)) as cuota, 
	(
		CASE
		WHEN s.idservicio='1' THEN 'ENERGIA ELECTRICA'
		WHEN RIGHT(TRIM(c.cuentareferencia),2)='70' THEN 'SERVICIOS ASISTENCIALES'
		WHEN RIGHT(TRIM(c.cuentareferencia),2)='98' THEN 'TELEFONIA CELULAR'
		WHEN RIGHT(TRIM(c.cuentareferencia),2)='99' OR RIGHT(TRIM(c.cuentareferencia),2)='88' THEN 'VIDEO CABLE'
		WHEN RIGHT(TRIM(c.cuentareferencia),2)='60' THEN 'HOGAR MAGNUS'
		WHEN s.idservicio='6' THEN 'ENERGIA ELECTRICA'
		WHEN s.idservicio='7' THEN 'CEMENTERIO ALEMAN'
		WHEN s.idservicio='8' THEN 'CEMENTERIO MUNICIPAL'
		WHEN s.idservicio='9' OR RIGHT(TRIM(c.cuentareferencia),2)='44' THEN 'AREA PROTEGIDA'
		WHEN s.idservicio='10' THEN 'PUBLICIDAD'
		END 
	) as servicio, 
	f.numero as numero, p.vencimiento1 as vencimiento,
	sum(f.total) as total, sum(f.cobrado) as cobrado, sum(f.total-f.cobrado) as saldo
from cooperativa.facturacion f
left join cooperativa.cuentas c on c.idcuenta=f.idcuenta 
left join cooperativa.periodos p on p.idperiodo=f.periodo
left join cooperativa.servicios s on s.idservicio=f.servicios_facturados
where f.periodo>276 and f.esmasiva=1
group by f.periodo, c.cuentareferencia, servicio 
order by c.cuentareferencia, f.idfacturacion;

CREATE EVENT e_actualizar_pagos3
ON SCHEDULE
     EVERY 1 DAY STARTS '2020-04-20 02:20:01'
DO
UPDATE comprobante 
SET comprobante.cobrado = (
    SELECT comprobante_pagos.cobrado 
    FROM comprobante_pagos
    WHERE comprobante_pagos.idfacturacion = comprobante.idfacturacion
);

CREATE EVENT e_actualizar_pagos4
ON SCHEDULE
     EVERY 1 DAY STARTS '2020-04-20 02:25:01'
DO
update comprobante set saldo=total-cobrado;


CREATE EVENT e_cargar_nuevos_recibos
ON SCHEDULE
     EVERY 1 DAY STARTS '2020-04-20 02:25:01'
DO
insert into clvgb.`comprobante` (`cuenta`, `nombre`, `idfacturacion`, `cuota`, `servicio`, `numero`, `vencimiento`, `total`, `cobrado`, `saldo`)
select c.cuentareferencia as cuenta, c.nombre as nombre, idfacturacion,
	CONCAT(LEFT(TRIM(p.descripcion),2)) as cuota, 'FACTURA' as servicio, 
	f.numero as numero, p.vencimiento1 as vencimiento, 
	f.total as total, f.cobrado as cobrado, (f.total-f.cobrado) as saldo
from cooperativa.facturacion f
left join cooperativa.cuentas c on c.idcuenta=f.idcuenta 
left join cooperativa.periodos p on p.idperiodo=f.periodo
left join cooperativa.servicios s on s.idservicio=f.servicios_facturados
where f.total>f.cobrado and f.esmasiva=0 and f.total>0 and f.fecha=CURDATE()






//para cargar nuevas facturas cambiar f.periodo=335 por nnuevo periodo 


// crear FUNCION calcular_fecha_vencimiento
// calcular_fecha_vencimiento(f.idfacturacion,1,1) para el vencimiento

//
// REVISAR and f.total>f.cobrado
//

insert into `comprobante` (`cuenta`, `nombre`, `idfacturacion`, `cuota`, `servicio`, `numero`, `vencimiento`, `total`, `cobrado`, `saldo`)
select c.cuentareferencia as cuenta, c.nombre as nombre, MIN(f.idfacturacion) as idfacturacion,
	CONCAT(LEFT(TRIM(p.descripcion),2)) as cuota, 
	(
		CASE
		WHEN s.idservicio='1' THEN 'ENERGIA ELECTRICA'
		WHEN RIGHT(TRIM(c.cuentareferencia),2)='70' THEN 'SERVICIOS ASISTENCIALES'
		WHEN RIGHT(TRIM(c.cuentareferencia),2)='98' THEN 'TELEFONIA CELULAR'
		WHEN RIGHT(TRIM(c.cuentareferencia),2)='99' OR RIGHT(TRIM(c.cuentareferencia),2)='88' THEN 'VIDEO CABLE'
		WHEN RIGHT(TRIM(c.cuentareferencia),2)='60' THEN 'HOGAR MAGNUS'
		WHEN s.idservicio='6' THEN 'ENERGIA ELECTRICA'
		WHEN s.idservicio='7' THEN 'CEMENTERIO ALEMAN'
		WHEN s.idservicio='8' THEN 'CEMENTERIO MUNICIPAL'
		WHEN s.idservicio='9' OR RIGHT(TRIM(c.cuentareferencia),2)='44' THEN 'AREA PROTEGIDA'
		WHEN s.idservicio='10' THEN 'PUBLICIDAD'
		END 
	) as servicio, 
	f.numero as numero, cooperativa.calcular_fecha_vencimiento(f.idfacturacion,1,1) as vencimiento,
	sum(f.total) as total, sum(f.cobrado) as cobrado, sum(f.total-f.cobrado) as saldo
from cooperativa.facturacion f
left join cooperativa.cuentas c on c.idcuenta=f.idcuenta 
left join cooperativa.periodos p on p.idperiodo=f.periodo
left join cooperativa.servicios s on s.idservicio=f.servicios_facturados
where f.periodo=345 and f.total>f.cobrado and f.esmasiva=1 and f.total>0 and f.impreso=1 
group by f.periodo, c.cuentareferencia, servicio 
order by c.cuentareferencia, f.idfacturacion;

//and servicios_facturados in (1,6)

////////////////////MUTUAL///////////////////////

insert into `comprobante` (`cuenta`, `nombre`, `idfacturacion`, `cuota`, `servicio`, `numero`, `vencimiento`, `total`, `cobrado`, `saldo`)
select c.cuentareferencia as cuenta, c.nombre as nombre, MIN(f.idfacturacion) as idfacturacion,
	CONCAT(LEFT(TRIM(p.descripcion),2)) as cuota, 
	(
		CASE
		WHEN s.idservicio='1' THEN 'ENERGIA ELECTRICA'
		WHEN RIGHT(TRIM(c.cuentareferencia),2)='70' THEN 'SERVICIOS ASISTENCIALES'
		WHEN RIGHT(TRIM(c.cuentareferencia),2)='71' THEN 'SERVICIOS ASISTENCIALES'
		WHEN RIGHT(TRIM(c.cuentareferencia),2)='72' THEN 'SERVICIOS ASISTENCIALES'
		WHEN RIGHT(TRIM(c.cuentareferencia),2)='98' THEN 'TELEFONIA CELULAR'
		WHEN RIGHT(TRIM(c.cuentareferencia),2)='99' OR RIGHT(TRIM(c.cuentareferencia),2)='88' THEN 'VIDEO CABLE'
		WHEN RIGHT(TRIM(c.cuentareferencia),2)='60' THEN 'HOGAR MAGNUS'
		WHEN s.idservicio='6' THEN 'ENERGIA ELECTRICA'
		WHEN s.idservicio='7' THEN 'CEMENTERIO ALEMAN'
		WHEN s.idservicio='8' THEN 'CEMENTERIO MUNICIPAL'
		WHEN s.idservicio='9' OR RIGHT(TRIM(c.cuentareferencia),2)='44' THEN 'AREA PROTEGIDA'
		WHEN s.idservicio='10' THEN 'PUBLICIDAD'
		END 
	) as servicio, 
	f.numero as numero, p.vencimiento1 as vencimiento,
	sum(f.total) as total, sum(f.cobrado) as cobrado, sum(f.total-f.cobrado) as saldo
from mutual.facturacion f
left join mutual.cuentas c on c.idcuenta=f.idcuenta 
left join mutual.periodos p on p.idperiodo=f.periodo
left join mutual.servicios s on s.idservicio=f.servicios_facturados
where f.periodo=345 and f.total>f.cobrado and f.esmasiva=1 and f.total>0 
group by f.periodo, c.cuentareferencia, servicio 
order by c.cuentareferencia, f.idfacturacion;



//(SELECT idperiodo FROM periodos WHERE descripcion = CONCAT( LPAD(month(now())-1,2, '0') ,'/',  YEAR(now())   )

update comprobante set cuota='06/2025' where cuota='06' and vencimiento='2025-07-10';
update comprobante set cuota='06/2025' where cuota='06' and vencimiento='2025-07-17';
update comprobante set cuota='06/2025' where cuota='07' and vencimiento='2025-07-10';

update comprobante set nombre = REPLACE(nombre, 'Ú', 'U'); 
update comprobante set nombre = REPLACE(nombre, 'Ñ', 'N'); 
update comprobante set nombre = REPLACE(nombre, 'Í', 'I'); 
update comprobante set nombre = REPLACE(nombre, 'í', 'i'); 
update comprobante set nombre = REPLACE(nombre, 'Ó', 'O'); 
update comprobante set nombre = REPLACE(nombre, 'É', 'E');
update comprobante set nombre = REPLACE(nombre, 'Á', 'A'); 
update comprobante set nombre = REPLACE(nombre, 'Ü', 'U'); 
update comprobante set nombre = REPLACE(nombre, 'Ö', 'O'); 
update comprobante set nombre = REPLACE(nombre, '´', ''); 


//cuidado con los apostrofes buscar -> SELECT * FROM `comprobante` WHERE nombre like "%´%"



	
UPDATE comprobante SET nombre = REPLACE(nombre,'ã','a');	
UPDATE comprobante SET nombre = REPLACE(nombre,'ä','a');	
UPDATE comprobante SET nombre = REPLACE(nombre,'å','a');	
UPDATE comprobante SET nombre = REPLACE(nombre,'æ','a');	
UPDATE comprobante SET nombre = REPLACE(nombre,'ç','c');	
UPDATE comprobante SET nombre = REPLACE(nombre,'è','e');	
UPDATE comprobante SET nombre = REPLACE(nombre,'é','e');	
UPDATE comprobante SET nombre = REPLACE(nombre,'ê','e');	

UPDATE comprobante SET nombre = REPLACE(nombre,'ë','e');	
UPDATE comprobante SET nombre = REPLACE(nombre,'ì','i');	
UPDATE comprobante SET nombre = REPLACE(nombre,'í','i');	
UPDATE comprobante SET nombre = REPLACE(nombre,'î','i');	
UPDATE comprobante SET nombre = REPLACE(nombre,'ï','i');	
UPDATE comprobante SET nombre = REPLACE(nombre,'ð','o');	
UPDATE comprobante SET nombre = REPLACE(nombre,'ñ','n');	
UPDATE comprobante SET nombre = REPLACE(nombre,'ò','o');

UPDATE comprobante SET nombre = REPLACE(nombre,'ó','o');	
UPDATE comprobante SET nombre = REPLACE(nombre,'ô','o');	
UPDATE comprobante SET nombre = REPLACE(nombre,'õ','o');	
UPDATE comprobante SET nombre = REPLACE(nombre,'ö','o');	
UPDATE comprobante SET nombre = REPLACE(nombre,'ø','o');
UPDATE comprobante SET nombre = REPLACE(nombre,'ù','u');
UPDATE comprobante SET nombre = REPLACE(nombre,'ú','u');	
UPDATE comprobante SET nombre = REPLACE(nombre,'û','u');	


UPDATE comprobante SET nombre = REPLACE(nombre,'ý','y');	
UPDATE comprobante SET nombre = REPLACE(nombre,'ý','y');	
UPDATE comprobante SET nombre = REPLACE(nombre,'þ','b');
UPDATE comprobante SET nombre = REPLACE(nombre,'ÿ','y');	
UPDATE comprobante SET nombre = REPLACE(nombre,'ƒ','f');
//UPDATE comprobante SET nombre = REPLACE(nombre,'ě','e');	
UPDATE comprobante SET nombre = REPLACE(nombre,'ž','z');	
UPDATE comprobante SET nombre = REPLACE(nombre,'š','s');	
//UPDATE comprobante SET nombre = REPLACE(nombre,'č','c');
//UPDATE comprobante SET nombre = REPLACE(nombre,'ř','r');	

UPDATE comprobante SET nombre = REPLACE(nombre,'ď','d');	
UPDATE comprobante SET nombre = REPLACE(nombre,'ť','t');	
UPDATE comprobante SET nombre = REPLACE(nombre,'ň','n');	
UPDATE comprobante SET nombre = REPLACE(nombre,'ů','u');	
UPDATE comprobante SET nombre = REPLACE(nombre,'Ě','E');
UPDATE comprobante SET nombre = REPLACE(nombre,'Ž','Z');
UPDATE comprobante SET nombre = REPLACE(nombre,'Š','S');
UPDATE comprobante SET nombre = REPLACE(nombre,'Č','C');
UPDATE comprobante SET nombre = REPLACE(nombre,'Ř','R');	
UPDATE comprobante SET nombre = REPLACE(nombre,'Ď','D');	
UPDATE comprobante SET nombre = REPLACE(nombre,'Ť','T');	
UPDATE comprobante SET nombre = REPLACE(nombre,'Ň','N');	
UPDATE comprobante SET nombre = REPLACE(nombre,'Ů','U');

//and c.cuentareferencia like "101939%"
//truncate table comprobante; 
//CONCAT(LEFT(TRIM(p.descripcion),2), '/', RIGHT(TRIM(p.descripcion),4)) as cuota, 



//actualiza cobrado en la tabla comprobante (no se usa)
UPDATE comprobante t1 
	INNER JOIN comprobante_pagos t2 
    ON t1.idfacturacion = t2.idfacturacion
SET t1.cobrado = t2.cobrado










CREATE TABLE `comprobante` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `cuenta` varchar(8) NOT NULL,
  `nombre` varchar(60) NOT NULL,
  `idfacturacion` int(10) NOT NULL,
  `cuota` varchar(7) NOT NULL,
  `servicio` varchar(40) NOT NULL,
  `numero` varchar(20) NOT NULL,
  `vencimiento` date NOT NULL,
  `total` float(15,2) NOT NULL,
  `cobrado` float(15,2) NOT NULL,
  `saldo` float(15,2) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


