DELIMITER $$

DROP PROCEDURE IF EXISTS `fr_zasw_zarobki`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `fr_zasw_zarobki`(
	IN _MODE VARCHAR(150),
	IN _GUID VARCHAR(38),
	IN _Param_A VARCHAR(50),	
	IN _Param_B VARCHAR(50),	
	IN _Param_C VARCHAR(50),	
	IN _Param_D VARCHAR(50),	
	IN _Param_E VARCHAR(50)	
)
SPROC: BEGIN
DECLARE _SQLText TEXT DEFAULT '';

/*
CALL fr_zasw_zarobki('Present','Prac170',1,2015,7,3,z prac zlec?);
*/
	IF _MODE = 'Present' THEN
		DROP TEMPORARY TABLE IF EXISTS t_pr_data;
		
		SET _SQLText =				
			'
			CREATE TEMPORARY TABLE t_pr_data 
			SELECT  
			SUM(P.KwotaBrutto + P.SklFEmerytalnyPracow + P.SklFRentowyPracow + P.SklFChorobowyPracow) as SumaBrutto,  
			SUM(P.SklFEmerytalnyPracow + P.SklFRentowyPracow + P.SklFChorobowyPracow) as SumaPotracen,  
			SUM(P.KwotaNetto) as SumaNetto,  SUM(P.SklFEmerytalnyPracow) as SumaEmerytalna,  
			SUM(P.SklFRentowyPracow) as SumaRentowa,  SUM(P.SklFChorobowyPracow) as SumaChorobowa,  
			SUM(P.PodstawaPPD) as PodstawaPPD,  
			SUM(P.Zaliczka) as Zaliczka,  
			SUM(P.ZasilekChorobowy) as ZasilekChorobowy,
			SUM(SklKasaChorychPracowPobr) as SumaZdrowotna,  
			(select S.stanowisko from stanowiska S where S.GUID=Pr.stanowisko) as StanowiskoStr,  
			CASE WHEN MAX(Pr.TypOkresuUmowy)=1 THEN "na czas określony"  WHEN MAX(Pr.TypOkresuUmowy)=2 THEN "na czas nieokreślony" WHEN MAX(Pr.TypOkresuUmowy)=3 THEN "na okres próbny" WHEN MAX(Pr.TypOkresuUmowy)=4 THEN "na okres zastępstwa"  END as OkresUmowy,  
			SUM((SELECT SUM(ps.kwota + ps.ZmniejszZwieksz) as wynik FROM place_skladniki ps  WHERE ps.RodzajSkladnika=4 and ps.GUID_zapisu_placowego=P.GUID)+  
			(select SUM(Kwota+ZmniejszZwieksz) as osoba from place_skladniki where GUID_definicja_skladnika_placy =''C_15'' and GUID_zapisu_placowego=P.GUID) +  
			(select SUM(Kwota+ZmniejszZwieksz) as Kwota from place_skladniki where GUID_definicja_skladnika_placy =''C_19'' and GUID_zapisu_placowego=P.GUID) +  
			(select SUM(Kwota+ZmniejszZwieksz) as Kwota from place_skladniki where GUID_definicja_skladnika_placy =''C_16'' and GUID_zapisu_placowego=P.GUID)     )  as Potracenia,  
			Pr.DataRozpoczeciaCiaglosci as UmowaOd, Pr.UmowaDo as UmowaDo, Pr.CzyObecniePracuje,  O.Plec, O.Imiona, O.Nazwisko, O.NrPesel, O.GUID as osobaGUID , 
			Pr.TypOkresuUmowy, Pr.DataZatrudnieniawzakl, Pr.OkrProbnyDo, Pr.DataZwolnienia, Pr.ZastepstwoDo  
		FROM place P  
		JOIN osoby O on O.GUID=P.GUID_pracownika  
		JOIN Pracownicy Pr on Pr.GUID=P.GUID_pracownika  
		WHERE P.GUID_pracownika="#GUID#" AND P.deleted = 0
		#WHERE#
		GROUP BY P.GUID_pracownika  order by P.Rok DESC, P.Miesiac Desc    
		';

		-- 2015*12+7-3+1 AND 2015*12+7) 
		IF (_Param_A='0') THEN
		  SET @WHEREUZU = ' AND (YEAR(P.datawyplaty)*12+MONTH(P.datawyplaty) between #ROK#*12+#MSC#-#MSCODJ#+1 AND #ROK#*12+#MSC#) ';
		ELSE  
          SET @WHEREUZU = ' AND (P.rok*12 + P.miesiac between #ROK#*12+#MSC#-#MSCODJ#+1 AND #ROK#*12+#MSC#) ';
		END IF;
		SET @WHEREUZU =	REPLACE(@WHEREUZU, '#ROK#', _Param_B);
		SET @WHEREUZU =	REPLACE(@WHEREUZU, '#MSC#', _Param_C);
		SET @WHEREUZU =	REPLACE(@WHEREUZU, '#MSCODJ#', _Param_D);
		
		
		SET _SQLText =	REPLACE(_SQLText, '#GUID#', _GUID);
		SET _SQLText =	REPLACE(_SQLText, '#WHERE#', @WHEREUZU);
		
		SET @_SQLText =	_SQLText;
		CALL _ExecuteCmd(_SQLText, @Error);


		-- E = 1 to znaczy sumuj tez z prac zlec
		IF (_Param_E='1') THEN
			SET _SQLText = 'INSERT INTO t_pr_data SELECT  
			SUM(P.KwotaBrutto + P.SklFemerytalnyZleceniob + P.SklFrentowyZleceniob + P.SklFchorobowyZleceniob) AS SumaBrutto,  
			SUM(P.SklFemerytalnyZleceniob + P.SklFrentowyZleceniob + P.SklFchorobowyZleceniob) AS SumaPotracen,  
			SUM(P.KwotaNetto) AS SumaNetto,  SUM(P.SklFemerytalnyZleceniob) AS SumaEmerytalna,  
			SUM(P.SklFrentowyZleceniob) AS SumaRentowa,  SUM(P.SklFchorobowyZleceniob) AS SumaChorobowa,  
			SUM(P.ProcentPodatku) AS PodstawaPPD,  
			SUM(P.Zaliczka) AS Zaliczka,  
			SUM(P.ZasChorRazem) as ZasilekChorobowy,
			SUM(SklKasaChorychZleceniobPobr) AS SumaZdrowotna,  
			(SELECT S.stanowisko FROM stanowiska S WHERE S.GUID=Pr.stanowisko) AS StanowiskoStr,  
			CASE WHEN MAX(Pr.TypOkresuUmowy)=1 THEN "na czas określony"  WHEN MAX(Pr.TypOkresuUmowy)=2 THEN "na czas nieokreślony" WHEN MAX(Pr.TypOkresuUmowy)=3 THEN "na okres próbny" WHEN MAX(Pr.TypOkresuUmowy)=4 THEN "na okres zastępstwa"  END AS OkresUmowy,  
			SUM((SELECT SUM(ps.kwota + ps.ZmniejszZwieksz) AS wynik FROM place_skladniki ps  WHERE ps.RodzajSkladnika=4 AND ps.GUID_zapisu_placowego=P.GUID)+  
			(SELECT SUM(Kwota+ZmniejszZwieksz) AS osoba FROM place_skladniki WHERE GUID_definicja_skladnika_placy =''C_15'' AND GUID_zapisu_placowego=P.GUID) +  
			(SELECT SUM(Kwota+ZmniejszZwieksz) AS Kwota FROM place_skladniki WHERE GUID_definicja_skladnika_placy =''C_19'' AND GUID_zapisu_placowego=P.GUID) +  
			(SELECT SUM(Kwota+ZmniejszZwieksz) AS Kwota FROM place_skladniki WHERE GUID_definicja_skladnika_placy =''C_16'' AND GUID_zapisu_placowego=P.GUID)     )  AS Potracenia,  
			Pr.DataRozpoczeciaCiaglosci AS UmowaOd, Pr.UmowaDo AS UmowaDo, Pr.CzyObecniePracuje,  O.Plec, O.Imiona, O.Nazwisko, O.NrPesel, O.GUID AS osobaGUID , 
			Pr.TypOkresuUmowy, Pr.DataZatrudnieniawzakl, Pr.OkrProbnyDo, Pr.DataZwolnienia, Pr.ZastepstwoDo  
		FROM prace_zlecone P  
		JOIN osoby O ON O.GUID=P.GUID_pracownika  
		JOIN Pracownicy Pr ON Pr.GUID=P.GUID_pracownika  
		WHERE P.GUID_pracownika="#GUID#" AND P.deleted = 0
		#WHERE#
		GROUP BY P.GUID_pracownika  ORDER BY P.Rok DESC, P.Miesiac DESC    
		LIMIT 1';
			SET _SQLText =	REPLACE(_SQLText, '#GUID#', _GUID);
			SET _SQLText =	REPLACE(_SQLText, '#WHERE#', @WHEREUZU);
			SET @_SQLText =	_SQLText;
			CALL _ExecuteCmd(_SQLText, @Error);

		
		END IF;
		

		SELECT 
			SUM(SumaBrutto) as SumaBrutto, 
			SUM(SumaPotracen) as SumaPotracen,  
			SUM(SumaNetto) as SumaNetto,
			SUM(SumaEmerytalna) as SumaEmerytalna, 
			SUM(SumaRentowa) as SumaRentowa,  
			SUM(SumaChorobowa) as SumaChorobowa,
			SUM(PodstawaPPD) as PodstawaPPD,
			SUM(Zaliczka) as Zaliczka,
			SUM(SumaZdrowotna) as SumaZdrowotna,
			StanowiskoStr,
			OkresUmowy,
			MAX(UmowaOd) as UmowaOd,
			MAX(UmowaDo) as UmowaDo,
			CzyObecniePracuje,
			Plec,
			Imiona,
			Nazwisko,
			NrPESEL,
			osobaGUID,
			TypOkresuUmowy,
			SUM(ZasilekChorobowy) as ZasilekChorobowy,
			SUM(Potracenia) as Potracenia,
			DataZatrudnieniawzakl,
			OkrProbnyDo,
			DataZwolnienia,
			ZastepstwoDo
			
			
		FROM t_pr_data;	
		
	END IF;	--	IF _MODE= 'Present'

	

	
END$$


DELIMITER ;

