DELIMITER $$

/*
	funkcja używana w Security do naliczania wynagrodzeń
*/

DROP PROCEDURE IF EXISTS `pl_gratyfikacje_tools`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `pl_gratyfikacje_tools`(
	IN _MODE VARCHAR(150),
	IN _Param_A VARCHAR(50),  -- rok
	IN _Param_B VARCHAR(50),  -- miesiac
	IN _Param_C VARCHAR(50),	
	IN _Param_D VARCHAR(50),	  
	IN _Param_E VARCHAR(50)	  -- rozliczenie wg - integer
)
SPROC: BEGIN
	/*
	_MODE

	*/
	
	DECLARE _RozliczajWg INTEGER;
	DECLARE _I INTEGER;
	DECLARE _ZLEC_Potr INTEGER DEFAULT 4;   -- 1
	DECLARE _ZLEC_ZUS  INTEGER DEFAULT 6;	-- 3
	DECLARE _ZaZlecenie, _SklHestia DOUBLE;
	DECLARE _SQLText TEXT;
			
	-- DECLARE _DB_ZLEC VARCHAR(50);
	
	

/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'pl.kreuj.zlec.storno'
		utworzenie zapisu storno wzgledem zlecenia o GUIDzie przekazanego w _Param_A
		Parametry
		_Param_A				  GUID oryginalnego zlecenia		
		IN _Param_B VARCHAR(50),  -- rok tworzonego zapisu
		IN _Param_C VARCHAR(50),  -- miesiac
		_Param_D   				  -- nr listy 
		
		
		CALL pl_gratyfikacje_tools('pl.kreuj.zlec.storno', 'GUID_Zlec', '', '', '', '');
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'pl.kreuj.zlec.storno' THEN
    
		DROP TEMPORARY TABLE IF EXISTS t_pz_storno;
		CREATE TEMPORARY TABLE t_pz_storno AS
		SELECT * FROM prace_zlecone 
		WHERE GUID  =  _Param_A;
		
		DROP TEMPORARY TABLE IF EXISTS t_pz_poz_storno;
		CREATE TEMPORARY TABLE t_pz_poz_storno AS
		SELECT * FROM place_skladniki
		WHERE GUID_zapisu_placowego  =  _Param_A;
		
		-- aNewGUIDPlac := ReplaceBadChar(Format('{PL_STORNO_%d_', [DPlaceStorno.aCDSPlace.FieldByName('idn').asInteger])+DateToStr(date)+'}','-', '_');
		set _I = 0;
		select idn from t_pz_storno into _I;
		SET @pl.kreuj.zlec.storno.GUID = CONCAT('ZL_STORNO_', _I);
		
		update t_pz_storno 	set 
		GUID = @pl.kreuj.zlec.storno.GUID, idn = 0,  ZamknietyZapis = 1,   GUID_storno = _Param_A,
		rok = _Param_B, miesiac = _Param_C, NrListy = _Param_D,
		InneZasilkZUS = - InneZasilkZUS,
		KwotaBrutto = - KwotaBrutto,
		KosztyUzyskania = - KosztyUzyskania,
		ZasChorRazem = - ZasChorRazem,
		InneDod = - InneDod,
		PodsFundEmerytBezOgranicz = - PodsFundEmerytBezOgranicz,
		Dochod = - Dochod,
		Zaliczka = - Zaliczka,
		ZryczaltowanyPodatek = - ZryczaltowanyPodatek,
		DoWyplaty = - DoWyplaty,
		WyplataPrzelewem = - WyplataPrzelewem,
		WyplataGotowka = - WyplataGotowka,
		InnePotr = - InnePotr,
		-- stawka_godz = - 
		ZusZleceniodawcaKwota = - ZusZleceniodawcaKwota,
		SklKChZleceniobOdliczNomin = - SklKChZleceniobOdliczNomin,
		SklKChZleceniobPobrNomin = - SklKChZleceniobPobrNomin,
		ZwiekszPodatku = - ZwiekszPodatku,
		ZmnPodatku = - ZmnPodatku,
		PotracenieZUS = - PotracenieZUS,
		dieta_delegacje = - dieta_delegacje,
		KwotaNetto = - KwotaNetto,
		RazemSkladkiZleceniodawcy = - RazemSkladkiZleceniodawcy,
		ZasMacierz = - ZasMacierz, 		ZasRehab = - ZasRehab,
		ZaZlecenie = - ZaZlecenie, 
		SklKasaChorychZleceniobOdlicz = - SklKasaChorychZleceniobOdlicz,
		KwotaChorobowego100proc = - KwotaChorobowego100proc,
		SkladkaPPE = - SkladkaPPE,
		KwotaZwPod = - KwotaZwPod,
		KorektaNaMinus = - KorektaNaMinus,	KorektaNaPlus = - KorektaNaPlus,
		PodstFemerytalny = - PodstFemerytalny,	PodstFrentowy = - PodstFrentowy, PodstFchorobowy = - PodstFchorobowy, 	PodstFwypadkowy = - PodstFwypadkowy,
		PodstKasaChorych = - PodstKasaChorych,
		SklFemerytalnyZleceniob = - SklFemerytalnyZleceniob,
		SklFrentowyZleceniob = - SklFrentowyZleceniob,
		SklFchorobowyZleceniob = - SklFchorobowyZleceniob, 
		SklFwypadkowyZleceniob = - SklFwypadkowyZleceniob,
		SklKasaChorychZleceniobPobr = - SklKasaChorychZleceniobPobr,
		SklFemerytalnyZleceniod = - SklFemerytalnyZleceniod,
		SklFrentowyZleceniod = - SklFrentowyZleceniod,
		SklFchorobowyZleceniod = - SklFchorobowyZleceniod,
		SklFwypadkowyZleceniod = - SklFwypadkowyZleceniod,
		SklKasaChorychZleceniod = - SklKasaChorychZleceniod,
		RazemSkladkiZleceniobiorcy = - RazemSkladkiZleceniobiorcy,
		kwota_za_UW = - kwota_za_UW,
		SklFGSP = - SklFGSP,
		koszty_podrozy = - koszty_podrozy, SklZdrPobr_koszty_podrozy = - SklZdrPobr_koszty_podrozy,
		PodstUbSpolNarastAktualna = - PodstUbSpolNarastAktualna,
		PodstUbSpolNarastFirstTime = - PodstUbSpolNarastFirstTime,
		WynagrodzeniePlatnika = - WynagrodzeniePlatnika,
		KwotaPodatkuDoWplaty = - KwotaPodatkuDoWplaty,
		SklFundPracy = - SklFundPracy,
		PodstFpFGSP = - PodstFpFGSP,
		ZaliczkaPrzedSklUbezp = - ZaliczkaPrzedSklUbezp,
		ZryczPodatekPrzedSklUbezp = - ZryczPodatekPrzedSklUbezp,
		DeklarowanaPodstUbezpiecz = - DeklarowanaPodstUbezpiecz,
		BruttoDoDeklarRocznej = - BruttoDoDeklarRocznej		
		;
		
		update t_pz_poz_storno 	set 
		GUID_zapisu_placowego = @pl.kreuj.zlec.storno.GUID,
		GUID = CONCAT('ZL_STORNO_SKL_', idn),
		idn = 0,
		kwota = - kwota,
		NomKwota = - NomKwota,
		ZmniejszZwieksz = - ZmniejszZwieksz;

		
		-- wstawiamy zapis stornujace
		insert into prace_zlecone
		select * from t_pz_storno;
		
		insert into place_skladniki
		select * from t_pz_poz_storno;
		
		-- zamykamy orginalny zapis
		update prace_zlecone set
		ZamknietyZapis = 1		
		WHERE GUID  =  _Param_A;
		
	END IF;	
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'pl.nalicz.z.kart.obiektow.one.zlec.skladki'
		Naliczenie skladek dla jednego zlecenia
		Parametry
		_Param_A	Rok
		_Param_B	Miesiac
		_Param_C	GUID pracownika
		_Param_D    GUID zlecenia
		_Param_E VARCHAR(50)	  -- rozliczenie wg
		
		CALL pl_gratyfikacje_tools('pl.przepisz.dane.pracownika.one.zlec.skladki', '2011', '', '', 'GUID_Zlec', '1');
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'pl.nalicz.z.kart.obiektow.one.zlec.skladki' THEN
      -- @pl.gratyf.za_zlecenie	
	BEGIN
		-- DECLARE _Podstawa  DOUBLE;
		-- DECLARE _Dekl  	   DOUBLE;
		DECLARE _PodstE DOUBLE;
		DECLARE _PodstR DOUBLE;
		DECLARE _PodstW DOUBLE;
		DECLARE _PodstC DOUBLE;
		DECLARE _PodstF DOUBLE;
		
		-- DECLARE _SumaZ DOUBLE;
		-- DECLARE _SumaP DOUBLE;
		-- DECLARE _KwotaPoprz DOUBLE;
		-- DECLARE _SumaPodstCW DOUBLE;
		-- DECLARE _NaliczacZUS INTEGER;
		DECLARE _PodlUbezpZdrowot INTEGER; -- to jest niezalezne od "NaliczacZUS"
		
		CALL _IReg_Get('Place2003\\Progi_podatkowe_stawki_ZUS', 'Max_podstawa_ubezp_emeryt', _Param_A, 'FLOAT', @MaxPodstUbezpEm, 0);   -- Max_podstawa_ubezp_emeryt 0
							
		SET @pl.zlec.skladki_Podstawa = 0.0;
		SET @pl.zlec.skladki_PodstC = 0.0;
		SET @pl.zlec.skladki_PodstW = 0.0;
		SET @pl.zlec.skladki_PodstE = 0.0;
		SET @pl.zlec.skladki_PodstR = 0.0;
		
		SET @pl.zlec.skladki_NaliczacZUS = 0;
		SET @pl.zlec.skladki_PodlUbezpZdrowot = 0;
		SET @pl.zlec.skladki_Dekl = 0.0;
		
		SET _SQLText = 
		'SELECT 
			IF(DeklarowanaPodstUbezpiecz>0, DeklarowanaPodstUbezpiecz, ZaZlecenie) AS podst, 
			NaliczacZus, PodlUbezpZdrowot, DeklarowanaPodstUbezpiecz  
		FROM #DB_ZLEC#.prace_zlecone 
		WHERE 
			GUID = ''#_Param_D#''
		INTO @pl.zlec.skladki_Podstawa, @pl.zlec.skladki_NaliczacZUS, @pl.zlec.skladki_PodlUbezpZdrowot, @pl.zlec.skladki_Dekl
		;		
		'
		;
		
		SET _SQLText = REPLACE(_SQLText, '#DB_ZLEC#', IF(_Param_E in ('0','1','5'), "ms", "sec"));	
		SET _SQLText = REPLACE(_SQLText, '#_Param_D#', _Param_D);			
		SET @_SQLText = _SQLText;		
		CALL _ExecuteCmd(_SQLText, @Error);
		
		-- set @szambo = @_SQLText;
		
		IF (@pl.zlec.skladki_NaliczacZUS OR @pl.zlec.skladki_PodlUbezpZdrowot) THEN
		
			--	set @szambo = 'naliczamy ZUS';
			DROP TEMPORARY TABLE IF EXISTS `tt_skladki_place_do_zlec`;
			
			SET _SQLText =  
			'CREATE TEMPORARY TABLE `tt_skladki_place_do_zlec`
				SELECT ''#_Param_D#'' AS GUID,	
			  IFNULL(SUM(ZusFPprc), 0) as SUMZusFPprc, IFNULL(SUM(ZUSFEPPrc), 0) as ZUSFEPPrc, 
			  IFNULL(SUM(ZusFGprc), 0) as SUMZusFGprc, IFNULL(SUM(PodstFemerytalny), 0) as SUMPodstFemerytalny, 
			  IFNULL(SUM(PodstFrentowy), 0) as SUMPodstFrentowy,  
			  IFNULL(SUM(PodstFchorobowy), 0) as SUMPodstFchorobowy, 
			  IFNULL(SUM(PodstFwypadkowy), 0) as SUMPodstFwypadkowy, 
			  IFNULL(SUM(PodstKasaChorych), 0) as SUMPodstKasaChorych, 
			  IFNULL(SUM(SklFemerytalnyPracow), 0) as SUMSklFemerytalnyPracow, 
			  IFNULL(SUM(SklFrentowyPracow), 0) as SUMSklFrentowyPracow, 
			  IFNULL(SUM(SklFchorobowyPracow), 0) as SUMSklFchorobowyPracow, 
			  IFNULL(SUM(SklFwypadkowyPracow), 0) as SUMSklFwypadkowyPracow, 
			  IFNULL(SUM(SklKasaChorychPracowPobr), 0) as SUMSklKasaChorychPracowPobr, 
			  IFNULL(SUM(SklKasaChorOdlicz), 0) as SUMSklKasaChorOdlicz, 
			  IFNULL(SUM(SklFemerytalnyPracod), 0) as SUMSklFemerytalnyPracod, 
			  IFNULL(SUM(SklFrentowyPracod), 0) as SUMSklFrentowyPracod, 
			  IFNULL(SUM(SklFchorobowyPracod), 0) as SUMSklFchorobowyPracod, 
			  IFNULL(SUM(SklFwypadkowyPracod), 0) as SUMSklFwypadkowyPracod, 
			  IFNULL(SUM(SklKasaChorychPracod), 0) as SUMSklKasaChorychPracod, 
			  IFNULL(SUM(PodstDlaZUSFundPracy), 0) as SUMPodstDlaZUSFundPracy, 
			  IFNULL(SUM(PodstDlaZusFGSP), 0) as SUMPodstDlaZusFGSP, 
			  IFNULL(SUM(ZusFunduszPracy), 0) as SUMZusFunduszPracy, 
			  IFNULL(SUM(ZusFunduszGwarancyjny), 0) as SUMZusFunduszGwarancyjny, 
			  IFNULL(SUM(SkladkaFEP), 0) as SUMSkladkaFEP  
			  FROM #DB_ZLEC#.place 
		
			  WHERE GUID_pracownika = ''#_Param_C#'' and Month(ifnull(DataWyplDoDeklar, datawyplaty)) = #_Param_B# 
			  AND deleted = 0 AND Year(ifnull(DataWyplDoDeklar, datawyplaty)) = #_Param_A#
			  AND KodTytUbezp = (SELECT KodTytUbezp FROM #DB_ZLEC#.prace_zlecone WHERE GUID = ''#_Param_D#'') AND zapis_koryg_skl = 0
			;
			'
			;  -- qrPlaceSkladkiZaMiesiacDoZlecen
			
			SET _SQLText = REPLACE(_SQLText, '#DB_ZLEC#', IF(_Param_E in ('0','1','5'), "ms", "sec"));
			SET _SQLText = REPLACE(_SQLText, '#_Param_A#', _Param_A);
			SET _SQLText = REPLACE(_SQLText, '#_Param_B#', _Param_B);
			SET _SQLText = REPLACE(_SQLText, '#_Param_C#', _Param_C);
			SET _SQLText = REPLACE(_SQLText, '#_Param_D#', _Param_D);			
			SET @_SQLText = _SQLText;
			CALL _ExecuteCmd(_SQLText, @Error);
			
			-- set @szambo_place = _SQLText;
			-- set @szambo_place_error = @Error;
			set @db.pdz_sql = @_SQLText;
			set @db.pdz_err = @Error;
			
			DROP TEMPORARY TABLE IF EXISTS `tt_skladki_zlec_do_zlec`;
			
			SET _SQLText =  
			'CREATE TEMPORARY TABLE `tt_skladki_zlec_do_zlec`
				SELECT ''#_Param_D#'' AS GUID,	
			  IFNULL(SUM(PodstFemerytalny), 0) AS SumaPodstEmeryt, 
			  IFNULL(SUM(PodstFrentowy), 0) AS SumaPodstRent, IFNULL(SUM(PodstFchorobowy), 0) AS SumaPodstChorob, 
			  IFNULL(SUM(PodstFwypadkowy), 0) AS SumaPodstWypadk, IFNULL(SUM(PodstKasaChorych), 0) AS SumaPodstKCh, 
			  
			  IFNULL(SUM(SklFemerytalnyZleceniob), 0) AS SumaSklEmerytZB, IFNULL(SUM(SklFrentowyZleceniob), 0) AS SumaSklRentZB, 
			  IFNULL(SUM(SklFchorobowyZleceniob), 0) AS SumaSklChorobZB, IFNULL(SUM(SklFwypadkowyZleceniob), 0) AS SumaSklWypadkZB, 
			  IFNULL(SUM(SklKasaChorychZleceniobPobr), 0) AS SumaSklKChPobrZB, IFNULL(SUM(SklKasaChorychZleceniobOdlicz), 0) AS SumaSklKChOdlZB, 
			  IFNULL(SUM(RazemSkladkiZleceniobiorcy), 0) AS SumaSklRazemZB, 
			  
			  IFNULL(SUM(SklFemerytalnyZleceniod), 0) AS SumaSklEmerytZD, IFNULL(SUM(SklFrentowyZleceniod), 0) AS SumaSklRentZD, 
			  IFNULL(SUM(SklFchorobowyZleceniod), 0) AS SumaSklChorobZD, IFNULL(SUM(SklFwypadkowyZleceniod), 0) AS SumaSklWypadkZD, 
			  IFNULL(SUM(SklKasaChorychZleceniod), 0) AS SumaSklKChZD, IFNULL(SUM(RazemSkladkiZleceniodawcy), 0) AS SumaSklRazemZD, 
			
			  IFNULL(SUM(SklFundPracy), 0) AS SumaSklFundPracy, IFNULL(SUM(SklFGSP), 0) AS SumaSklFGSP, 
			  IFNULL(SUM(PodstFpFGSP), 0) AS SumaPodstFpFGSP 
			FROM #DB_ZLEC#.prace_zlecone WHERE GUID_Pracownika = ''#_Param_C#'' AND datawyplaty >= @DataOd AND datawyplaty <= @DataDo 
			AND GUID <> ''#_Param_D#'' and KodTytUbezp =(SELECT KodTytUbezp FROM #DB_ZLEC#.prace_zlecone WHERE GUID = ''#_Param_D#'') and deleted = 0  
			;
			'
			;
			
			SET _SQLText = REPLACE(_SQLText, '#DB_ZLEC#', IF(_Param_E in ('0','1','5'), "ms", "sec"));
			SET _SQLText = REPLACE(_SQLText, '#_Param_B#', _Param_B);
			SET _SQLText = REPLACE(_SQLText, '#_Param_C#', _Param_C);
			SET _SQLText = REPLACE(_SQLText, '#_Param_D#', _Param_D);		
			SET @_SQLText = _SQLText;
			CALL _ExecuteCmd(_SQLText, @Error);
			
			-- set @szambo_zlec = _SQLText;
			-- set @szambo_zlec_error = @Error;
			
			set @db.zdz_sql = @_SQLText;
			set @db.zdz_err = @Error;
		
		
			IF @pl.zlec.skladki_NaliczacZUS THEN
				
				SET @pl.zlec.skladki_SumaZ = 0.0;
				
				SET _SQLText = 
				'SELECT 
					IFNULL(SUM(PodstFemerytalny), 0) AS suma 				
				FROM #DB_ZLEC#.prace_zlecone 
				WHERE GUID_Pracownika = ''#_Param_C#'' AND GUID <> ''#_Param_D#'' and deleted = 0 
					AND datawyplaty >= ''#_Param_A#-01-01'' AND datawyplaty <= LAST_DAY(''#_Param_A#-#_Param_B#-01'')
				INTO @pl.zlec.skladki_SumaZ;
				;		
				'
				;			
				SET _SQLText = REPLACE(_SQLText, '#DB_ZLEC#', IF(_Param_E in ('0','1','5'), "ms", "sec"));
				SET _SQLText = REPLACE(_SQLText, '#_Param_A#', _Param_A);
				SET _SQLText = REPLACE(_SQLText, '#_Param_B#', _Param_B);	
				SET _SQLText = REPLACE(_SQLText, '#_Param_C#', _Param_C);
				SET _SQLText = REPLACE(_SQLText, '#_Param_D#', _Param_D);	
				SET @_SQLText = _SQLText;
				CALL _ExecuteCmd(_SQLText, @Error);
				
				SET @pl.zlec.skladki_SumaP = 0.0;
				
				SET _SQLText = 
				'SELECT 
					IFNULL(SUM(PodstFemerytalny), 0) AS suma 				
				FROM #DB_ZLEC#.place
				WHERE GUID_Pracownika = ''#_Param_C#'' AND GUID <> ''#_Param_D#'' and deleted = 0 
					AND datawyplaty >= ''#_Param_A#-01-01'' AND datawyplaty <= LAST_DAY(''#_Param_A#-#_Param_B#-01'')
				INTO @pl.zlec.skladki_SumaP
				;		
				'
				;			
				SET _SQLText = REPLACE(_SQLText, '#DB_ZLEC#', IF(_Param_E in ('0','1','5'), "ms", "sec"));
				SET _SQLText = REPLACE(_SQLText, '#_Param_A#', _Param_A);
				SET _SQLText = REPLACE(_SQLText, '#_Param_B#', _Param_B);	
				SET _SQLText = REPLACE(_SQLText, '#_Param_C#', _Param_C);
				SET _SQLText = REPLACE(_SQLText, '#_Param_D#', _Param_D);	
				SET @_SQLText = _SQLText;
				CALL _ExecuteCmd(_SQLText, @Error);
							
				IF @pl.zlec.skladki_SumaP + @pl.zlec.skladki_SumaZ + @pl.zlec.skladki_Podstawa > @MaxPodstUbezpEm  THEN
					SET @pl.zlec.skladki_PodstE = @MaxPodstUbezpEm - (@pl.zlec.skladki_SumaP + @pl.zlec.skladki_SumaZ);
				ELSE
					SET @pl.zlec.skladki_PodstE = @pl.zlec.skladki_Podstawa;
				END IF; 
				
				SET @pl.zlec.skladki_PodstR = IF(@pl.zlec.skladki_Dekl > 0, @pl.zlec.skladki_Podstawa, @pl.zlec.skladki_PodstE);
				
				SET @pl.zlec.skladki_PodstW = _Rnd(@pl.zlec.skladki_Podstawa, 2);
				SET @pl.zlec.skladki_PodstC = _Rnd(@pl.zlec.skladki_Podstawa, 2);
				SET @pl.zlec.skladki_PodstF = _Rnd(@pl.zlec.skladki_Podstawa, 2);
			
				SET @pl.zlec.skladki_SumaPodstCW = 0;
				SELECT 
					(select ifnull(sum(z.podstfchorobowy), 0) from prace_zlecone z 
					where z.guid <> _Param_D and month(z.datawyplaty) = _Param_B and z.rok = _Param_A and z.deleted = 0 and z.guid_pracownika = _Param_C 
					) + 
					(select ifnull(sum(p.podstfchorobowy), 0) from place p 
					where p.rok = _Param_A and month(p.datawyplaty) = _Param_B and p.deleted = 0 and p.guid_pracownika = _Param_C
					) INTO @pl.zlec.skladki_SumaPodstCW; 
				
				SET @pl.zlec.skladki_KwotaPoprz = 0;
				select ifnull(KwotaDo3procZaktualnegoMsca, 0) from Pracownicy where GUID = _Param_C INTO @pl.zlec.skladki_KwotaPoprz;  -- bylo: KwotaZpoprzZaklDoSkl3proc
			
				CALL _IReg_Get('Place2003\\Progi_podatkowe_stawki_ZUS', 'Skladka_na_FP', _Param_A, 'FLOAT', @Zlec_Skladka_na_FP, 0);   -- Max_podstawa_ubezp_emeryt 0
			
				-- glowny update  (emeryt i rentowe naliczamy tylko gdy nie przekroczono max. podstawy ubezpieczenia)   SumaSklEmerytZB
				SET _SQLText =  
				'UPDATE #DB_ZLEC#.prace_zlecone Z
					SET
				
				Z.PodstUbSpolNarastAktualna = IF(NaliczacZus, @pl.zlec.skladki_SumaP + @pl.zlec.skladki_SumaZ, 0),
				Z.PodstFemerytalny 			= IF(@pl.zlec.skladki_SumaP + @pl.zlec.skladki_SumaZ < @MaxPodstUbezpEm, @pl.zlec.skladki_PodstE, 0),
				Z.PodstFrentowy    			= IF(@pl.zlec.skladki_SumaP + @pl.zlec.skladki_SumaZ < @MaxPodstUbezpEm, @pl.zlec.skladki_PodstR, 0)
				
				WHERE Z.GUID = 				''#_Param_D#''
				;'	;
				
				/*
				Z.SklFemerytalnyZleceniob   = IF(@pl.zlec.skladki_SumaP + @pl.zlec.skladki_SumaZ < @MaxPodstUbezpEm, 
	k			  ((select SUMPodstFemerytalny from tt_skladki_place_do_zlec) + (select SumaPodstEmeryt from tt_skladki_zlec_do_zlec) + @pl.zlec.skladki_PodstE) *
				  Z.ProcFemerytalnyZleceniob/100 - ((select SUMSklFemerytalnyPracow from tt_skladki_place_do_zlec) +  (select SumaSklEmerytZB from tt_skladki_zlec_do_zlec)), 
				  0),
				Z.SklFemerytalnyZleceniod	= IF(@pl.zlec.skladki_SumaP + @pl.zlec.skladki_SumaZ < @MaxPodstUbezpEm, ((select SUMPodstFemerytalny from tt_skladki_place_do_zlec) + (select SumaPodstEmeryt from tt_skladki_zlec_do_zlec) + @pl.zlec.skladki_PodstE) *
				  Z.ProcFemerytalnyZleceniod/100 - ((select SUMSklFemerytalnyPracod from tt_skladki_place_do_zlec) +  (select SumaSklEmerytZD from tt_skladki_zlec_do_zlec)), 0),
				Z.SklFrentowyZleceniob   	= IF(@pl.zlec.skladki_SumaP + @pl.zlec.skladki_SumaZ < @MaxPodstUbezpEm, ((select SUMPodstFrentowy from tt_skladki_place_do_zlec) + (select SumaPodstRent from tt_skladki_zlec_do_zlec) + @pl.zlec.skladki_PodstR) *
				  Z.ProcFrentowyZleceniob/100 - ((select SUMSklFrentowyPracow from tt_skladki_place_do_zlec) +  (select SumaSklRentZB from tt_skladki_zlec_do_zlec)), 
				  0),
				Z.SklFrentowyZleceniod   	= IF(@pl.zlec.skladki_SumaP + @pl.zlec.skladki_SumaZ < @MaxPodstUbezpEm, ((select SUMPodstFrentowy from tt_skladki_place_do_zlec) + (select SumaPodstRent from tt_skladki_zlec_do_zlec) + @pl.zlec.skladki_PodstR) *
				  Z.ProcFrentowyZleceniod/100 - ((select SUMSklFrentowyPracod from tt_skladki_place_do_zlec) +  (select SumaSklRentZD from tt_skladki_zlec_do_zlec)), 
				  0),
				Z.PodstFwypadkowy           = IF(Z.PodlUbezpWypadk, @pl.zlec.skladki_PodstW, 0),   
				Z.SklFwypadkowyZleceniod	= IF(Z.PodlUbezpWypadk, ((select SUMPodstFwypadkowy from tt_skladki_place_do_zlec) + (select SumaPodstWypadk from tt_skladki_zlec_do_zlec) + @pl.zlec.skladki_PodstW) *
				  Z.ProcFwypadkowyZleceniod/100 - ((select SUMSklFwypadkowyPracod from tt_skladki_place_do_zlec) + (select SumaSklWypadkZD from tt_skladki_zlec_do_zlec)), 0), 
				Z.PodstFchorobowy           = IF(Z.PodlUbezpChorob, @pl.zlec.skladki_PodstC, 0),   
				Z.SklFchorobowyZleceniob	= IF(Z.PodlUbezpChorob, ((select SUMPodstFchorobowy from tt_skladki_place_do_zlec) + (select SumaPodstChorob from tt_skladki_zlec_do_zlec) + @pl.zlec.skladki_PodstC) *
				  Z.ProcFchorobowyZleceniob/100 - ((select SUMSklFchorobowyPracow from tt_skladki_place_do_zlec) + (select SumaSklChorobZB from tt_skladki_zlec_do_zlec)), 0), 
				Z.PodstFpFGSP				= IF(Z.NaliczFGSP OR Z.NaliczFP, @pl.zlec.skladki_PodstF, 0),
				Z.SklFundPracy		        = IF(Z.NaliczFP AND (Z.ZaZlecenie + @pl.zlec.skladki_SumaPodstCW + @pl.zlec.skladki_KwotaPoprz > @Zlec_Skladka_na_FP), _Rnd(@pl.zlec.skladki_PodstF * ProcFPracy/100, 2), 0),
				Z.SklFGSP				    = IF(Z.NaliczFGSP, _Rnd(@pl.zlec.skladki_PodstF * ProcFGSP/100, 2), 0)
				WHERE Z.GUID = 				''#_Param_D#''
				;
				'
				;*/
			
				-- Z.PodstE_R					= IF(NaliczacZus, ZaZlecenie, 0),
				-- Z.PodstC_W					= IF(NaliczacZus, ZaZlecenie, 0),
				
				-- FieldByName('PodstUbSpolNarastAktualna').AsCurrency := aC; =>  PodstUbSpolNarastAktualna = _SumaP + _SumaZ
				
				SET _SQLText = REPLACE(_SQLText, '#DB_ZLEC#', IF(_Param_E in ('0','1','5'), "ms", "sec"));
				SET _SQLText = REPLACE(_SQLText, '#_Param_D#', _Param_D);
				SET @_SQLText = _SQLText;
				
				-- set @szambo = @_SQLText;
				
				CALL _ExecuteCmd(_SQLText, @Error);
				
				SET _SQLText =  
				/*
				'UPDATE #DB_ZLEC#.prace_zlecone Z
					SET						
				Z.SklFemerytalnyZleceniob   = IF(@pl.zlec.skladki_SumaP + @pl.zlec.skladki_SumaZ < @MaxPodstUbezpEm, 
				  ((select SUMPodstFemerytalny from tt_skladki_place_do_zlec) + (select SumaPodstEmeryt from tt_skladki_zlec_do_zlec) + @pl.zlec.skladki_PodstE) *
				  Z.ProcFemerytalnyZleceniob/100 - ((select SUMSklFemerytalnyPracow from tt_skladki_place_do_zlec) +  (select SumaSklEmerytZB from tt_skladki_zlec_do_zlec)), 
				  0),
				Z.SklFemerytalnyZleceniod	= IF(@pl.zlec.skladki_SumaP + @pl.zlec.skladki_SumaZ < @MaxPodstUbezpEm, ((select SUMPodstFemerytalny from tt_skladki_place_do_zlec) + (select SumaPodstEmeryt from tt_skladki_zlec_do_zlec) + @pl.zlec.skladki_PodstE) *
				  Z.ProcFemerytalnyZleceniod/100 - ((select SUMSklFemerytalnyPracod from tt_skladki_place_do_zlec) +  (select SumaSklEmerytZD from tt_skladki_zlec_do_zlec)), 0),
				Z.SklFrentowyZleceniob   	= IF(@pl.zlec.skladki_SumaP + @pl.zlec.skladki_SumaZ < @MaxPodstUbezpEm, ((select SUMPodstFrentowy from tt_skladki_place_do_zlec) + (select SumaPodstRent from tt_skladki_zlec_do_zlec) + @pl.zlec.skladki_PodstR) *
				  Z.ProcFrentowyZleceniob/100 - ((select SUMSklFrentowyPracow from tt_skladki_place_do_zlec) +  (select SumaSklRentZB from tt_skladki_zlec_do_zlec)), 
				  0),
				Z.SklFrentowyZleceniod   	= IF(@pl.zlec.skladki_SumaP + @pl.zlec.skladki_SumaZ < @MaxPodstUbezpEm, ((select SUMPodstFrentowy from tt_skladki_place_do_zlec) + (select SumaPodstRent from tt_skladki_zlec_do_zlec) + @pl.zlec.skladki_PodstR) *
				  Z.ProcFrentowyZleceniod/100 - ((select SUMSklFrentowyPracod from tt_skladki_place_do_zlec) +  (select SumaSklRentZD from tt_skladki_zlec_do_zlec)), 
				  0),
				Z.PodstFwypadkowy           = IF(Z.PodlUbezpWypadk, @pl.zlec.skladki_PodstW, 0),   
				Z.SklFwypadkowyZleceniod	= IF(Z.PodlUbezpWypadk, ((select SUMPodstFwypadkowy from tt_skladki_place_do_zlec) + (select SumaPodstWypadk from tt_skladki_zlec_do_zlec) + @pl.zlec.skladki_PodstW) *
				  Z.ProcFwypadkowyZleceniod/100 - ((select SUMSklFwypadkowyPracod from tt_skladki_place_do_zlec) + (select SumaSklWypadkZD from tt_skladki_zlec_do_zlec)), 0), 
				Z.PodstFchorobowy           = IF(Z.PodlUbezpChorob, @pl.zlec.skladki_PodstC, 0),   
				Z.SklFchorobowyZleceniob	= IF(Z.PodlUbezpChorob, ((select SUMPodstFchorobowy from tt_skladki_place_do_zlec) + (select SumaPodstChorob from tt_skladki_zlec_do_zlec) + @pl.zlec.skladki_PodstC) *
				  Z.ProcFchorobowyZleceniob/100 - ((select SUMSklFchorobowyPracow from tt_skladki_place_do_zlec) + (select SumaSklChorobZB from tt_skladki_zlec_do_zlec)), 0), 
				Z.PodstFpFGSP				= IF(Z.NaliczFGSP OR Z.NaliczFP, @pl.zlec.skladki_PodstF, 0),
				Z.SklFundPracy		        = IF(Z.NaliczFP AND (Z.ZaZlecenie + @pl.zlec.skladki_SumaPodstCW + @pl.zlec.skladki_KwotaPoprz > @Zlec_Skladka_na_FP), _Rnd(@pl.zlec.skladki_PodstF * ProcFPracy/100, 2), 0),
				Z.SklFGSP				    = IF(Z.NaliczFGSP, _Rnd(@pl.zlec.skladki_PodstF * ProcFGSP/100, 2), 0)
				WHERE Z.GUID = 				''#_Param_D#''
				;'; */
				
				'UPDATE #DB_ZLEC#.prace_zlecone Z, tt_skladki_place_do_zlec tp, tt_skladki_zlec_do_zlec tz
					SET						
				Z.SklFemerytalnyZleceniob   = _Rnd(IF(@pl.zlec.skladki_SumaP + @pl.zlec.skladki_SumaZ < @MaxPodstUbezpEm, 
				  (tp.SUMPodstFemerytalny  + tz.SumaPodstEmeryt + @pl.zlec.skladki_PodstE) *
				  Z.ProcFemerytalnyZleceniob/100 - (select tp.SUMSklFemerytalnyPracow  + tz.SumaSklEmerytZB), 	  0), 2),
				Z.SklFemerytalnyZleceniod	= _Rnd(IF(@pl.zlec.skladki_SumaP + @pl.zlec.skladki_SumaZ < @MaxPodstUbezpEm, 
				 (tp.SUMPodstFemerytalny + tz.SumaPodstEmeryt + @pl.zlec.skladki_PodstE) *
				  Z.ProcFemerytalnyZleceniod/100 - (tp.SUMSklFemerytalnyPracod +  tz.SumaSklEmerytZD), 0), 2),
				Z.SklFrentowyZleceniob   	= _Rnd(IF(@pl.zlec.skladki_SumaP + @pl.zlec.skladki_SumaZ < @MaxPodstUbezpEm, 
				  (tp.SUMPodstFrentowy + tz.SumaPodstRent + @pl.zlec.skladki_PodstR) *
				  Z.ProcFrentowyZleceniob/100 - (tp.SUMSklFrentowyPracow + tz.SumaSklRentZB),	  0), 2),
				Z.SklFrentowyZleceniod   	= _Rnd(IF(@pl.zlec.skladki_SumaP + @pl.zlec.skladki_SumaZ < @MaxPodstUbezpEm, 
				  (tp.SUMPodstFrentowy + tz.SumaPodstRent + @pl.zlec.skladki_PodstR) *
				  Z.ProcFrentowyZleceniod/100 - (tp.SUMSklFrentowyPracod +  tz.SumaSklRentZD), 	  0), 2),
				Z.PodstFwypadkowy           = _Rnd(IF(Z.PodlUbezpWypadk, @pl.zlec.skladki_PodstW, 0), 2),   
				Z.SklFwypadkowyZleceniod	= _Rnd(IF(Z.PodlUbezpWypadk, (tp.SUMPodstFwypadkowy + tz.SumaPodstWypadk + @pl.zlec.skladki_PodstW) *
				  Z.ProcFwypadkowyZleceniod/100 - (tp.SUMSklFwypadkowyPracod + tz.SumaSklWypadkZD), 0), 2), 
				Z.PodstFchorobowy           = _Rnd(IF(Z.PodlUbezpChorob, @pl.zlec.skladki_PodstC, 0), 2),   
				Z.SklFchorobowyZleceniob	= _Rnd(IF(Z.PodlUbezpChorob, (tp.SUMPodstFchorobowy + tz.SumaPodstChorob + @pl.zlec.skladki_PodstC) *
				  Z.ProcFchorobowyZleceniob/100 - (tp.SUMSklFchorobowyPracow + tz.SumaSklChorobZB), 0), 2), 
				Z.PodstFpFGSP				= _Rnd(IF(Z.NaliczFGSP OR Z.NaliczFP, @pl.zlec.skladki_PodstF, 0), 2),
				Z.SklFundPracy		        = _Rnd(IF(Z.NaliczFP AND (Z.ZaZlecenie + @pl.zlec.skladki_SumaPodstCW + @pl.zlec.skladki_KwotaPoprz > @Zlec_Skladka_na_FP), 
				  _Rnd(@pl.zlec.skladki_PodstF * ProcFPracy/100, 2), 0), 2),
				Z.SklFGSP				    = _Rnd(IF(Z.NaliczFGSP, _Rnd(@pl.zlec.skladki_PodstF * ProcFGSP/100, 2), 0), 2)
				WHERE Z.GUID = 				''#_Param_D#''
				;';
				
				SET _SQLText = REPLACE(_SQLText, '#DB_ZLEC#', IF(_Param_E in ('0','1','5'), "ms", "sec"));
				SET _SQLText = REPLACE(_SQLText, '#_Param_D#', _Param_D);
				SET @_SQLText = _SQLText;
				
				 -- set @szambo2 = @_SQLText;
				
				CALL _ExecuteCmd(_SQLText, @Error);
				
				-- set @szambo2error = @Error;
				
			END IF;		-- IF _NaliczacZUS THEN
			
			IF @pl.zlec.skladki_PodlUbezpZdrowot THEN   -- robimy jako oddzielne zapytanie, bo korzystamy tu z wyliczonych skladek na zapisie
			
				-- SELECT Z.ZaZlecenie - (Z.SklFemerytalnyZleceniob + Z.SklFrentowyZleceniob + Z.SklFchorobowyZleceniob) FROM 	
				-- PodstKasaChorych ( = aPodstZdrowot) := ZaZlecenie - (SklFemerytalnyZleceniob + SklFrentowyZleceniob + SklFchorobowyZleceniob)
				-- oddzielnie skladka pobrana, odzielnie skladka odliczona - ta sama podstawa, inny procent
				SET _SQLText =  
				'UPDATE #DB_ZLEC#.prace_zlecone Z, tt_skladki_place_do_zlec tp, tt_skladki_zlec_do_zlec tz
					SET
				Z.PodstKasaChorych 				= Z.ZaZlecenie - (Z.SklFemerytalnyZleceniob + Z.SklFrentowyZleceniob + Z.SklFchorobowyZleceniob),
				Z.SklKasaChorychZleceniobPobr   = _Rnd( ((Z.ZaZlecenie - (Z.SklFemerytalnyZleceniob + Z.SklFrentowyZleceniob + Z.SklFchorobowyZleceniob))+ 
				  (tz.SumaPodstKCh + tp.SUMPodstKasaChorych)) * ProcKasaChorychZleceniobPobr/100 -
				  ( tp.SUMSklKasaChorychPracowPobr + tz.SumaSklKChPobrZB ), 2), 
				Z.SklKasaChorychZleceniobOdlicz = _Rnd( ((Z.ZaZlecenie - (Z.SklFemerytalnyZleceniob + Z.SklFrentowyZleceniob + Z.SklFchorobowyZleceniob))+ 
				  (tz.SumaPodstKCh + tp.SUMPodstKasaChorych)) * ProcKasaChorychZleceniobOdlicz/100 -
				  ( tp.SUMSklKasaChorOdlicz + tz.SumaSklKChOdlZB), 2) 			  
				WHERE Z.GUID = 				''#_Param_D#''  
				;
				'
				;
							
				SET _SQLText = REPLACE(_SQLText, '#DB_ZLEC#', IF(_Param_E in ('0','1','5'), "ms", "sec"));
				SET _SQLText = REPLACE(_SQLText, '#_Param_D#', _Param_D);
				SET @_SQLText = _SQLText;
				
				CALL _ExecuteCmd(_SQLText, @Error);
				
				set @db.zdr_sql = @_SQLText;
				set @db.zdr_err = @Error;
									
			END IF;		-- IF @pl.zlec.skladki_PodlUbezpZdrowot THEN
			
			--  zapamietujemy oryg.(nominalna) wartosc skladki oraz wyliczamy skladki lacznie (bez zdrowotnego)
			SET _SQLText =  
				'UPDATE #DB_ZLEC#.prace_zlecone Z
				 SET
					Z.SklKChZleceniobOdliczNomin = Z.SklKasaChorychZleceniobOdlicz,
					Z.SklKChZleceniobPobrNomin   = Z.SklKasaChorychZleceniobPobr,
					Z.RazemSkladkiZleceniobiorcy = Z.SklFemerytalnyZleceniob + Z.SklFrentowyZleceniob + Z.SklFchorobowyZleceniob,
					Z.RazemSkladkiZleceniodawcy  = Z.SklFemerytalnyZleceniod + Z.SklFrentowyZleceniod + Z.SklFwypadkowyZleceniod
				 WHERE Z.GUID = 	''#_Param_D#''  
				;
				'
				;		
			
			SET _SQLText = REPLACE(_SQLText, '#DB_ZLEC#', IF(_Param_E in ('0','1','5'), "ms", "sec"));
			SET _SQLText = REPLACE(_SQLText, '#_Param_D#', _Param_D);
			SET @_SQLText = _SQLText;
			CALL _ExecuteCmd(_SQLText, @Error);
			
			DROP TEMPORARY TABLE IF EXISTS `tt_skladki_place_do_zlec`;
			DROP TEMPORARY TABLE IF EXISTS `tt_skladki_zlec_do_zlec`;
		END IF; -- IF (@pl.zlec.skladki_NaliczacZUS OR @pl.zlec.skladki_PodlUbezpZdrowot) THEN
    END;	
	
	END IF;  --	IF _MODE = 'pl.nalicz.z.kart.obiektow.one.zlec.skladki'
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'pl.przepisz.dane.pracownika.one.zlec'
		Przepisanie danych z karty pracownika do zlecenia  (dawne DBPlacesPlaceZlec.PrzepiszDanePrac)  <- wersja dla Security (obsluga 2 baz)
		Parametry
		_Param_A	Rok
		_Param_B	Miesiac
		_Param_C	GUID pracownika
		_Param_D    GUID zlecenia
		
		CALL pl_gratyfikacje_tools('pl.przepisz.dane.pracownika.one.zlec', 'Prac1');
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'pl.przepisz.dane.pracownika.one.zlec' THEN
		
		SET @sel_zakres_DataOd = ifnull(concat(_Param_A, '-', _Param_B, '-01'), current_date);		
		SET @sel_zakres_DataDo = ifnull(last_day(concat(_Param_A, '-', _Param_B, '-01')), current_date);
		
		IF _Param_E in ('0','1', '5') THEN
			UPDATE ms.prace_zlecone g, ms.Pracownicy p, ms.pracownicy_ZUS z, osoby o
			SET 
				g.nazwisko         = o.nazwisko,
				g.KodTytUbezp      = p.KodUbezpUmZlecenie,
				g.ProcentPodatku   = p.ProcPodOdZlecen,
				g.AnalitykaFK      = ifnull(p.AnalitykaFK, ''),
				g.Kategoria_Idn    = p.KategoriaPracownicza,
				g.naliczFGSP	   = p.naliczFGSP,
				g.naliczFP		   = p.naliczFP,	
				g.US_GUID		   = p.KluczUrzeduSkarbowego,
				g.calosc_przelewem = p.CzyCosPrzelewem,
				-- nowe (w sumie to nie ma znaczenia, bo ponizej biezemy ostatnia umowe zlecenie, niekoniecznie aktywną, i z niej przepisujemy te ustawienia)
				g.NaliczacZus      = IF(z.PodlEmerytalneUbzp OR z.Dobr_UbzpEmeryt OR z.PodlRentoweUbzp OR z.Dobr_UbzpRentowe, 1, 0),
				g.PodlUbezpChorob  = IF((z.PodlEmerytalneUbzp OR z.Dobr_UbzpEmeryt OR z.PodlRentoweUbzp OR z.Dobr_UbzpRentowe) AND z.PodlChorobUbzp, 1, 0),
				g.PodlUbezpWypadk  = IF((z.PodlEmerytalneUbzp OR z.Dobr_UbzpEmeryt OR z.PodlRentoweUbzp OR z.Dobr_UbzpRentowe) AND z.PodlWypadkUbzp, 1, 0), 
				g.PodlUbezpZdrowot = IF((!ISNULL(z.DataPowstObowUbezpZdrow) OR z.Dobr_UbzpZdrowotne=1) AND z.ZgloszZUA_ZZA=1 AND ((z.KodKasyChorych <> '''') AND !ISNULL(z.KodKasyChorych)), 1, 0),
				--
				g.KluczWzoruPK     = if((SELECT ValueB FROM IReg WHERE idkey = 'Inicjacja_wzoru_PK_zlecenia')=1, p.KluczWzoruPK_zlec, '') 			
				-- {$IFDEF KADRY_LISTA_UMOW_ZLECEN}  wl. dla Security - przepisz z akt. um.zlec
			WHERE g.GUID = _Param_D AND p.GUID = g.GUID_pracownika AND p.GUID = z.GUID_Pracownika AND o.GUID = p.GUID;
			
			-- {$IFDEF KADRY_LISTA_UMOW_ZLECEN}
			
			
			
			DROP TEMPORARY TABLE IF EXISTS `sel_umowa_zlecenie`;  -- TEMPORARY
			
			CREATE TEMPORARY TABLE `sel_umowa_zlecenie`  AS  -- TEMPORARY
			SELECT * FROM ms.umowa_zlecenie  
			WHERE GUID_Pracownika = _Param_C  AND DataZawarcia <= @sel_zakres_DataDo AND DataDo >=  @sel_zakres_DataOd order by DataDo desc limit 1; -- AND CzyUmowaAkt order by DataDo desc limit 1;
			-- WHERE GUID_Pracownika = _Param_C AND CzyUmowaAkt order by DataDo desc limit 1;
			
			SET _I	 = 0;
			SELECT count(*) FROM sel_umowa_zlecenie INTO _I;
			
			set @_I = _I;
			
			IF _I = 1 THEN 
			
				UPDATE ms.prace_zlecone g, sel_umowa_zlecenie t
				SET 
				g.MZ_Idn = t.MZ_Idn,
				g.RodzajRyczaltu = t.RodzajRyczaltu,
				g.NrZlecenia = t.NrZlecenia,
				g.PracaStr = t.PracaStr,
				g.DataZawarcia = t.DataZawarcia,
				g.NaliczacZus = t.NaliczacZus,
				g.PodlUbezpChorob = t.PodlUbezpChorob,
				g.PodlUbezpWypadk = t.PodlUbezpWypadk,
				g.PodlUbezpZdrowot = t.PodlUbezpZdrowot
				-- ZaZlecenie = ZaZlecenie  -- pozniej nadpisujemy kwota wyliczona
			
			/* FieldByName('MZ_Idn').AsInteger := aUmOkrDS.FieldByName('MZ_Idn').AsInteger;
				FieldByName('RodzajRyczaltu').AsInteger := aUmOkrDS.FieldByName('RodzajRyczaltu').AsInteger;
				FieldByName('NrZlecenia').AsString := aUmOkrDS.FieldByName('NrZlecenia').AsString;
				FieldByName('PracaStr').AsString := aUmOkrDS.FieldByName('PracaStr').AsString;
				FieldByName('DataZawarcia').AsDateTime := aUmOkrDS.FieldByName('DataZawarcia').AsDateTime;
				FieldByName('NaliczacZus').AsInteger :=
					aUmOkrDS.FieldByName('NaliczacZus').AsInteger;
				FieldByName('PodlUbezpChorob').AsInteger := aUmOkrDS.FieldByName('PodlUbezpChorob').AsInteger;
				FieldByName('PodlUbezpWypadk').AsInteger :=  aUmOkrDS.FieldByName('PodlUbezpWypadk').AsInteger;
				FieldByName('PodlUbezpZdrowot').AsInteger :=  aUmOkrDS.FieldByName('PodlUbezpZdrowot').AsInteger;
				aZaZlecenie := aUmOkrDS.FieldByName('ZaZlecenie').AsCurrency; - to pozniej nadpisujemy kwota wyliczona */
				WHERE  g.GUID_pracownika = _Param_C and t.GUID_pracownika = g.GUID_pracownika;				
			ELSE	
				UPDATE ms.prace_zlecone g
				SET g.NrZlecenia = '###########',
					g.DataOd     = '_Param_A-_Param_B-01'
				WHERE
				  g.guid = _Param_D;
			END IF;
		ELSE  -- _Param_E = '2,3,4' 	
			UPDATE sec.prace_zlecone g, Pracownicy p, pracownicy_ZUS z, osoby o
			SET 
				g.nazwisko         = o.nazwisko,
				g.KodTytUbezp      = p.KodUbezpUmZlecenie,
				g.ProcentPodatku   = p.ProcPodOdZlecen,
				g.AnalitykaFK      = ifnull(p.AnalitykaFK, ''),
				g.Kategoria_Idn    = p.KategoriaPracownicza,
				g.naliczFGSP	   = p.naliczFGSP,
				g.naliczFP		   = p.naliczFP,	
				g.US_GUID		   = p.KluczUrzeduSkarbowego,
				g.calosc_przelewem = p.CzyCosPrzelewem,
				-- nowe
				g.NaliczacZus      = IF(z.PodlEmerytalneUbzp OR z.Dobr_UbzpEmeryt OR z.PodlRentoweUbzp OR z.Dobr_UbzpRentowe, 1, 0),
				g.PodlUbezpChorob  = IF((z.PodlEmerytalneUbzp OR z.Dobr_UbzpEmeryt OR z.PodlRentoweUbzp OR z.Dobr_UbzpRentowe) AND z.PodlChorobUbzp, 1, 0),
				g.PodlUbezpWypadk  = IF((z.PodlEmerytalneUbzp OR z.Dobr_UbzpEmeryt OR z.PodlRentoweUbzp OR z.Dobr_UbzpRentowe) AND z.PodlWypadkUbzp, 1, 0), 
				g.PodlUbezpZdrowot = IF((!ISNULL(z.DataPowstObowUbezpZdrow) OR z.Dobr_UbzpZdrowotne=1) AND z.ZgloszZUA_ZZA=1 AND ((z.KodKasyChorych <> '''') AND !ISNULL(z.KodKasyChorych)), 1, 0),
				--
				g.KluczWzoruPK     = if((SELECT ValueB FROM IReg WHERE idkey = 'Inicjacja_wzoru_PK_zlecenia')=1, p.KluczWzoruPK_zlec, '') 			
				-- {$IFDEF KADRY_LISTA_UMOW_ZLECEN}  wl. dla Security - przepisz z akt. um.zlec
			WHERE g.GUID = _Param_D AND p.GUID = g.GUID_pracownika AND p.GUID = z.GUID_Pracownika AND o.GUID = p.GUID;
			
			-- {$IFDEF KADRY_LISTA_UMOW_ZLECEN}
			DROP TEMPORARY TABLE IF EXISTS `sel_umowa_zlecenie`;  -- TEMPORARY
			
			CREATE TEMPORARY TABLE `sel_umowa_zlecenie`  AS  -- TEMPORARY sel_umowa_zlecenie
			SELECT * FROM sec.umowa_zlecenie  
			WHERE GUID_Pracownika = _Param_C  AND DataZawarcia <= @sel_zakres_DataDo AND DataDo >=  @sel_zakres_DataOd order by DataDo desc limit 1; -- AND CzyUmowaAkt order by DataDo desc limit 1;
			-- WHERE GUID_Pracownika = _Param_C AND CzyUmowaAkt order by DataDo desc limit 1;
	
		    SET _I = 0;
			SELECT count(*) FROM sel_umowa_zlecenie INTO _I;
			
			IF _I = 1 THEN 
			
				UPDATE sec.prace_zlecone g, sel_umowa_zlecenie t
				SET 
				g.MZ_Idn = t.MZ_Idn,
				g.RodzajRyczaltu = t.RodzajRyczaltu,
				g.NrZlecenia = t.NrZlecenia,
				g.PracaStr = t.PracaStr,
				g.DataZawarcia = t.DataZawarcia,
				g.NaliczacZus = t.NaliczacZus,
				g.PodlUbezpChorob = t.PodlUbezpChorob,
				g.PodlUbezpWypadk = t.PodlUbezpWypadk,
				g.PodlUbezpZdrowot = t.PodlUbezpZdrowot		
				WHERE  g.GUID_pracownika = _Param_C and t.GUID_pracownika = g.GUID_pracownika;				
			ELSE	
				UPDATE sec.prace_zlecone g
				SET g.NrZlecenia = '###########',
					g.DataOd     = '_Param_A-_Param_B-01'
				WHERE
				  g.guid = _Param_D;
			END IF;
		END IF; -- _Param_E = '2,3,4'
		
		-- else
		/* 'IF(Z.PodlEmerytalneUbzp OR Z.Dobr_UbzpEmeryt OR Z.PodlRentoweUbzp OR Z.Dobr_UbzpRentowe, 1, 0) AS ZlecNaliczacZus, '+
			'IF((Z.PodlEmerytalneUbzp OR Z.Dobr_UbzpEmeryt OR Z.PodlRentoweUbzp OR Z.Dobr_UbzpRentowe) AND Z.PodlChorobUbzp, 1, 0) AS PodlChorobUbzp,  '+
		 'IF((Z.PodlEmerytalneUbzp OR Z.Dobr_UbzpEmeryt OR Z.PodlRentoweUbzp OR Z.Dobr_UbzpRentowe) AND Z.PodlWypadkUbzp, 1, 0) AS PodlWypadkUbzp, '+
		 'IF((!ISNULL(Z.DataPowstObowUbezpZdrow) OR Z.Dobr_UbzpZdrowotne=1) AND Z.ZgloszZUA_ZZA=1 AND ((Z.KodKasyChorych <> '''') AND !ISNULL(Z.KodKasyChorych)), 1, 0) AS PodlUbezpZdrowot '+
		
		FieldByName('NaliczacZus').AsInteger :=
          aDS.FieldByName('ZlecNaliczacZus').AsInteger;
        FieldByName('PodlUbezpChorob').AsInteger := aDS.FieldByName('PodlChorobUbzp').AsInteger;
        FieldByName('PodlUbezpWypadk').AsInteger :=  aDS.FieldByName('PodlWypadkUbzp').AsInteger;
        FieldByName('PodlUbezpZdrowot').AsInteger :=  aDS.FieldByName('PodlUbezpZdrowot').AsInteger;
		*/
		
		-- {$ENDIF KADRY_LISTA_UMOW_ZLECEN}
		
		/* if RegistryInt.GetRegIntValueBoolean('Inicjacja_wzoru_PK_zlecenia', True, 'Place2003\Parametry_kartoteki_zlecen', 1) then
        FieldByName('KluczWzoruPK').AsInteger :=
          aDS.FieldByName('KluczWzoruPK_zlec').AsInteger; */
		
	END IF;	--	IF _MODE = 'pl.przepisz.dane.pracownika.one.zlec' 
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'pl.nalicz.z.kart.obiektow.one.zlec'
		Naliczanie z kart obiektów (Security) jednego zlecenia
		Parametry
		_Param_A	Rok
		_Param_B	Miesiac
		_Param_C	GUID pracownika
		_Param_D	tryb naliczania: 0 - wg kwoty z umowy o pracę, 1 - wg stawki godzinowej
		_Param_E	rozliczenie wg: 0)Sec–etat+MS–zlec; 1) Sec–zlec„201”+MS–zlec 2)MS–zlec„201”+Sec–zlec
		
		CALL pl_gratyfikacje_tools('pl.nalicz.z.kart.obiektow.one.zlec', '2011', '10', 'Prac1', '0', '0');
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	-- 0 Płaca zasadnicza
    -- 1 Stawka godz.
	IF _MODE = 'pl.nalicz.z.kart.obiektow.one.zlec' THEN
		    SET _ZaZlecenie = 0;
			IF  _Param_E in ('0', '3')   THEN  -- bylo: _Param_E = '0'   // , '4', '5'
				IF _Param_D = '1' THEN   --  Security: Zlecenie - nadwyżka płacy zas.      //       Wg stawki godz.
				-- OPEN _c_zlec_kp;
				-- FETCH _c_zlec_kp INTO _Za_zlecenie;
				SELECT 
						SUM(
						(godziny_etat * stawka_etat) + (godziny_zlec * stawka_zlec) + 
						(godziny_chorob * if(stawka_zlec > 0.0000, stawka_zlec, stawka_etat) * 0.8) + 
						(godziny_wypocz * if(stawka_zlec > 0.0000, stawka_zlec, stawka_etat)) + 
						-- (godziny_chorob * stawka_Z * 0.8) + (godziny_wypocz * stawka_Z) + 
						extra_wynagr
						-- (godziny_etat * stawka_etat) + 
						-- (godziny_zlec * stawka_zlec) + 
						-- (godziny_chorob * stawka_etat * 0.8) + 
						-- (godziny_wypocz * stawka_etat) + 
						-- extra_wynagr
						) - MAX(PlacaZasadnicza)                          -- 0 - sec.etat, 3 - ms.etat -> i z takiej bazy brać pracownik.PlacaZasadnicza
					FROM `te_pl_wynagr_z_obiektow`
					WHERE GUID = _Param_C
					INTO _ZaZlecenie; -- @pl.gratyf.za_zlecenie;
				-- set @szambo = concat('zazlecenie =1 e=0: ', _ZaZlecenie);	
				END IF; -- _Param_D = '1'
			
				IF _Param_D = '0' THEN   -- Security:  Zlecenie - całość wynagrodz.      // Wg umowy o prace
					-- OPEN _c_zlec_sg;
					-- FETCH _c_zlec_sg INTO _Za_zlecenie;			  
					SELECT 
						SUM((godziny_zlec * stawka_zlec) + extra_wynagr)
					FROM `te_pl_wynagr_z_obiektow`
					WHERE GUID = _Param_C
					INTO _ZaZlecenie; -- @pl.gratyf.za_zlecenie;  -- @;
				END IF; -- _Param_D = '0'				
			ELSE 
				IF _Param_E in ('1', '2', '4', '5') THEN -- _Param_E = '1,2' (odejmujemy @Kwota_201); 4,5 - cale rozliczenie w jednej bazie
					SELECT 
						SUM(godziny_zlec * stawka_zlec) + SUM(godziny_etat * stawka_etat) + 
						SUM(extra_wynagr) - IF(_Param_E in ('1', '2'), @Kwota_201, 0)
					FROM `te_pl_wynagr_z_obiektow`
					WHERE GUID = _Param_C
					INTO _ZaZlecenie; -- @pl.gratyf.za_zlecenie;  -- @;
				-- ELSE
				  -- IF _Param_E in ('4', '5') THEN
				
				END IF;
			
			END IF; -- _Param_E = '0' 
			-- set @szambo = concat('zazlecenie: ', _ZaZlecenie);
			-- IF @pl.gratyf.za_zlecenie > 0 THEN
			IF _ZaZlecenie > 0 THEN
			    SET  _ZaZlecenie = _Rnd(_ZaZlecenie, 2);
				
			   -- set @szambo = 'zazlecenie';
				SET @_ZlecGUID =  md5(concat(_Param_C, _Param_B, _Param_A));
			
				SET @DataOd = ifnull(concat(_Param_A,'-',_Param_B,'-01'), current_date);			
				SET @DataDo = ifnull(last_day(concat(_Param_A,'-',_Param_B,'-01')), current_date);
			
			IF _Param_E in ('0', '1', '5') THEN -- UWAGA WSZYSTKIE ZMIANY WPROWADZAC SYMETRYCZNIE DLA OBU IFOW 
				-- wstawienie do place_zlec i do place_skladniki
				REPLACE INTO ms.prace_zlecone 
				(GUID, GUID_pracownika,  miesiac, rok, DataOd, DataDo, NrZlecenia, ZaZlecenie, RodzajRyczaltu,  -- slon add DataOd
				  KosztyUzyskaniaWproc, ProcFemerytalnyZleceniob, ProcFrentowyZleceniob, ProcFchorobowyZleceniob,
				  ProcFwypadkowyZleceniob, ProcKasaChorychZleceniobPobr, ProcKasaChorychZleceniobOdlicz,
				  ProcFemerytalnyZleceniod, ProcFrentowyZleceniod, ProcFchorobowyZleceniod, ProcFwypadkowyZleceniod, -- ProcFwypadkowyZleceniod
				  ProcKasaChorychZleceniod, ProcFPracy, ProcFGSP, ZlecERP
				)   -- nazwisko,  @pl.gratyf.za_zlecenie
				VALUES(@_ZlecGUID, _Param_C, _Param_B, _Param_A, @DataOd, @DataDo, '', _ZaZlecenie, 7,   
				  (SELECT ValueN FROM IReg WHERE idkey = 'Procent_kosztow_um_zlec' AND rok = _Param_A),
				  (SELECT ValueN FROM IReg WHERE idkey = 'Proc_emeryt_zlecbiorcy' AND rok = _Param_A),
				  (SELECT ValueN FROM IReg WHERE idkey = 'Proc_rent_zlecbiorcy' AND rok = _Param_A),
				  (SELECT ValueN FROM IReg WHERE idkey = 'Proc_chorob_zlecbiorcy' AND rok = _Param_A),
				  (SELECT ValueN FROM IReg WHERE idkey = 'Proc_wypadk_zlecbiorcy' AND rok = _Param_A),
				  (SELECT ValueN FROM IReg WHERE idkey = 'Proc_zdr_pobrane_zlecbiorcy' AND rok = _Param_A),
				  (SELECT ValueN FROM IReg WHERE idkey = 'Proc_zdr_odliczone_zlecbiorcy' AND rok = _Param_A),
				  (SELECT ValueN FROM IReg WHERE idkey = 'Proc_emeryt_zlecdawcy' AND rok = _Param_A),
				  (SELECT ValueN FROM IReg WHERE idkey = 'Proc_rent_zlecdawcy' AND rok = _Param_A),
				  (SELECT ValueN FROM IReg WHERE idkey = 'Proc_chorob_zlecdawcy' AND rok = _Param_A),  -- , ProcFwypadkowyZleceniod = DBPlacesProc_wypadkowe.GetProcentWypadkowego(aDataWyplaty);
				  (SELECT ValueN FROM IReg WHERE idkey = 'Proc_wypadk_pracod' AND rok = _Param_A),
				  (SELECT ValueN FROM IReg WHERE idkey = 'Proc_zdr_pobrane_zlecdawcy' AND rok = _Param_A),
				  (SELECT ValueN FROM IReg WHERE idkey = 'ZUS_FP_zlecdawcy' AND rok = _Param_A),
				  (SELECT ValueN FROM IReg WHERE idkey = 'ZUS_FGSP_zlecdawcy' AND rok = _Param_A), 1
				);  -- 20, (SELECT nazwisko from osoby WHERE GUID = _Param_C),
				/* 
					KosztyUzyskaniaWproc           = Procent_kosztow_um_zlec  Place2003\Progi_podatkowe_stawki_ZUS
					Place2003\Parametry_kartoteki_zlecen:
					ProcFemerytalnyZleceniob       = Proc_emeryt_zlecbiorcy
					ProcFrentowyZleceniob          = Proc_rent_zlecbiorcy
					ProcFchorobowyZleceniob        = Proc_chorob_zlecbiorcy
					ProcFwypadkowyZleceniob        = Proc_wypadk_zlecbiorcy
					ProcKasaChorychZleceniobPobr   = Proc_zdr_pobrane_zlecbiorcy
					ProcKasaChorychZleceniobOdlicz = Proc_zdr_odliczone_zlecbiorcy
					ProcFemerytalnyZleceniod       = Proc_emeryt_zlecdawcy
					ProcFrentowyZleceniod          = Proc_rent_zlecdawcy
					ProcFchorobowyZleceniod        = Proc_chorob_zlecdawcy
					ProcFwypadkowyZleceniod        = DBPlacesProc_wypadkowe.GetProcentWypadkowego(aDataWyplaty);
					ProcKasaChorychZleceniod       = Proc_zdr_pobrane_zlecdawcy
					ProcFPracy					   = ZUS_FP_zlecdawcy
					ProcFGSP					   = ZUS_FGSP_zlecdawcy
			    */
				
				
				
				-- Z_1-Z_5(rodz.skl = 0) 
				REPLACE INTO ms.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_1')), 'Z_1', @_ZlecGUID, _ZaZlecenie, _ZaZlecenie , 0);  -- @pl.gratyf.za_zlecenie, @pl.gratyf.za_zlecenie
				set @jmam='z1';
				REPLACE INTO ms.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_2')), 'Z_2', @_ZlecGUID, 0, 0, 0);
				set @jmam='z2';
				REPLACE INTO ms.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_3')), 'Z_3', @_ZlecGUID, 0, 0, 0);
				set @jmam='z3';
				REPLACE INTO ms.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_4')), 'Z_4', @_ZlecGUID, 0, 0, 0);
				set @jmam='z4';
				REPLACE INTO ms.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_5')), 'Z_5', @_ZlecGUID, 0, 0, 0);
				set @jmam='z5';
				-- Z_ZUS_1 - 9 (rodz.skl = 6)  _ZLEC_ZUS
				REPLACE INTO ms.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_ZUS_1')), 'Z_ZUS_1', @_ZlecGUID, 0, 0, _ZLEC_ZUS);
			
				REPLACE INTO ms.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_ZUS_2')), 'Z_ZUS_2', @_ZlecGUID, 0, 0, _ZLEC_ZUS);
			
				REPLACE INTO ms.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_ZUS_3')), 'Z_ZUS_3', @_ZlecGUID, 0, 0, _ZLEC_ZUS);
			
				REPLACE INTO ms.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
				VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_ZUS_4')), 'Z_ZUS_4', @_ZlecGUID, 0, 0, _ZLEC_ZUS);
			
				REPLACE INTO ms.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_ZUS_5')), 'Z_ZUS_5', @_ZlecGUID, 0, 0, _ZLEC_ZUS);
			
				REPLACE INTO ms.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_ZUS_6')), 'Z_ZUS_6', @_ZlecGUID, 0, 0, _ZLEC_ZUS);
			
				REPLACE INTO ms.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_ZUS_7')), 'Z_ZUS_7', @_ZlecGUID, 0, 0, _ZLEC_ZUS);
			
				REPLACE INTO ms.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_ZUS_8')), 'Z_ZUS_8', @_ZlecGUID, 0, 0, _ZLEC_ZUS);
			
				REPLACE INTO ms.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_ZUS_9')), 'Z_ZUS_9', @_ZlecGUID, 0, 0, _ZLEC_ZUS);
				set @pl.gratyf.debug = 'zus9';
				
				/*
				-- skladka Hestia (potracenia)
				set _SklHestia = 0;
				select ifnull(SkladkaUbezp2, 0) as hestia from sec.Pracownicy where guid = _Param_C
				into _SklHestia;
				if _SklHestia > 0 then
				  REPLACE INTO sec.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					  VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Hestia')), 
					  (SELECT guid FROM sec.definicja_skladnika_placy WHERE nazwa='hestia' AND typ_gratyfikacji=1 AND deleted = 0 LIMIT 1), @_ZlecGUID, 
					  _SklHestia, _SklHestia, _ZLEC_Potr);
				end if;	 */
				
				-- stale potracenia	z karty pracownika							
				REPLACE INTO ms.place_skladniki
					(RodzajSkladnika, GUID_definicja_skladnika_placy, guid_zapisu_placowego, kwota, nomkwota, ZmniejszZwieksz)
				SELECT  
					_ZLEC_Potr, GUID_def_skl_placy, @_ZlecGUID, kwota, kwota, 0 
				FROM ms.prac_stale_skladniki p 
				JOIN ms.definicja_skladnika_placy d ON p.GUID_def_skl_placy = d.GUID AND d.typ_gratyfikacji = 1 AND d.deleted = 0 
				WHERE p.GUID_pracownika = _Param_C AND p.typ_skladnika = 0 
					AND ((p.rok_do > _Param_A) OR (p.rok_do = _Param_A AND p.msc_do > _Param_B)) ;
				
				
				CALL pl_gratyfikacje_tools('pl.przepisz.dane.pracownika.one.zlec', _Param_A, _Param_B, _Param_C, @_ZlecGUID, _Param_E);
				set @pl.gratyf.debug = 'po przepis.';				
			
				-- SET @_ZlecGUID =
				
				-- if naliczac zus  = 1 to update ms.prace_zlecone z WHERE	z.GUID = @_ZlecGUID;
				-- if PodlUbezpZdrowot (jest to niezalezne od NaliczacZus)  // pola PodlUbezpZdrowot i NaliczacZus wyznaczone przez pl.przepisz.dane.pracownika.one.zlec
				-- set @pl.gratyf.za_zlecenie = _ZaZlecenie
				-- call 
				-- set
				
				-- SKLADKI ZUS
				/*set @szambo = 'CALL pl_gratyfikacje_tools(''pl.nalicz.z.kart.obiektow.one.zlec.skladki'', #_Param_A#, #_Param_B#, #_Param_C#, #@_ZlecGUID#, #_Param_E#);';
				SET @szambo = REPLACE(@szambo, '#_Param_A#', _Param_A);
				SET @szambo = REPLACE(@szambo, '#_Param_B#', _Param_B);	
				SET @szambo = REPLACE(@szambo, '#_Param_C#', _Param_C);
				SET @szambo = REPLACE(@szambo, '#@_ZlecGUID#', @_ZlecGUID);
				SET @szambo = REPLACE(@szambo, '#_Param_E#', _Param_E);	*/
				CALL pl_gratyfikacje_tools('pl.nalicz.z.kart.obiektow.one.zlec.skladki', _Param_A, _Param_B, _Param_C, @_ZlecGUID, _Param_E);
				
			
				-- przeliczenie kwot
			/*	UPDATE  ms.prace_zlecone z
				SET
					z.KwotaBrutto     = (z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab - z.RazemSkladkiZleceniobiorcy),
					z.KosztyUzyskania = _Rnd((z.ZaZlecenie - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2), 
					z.Dochod          = _Rnd(
						(z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab - z.RazemSkladkiZleceniobiorcy) - _Rnd((z.ZaZlecenie - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2),
								    0),  -- regint.Zaokr_podstawy_zaliczki   dochod = KwotaBrutto - KosztyUzyskania
					z.ZaliczkaPrzedSklUbezp = _Rnd((z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab) - z.RazemSkladkiZleceniobiorcy - _Rnd((z.ZaZlecenie - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2)  , 0) * (z.ProcentPodatku/100),
					z.Zaliczka  = _Rnd(GREATEST(0, _Rnd((z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab) - z.RazemSkladkiZleceniobiorcy - 
						_Rnd((z.ZaZlecenie - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2)  , 0) * (z.ProcentPodatku/100) - z.SklKasaChorychZleceniobOdlicz), 0),
					z.KwotaNetto = (z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab) - (z.RazemSkladkiZleceniobiorcy + z.SklKasaChorychZleceniobPobr)  -
						_Rnd(GREATEST(0, _Rnd((z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab) - z.RazemSkladkiZleceniobiorcy - 
						_Rnd((z.ZaZlecenie - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2)  , 0) * (z.ProcentPodatku/100) - z.SklKasaChorychZleceniobOdlicz), 0),
					z.DoWyplaty  = _Rnd((z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab) - (z.RazemSkladkiZleceniobiorcy + z.SklKasaChorychZleceniobPobr)  -
						_Rnd(GREATEST(0, _Rnd((z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab) - z.RazemSkladkiZleceniobiorcy - 
						_Rnd((z.ZaZlecenie - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2)  , 0) * (z.ProcentPodatku/100) - z.SklKasaChorychZleceniobOdlicz), 0) 
						- z.InnePotr + z.InneDod +z.InneZasilkZUS, 2),
					z.InnePotr = (select sum(kwota) from ms.place_skladniki s where s.guid_zapisu_placowego = @_ZlecGUID and s.RodzajSkladnika = _ZLEC_Potr)	
				WHERE	
					z.GUID = @_ZlecGUID;
													
				-- sposob wyplaty
				update  ms.prace_zlecone z, ms.Pracownicy k
				set
					z.wyplataprzelewem = if ((k.czycosprzelewem=1 and length(k.nrrachunku) > 0), z.dowyplaty, 0),
					z.wyplatagotowka   = if ((k.czycosprzelewem=1 and length(k.nrrachunku) > 0), 0, z.dowyplaty)					
				where z.guid = @_zlecguid;
			*/	
			-- END;	
			ELSE  -- _Param_E in '2', '3', '4' 
			
				-- wstawienie do place_zlec i do place_skladniki
				REPLACE INTO sec.prace_zlecone 
				(GUID, GUID_pracownika,  miesiac, rok, DataOd, DataDo, NrZlecenia, ZaZlecenie, RodzajRyczaltu,  -- slon add DataOd
				  KosztyUzyskaniaWproc, ProcFemerytalnyZleceniob, ProcFrentowyZleceniob, ProcFchorobowyZleceniob,
				  ProcFwypadkowyZleceniob, ProcKasaChorychZleceniobPobr, ProcKasaChorychZleceniobOdlicz,
				  ProcFemerytalnyZleceniod, ProcFrentowyZleceniod, ProcFchorobowyZleceniod,  ProcFwypadkowyZleceniod,
				  ProcKasaChorychZleceniod, ProcFPracy, ProcFGSP, ZlecERP
				)   -- nazwisko,  @pl.gratyf.za_zlecenie
				VALUES(@_ZlecGUID, _Param_C, _Param_B, _Param_A, @DataOd, @DataDo, '', _ZaZlecenie, 7,   
				  (SELECT ValueN FROM IReg WHERE idkey = 'Procent_kosztow_um_zlec' AND rok = _Param_A),
				  (SELECT ValueN FROM IReg WHERE idkey = 'Proc_emeryt_zlecbiorcy' AND rok = _Param_A),
				  (SELECT ValueN FROM IReg WHERE idkey = 'Proc_rent_zlecbiorcy' AND rok = _Param_A),
				  (SELECT ValueN FROM IReg WHERE idkey = 'Proc_chorob_zlecbiorcy' AND rok = _Param_A),
				  (SELECT ValueN FROM IReg WHERE idkey = 'Proc_wypadk_zlecbiorcy' AND rok = _Param_A),
				  (SELECT ValueN FROM IReg WHERE idkey = 'Proc_zdr_pobrane_zlecbiorcy' AND rok = _Param_A),
				  (SELECT ValueN FROM IReg WHERE idkey = 'Proc_zdr_odliczone_zlecbiorcy' AND rok = _Param_A),
				  (SELECT ValueN FROM IReg WHERE idkey = 'Proc_emeryt_zlecdawcy' AND rok = _Param_A),
				  (SELECT ValueN FROM IReg WHERE idkey = 'Proc_rent_zlecdawcy' AND rok = _Param_A),
				  (SELECT ValueN FROM IReg WHERE idkey = 'Proc_chorob_zlecdawcy' AND rok = _Param_A),  
				  (SELECT ValueN FROM IReg WHERE idkey = 'Proc_wypadk_pracod' AND rok = _Param_A),  -- , ProcFwypadkowyZleceniod = DBPlacesProc_wypadkowe.GetProcentWypadkowego(aDataWyplaty);
				  (SELECT ValueN FROM IReg WHERE idkey = 'Proc_zdr_pobrane_zlecdawcy' AND rok = _Param_A),
				  (SELECT ValueN FROM IReg WHERE idkey = 'ZUS_FP_zlecdawcy' AND rok = _Param_A),
				  (SELECT ValueN FROM IReg WHERE idkey = 'ZUS_FGSP_zlecdawcy' AND rok = _Param_A), 1
				);  -- 20, (SELECT nazwisko from osoby WHERE GUID = _Param_C),
				/* 
					KosztyUzyskaniaWproc           = Procent_kosztow_um_zlec  Place2003\Progi_podatkowe_stawki_ZUS
					Place2003\Parametry_kartoteki_zlecen:
					ProcFemerytalnyZleceniob       = Proc_emeryt_zlecbiorcy
					ProcFrentowyZleceniob          = Proc_rent_zlecbiorcy
					ProcFchorobowyZleceniob        = Proc_chorob_zlecbiorcy
					ProcFwypadkowyZleceniob        = Proc_wypadk_zlecbiorcy
					ProcKasaChorychZleceniobPobr   = Proc_zdr_pobrane_zlecbiorcy
					ProcKasaChorychZleceniobOdlicz = Proc_zdr_odliczone_zlecbiorcy
					ProcFemerytalnyZleceniod       = Proc_emeryt_zlecdawcy
					ProcFrentowyZleceniod          = Proc_rent_zlecdawcy
					ProcFchorobowyZleceniod        = Proc_chorob_zlecdawcy
					ProcFwypadkowyZleceniod        = DBPlacesProc_wypadkowe.GetProcentWypadkowego(aDataWyplaty);
					ProcKasaChorychZleceniod       = Proc_zdr_pobrane_zlecdawcy
					ProcFPracy					   = ZUS_FP_zlecdawcy
					ProcFGSP					   = ZUS_FGSP_zlecdawcy
			    */
				
				
				
				-- Z_1-Z_5(rodz.skl = 0) 
				REPLACE INTO sec.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_1')), 'Z_1', @_ZlecGUID, _ZaZlecenie, _ZaZlecenie , 0);  -- @pl.gratyf.za_zlecenie, @pl.gratyf.za_zlecenie
				set @jmam='z1';
				REPLACE INTO sec.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_2')), 'Z_2', @_ZlecGUID, 0, 0, 0);
				set @jmam='z2';
				REPLACE INTO sec.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_3')), 'Z_3', @_ZlecGUID, 0, 0, 0);
				set @jmam='z3';
				REPLACE INTO sec.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_4')), 'Z_4', @_ZlecGUID, 0, 0, 0);
				set @jmam='z4';
				REPLACE INTO sec.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_5')), 'Z_5', @_ZlecGUID, 0, 0, 0);
				set @jmam='z5';
				-- Z_ZUS_1 - 9 (rodz.skl = 6)  _ZLEC_ZUS
				REPLACE INTO sec.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_ZUS_1')), 'Z_ZUS_1', @_ZlecGUID, 0, 0, _ZLEC_ZUS);
			
				REPLACE INTO sec.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_ZUS_2')), 'Z_ZUS_2', @_ZlecGUID, 0, 0, _ZLEC_ZUS);
			
				REPLACE INTO sec.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_ZUS_3')), 'Z_ZUS_3', @_ZlecGUID, 0, 0, _ZLEC_ZUS);
			
				REPLACE INTO sec.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
				VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_ZUS_4')), 'Z_ZUS_4', @_ZlecGUID, 0, 0, _ZLEC_ZUS);
			
				REPLACE INTO sec.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_ZUS_5')), 'Z_ZUS_5', @_ZlecGUID, 0, 0, _ZLEC_ZUS);
			
				REPLACE INTO sec.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_ZUS_6')), 'Z_ZUS_6', @_ZlecGUID, 0, 0, _ZLEC_ZUS);
			
				REPLACE INTO sec.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_ZUS_7')), 'Z_ZUS_7', @_ZlecGUID, 0, 0, _ZLEC_ZUS);
			
				REPLACE INTO sec.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_ZUS_8')), 'Z_ZUS_8', @_ZlecGUID, 0, 0, _ZLEC_ZUS);
			
				REPLACE INTO sec.place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
					VALUES(md5(concat(_Param_C, _Param_B, _Param_A, 'Z_ZUS_9')), 'Z_ZUS_9', @_ZlecGUID, 0, 0, _ZLEC_ZUS);
				set @pl.gratyf.debug = 'zus9';
				
								
				-- stale potracenia		z karty pracownika						
				REPLACE INTO sec.place_skladniki
					(RodzajSkladnika, GUID_definicja_skladnika_placy, guid_zapisu_placowego, kwota, nomkwota, ZmniejszZwieksz)
				SELECT  
					_ZLEC_Potr, GUID_def_skl_placy, @_ZlecGUID, kwota, kwota, 0 
				FROM sec.prac_stale_skladniki p 
				JOIN sec.definicja_skladnika_placy d ON p.GUID_def_skl_placy = d.GUID AND d.typ_gratyfikacji = 1 AND d.deleted = 0 
				WHERE p.GUID_pracownika = _Param_C AND p.typ_skladnika = 0 
					AND ((p.rok_do > _Param_A) OR (p.rok_do = _Param_A AND p.msc_do > _Param_B)) ;
				
				CALL pl_gratyfikacje_tools('pl.przepisz.dane.pracownika.one.zlec', _Param_A, _Param_B, _Param_C, @_ZlecGUID, _Param_E);
				set @pl.gratyf.debug = 'po przepis.';
				
				
				-- SKLADKI ZUS
				-- set @szambo = 'wywolanie wewn. 2 skladki';
				CALL pl_gratyfikacje_tools('pl.nalicz.z.kart.obiektow.one.zlec.skladki', _Param_A, _Param_B, _Param_C, @_ZlecGUID, _Param_E);
				
				
			
				-- SET @_ZlecGUID =
			
				-- if naliczac zus  = 1 to update ms.prace_zlecone z WHERE	z.GUID = @_ZlecGUID;
				-- if PodlUbezpZdrowot (jest to niezalezne od NaliczacZus)  // pola PodlUbezpZdrowot i NaliczacZus wyznaczone przez pl.przepisz.dane.pracownika.one.zlec
				
			
			/*
				-- przeliczenie kwot
				UPDATE  sec.prace_zlecone z
				SET
					z.KwotaBrutto     = (z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab - z.RazemSkladkiZleceniobiorcy),
					z.KosztyUzyskania = _Rnd((z.ZaZlecenie - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2), 
					z.Dochod          = _Rnd(
						(z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab - z.RazemSkladkiZleceniobiorcy) - _Rnd((z.ZaZlecenie - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2),
								    0),  -- regint.Zaokr_podstawy_zaliczki   dochod = KwotaBrutto - KosztyUzyskania
					z.ZaliczkaPrzedSklUbezp = _Rnd((z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab) - z.RazemSkladkiZleceniobiorcy - _Rnd((z.ZaZlecenie - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2)  , 0) * (z.ProcentPodatku/100),
					z.Zaliczka  = _Rnd(GREATEST(0, _Rnd((z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab) - z.RazemSkladkiZleceniobiorcy - 
						_Rnd((z.ZaZlecenie - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2)  , 0) * (z.ProcentPodatku/100) - z.SklKasaChorychZleceniobOdlicz), 0),
					z.KwotaNetto = (z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab) - (z.RazemSkladkiZleceniobiorcy + z.SklKasaChorychZleceniobPobr)  -
						_Rnd(GREATEST(0, _Rnd((z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab) - z.RazemSkladkiZleceniobiorcy - 
						_Rnd((z.ZaZlecenie - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2)  , 0) * (z.ProcentPodatku/100) - z.SklKasaChorychZleceniobOdlicz), 0),
					z.DoWyplaty  = _Rnd((z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab) - (z.RazemSkladkiZleceniobiorcy + z.SklKasaChorychZleceniobPobr)  -
						_Rnd(GREATEST(0, _Rnd((z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab) - z.RazemSkladkiZleceniobiorcy - 
						_Rnd((z.ZaZlecenie - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2)  , 0) * (z.ProcentPodatku/100) - z.SklKasaChorychZleceniobOdlicz), 0) 
						- z.InnePotr + z.InneDod +z.InneZasilkZUS, 2),
					z.InnePotr = (select sum(kwota) from sec.place_skladniki s where s.guid_zapisu_placowego = @_ZlecGUID and s.RodzajSkladnika = _ZLEC_Potr)	
				WHERE	
				z.GUID = @_ZlecGUID;
								
			-- END;	
				
				-- sposob wyplaty
				update  sec.prace_zlecone z, sec.Pracownicy k
				set
					z.wyplataprzelewem = if ((k.czycosprzelewem=1 and length(k.nrrachunku) > 0), z.dowyplaty, 0),
					z.wyplatagotowka   = if ((k.czycosprzelewem=1 and length(k.nrrachunku) > 0), 0, z.dowyplaty)					
				where z.guid = @_zlecguid;
			*/
			END IF; -- _Param_E in '2', '3', '4' (czyli baza = sec)
			
			SET _SQLText = 'SELECT
				(z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab - z.RazemSkladkiZleceniobiorcy) AS KwotaBrutto,
				_Rnd((z.ZaZlecenie - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2) AS KosztyUzyskania
				
				FROM #DB_ZLEC#.prace_zlecone z			
				WHERE	
					z.GUID = ''#_ZlecGUID#'' 
				INTO 
					@one.zlec.KwotaBrutto, @one.zlec.KosztyUzyskania ;
			';
			SET _SQLText = REPLACE(_SQLText, '#DB_ZLEC#', IF(_Param_E in ('0','1','5'), "ms", "sec"));	
			SET _SQLText = REPLACE(_SQLText, '#_ZlecGUID#', @_ZlecGUID);			
			SET @_SQLText_sel =  _SQLText;
			CALL _ExecuteCmd(_SQLText, @Error);	
			
			-- przeliczenie kwot
			SET _SQLText = 'UPDATE 	#DB_ZLEC#.prace_zlecone z
				SET
					z.KwotaBrutto     = (z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab - z.RazemSkladkiZleceniobiorcy),
					z.KosztyUzyskania = _Rnd((z.ZaZlecenie - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2), 
					z.Dochod          = _Rnd(
						(z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab - z.RazemSkladkiZleceniobiorcy) - _Rnd((z.ZaZlecenie - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2),
								    0),  -- regint.Zaokr_podstawy_zaliczki   dochod = KwotaBrutto - KosztyUzyskania
					z.ZaliczkaPrzedSklUbezp = _Rnd((z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab) - z.RazemSkladkiZleceniobiorcy - _Rnd((z.ZaZlecenie - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2)  , 0) * (z.ProcentPodatku/100),
					z.Zaliczka  = _Rnd(GREATEST(0, _Rnd((z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab) - z.RazemSkladkiZleceniobiorcy - 
						_Rnd((z.ZaZlecenie - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2)  , 0) * (z.ProcentPodatku/100) - z.SklKasaChorychZleceniobOdlicz), 0),
					z.KwotaNetto = (z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab) - (z.RazemSkladkiZleceniobiorcy + z.SklKasaChorychZleceniobPobr)  -
						_Rnd(GREATEST(0, _Rnd((z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab) - z.RazemSkladkiZleceniobiorcy - 
						_Rnd((z.ZaZlecenie - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2)  , 0) * (z.ProcentPodatku/100) - z.SklKasaChorychZleceniobOdlicz), 0),
					z.DoWyplaty  = _Rnd((z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab) - (z.RazemSkladkiZleceniobiorcy + z.SklKasaChorychZleceniobPobr)  -
						_Rnd(GREATEST(0, _Rnd((z.ZaZlecenie + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab) - z.RazemSkladkiZleceniobiorcy - 
						_Rnd((z.ZaZlecenie - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2)  , 0) * (z.ProcentPodatku/100) - z.SklKasaChorychZleceniobOdlicz), 0) 
						- z.InnePotr + z.InneDod +z.InneZasilkZUS, 2),
					z.InnePotr = (select sum(kwota) from #DB_ZLEC#.place_skladniki s where s.guid_zapisu_placowego = ''#_ZlecGUID#'' and s.RodzajSkladnika = #_ZLEC_Potr#)	
				WHERE	
					z.GUID = ''#_ZlecGUID#'' ; ';
			
			SET _SQLText = REPLACE(_SQLText, '#DB_ZLEC#', IF(_Param_E in ('0','1','5'), "ms", "sec"));	
			SET _SQLText = REPLACE(_SQLText, '#_ZlecGUID#', @_ZlecGUID);			
			SET _SQLText = REPLACE(_SQLText, '#_ZLEC_Potr#', _ZLEC_Potr);			
			SET @_SQLText = _SQLText;		
			CALL _ExecuteCmd(_SQLText, @Error);	
			
			-- sposob wyplaty
			SET _SQLText = '
			update  #DB_ZLEC#.prace_zlecone z, #DB_ZLEC#.Pracownicy k
			set
				z.wyplataprzelewem = if ((k.czycosprzelewem=1 and length(k.nrrachunku) > 0), z.dowyplaty, 0),
				z.wyplatagotowka   = if ((k.czycosprzelewem=1 and length(k.nrrachunku) > 0), 0, z.dowyplaty)					
			where z.guid = ''#_ZlecGUID#'' and z.guid_pracownika = k.GUID;
			';
			
			SET _SQLText = REPLACE(_SQLText, '#DB_ZLEC#', IF(_Param_E in ('0','1','5'), "ms", "sec"));	
			SET _SQLText = REPLACE(_SQLText, '#_ZlecGUID#', @_ZlecGUID);			
			SET @_SQLText_wypl = _SQLText;		
			CALL _ExecuteCmd(_SQLText, @Error);	
				
		END IF;  -- IF @pl.gratyf.za_zlecenie > 0
	END IF;	--	IF _MODE = 'pl.nalicz.z.kart.obiektow.one.zlec'
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'pl.nalicz.z.kart.obiektow'
		Naliczanie z kart obiektów (Security)
		Parametry
		_Param_A	Rok
		_Param_B	Miesiac
		CALL pl_gratyfikacje_tools('pl.nalicz.z.kart.obiektow', '2011', '10, '', '', '');
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
		
	IF _MODE = 'pl.nalicz.z.kart.obiektow' THEN
	
	    CALL _IReg_Get('Place2003', 'Gratyfikacje_AvgMscNCP', _Param_A, 'INTEGER', @AvgMscNCP, 168);
	    CALL _IReg_Get('Place2003', 'Zlecenie_Podstawowe_Kwota', _Param_A, 'INTEGER', @Kwota_201, 201);
			    
		DROP  TABLE IF EXISTS `te_pl_wynagr_z_obiektow`;  -- TEMPORARY
		CREATE  TABLE `te_pl_wynagr_z_obiektow`     -- TEMPORARY
			SELECT
				o.GUID, k.ZeSG, k.PlacaZasadnicza, k.RozliczajWg, 
			--	(SELECT IFNULL(SUM(z.ZaZlecenie), 0) FROM prace_zlecone z WHERE z.miesiac = _Param_B AND z.rok = _Param_A AND z.GUID_pracownika = o.GUID) as zeZlecen,
				_rnd2(k.PlacaZasadnicza/@AvgMscNCP) as stawka_Z,
				SUM(p.czas_P) AS godziny_etat, -- A
				SUM(p.czas_Z) AS godziny_zlec, -- B
				MAX(p.stawka_P) AS stawka_etat, -- C
				MAX(p.stawka_Z) AS stawka_zlec, -- D
				SUM(p.Absencja_CLZ) AS godziny_chorob, -- E
				SUM(p.Absencja_WOD) * 8 AS godziny_wypocz, -- F
				SUM(p.Extra_Wynagr) AS extra_wynagr,  -- G
				p.guid AS guidKop
			FROM `pl_karty_obiektu_ng` c
			JOIN  `pl_karty_obiektu_po` p ON c.guid = p.guidng
			JOIN osoby o ON o.GUID = p.PracGUID
			JOIN Pracownicy k ON k.GUID = p.PracGUID
			WHERE c.rok = _Param_A
			AND c.miesiac = _Param_B
			GROUP BY p.PracGUID, guidKop
			ORDER BY o.nazwisko, o.imiona
			;
		ALTER TABLE `te_pl_wynagr_z_obiektow` ADD PRIMARY KEY GUID (GUID, guidKop);
		
		-- dla RozliczajWg = 0 lub 3 w naliczeniach wykorzystywana jest PlacaZasadnicza - trzeba ją pobrać z frekwencji z odp. bazy
		
		-- dla RozliczajWg = 0 (sec=etat, ms=zlec) trzeba pobrać z bazy sec
		update 
			sec.te_pl_wynagr_z_obiektow s, sec.frekw m, sec.Pracownicy k
		set
			s.PlacaZasadnicza = m.PlacaZasad,
			s.stawka_Z	      = _rnd2(m.PlacaZasad/@AvgMscNCP)
		where
			k.RozliczajWg = 0 and k.guid = s.guid  and s.guid = m.Pracguid and m.rok = _Param_A and m.miesiac = _Param_B;
		
		-- dla RozliczajWg = 3 (sec=zlec, ms=etat) trzeba pobrać z bazy ms
		update 
			sec.te_pl_wynagr_z_obiektow s, ms.frekw m, ms.Pracownicy k
		set
			s.PlacaZasadnicza = m.PlacaZasad,
			s.stawka_Z	      = _rnd2(m.PlacaZasad/@AvgMscNCP)
		where
			k.RozliczajWg = 3 and k.guid = s.guid  and s.guid = m.Pracguid and m.rok = _Param_A and m.miesiac = _Param_B;
		
		BEGIN
			DECLARE _OsobaGUID VARCHAR(38);
			DECLARE _Tryb INTEGER;
			DECLARE _done BOOL DEFAULT FALSE;
			DECLARE _c_proc CURSOR FOR
				SELECT 
					GUID, ZeSG, RozliczajWg
				FROM `te_pl_wynagr_z_obiektow`
				;
		    DECLARE CONTINUE HANDLER FOR NOT FOUND SET _done = TRUE;
			OPEN _c_proc;
				loop1: LOOP
					FETCH _c_proc INTO
						_OsobaGUID, _Tryb, _RozliczajWg;
					IF _done THEN
						LEAVE loop1;
					ELSE
					   -- set @szambo = 'wolam pl.nalicz.z.kart.obiektow.one.zlec';
						CALL pl_gratyfikacje_tools('pl.nalicz.z.kart.obiektow.one.zlec', _Param_A, _Param_B, _OsobaGUID, _Tryb, _RozliczajWg);						  	
					END IF;
				END LOOP;
			CLOSE _c_proc;		
		END;
		
	END IF;	 --   IF _MODE = 'pl.nalicz.z.kart.obiektow'
	

END$$

DELIMITER ;

/*
====================================================================================================================================================================================
	NOTATNIK
====================================================================================================================================================================================
procedure TDBPlacesPlaceZlec.PrzepiszDanePrac(aPracGUID: String; var aZaZlecenie: Currency);
const
  cSQL = 'SELECT O.Nazwisko, CONCAT(O.Imie1,'' '',O.Imie2) AS Imie, '+
    'O.DataUrodzenia, O.NrPesel, Z.ZgloszZUA_ZZA, P.CzyCosPrzelewem, '+
    'P.ProcPodOdZlecen, P.GUID, P.KodUbezpUmZlecenie, P.KluczWzoruPK, P.AnalitykaFK, '+
    'P.KategoriaPracownicza, P.KluczUrzeduSkarbowego, P.KluczWzoruPK_zlec, '+
    'P.naliczFGSP, P.naliczFP, P.NrZlecenia, '+  //IF((P.TypNaliczaniaSkladek = 0) AND (P.KodUbezpUmZlecenie <> ''''), 1, 0) AS ZlecNaliczacZus ' +
    'IF(Z.PodlEmerytalneUbzp OR Z.Dobr_UbzpEmeryt OR Z.PodlRentoweUbzp OR Z.Dobr_UbzpRentowe, 1, 0) AS ZlecNaliczacZus, '+
    'IF((Z.PodlEmerytalneUbzp OR Z.Dobr_UbzpEmeryt OR Z.PodlRentoweUbzp OR Z.Dobr_UbzpRentowe) AND Z.PodlChorobUbzp, 1, 0) AS PodlChorobUbzp,  '+
    'IF((Z.PodlEmerytalneUbzp OR Z.Dobr_UbzpEmeryt OR Z.PodlRentoweUbzp OR Z.Dobr_UbzpRentowe) AND Z.PodlWypadkUbzp, 1, 0) AS PodlWypadkUbzp, '+
    'IF((!ISNULL(Z.DataPowstObowUbezpZdrow) OR Z.Dobr_UbzpZdrowotne=1) AND Z.ZgloszZUA_ZZA=1 AND ((Z.KodKasyChorych <> '''') AND !ISNULL(Z.KodKasyChorych)), 1, 0) AS PodlUbezpZdrowot '+
    'FROM Pracownicy P '+
    'LEFT JOIN osoby O ON P.GUID = O.GUID '+
    'LEFT JOIN pracownicy_ZUS Z ON P.GUID = Z.GUID_Pracownika '+
    'WHERE P.GUID = ''%s'' ';
	
	stale potracenia z karty pracownika:
	
	cStalePotrSQL = 'SELECT p.* FROM prac_stale_skladniki p '+
    'JOIN definicja_skladnika_placy d '+
    'ON p.GUID_def_skl_placy = d.GUID AND d.typ_gratyfikacji = %d and d.deleted = 0 '+
    'WHERE p.GUID_pracownika = ''%s'' AND p.typ_skladnika = %d AND '+
    '((p.rok_do > %d) OR (p.rok_do = %d AND p.msc_do > %d)) ';
	
RozliczajWg 		Sec		   MS
   0			    Etat      Zlec
   1			   Zlec201    Zlec 
   2                Zlec     Zlec201
   3				Zlec	  Etat
   4				Zlec       X
   5				 X        Zlec
	
	
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
*/

			
			