· 5 years ago · Mar 25, 2020, 07:38 PM
1DELIMITER $$
2
3USE `ladrillo_dev`$$
4
5DROP PROCEDURE IF EXISTS `liq_dev`$$
6
7CREATE DEFINER=`mluis`@`%` PROCEDURE `liq_dev`(desde DATE, hasta DATE, descripcion VARCHAR(30), usuario VARCHAR(25))
8BEGIN
9DECLARE ultimoLogger INT DEFAULT 0;
10/*logger*/
11INSERT INTO ospilm.logger(programa, descripcion,usuario, start_at)
12 VALUES ('liquidacion capitas', CONCAT(descripcion,'Liquidacion desde: ',desde, ' hasta: ',hasta) ,usuario, NOW());
13/*
14*/
15/*tabla de empleados en ladrillo_dev*/
16DROP TABLE IF EXISTS ladrillo_dev.empleados ;
17CREATE TABLE ladrillo_dev.empleados
18SELECT cuil,CONCAT(cuil,'/00') AS numafi ,apellido,nombre,desreguladora AS capita
19FROM ospilm_padron.persona p
20JOIN ospilm_padron.afiliados f ON f.id_persona=p.id
21JOIN ospilm_padron.desreguladoras d ON d.id=f.id_desreguladora
22WHERE id_titular=0;
23CREATE INDEX idnumafi ON ladrillo_dev.empleados(numafi);
24/*FIN tabla de empleados en ladrillo_dev*/
25/*
26*/
27/*tabla de liq de empresas en ladrillo_dev*/
28DROP TABLE IF EXISTS ladrillo_dev.tmp_liq_empresas ;
29CREATE TABLE ladrillo_dev.tmp_liq_empresas
30SELECT * FROM ospilm.aportes WHERE a='1104' AND e BETWEEN desde AND hasta AND g!=k AND k LIKE '0000%' ;
31DROP TABLE IF EXISTS ladrillo_dev.tmp_liq_empleados;
32CREATE TABLE ladrillo_dev.tmp_liq_empleados
33SELECT * FROM ospilm.aportes WHERE a='1104' AND e BETWEEN desde AND hasta AND g!=k AND k NOT LIKE '0000%' AND k LIKE '2%' ;
34DROP TABLE IF EXISTS ladrillo_dev.tmp_liq_mono;
35CREATE TABLE ladrillo_dev.tmp_liq_mono
36SELECT * FROM ospilm.aportes WHERE a='1104' AND e BETWEEN desde AND hasta AND g=k AND g NOT LIKE '0000%' ;
37DROP TABLE IF EXISTS ladrillo_dev.tmp_liq_otros;
38CREATE TABLE ladrillo_dev.tmp_liq_otros
39SELECT * FROM ospilm.aportes WHERE a='1104' AND e BETWEEN desde AND hasta AND g LIKE '000000%' AND k LIKE '00000%' ;
40DROP TABLE IF EXISTS ladrillo_dev.tmp_liq_gh;
41CREATE TABLE ladrillo_dev.tmp_liq_gh
42SELECT gh.g,gh.h,MAX(w) AS urec FROM ladrillo_dev.tmp_liq_empresas gh
43LEFT JOIN ospilm.declaraciones_juradas dj ON dj.c=gh.g AND dj.b=gh.h GROUP BY g,h;
44CREATE INDEX idxgh ON ladrillo_dev.tmp_liq_gh(g,h);
45DROP TABLE IF EXISTS ladrillo_dev.tmp_liq_dj;
46CREATE TABLE ladrillo_dev.tmp_liq_dj
47SELECT gh.g,gh.h,dj.d,AVG(dj.e/100) AS remuneracion, urec FROM ladrillo_dev.tmp_liq_gh gh
48LEFT JOIN ospilm.declaraciones_juradas dj ON gh.g=c AND gh.h=b AND gh.urec=dj.w
49GROUP BY gh.g,gh.h,dj.d ;
50CREATE INDEX idxcuil ON ladrillo_dev.tmp_liq_dj(d);
51ALTER TABLE ladrillo_dev.tmp_liq_dj ADD COLUMN capita VARCHAR(20) DEFAULT 'SIN DATO';
52ALTER TABLE ladrillo_dev.tmp_liq_dj ADD COLUMN numafi VARCHAR(14) DEFAULT '00000000000000';
53UPDATE ladrillo_dev.tmp_liq_dj SET numafi=CONCAT(d,'/00');
54CREATE INDEX idxnuma ON ladrillo_dev.tmp_liq_dj(numafi);
55UPDATE ladrillo_dev.tmp_liq_dj dj, ladrillo_dev.empleados e SET dj.capita=e.capita WHERE dj.numafi COLLATE latin1_general_ci =e.numafi;
56DROP TABLE IF EXISTS ladrillo_dev.tmp_liq_coef_contrib;
57CREATE TABLE ladrillo_dev.tmp_liq_coef_contrib
58SELECT ghc.g AS cuit,ghc.h AS periodo,capita,total,parcial,COALESCE(parcial/total,1) AS coef FROM (
59SELECT g,h,capita,SUM(COALESCE(remuneracion,0))AS parcial FROM ladrillo_dev.tmp_liq_dj GROUP BY g,h, capita) ghc
60JOIN (SELECT g,h,SUM(COALESCE(remuneracion,0)) AS total FROM ladrillo_dev.tmp_liq_dj GROUP BY g,h) gh ON gh.g=ghc.g AND gh.h=ghc.h
61ORDER BY ghc.g,ghc.h;
62CREATE INDEX idxcoef ON ladrillo_dev.tmp_liq_coef_contrib(cuit,periodo);
63/*empleados RG*/
64ALTER TABLE ladrillo_dev.tmp_liq_empleados ADD COLUMN numafi VARCHAR(14) DEFAULT '00000000000000';
65UPDATE ladrillo_dev.tmp_liq_empleados SET numafi =CONCAT(k,'/00');
66CREATE INDEX idxcoef ON ladrillo_dev.tmp_liq_empleados(numafi);
67ALTER TABLE ladrillo_dev.tmp_liq_empleados ADD COLUMN capita VARCHAR(30) DEFAULT 'SIN DATO';
68ALTER TABLE ladrillo_dev.tmp_liq_empleados ADD COLUMN ayn VARCHAR(80) DEFAULT '**SIN AYN';
69UPDATE ladrillo_dev.tmp_liq_empleados le, ladrillo_dev.empleados e
70 SET le.capita=e.capita , ayn=CONCAT(apellido,', ',nombre)
71 WHERE le.numafi COLLATE latin1_general_ci =e.numafi;
72
73
74/*monotributistas y otros*/
75ALTER TABLE ladrillo_dev.tmp_liq_mono ADD COLUMN numafi VARCHAR(14) DEFAULT '00000000000000';
76UPDATE ladrillo_dev.tmp_liq_mono SET numafi =CONCAT(g,'/00');
77CREATE INDEX idxcoef1 ON ladrillo_dev.tmp_liq_mono(numafi);
78ALTER TABLE ladrillo_dev.tmp_liq_mono ADD COLUMN capita VARCHAR(30) DEFAULT 'SIN DATO';
79ALTER TABLE ladrillo_dev.tmp_liq_mono ADD COLUMN ayn VARCHAR(80) DEFAULT '**SIN AYN';
80UPDATE ladrillo_dev.tmp_liq_mono le, ladrillo_dev.empleados e
81 SET le.capita=e.capita , ayn=CONCAT(apellido,', ',nombre)
82 WHERE le.numafi COLLATE latin1_general_ci =e.numafi;
83
84
85/*contribuciones*/
86DROP TABLE IF EXISTS ladrillo_dev.tmp_liq_contribucion;
87CREATE TABLE ladrillo_dev.tmp_liq_contribucion
88SELECT le.*,IF(le.d='C',c/100, -1*c/100)*coef AS contribucion, capita FROM ladrillo_dev.tmp_liq_empresas le
89LEFT JOIN tmp_liq_coef_contrib cl ON le.g=cl.cuit AND le.h=cl.periodo;
90ALTER TABLE ladrillo_dev.tmp_liq_contribucion ADD COLUMN empresa VARCHAR(80) DEFAULT '**SIN EMPRESA';
91UPDATE ladrillo_dev.tmp_liq_contribucion le, ospilm.empresas e
92 SET le.empresa=e.nombre
93 WHERE le.g =e.cuit;
94
95/*genero la salida de la liquidacion*/
96SELECT MAX(id) INTO ultimoLogger FROM ospilm.logger;
97UPDATE ospilm.logger SET end_at=NOW() WHERE id=ultimoLogger;
98SELECT
99 ultimoLogger,
100 d.desreguladora AS capita,contrib, aporte,mono,otros ,
101 start_at, end_at
102FROM ospilm_padron.desreguladoras d
103JOIN ospilm.logger l ON l.id=ultimoLogger
104LEFT JOIN (SELECT capita,SUM(contribucion) AS contrib FROM tmp_liq_contribucion GROUP BY capita) c ON c.capita=desreguladora
105LEFT JOIN (SELECT capita,SUM(IF(d='C', c/100, -1*c/100)) AS aporte FROM tmp_liq_empleados GROUP BY capita) e ON e.capita=desreguladora
106LEFT JOIN (SELECT capita,SUM(IF(d='C', c/100, -1*c/100)) AS mono FROM tmp_liq_mono GROUP BY capita) m ON m.capita=desreguladora
107LEFT JOIN (SELECT SUM(IF(d='C', c/100, -1*c/100)) AS otros, 'SIN DATO' AS capita FROM ladrillo_dev.tmp_liq_otros) o ON o.capita=desreguladora;
108END$$
109
110DELIMITER ;