DELIMITER $$

DROP PROCEDURE IF EXISTS `emp001`.`spPostManut`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `spPostManut`( in Pdataini datetime, Pdatafim datetime, Pmatricula varchar(20), Plogin varchar(20) )
BEGIN declare Vlogin char(20); declare Vdata date; declare Vdaux date; declare Vmatricula char(20); declare Vdiasemana char(10); declare Vponto1 char(5); declare Vponto2 char(5); declare Vponto3 char(5); declare Vponto4 char(5); declare Vponto5 char(5); declare Vponto6 char(5); declare Vponto7 char(5); declare Vponto8 char(5); declare Vponto9 char(5); declare Vponto10 char(5); declare Vponto11 char(5); declare Vponto12 char(5); declare Vpontoanterior1 char(5); declare Vpontoanterior2 char(5); declare Vpontoanterior3 char(5); declare Vpontoanterior4 char(5); declare Vpontoanterior5 char(5); declare Vpontoanterior6 char(5); declare Vpontoanterior7 char(5); declare Vpontoanterior8 char(5); declare Vpontoanterior9 char(5); declare Vpontoanterior10 char(5); declare Vpontoanterior11 char(5); declare Vpontoanterior12 char(5); declare Vmotivo1 integer; declare Vmotivo2 integer; declare Vmotivo3 integer; declare Vmotivo4 integer; declare Vmotivo5 integer; declare Vmotivo6 integer; declare Vmotivo7 integer; declare Vmotivo8 integer; declare Vmotivo9 integer; declare Vmotivo10 integer; declare Vmotivo11 integer; declare Vmotivo12 integer; declare Valtera1 char(1); declare Valtera2 char(1); declare Valtera3 char(1); declare Valtera4 char(1); declare Valtera5 char(1); declare Valtera6 char(1); declare Valtera7 char(1); declare Valtera8 char(1); declare Valtera9 char(1); declare Valtera10 char(1); declare Valtera11 char(1); declare Valtera12 char(1); declare Valteraanterior1 char(1); declare Valteraanterior2 char(1); declare Valteraanterior3 char(1); declare Valteraanterior4 char(1); declare Valteraanterior5 char(1); declare Valteraanterior6 char(1); declare Valteraanterior7 char(1); declare Valteraanterior8 char(1); declare Valteraanterior9 char(1); declare Valteraanterior10 char(1); declare Valteraanterior11 char(1); declare Valteraanterior12 char(1); declare Vrep1 char(17); declare Vrep2 char(17); declare Vrep3 char(17); declare Vrep4 char(17); declare Vrep5 char(17); declare Vrep6 char(17); declare Vrep7 char(17); declare Vrep8 char(17); declare Vrep9 char(17); declare Vrep10 char(17); declare Vrep11 char(17); declare Vrep12 char(17); declare Vcodobs char(5); declare Vobs char(30); declare Vabono char(1); declare Vhoras char(5); declare Vfaltas char(5); declare Vhorario char(5); declare Voldhorario char(5); declare Vdescricaohorario char(50); declare Vproxdia char(5); declare Vabreviatura char(2); declare Vanulahorasferiado char(1); declare Vextrasautorizadas char(5); declare Vdiabanco char(1); declare Vqtd_bh char(5); declare Vqtd_bhdeb char(5); declare Vignorabatidasentre char(1); declare Vccusttrab char(3); set Vdaux = Pdataini; while (Vdaux <= Pdatafim) do set Vponto1 = ""; set Vponto2 = ""; set Vponto3 = ""; set Vponto4 = ""; set Vponto5 = ""; set Vponto6 = ""; set Vponto7 = ""; set Vponto8 = ""; set Vponto9 = ""; set Vponto10 = ""; set Vponto11 = ""; set Vponto12 = ""; set Vpontoanterior1 = ""; set Vpontoanterior2 = ""; set Vpontoanterior3 = ""; set Vpontoanterior4 = ""; set Vpontoanterior5 = ""; set Vpontoanterior6 = ""; set Vpontoanterior7 = ""; set Vpontoanterior8 = ""; set Vpontoanterior9 = ""; set Vpontoanterior10 = ""; set Vpontoanterior11 = ""; set Vpontoanterior12 = ""; set Vmotivo1 = 0; set Vmotivo2 = 0; set Vmotivo3 = 0; set Vmotivo4 = 0; set Vmotivo5 = 0; set Vmotivo6 = 0; set Vmotivo7 = 0; set Vmotivo8 = 0; set Vmotivo9 = 0; set Vmotivo10 = 0; set Vmotivo11 = 0; set Vmotivo12 = 0; set Valtera1 = ""; set Valtera2 = ""; set Valtera3 = ""; set Valtera4 = ""; set Valtera5 = ""; set Valtera6 = ""; set Valtera7 = ""; set Valtera8 = ""; set Valtera9 = ""; set Valtera10 = ""; set Valtera11 = ""; set Valtera12 = ""; set Valteraanterior1 = ""; set Valteraanterior2 = ""; set Valteraanterior3 = ""; set Valteraanterior4 = ""; set Valteraanterior5 = ""; set Valteraanterior6 = ""; set Valteraanterior7 = ""; set Valteraanterior8 = ""; set Valteraanterior9 = ""; set Valteraanterior10 = ""; set Valteraanterior11 = ""; set Valteraanterior12 = ""; set Vrep1 = ""; set Vrep2 = ""; set Vrep3 = ""; set Vrep4 = ""; set Vrep5 = ""; set Vrep6 = ""; set Vrep7 = ""; set Vrep8 = ""; set Vrep9 = ""; set Vrep10 = ""; set Vrep11 = ""; set Vrep12 = ""; select login, data, matricula, diasemana, ponto1, ponto2, ponto3, ponto4, ponto5, ponto6, ponto7, ponto8, ponto9, ponto10, ponto11, ponto12, pontoanterior1, pontoanterior2, pontoanterior3, pontoanterior4, pontoanterior5, pontoanterior6, pontoanterior7, pontoanterior8, pontoanterior9, pontoanterior10, pontoanterior11, pontoanterior12, motivo1, motivo2, motivo3, motivo4, motivo5, motivo6, motivo7, motivo8, motivo9, motivo10, motivo11, motivo12, altera1, altera2, altera3, altera4, altera5, altera6, altera7, altera8, altera9, altera10, altera11, altera12, alteraanterior1, alteraanterior2, alteraanterior3, alteraanterior4, alteraanterior5, alteraanterior6, alteraanterior7, alteraanterior8, alteraanterior9, alteraanterior10, alteraanterior11, alteraanterior12, rep1, rep2, rep3, rep4, rep5, rep6, rep7, rep8, rep9, rep10, rep11, rep12, codobs, obs, abono, horas, faltas, horario, oldhorario, descricaohorario, proxdia, abreviatura, anulahorasferiado, extrasautorizadas, diabanco, qtd_bh, qtd_bhdeb, ignorabatidasentre, ccusttrab from tbmanuttemp where login = Plogin and data = Vdaux and matricula = Pmatricula into Vlogin, Vdata, Vmatricula, Vdiasemana, Vponto1, Vponto2, Vponto3, Vponto4, Vponto5, Vponto6, Vponto7, Vponto8, Vponto9, Vponto10, Vponto11, Vponto12, Vpontoanterior1, Vpontoanterior2, Vpontoanterior3, Vpontoanterior4, Vpontoanterior5, Vpontoanterior6, Vpontoanterior7, Vpontoanterior8, Vpontoanterior9, Vpontoanterior10, Vpontoanterior11, Vpontoanterior12, Vmotivo1, Vmotivo2, Vmotivo3, Vmotivo4, Vmotivo5, Vmotivo6, Vmotivo7, Vmotivo8, Vmotivo9, Vmotivo10, Vmotivo11, Vmotivo12, Valtera1, Valtera2, Valtera3, Valtera4, Valtera5, Valtera6, Valtera7, Valtera8, Valtera9, Valtera10, Valtera11, Valtera12, Valteraanterior1, Valteraanterior2, Valteraanterior3, Valteraanterior4, Valteraanterior5, Valteraanterior6, Valteraanterior7, Valteraanterior8, Valteraanterior9, Valteraanterior10, Valteraanterior11, Valteraanterior12, Vrep1, Vrep2, Vrep3, Vrep4, Vrep5, Vrep6, Vrep7, Vrep8, Vrep9, Vrep10, Vrep11, Vrep12, Vcodobs, Vobs, Vabono, Vhoras, Vfaltas, Vhorario, Voldhorario, Vdescricaohorario, Vproxdia, Vabreviatura, Vanulahorasferiado, Vextrasautorizadas, Vdiabanco, Vqtd_bh, Vqtd_bhdeb, Vignorabatidasentre, Vccusttrab; if (Voldhorario <> Vhorario) then delete from turnos where matricula = Pmatricula and data = Vdata; insert into turnos (matricula, data, horario) values (Pmatricula, Vdata, Vhorario); end if; delete from qtd_fim where matricula = Pmatricula and data = Vdata; if (Vproxdia >= '00:00') then insert into qtd_fim (matricula, data, qtd_horas) values (Pmatricula, Vdata, Vproxdia); end if; delete from obss where matricula = Pmatricula and dia = Vdata; if (Vobs <> '') then if Vabono='S' THEN set Vabono='0'; else set Vabono='-1'; end if; if Vanulahorasferiado='S' THEN set Vanulahorasferiado='0'; else set Vanulahorasferiado='-1'; end if; insert into obss (matricula, dia, obs, abona, horas, faltas, abreviatura, anulahorasFeriado) values (Pmatricula, Vdata, Vobs, Vabono, Vhoras, Vfaltas, Vabreviatura, Vanulahorasferiado); end if; delete from qtd_bh where matricula = Pmatricula and data = Vdata; if (Vqtd_bh >= '00:00') or (Vqtd_bhdeb >= '00:00') then insert into qtd_bh (matricula, data, qtd_horas, qtd_horasdeb) values (Pmatricula, Vdata, Vqtd_bh, Vqtd_bhdeb); end if; delete from diabanco where matricula = Pmatricula and data = Vdata; if (Vdiabanco = 'S') then insert into diabanco (matricula, data, diabanco) values (Pmatricula, Vdata, '0'); end if; if (Vpontoanterior1 <> Vponto1) and (Valtera1 <> Valteraanterior1) then if Vpontoanterior1 >= '00:00' then update pontos set horabatida = Vponto1, controle = Valtera1 where horabatida = Vpontoanterior1 and dia = Vdata and matricula = Vmatricula; else insert into pontos (matricula, dia, horabatida, idmotivo, controle) values (Vmatricula, Vdata, Vponto1, Vmotivo1, Valtera1); end if; end if; if (Vpontoanterior2 <> Vponto2) or (Valtera2 <> Valteraanterior2) then if Vpontoanterior2 >= '00:00' then update pontos set horabatida = Vponto2, controle = Valtera2 where horabatida = Vpontoanterior2 and dia = Vdata and matricula = Vmatricula; else insert into pontos (matricula, dia, horabatida, idmotivo, controle) values (Vmatricula, Vdata, Vponto2, Vmotivo2, Valtera2); end if; end if; if (Vpontoanterior3 <> Vponto3) or (Valtera3 <> Valteraanterior3) then if Vpontoanterior3 >= '00:00' then update pontos set horabatida = Vponto3, controle = Valtera3 where horabatida = Vpontoanterior3 and dia = Vdata and matricula = Vmatricula; else insert into pontos (matricula, dia, horabatida, idmotivo, controle) values (Vmatricula, Vdata, Vponto3, Vmotivo3, Valtera3); end if; end if; if (Vpontoanterior4 <> Vponto4) or (Valtera4 <> Valteraanterior4) then if Vpontoanterior4 >= '00:00' then update pontos set horabatida = Vponto4, controle = Valtera4 where horabatida = Vpontoanterior4 and dia = Vdata and matricula = Vmatricula; else insert into pontos (matricula, dia, horabatida, idmotivo, controle) values (Vmatricula, Vdata, Vponto4, Vmotivo4, Valtera4); end if; end if; if (Vpontoanterior5 <> Vponto5) or (Valtera5 <> Valteraanterior5) then if Vpontoanterior5 >= '00:00' then update pontos set horabatida = Vponto5, controle = Valtera5 where horabatida = Vpontoanterior5 and dia = Vdata and matricula = Vmatricula; else insert into pontos (matricula, dia, horabatida, idmotivo, controle) values (Vmatricula, Vdata, Vponto5, Vmotivo5, Valtera5); end if; end if; if (Vpontoanterior6 <> Vponto6) or (Valtera6 <> Valteraanterior6) then if Vpontoanterior6 >= '00:00' then update pontos set horabatida = Vponto6, controle = Valtera6 where horabatida = Vpontoanterior6 and dia = Vdata and matricula = Vmatricula; else insert into pontos (matricula, dia, horabatida, idmotivo, controle) values (Vmatricula, Vdata, Vponto6, Vmotivo6, Valtera6); end if; end if; if (Vpontoanterior7 <> Vponto7) or (Valtera7 <> Valteraanterior7) then if Vpontoanterior7 >= '00:00' then update pontos set horabatida = Vponto7, controle = Valtera7 where horabatida = Vpontoanterior7 and dia = Vdata and matricula = Vmatricula; else insert into pontos (matricula, dia, horabatida, idmotivo, controle) values (Vmatricula, Vdata, Vponto7, Vmotivo7, Valtera7); end if; end if; if (Vpontoanterior8 <> Vponto8) or (Valtera8 <> Valteraanterior8) then if Vpontoanterior8 >= '00:00' then update pontos set horabatida = Vponto8, controle = Valtera8 where horabatida = Vpontoanterior8 and dia = Vdata and matricula = Vmatricula; else insert into pontos (matricula, dia, horabatida, idmotivo, controle) values (Vmatricula, Vdata, Vponto8, Vmotivo8, Valtera8); end if; end if; if (Vpontoanterior9 <> Vponto9) or (Valtera9 <> Valteraanterior9) then if Vpontoanterior9 >= '00:00' then update pontos set horabatida = Vponto9, controle = Valtera9 where horabatida = Vpontoanterior9 and dia = Vdata and matricula = Vmatricula; else insert into pontos (matricula, dia, horabatida, idmotivo, controle) values (Vmatricula, Vdata, Vponto9, Vmotivo9, Valtera9); end if; end if; if (Vpontoanterior10 <> Vponto10) or (Valtera10 <> Valteraanterior10) then if Vpontoanterior10 >= '00:00' then update pontos set horabatida = Vponto10, controle = Valtera10 where horabatida = Vpontoanterior10 and dia = Vdata and matricula = Vmatricula; else insert into pontos (matricula, dia, horabatida, idmotivo, controle) values (Vmatricula, Vdata, Vponto10, Vmotivo10, Valtera10); end if; end if; if (Vpontoanterior11 <> Vponto11) or (Valtera11 <> Valteraanterior11) then if Vpontoanterior11 >= '00:00' then update pontos set horabatida = Vponto11, controle = Valtera11 where horabatida = Vpontoanterior11 and dia = Vdata and matricula = Vmatricula; else insert into pontos (matricula, dia, horabatida, idmotivo, controle) values (Vmatricula, Vdata, Vponto11, Vmotivo11, Valtera11); end if; end if; if (Vpontoanterior12 <> Vponto12) or (Valtera12 <> Valteraanterior12) then if Vpontoanterior12 >= '00:00' then update pontos set horabatida = Vponto12, controle = Valtera12 where horabatida = Vpontoanterior12 and dia = Vdata and matricula = Vmatricula; else insert into pontos (matricula, dia, horabatida, idmotivo, controle) values (Vmatricula, Vdata, Vponto12, Vmotivo12, Valtera12); end if; end if; set Vdaux = adddate(Vdaux,1); end while; end$$

DELIMITER ;
