 /*!40101 SET NAMES utf8 */;
DELIMITER $$

DROP PROCEDURE IF EXISTS `pl_kreator_zlecen`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `pl_kreator_zlecen`(
	IN _MODE VARCHAR(150),
	IN _GUID VARCHAR(50), 		-- GUID zlecenia
	IN _ZaZlecenie DOUBLE,
	IN _rok INT,
	IN _miesiac INT,
	IN _Param_A VARCHAR(50),  -- data wyplaty (dawniej GUID zlecenia)
	IN _Param_B VARCHAR(50),  -- rok
	IN _Param_C VARCHAR(50),  -- miesiac
	IN _Param_D VARCHAR(50),  -- GUID pracownika
	IN _Param_E VARCHAR(50),
	IN _Param_F VARCHAR(50)
)
SPROC: BEGIN
/*
	Procedura skopiowana z procedury pl_gratyfikacje_tools_arg7.sql
	Ma to byc wersja uproszczona i bardziej ogolna, bez specyfiki dwoch baz Security

	Generalnie ma tworzyc umowy-zlecenia na podstawie danych z tabeli po imporcie z pliku excelowego - gdzie podane sa tylko godziny danej osoby, oraz dodatowe parametry na podstawie ustawionego filtra (miesiac zakonczenia prac, data wyplaty, data od, data do, nr listy plac)


	rozbudowac liste parametrow oczywistych, moze przejsc na parametry tablicowe (miedzy znakami & &)?
*/

	DECLARE _RozliczajWg INTEGER;
	DECLARE _I, _MZ_idn, _suma_mies, _dniW, _period INTEGER;
	DECLARE _ZLEC_Potr INTEGER;
	DECLARE cInneDodatki INTEGER;
	DECLARE _ZLEC_ZUS  INTEGER;
	DECLARE _ZaZlecenie2, _SklHestia, _GratyfPodst, _DodNocny, _MinWynagr, _NomCzasPracyREG, _Godziny, _Godziny2, _extra_wynagr  DOUBLE;
	DECLARE _KwotaJarzExtra1, _KwotaJarzExtra2, _Usluga DOUBLE;
	DECLARE _SQLText TEXT;

	DECLARE _CurrZaZlecenie, _GrafikCzasPracy, _CzasZ, _ProcPremii, _SG, _SGdef, aSGNoc, _SGp, _SGz DOUBLE;
	DECLARE _MaxAreaGUID, _CurrAreaGUID, _CurrZlecGUID, _CurrWorkerGUID, _OrderGUID, _RangeGUID, _GUIDPracownika, _GUIDZlecPrac VARCHAR(38);
	DECLARE _IsMaxArea BOOLEAN;

	DECLARE _godzSNS, _godzSNS_nast,  _NCP,  _GodzNocne, _godzW, _OCP, _OCP_3mc, _godz_3mc,
			_SUM_12m, _kwotaW, _kwota_def, _godz100, _godz150, _godz200 DOUBLE;

	DECLARE _godzP, _godz_niedorobka, _godz_total, _godz100prac,  _godziny150, _godz_plus100wolne,
			_godziny_premia, _godz_noc, _godz_yy DOUBLE;  -- ,  _godzSNS

	DECLARE aPlaca, aNadGodz150, aNadGodz200,  aPremia, aPremiaMotyw, aPremiaUzn,
	        _suma_place, _suma_zlec, aNoc, aNoc_yy, _Kwota100, _Kwota150, _Kwota200 DOUBLE;

	DECLARE _SymbZakr VARCHAR(200);
	DECLARE _Def_NCP_REG, _NCP_REG_mc VARCHAR(10);

	DECLARE _DataWyplaty, _CurrDataWyplaty varchar(10);
	DECLARE _DataWyplDoDeklar varchar(10);

	DECLARE _done BOOL DEFAULT FALSE;

	DECLARE _OsobaGUID VARCHAR(38);
	DECLARE _Tryb, _netto_brutto INTEGER;

	DECLARE _GuidKO VARCHAR(38);
	DECLARE _SklPZU DOUBLE;
	DECLARE _DataDo VARCHAR(10);

	DECLARE _liczba INTEGER;

	SET _ZLEC_Potr = 4;		-- cInnePotracenia
	SET cInneDodatki = 5;	-- cInneDodatki
	SET _ZLEC_ZUS = 6;		-- 3



/*------------------------------------------------------------------------------------------
	'create.work.tables'
		Zalozenie tabel tymczasowych oraz tabeli pomocniczenj z danymi
		Parametry
		_Param_A	GUID zlecenia
		_Param_B	rok
		_Param_C	miesiac
		_Param_D	GUID pracownika
		_Param_E	AreaGUID  = GUID sklepu

CREATE TABLE ta_umzlec (
pracownik VARCHAR(100),
pesel_paszport VARCHAR(20),
kwota_brutto VARCHAR(40),
kwota_netto VARCHAR(40),
zlecenie VARCHAR(50),
rgb VARCHAR(40),
stawka_netto VARCHAR(40),
stawka_brutto VARCHAR(40),
kod_budzetowy VARCHAR(38),
opis VARCHAR(200),
typ_umowy VARCHAR(10),
kierownik VARCHAR(100),
data_od VARCHAR(10),
data_do VARCHAR(10),
data_wyplaty VARCHAR(10),
nr_zlecenia VARCHAR(50),
nr_listy_plac VARCHAR(50),
nr_wew VARCHAR(50),
reprezentant VARCHAR(100),
wyroznik VARCHAR(100),
rok INT,
miesiac VARCHAR(10)
)
#default charset $names;
default charset cp1250;

CALL pl_kreator_zlecen('create.work.tables', '', 0 ,0, 0, '', '', '', '', '', '');

CALL pl_kreator_zlecen('calc.multi.order', '', 0, 0, 0, '', '', '', '', '', 'auto'); auto zapisuje umowy-zlecenia

CALL pl_kreator_zlecen('calc.one.order', 'A_9ff256937e4ac42158d2fcb1aca3ab6b', '2400', '2019', '11', '','','','{B7D3DFE5-8742-45A1-A0F4-4240544F7E28}', '','manual');

CALL pl_kreator_zlecen('calc.one.order', 'A_0e9c08278be57408cc7f6bedd58564ec', '11080', '2022', '5', '','','','AUTOID1481', '','manual');

---------------------------------------------------------------------------------------------*/
	IF _MODE = 'create.work.tables' THEN

		UPDATE ta_umzlec SET
		kwota_brutto = REPLACE(kwota_brutto,',','.'),
		kwota_netto = REPLACE(kwota_netto,',','.'),
		rgb = REPLACE(rgb,',','.'),
		stawka_brutto = REPLACE(stawka_brutto,',','.'),
		stawka_netto = REPLACE(stawka_netto,',','.')
		;

		DROP TEMPORARY TABLE IF EXISTS tt_prace_zlecone;
		CREATE TEMPORARY TABLE  tt_prace_zlecone LIKE prace_zlecone;

		DROP TEMPORARY TABLE IF EXISTS `tt_zlec_skladniki`;
		CREATE TEMPORARY TABLE  `tt_zlec_skladniki` LIKE `place_skladniki`;

		DROP TEMPORARY TABLE IF EXISTS tt_dane_zlecenia;
		CREATE TEMPORARY TABLE  tt_dane_zlecenia (
			guid VARCHAR(38), -- guid pracownika
			godziny DOUBLE,
			guid_zlec VARCHAR(38), -- guid zlcenia, ktore ma powstac
			data_od VARCHAR(10),
			data_do VARCHAR(10),
			stawkagodzinowa DOUBLE, -- stawka godzinowa z kartoteki pracownika
			ZaZlecenie DOUBLE(16,2), -- kwota netto (dla Crtist) za zlecenie
			naliczac_zus INT, -- przelacznik do ustawienia, zalezy od 26 lat
			dni_183 INT DEFAULT 0, -- czy przekracza 183 dni - od tego zalezy rodzaj zlecenia
			OpisGUID VARCHAR(38), -- guid opisu zlecenia
			netto_brutto INT, -- sposob naliczania, dla Crist=1
			zrodlo_zapisu VARCHAR(50) DEFAULT '', -- rozbicie zapisow w miesiacu na podstawie np. obiektow, sklepow, zlecen produkcyjnych itp
			data_wyplaty VARCHAR(10), -- data wyplaty podawana z pliku
			rok INT,
			miesiac INT,
			KEY guid(guid)
			) DEFAULT CHARSET=utf8;

		-- dane podstawowe zlecenia
		INSERT INTO tt_dane_zlecenia (guid, godziny, data_wyplaty, netto_brutto, ZaZlecenie, stawkagodzinowa, rok, miesiac, guid_zlec, data_od, data_do)
		SELECT guid, rgb, data_wyplaty,
		if(kwota_netto > 0,1,0),
		if(kwota_netto > 0,kwota_netto,kwota_brutto),
		if(stawka_netto > 0,stawka_netto,stawka_brutto),
		rok,miesiac,
		guid_zlec,
		data_od, data_do
		FROM ta_umzlec
		WHERE IFNULL(pesel_paszport,'') <> ''
		-- where guid_zlec='A_3461c180e477f13ce28ca490a1827c46'
		;

		-- guid zlec powstaje w skrypcie sh, jako klucz z pracownika, roku, miesiaca, numeru listy plac, numeru zlecenia


		-- dane slownikowe zlecenia i uzupelnienie slownikow
/*
		UPDATE tt_dane_zlecenia t, Pracownicy p SET
			t.OpisGUID = p.ZlecOpisyGUID
		WHERE t.guid = p.guid;

		UPDATE tt_dane_zlecenia t, Pracownicy p SET
		t.stawkagodzinowa = p.stawkagodzinowa,
		t.ZaZlecenie = p.stawkagodzinowa * t.godziny,
		t.OpisGUID = p.ZlecOpisyGUID
		WHERE t.guid = p.guid;
*/

		CALL fr_pl_zest('LICZBA_DNI_183_NALICZANIE','','','','','','');

		UPDATE tt_dane_zlecenia tz, tt_prac tp
		SET tz.dni_183 = IF(tp.dni_pobytu > 183, 1, 0)
		WHERE tz.guid = tp.guid;

		-- dla osob z polskim obywatelstwem z zalozenia 183 dni sa przekroczone
		UPDATE tt_dane_zlecenia t, osoby o
		SET dni_183 = 1
		WHERE t.guid = o.guid AND o.obywatelstwo = 'polskie';

		-- dla osob z polskim obywatelstwem obcym, majacym wpis w tabeli Pracownicy o liczbie dni w Polsce
		-- to jest proteza na szybko, ale moze byc skuteczna, a badanie dat umow to grubsza sprawa
		UPDATE tt_dane_zlecenia t, osoby o, Pracownicy p
		SET dni_183 = 1
		WHERE t.guid = o.guid AND o.guid = p.guid and o.obywatelstwo <> 'polskie' and p.LiczbaDniWPolsce >= 200;


	-- tabele do podliczania skladek
		DROP TEMPORARY TABLE IF EXISTS `tt_skladki_place_do_zlec`;
		CREATE TEMPORARY TABLE `tt_skladki_place_do_zlec` (
		`GUID` VARCHAR(38) NOT NULL DEFAULT '',
		`SUMZusFPprc` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`ZUSFEPPrc` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMZusFGprc` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMPodstFemerytalny` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMPodstFrentowy` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMPodstFchorobowy` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMPodstFwypadkowy` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMPodstKasaChorych` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMSklFemerytalnyPracow` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMSklFrentowyPracow` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMSklFchorobowyPracow` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMSklFwypadkowyPracow` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMSklKasaChorychPracowPobr` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMSklKasaChorOdlicz` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMSklFemerytalnyPracod` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMSklFrentowyPracod` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMSklFchorobowyPracod` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMSklFwypadkowyPracod` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMSklKasaChorychPracod` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMPodstDlaZUSFundPracy` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMPodstDlaZusFGSP` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMZusFunduszPracy` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMZusFunduszGwarancyjny` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMSkladkaFEP` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMPPKskladkaPracow` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		`SUMPPKskladkaPracod` DOUBLE(21,4) NOT NULL DEFAULT '0.0000',
		SUMSklKasaChorOdliczHipot DOUBLE(21,4) NOT NULL DEFAULT '0.0000'
			) DEFAULT CHARSET=cp1250;

		DROP TEMPORARY TABLE IF EXISTS `tt_skladki_zlec_do_zlec`;
		CREATE TEMPORARY TABLE `tt_skladki_zlec_do_zlec` (
		`GUID` varchar(38) NOT NULL DEFAULT '',
		`SumaPodstEmeryt` double(21,4) NOT NULL DEFAULT '0.0000',
		`SumaPodstRent` double(21,4) NOT NULL DEFAULT '0.0000',
		`SumaPodstChorob` double(21,4) NOT NULL DEFAULT '0.0000',
		`SumaPodstWypadk` double(21,4) NOT NULL DEFAULT '0.0000',
		`SumaPodstKCh` double(21,4) NOT NULL DEFAULT '0.0000',
		`SumaSklEmerytZB` double(21,4) NOT NULL DEFAULT '0.0000',
		`SumaSklRentZB` double(21,4) NOT NULL DEFAULT '0.0000',
		`SumaSklChorobZB` double(21,4) NOT NULL DEFAULT '0.0000',
		`SumaSklWypadkZB` double(21,4) NOT NULL DEFAULT '0.0000',
		`SumaSklKChPobrZB` double(21,4) NOT NULL DEFAULT '0.0000',
		`SumaSklKChOdlZB` double(21,4) NOT NULL DEFAULT '0.0000',
		`SumaSklRazemZB` double(21,4) NOT NULL DEFAULT '0.0000',
		`SumaSklEmerytZD` double(21,4) NOT NULL DEFAULT '0.0000',
		`SumaSklRentZD` double(21,4) NOT NULL DEFAULT '0.0000',
		`SumaSklChorobZD` double(21,4) NOT NULL DEFAULT '0.0000',
		`SumaSklWypadkZD` double(21,4) NOT NULL DEFAULT '0.0000',
		`SumaSklKChZD` double(21,4) NOT NULL DEFAULT '0.0000',
		`SumaSklRazemZD` double(21,4) NOT NULL DEFAULT '0.0000',
		`SumaSklFundPracy` double(21,4) NOT NULL DEFAULT '0.0000',
		`SumaSklFGSP` double(21,4) NOT NULL DEFAULT '0.0000',
		`SumaPodstFpFGSP` double(21,4) NOT NULL DEFAULT '0.0000',
		`SumaPodstFemerytBezOgr` double(21,4) NOT NULL DEFAULT '0.0000',
		`SumaPPKskladkaPracow` double(21,4) NOT NULL DEFAULT '0.0000',
		`SumaPPKskladkaPracod` double(21,4) NOT NULL DEFAULT '0.0000',
		SumaSklKCZlecOdliczHipot double(21,4) NOT NULL DEFAULT '0.0000'
			)  DEFAULT CHARSET=cp1250;

	END IF;

/*-------------------------------------------------------------------------
		Zalozenie tabel tymczasowych, wlasciwe naliczenie zlecenia, zwrocenie warto?ci jako SELECT
		Parametry
		_Param_A	GUID zlecenia
		_Param_B	rok
		_Param_C	miesiac
		_Param_D	GUID pracownika
		_Param_E	AreaGUID  = GUID sklepu (dla trybu "ht" nieu?ywane)
		_Param_F   -- tryb: zawsze "auto" (naliczanie automat.) (tryb "manual" wyst?puje dla "one.order.mode")



-- naliczenie zlecenia na podstawie zawartosci pliku ta_umzlec
CALL pl_kreator_zlecen('calc.multi.order', '', '','', '', '', '', '', '', '', 'auto');
SELECT * FROM tt_dane_zlecenia;
SELECT * FROM tt_prace_zlecone;
SELECT * FROM tt_zlec_skladniki;
SELECT * FROM listy_plac ORDER BY idn DESC;
SELECT * FROM ta_umzlec;

SELECT SklFemerytalnyZleceniob, DataWyplDoDeklar, ProcFwypadkowyZleceniod, datawyplaty, pl.* FROM prace_zlecone pl WHERE guid LIKE 'A%';
SELECT * FROM tt_skladki_place_do_zlec;
SELECT * FROM tt_skladki_zlec_do_zlec;
SELECT * FROM tt_prace_zlecone;
-- delete FROM prace_zlecone WHERE guid LIKE 'A%';

--------------------------------------------------------------------*/

	IF _MODE = 'calc.multi.order' THEN
	    set @co = 'start';
		--  zakladamy tabele tymcz. (kopie tabel prace_zlecone i place_skladniki)
		CALL pl_kreator_zlecen('create.work.tables', '', 0, 0, 0, '', '', '', '', '', '');

		SELECT count(*) INTO _liczba FROM tt_dane_zlecenia
            WHERE data_od = '' OR data_do = '' OR data_wyplaty = '' OR guid IS NULL OR guid = '';

		IF _liczba > 0 THEN
            SELECT 'Nie wszystkie dane sa uzupelnione!' AS Komunikat;
            LEAVE SPROC;
		END IF;

		SELECT count(*) INTO _liczba FROM tt_dane_zlecenia
            WHERE guid_zlec in (select guid from prace_zlecone where ZamknietyZapis = 1); --  and deleted=0)

		IF _liczba > 0 THEN
            SELECT 'Próbujesz zmienić zamknięte prace zlecone!' AS Komunikat;
            LEAVE SPROC;
		END IF;



		BEGIN
			DECLARE _zlec_c CURSOR FOR
			SELECT
				guid, guid_zlec, ZaZlecenie, data_wyplaty, rok, miesiac
			FROM tt_dane_zlecenia;

			DECLARE CONTINUE HANDLER FOR NOT FOUND SET _done = TRUE;

			SET _CurrZlecGUID = ''; SET _CurrWorkerGUID = ''; SET _CurrZaZlecenie = 0; SET _CurrDataWyplaty = '';

			SET _done = FALSE;

			OPEN _zlec_c;
			loopF: LOOP
				FETCH _zlec_c INTO
					_CurrWorkerGUID, _CurrZlecGUID, _CurrZaZlecenie, _CurrDataWyplaty, _rok, _miesiac;  -- Prac.guid, zlec.guid
				IF _done THEN
						-- set @co = 'spadamy';
						LEAVE loopF;
				ELSE
					set @co2 = 'petla1'; SET @a1 = _CurrZlecGUID; SET @a2 = _CurrZaZlecenie; SET @a3 = _CurrWorkerGUID;

				  CALL pl_kreator_zlecen('calc.one.order', _CurrZlecGUID, _CurrZaZlecenie, _rok, _miesiac, '','','',_CurrWorkerGUID, _CurrDataWyplaty, _Param_F);

				END IF;

			END LOOP;
			CLOSE _zlec_c;

			-- uzupelnienie tresci zlecenia we wszystkich wygenerowanych zleceniach
/*
			SET _SymbZakr = ''; SET _RangeGUID = '';
			CALL _IReg_Get('Place2003\\Parametry_kartoteki_zlecen', 'Symbol_zakresu_prac_zlec', 0, 'STRING', _SymbZakr, '');
			-- (aRok, 'Proc_zdr_odliczone_zlecbiorcy', 0.00, 'Place2003\Parametry_kartoteki_zlecen', 1);
*/
			-- lista plac
			INSERT INTO listy_plac (symbol, nazwa, lista_glowna, typ_gratyfikacji, rok, miesiac, guid, guid_wyrozn)
			SELECT DISTINCT nr_listy_plac, CONCAT(nr_listy_plac, ' - automat. rok ', rok,' miesiac ', miesiac),
			0,1, rok, miesiac, CONCAT('A_',MD5(CONCAT(nr_listy_plac,rok,miesiac))),
			(select guid from pl_wyrozn_list_plac where wyroznik = t.wyroznik limit 1)
			FROM ta_umzlec t
			WHERE nr_listy_plac NOT IN (SELECT symbol FROM listy_plac)
			AND nr_listy_plac <> ''
			-- blokada przed proba dodania listy o guidzie, ktory juz jest, po zmianie symbolu przez kadry
			-- _VarStr dla likwidacj mix collaction
			AND _VarStr(CONCAT('A_',MD5(CONCAT(nr_listy_plac,rok,miesiac)))) NOT IN (SELECT guid FROM listy_plac)
			;

			Update prace_zlecone z, ta_umzlec t, osoby o SET
				z.nazwisko = o.nazwisko
			WHERE z.guid = t.guid_zlec and t.guid = o.guid
			;
			Update prace_zlecone z, ta_umzlec t, Pracownicy p SET
				z.wzordekr = p.wzordekr_zlec
			WHERE z.guid = t.guid_zlec and t.guid = p.guid
			;

			-- zlecenia kosztowe - mozna je zakladac, ale troche brakuje danych do tego no i nie bylo takiego ustalenia (w httest sie nie laczy, bo zlecenia sa z bazy ht_ship

			Update prace_zlecone z, ta_umzlec t SET
				z.nrzlecenia = t.nr_zlecenia,
				z.pracastr = t.opis,
				z.guid_zlecenia_prod = (select guid from zlec where nr_zlecenia = t.zlecenie limit 1),
				z.reprezentantfirmy = t. reprezentant,
				z.nrlisty = (select idn from listy_plac where symbol = t.nr_listy_plac limit 1)
			WHERE z.guid = t.guid_zlec
			;

			UPDATE prace_zlecone z, ta_umzlec t
				SET z.WyplataPrzelewem = IF(z.calosc_przelewem = 1, z.DoWyplaty,0),
						z.WyplataGotowka = IF(z.calosc_przelewem = 0, z.DoWyplaty,0),
						z.DataZawarcia = z.DataOd,
						z.godziny = t.rgb * 60
			WHERE z.guid = t.guid_zlec
			;


		/*	update prace_zlecone z, tt_area_order s, prace_zlec_opisy o
			set z.PracaStr = o.opis
			where z.guid = s.orderGUID and o.guid = _RangeGUID;  */

		END;

        IF _Param_F = 'auto' THEN          -- naliczanie automatyczne, zapis do prace_zlecone
            CALL pl_kreator_zlecen('drop.work.tables', '', 0, 0, 0, '', '','','','','');
        END IF;

	END IF;

/*--------------------------------------------------------------------------------------------------------
	'drop.work.tables'
		CALL pl_kreator_zlecen('drop.work.tables', '', 0, 0, 0, '', '','','','','');
------------------------------------------------------------------------------------------------------------*/
	IF _MODE = 'drop.work.tables' THEN

		DROP TABLE IF EXISTS `tt_prace_zlecone`;
		-- CREATE TEMPORARY TABLE  `tt_prace_zlecone` LIKE `prace_zlecone`;

		DROP TABLE IF EXISTS `tt_zlec_skladniki`;
		-- CREATE TEMPORARY TABLE  `tt_zlec_skladniki` LIKE `place_skladniki`;

		DROP TABLE IF EXISTS tt_skladki_place_do_zlec;
		DROP TABLE IF EXISTS tt_skladki_zlec_do_zlec;

		DROP TABLE IF EXISTS tt_prace_zlecone2;
		DROP TABLE IF EXISTS tt_dane_zlecenia;

	END IF;

/*----------------------------------------------------------------------------------
		Naliczenie  jednego zlecenia (metoda standardowa, cokolwiek to znaczy)
		Parametry
		_Param_D	GUID pracownika
		_Param_E data wyplaty
		_Param_F   -- tryb: "auto" (naliczanie automat.) lub "manual" (reczne - wolane z Delphi, bez zapisu do tabeli prace_zlecone!!!)

		CALL pl_kreator_zlecen('calc.one.order', 'ZlecGUID', '2012', '5', 'Prac1', 'FrekwGUID', 'manual');
		CALL pl_kreator_zlecen('calc.one.order', _CurrZlecGUID, _CurrZaZlecenie, _rok, _miesiac, '','','',_CurrWorkerGUID, '','');

CALL pl_kreator_zlecen('create.work.tables', '', '', '', '', '', '','','','','');


mozna wywolac naliczanie dla konkretnego zlecenia, bez jego zapisu - kwota netto to 5238 i dla crist zawsze to jest netto
manula to wlasnie bez zapisu
CALL pl_kreator_zlecen('calc.one.order', 'A_0db67bedd175bcfc8b4e308d538eca28', '5238', '2024', '1', '','','','AUTOID27745', '2024-01-31','manual');


Pracownik dod = 200
			potr 50
poprzedne zlecenia w mieisiacu pracy: dod - 123 / potr 34
to na tym zapisie dod = 200-123 / potr 50-34

DodUbezpMedyczneZlec
PotrDodUbezpMedyczneZlec



-----------------------------------------------------------------------------*/

	IF _MODE = 'calc.one.order' THEN
		SET _DodNocny = 0;
		SET _ProcPremii = 0; SET _SG  = 0; SET _GratyfPodst = 0;
		SET _RozliczajWg = 0;  SET _CzasZ = 0;
		-- zmienne skopiowane z Delphi (tryb "ht")
		SET aPlaca = 0; SET aNadGodz150 = 0; SET aNadGodz200 = 0;  SET aPremia = 0; SET aPremiaMotyw = 0; SET aPremiaUzn = 0;
		SET _godz_noc = 0; SET _godz_yy  = 0;

		SELECT 	k.stawkaGodzinowa, k.ZeSG
		INTO _SG, _RozliczajWg
		FROM  Pracownicy k
		WHERE k.guid = _CurrWorkerGUID
		;

		SET _DataWyplaty = _Param_E;
		SET _netto_brutto = (SELECT netto_brutto FROM tt_dane_zlecenia WHERE guid_zlec = _GUID);

		SET @Przekroczenie183Dni = 0;
		SET @Przekroczenie183Dni = (SELECT dni_183 FROM tt_dane_zlecenia WHERE guid_zlec = _GUID);
		SET @RodzajRyczaltu = IF(@Przekroczenie183Dni=1, 7, 2);

		SET _ZaZlecenie = _Rnd(_ZaZlecenie, 2);
		SET @_ZaZlecenie = _ZaZlecenie;
/*
		SET @DataOd = ifnull(concat(_rok,'-',_miesiac,'-01'), current_date);
		SET @DataDo = ifnull(last_day(concat(_rok,'-',_miesiac,'-01')), current_date);
*/
		SET @DataOd = (SELECT data_od FROM tt_dane_zlecenia WHERE guid_zlec = _GUID);
		SET @DataDo = (SELECT data_do FROM tt_dane_zlecenia WHERE guid_zlec = _GUID);

		SET @_ZlecGUID = _GUID;

		-- miejsce wykonywania pracy (za?o?enie o 3znakowej zgodno?ci symbolu)
		SET _MZ_idn = 0;
		SET @MZ_idn = _MZ_idn;

		SET @_extra_wynagr = 0; --  _extra_wynagr;

		SET @ZwolnienieOdPodatku26Lat = 0;
		SET @ZwolnienieOdPodatkuDR = 0;
		SET @ZwolnienieOdPodatkuPE = 0;
		SET @RezygnPrzesunZal = 0;
		SET @SUMZaliczkaOdroczona = 0;
		SET @SumaZaZlecenie = 0;
		SET @SumaWynagr_prokurent = 0;
		SET @SumaKwota_za_UW = 0;
		SET @SumZaliczkaOdroczonaMsc = 0;
		SET @SumaZaZlecenieMsc = 0;
		SET @SumaWynagr_prokurentMsc = 0;
		SET @SumaKwota_za_UWMsc = 0;
		SET @aPodstPodtk = 0;
		SET @aPodstPodtkHipotetyczna = 0;
		SET @KwotaWolnaOdPodatkuZlec = 0;
		SET @KwotaWolnaOdPodatkuZlecKartoteka = 0;
		SET @SumaKwotaWolnaOdPodatkuZlec = 0;

		SET @DodUbezpMedyczneZlecKartoteka = 0;
		SET @PotrDodUbezpMedyczneZlecKartoteka = 0;
		SET @SumaDodUbezpMedyczneZlec = 0;
		SET @SumaPotrDodUbezpMedyczneZlec = 0;


		SET @UwzglednijPrzesuniecieZal =
		(SELECT ValueB FROM IReg WHERE idkey = 'UwzglednijPrzesuniecieZal' AND rok = YEAR(_Param_E));
		SET @MaxRezygnPrzesunZalKwota =
		(SELECT ValueN FROM IReg WHERE idkey = 'MaxRezygnPrzesunZalKwota' AND rok = YEAR(_Param_E));

		SELECT IF(YEAR(_Param_E)>2019, ZwolnOdPodatku26LatPo2019, ZwolnienieOdPodatku26Lat),
		NaliczUlgeDlaDR, NaliczUlgeDlaPE, RezygnPrzesunZalZlec, KwotaWolnaOdPodatkuZlec,
		DodUbezpMedyczneZlec, PotrDodUbezpMedyczneZlec
		INTO @ZwolnienieOdPodatku26Lat, @ZwolnienieOdPodatkuDR, @ZwolnienieOdPodatkuPE, @RezygnPrzesunZal, @KwotaWolnaOdPodatkuZlecKartoteka, @DodUbezpMedyczneZlecKartoteka, @PotrDodUbezpMedyczneZlecKartoteka
		FROM Pracownicy
		WHERE GUID = _Param_D
		;

  IF @ZwolnienieOdPodatku26Lat = 1 THEN
   IF _Param_E > (select adddate(dataurodzenia, interval 26 year) from osoby where GUID = _Param_D) THEN
    SET @ZwolnienieOdPodatku26Lat = 0;
   END IF;
		END IF;

		-- cdsKwotyZlecZPoprzednichMSC - nowe dane - od początku roku do msc wypłaty
		SELECT
			IFNULL(SUM(pl.ZaliczkaOdroczona),0) as SumZaliczkaOdroczona,
			IFNULL(SUM(pl.ZaZlecenie),0) as SumaZaZlecenie,
			IFNULL(SUM(pl.wynagr_prokurent),0) as SumaWynagr_prokurent,
			IFNULL(SUM(pl.kwota_za_UW),0) as SumaKwota_za_UW
		INTO @SUMZaliczkaOdroczona, @SumaZaZlecenie, @SumaWynagr_prokurent, @SumaKwota_za_UW
		FROM prace_zlecone pl
		WHERE pl.GUID_pracownika = _Param_D
		AND YEAR(ifnull(pl.DataWyplDoDeklar, pl.datawyplaty)) = YEAR(_Param_E)
		AND MONTH(ifnull(pl.DataWyplDoDeklar, pl.datawyplaty)) <= MONTH(_Param_E)
		AND pl.GUID <> _GUID
		and pl.deleted = 0
		;
		-- nowe dane dla msc wypłaty
		SELECT
			IFNULL(SUM(pl.ZaliczkaOdroczona),0) as SumZaliczkaOdroczonaMsc,
			IFNULL(SUM(pl.ZaZlecenie),0) as SumaZaZlecenieMsc,
			IFNULL(SUM(pl.wynagr_prokurent),0) as SumaWynagr_prokurentMsc,
			IFNULL(SUM(pl.kwota_za_UW),0) as SumaKwota_za_UWMsc,
			IFNULL(SUM(pl.KwotaWolnaOdPodatkuZlec),0) as SumaKwotaWolnaOdPodatkuZlec
		INTO @SumZaliczkaOdroczonaMsc, @SumaZaZlecenieMsc, @SumaWynagr_prokurentMsc, @SumaKwota_za_UWMsc, @SumaKwotaWolnaOdPodatkuZlec
		FROM prace_zlecone pl
		WHERE pl.GUID_pracownika = _Param_D
		AND YEAR(ifnull(pl.DataWyplDoDeklar, pl.datawyplaty)) = YEAR(_Param_E)
		AND MONTH(ifnull(pl.DataWyplDoDeklar, pl.datawyplaty)) = MONTH(_Param_E)
		AND pl.GUID <> _GUID
		and pl.deleted = 0
		;
		-- nowe dane dla msc zlecenia!!!
		SELECT
			IFNULL(SUM(pl.DodUbezpMedyczneZlec),0),
			IFNULL(SUM(pl.PotrDodUbezpMedyczneZlec),0)
		INTO @SumaDodUbezpMedyczneZlec, @SumaPotrDodUbezpMedyczneZlec
		FROM prace_zlecone pl
		WHERE pl.GUID_pracownika = _Param_D
		-- AND pl.rok = YEAR(_Param_E)
		-- AND pl.miesiac = MONTH(_Param_E)
		AND pl.rok = _rok
		AND pl.miesiac = _miesiac
		AND pl.GUID <> _GUID
		and pl.deleted = 0
		;

		--
		/* podobny warunek jest teraz wyzej
		SELECT IF(_DataWyplaty >= DATE_ADD(DataUrodzenia,INTERVAL 26 YEAR), 0, 1)
		INTO @ZwolnienieOdPodatku26Lat
		FROM osoby
		WHERE GUID = _Param_D
		;
  */

		-- SET @_ProporcjaNB = 0;
		-- SET @_ZaZlecenieLast = 0;

		IF (_netto_brutto = 1) THEN
			SET @_ProporcjaNB = 1; -- @_ZaZlecenie;
			SET @_ZaZlecenie = @_ZaZlecenie;
		END IF;

		SET @_ZaZlecenie = _Rnd(@_ZaZlecenie, 2);



		-- wyszukanie stawki procentowej wypadkowego dla zleceniodawcy
		SET @ProcFwypadkowyZleceniod =
			(SELECT wartosc FROM pl_proc_wypadkowe
			WHERE CONCAT(rok,LPAD(miesiac,2,0)) <= CONCAT(YEAR(_DataWyplaty),LPAD(MONTH(_DataWyplaty),2,0))
			ORDER BY CONCAT(rok,LPAD(miesiac,2,0)) DESC LIMIT 1);

		-- wstawienie do place_zlec i do place_skladniki, datarachunku jest do edycji w security, a normalnie program wstawia date dzisiajsza, tutaj jest datado, ustalone z AS
		REPLACE INTO tt_prace_zlecone
		(GUID, GUID_pracownika,  miesiac, rok, DataOd, DataDo, DataRachunku, DataWyplaty, NrZlecenia, ZaZlecenie, RodzajRyczaltu, MZ_Idn,
				  KosztyUzyskaniaWproc, ProcFemerytalnyZleceniob, ProcFrentowyZleceniob, ProcFchorobowyZleceniob,
				  ProcFwypadkowyZleceniob, ProcKasaChorychZleceniobPobr, ProcKasaChorychZleceniobOdlicz,
				  ProcFemerytalnyZleceniod, ProcFrentowyZleceniod, ProcFchorobowyZleceniod, ProcFwypadkowyZleceniod,
				  ProcKasaChorychZleceniod, ProcFPracy, ProcFGSP, ProcKasaChorOdliczHipot, rach_do_umowy, ZlecERP, kwota_za_UW, ZwolnienieOdPodatku26Lat, NaliczUlgeDlaDR, NaliczUlgeDlaPE, RezygnPrzesunZal,
				  DodUbezpMedyczneZlec, PotrDodUbezpMedyczneZlec
		)   -- nazwisko,  @pl.gratyf.za_zlecenie
		VALUES(_GUID, _Param_D, _miesiac, _rok, @DataOd, @DataDo, @DataDo, _DataWyplaty, '', @_ZaZlecenie,
			@RodzajRyczaltu,
			@MZ_Idn,
			(SELECT ValueN FROM IReg WHERE idkey = 'Procent_kosztow_um_zlec' AND rok = YEAR(_DataWyplaty)),
			(SELECT ValueN FROM IReg WHERE idkey = 'Proc_emeryt_zlecbiorcy' AND rok = YEAR(_DataWyplaty)),
			(SELECT ValueN FROM IReg WHERE idkey = 'Proc_rent_zlecbiorcy' AND rok = YEAR(_DataWyplaty)),
			(SELECT ValueN FROM IReg WHERE idkey = 'Proc_chorob_zlecbiorcy' AND rok = YEAR(_DataWyplaty)),
			(SELECT ValueN FROM IReg WHERE idkey = 'Proc_wypadk_zlecbiorcy' AND rok = YEAR(_DataWyplaty)),
			(SELECT ValueN FROM IReg WHERE idkey = 'Proc_zdr_pobrane_zlecbiorcy' AND rok = YEAR(_DataWyplaty)),
			(SELECT ValueN FROM IReg WHERE idkey = 'Proc_zdr_odliczone_zlecbiorcy' AND rok = YEAR(_DataWyplaty)),
			(SELECT ValueN FROM IReg WHERE idkey = 'Proc_emeryt_zlecdawcy' AND rok = YEAR(_DataWyplaty)),
			(SELECT ValueN FROM IReg WHERE idkey = 'Proc_rent_zlecdawcy' AND rok = YEAR(_DataWyplaty)),
			(SELECT ValueN FROM IReg WHERE idkey = 'Proc_chorob_zlecdawcy' AND rok = YEAR(_DataWyplaty)),
			-- , ProcFwypadkowyZleceniod DBPlacesProc_wypadkowe.GetProcentWypadkowego(aDataWyplaty);
			-- (SELECT ValueN FROM IReg WHERE idkey = 'Proc_wypadk_pracod' AND rok = _rok),
			@ProcFwypadkowyZleceniod,
			(SELECT ValueN FROM IReg WHERE idkey = 'Proc_zdr_pobrane_zlecdawcy' AND rok = YEAR(_DataWyplaty)),
			(SELECT ValueN FROM IReg WHERE idkey = 'ZUS_FP_zlecdawcy' AND rok = YEAR(_DataWyplaty)),
			(SELECT ValueN FROM IReg WHERE idkey = 'ZUS_FGSP_zlecdawcy' AND rok = YEAR(_DataWyplaty)),
			(SELECT ValueN FROM IReg WHERE idkey = 'Proc_zdr_odliczone_zlecbiorcy' AND rok = 2021),
			0,1, -- zmiana znacznika rach_do_umowy na podstawie emaila AS po ustaleniach w Crist
			@_extra_wynagr, @ZwolnienieOdPodatku26Lat, @ZwolnienieOdPodatkuDR, @ZwolnienieOdPodatkuPE, @RezygnPrzesunZal,
			GREATEST(@DodUbezpMedyczneZlecKartoteka - @SumaDodUbezpMedyczneZlec, 0),
			GREATEST(@PotrDodUbezpMedyczneZleckartoteka - @SumaPotrDodUbezpMedyczneZlec, 0)
		);

		SET @a550 = '550';

		-- Z_1-Z_5(rodz.skl = 0)
		REPLACE INTO tt_zlec_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
			VALUES(concat('A-',md5(concat(_GUID, 'Z_1'))), 'Z_1', @_ZlecGUID, @_ZaZlecenie, @_ZaZlecenie , 0);  -- @pl.gratyf.za_zlecenie, @pl.gratyf.za_zlecenie
		set @jmam='z1';
		REPLACE INTO tt_zlec_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
			VALUES(concat('A-',md5(concat(_GUID, 'Z_2'))), 'Z_2', @_ZlecGUID, 0, 0, 0);
		set @jmam='z2';
		REPLACE INTO tt_zlec_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
			VALUES(concat('A-',md5(concat(_GUID, 'Z_3'))), 'Z_3', @_ZlecGUID, 0, 0, 0);
		set @jmam='z3';
		REPLACE INTO tt_zlec_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
			VALUES(concat('A-',md5(concat(_GUID, 'Z_4'))), 'Z_4', @_ZlecGUID, 0, 0, 0);
		set @jmam='z4';
		REPLACE INTO tt_zlec_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
			VALUES(concat('A-',md5(concat(_GUID, 'Z_5'))), 'Z_5', @_ZlecGUID, 0, 0, 0);
		set @jmam='z5';
		-- Z_ZUS_1 - 9 (rodz.skl = 6)  _ZLEC_ZUS
		REPLACE INTO tt_zlec_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
			VALUES(concat('A-',md5(concat(_GUID, 'Z_ZUS_1'))), 'Z_ZUS_1', @_ZlecGUID, 0, 0, _ZLEC_ZUS);

		REPLACE INTO tt_zlec_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
			VALUES(concat('A-',md5(concat(_GUID, 'Z_ZUS_2'))), 'Z_ZUS_2', @_ZlecGUID, 0, 0, _ZLEC_ZUS);

		REPLACE INTO tt_zlec_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
			VALUES(concat('A-',md5(concat(_GUID, 'Z_ZUS_3'))), 'Z_ZUS_3', @_ZlecGUID, 0, 0, _ZLEC_ZUS);

		REPLACE INTO tt_zlec_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
			VALUES(concat('A-',md5(concat(_GUID, 'Z_ZUS_4'))), 'Z_ZUS_4', @_ZlecGUID, 0, 0, _ZLEC_ZUS);

		REPLACE INTO tt_zlec_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
			VALUES(concat('A-',md5(concat(_GUID, 'Z_ZUS_5'))), 'Z_ZUS_5', @_ZlecGUID, 0, 0, _ZLEC_ZUS);

		REPLACE INTO tt_zlec_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
			VALUES(concat('A-',md5(concat(_GUID, 'Z_ZUS_6'))), 'Z_ZUS_6', @_ZlecGUID, 0, 0, _ZLEC_ZUS);

		REPLACE INTO tt_zlec_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
			VALUES(concat('A-',md5(concat(_GUID, 'Z_ZUS_7'))), 'Z_ZUS_7', @_ZlecGUID, 0, 0, _ZLEC_ZUS);

		REPLACE INTO tt_zlec_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
			VALUES(concat('A-',md5(concat(_GUID, 'Z_ZUS_8'))), 'Z_ZUS_8', @_ZlecGUID, 0, 0, _ZLEC_ZUS);

		REPLACE INTO tt_zlec_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
			VALUES(concat('A-',md5(concat(_GUID, 'Z_ZUS_9'))), 'Z_ZUS_9', @_ZlecGUID, 0, 0, _ZLEC_ZUS);

/*
		IF (ifnull(_SklPZU, 0)!=0) THEN
			REPLACE INTO tt_zlec_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
				VALUES(concat('A-',md5(concat(_GUID, '{C50959B6-A7AA-4836-AA68-1546E7FB6E02}'))), '{C50959B6-A7AA-4836-AA68-1546E7FB6E02}', @_ZlecGUID, _SklPZU, _SklPZU, _ZLEC_Potr);
		END IF;

		IF (ifnull(_SklHestia, 0)!=0) THEN
			REPLACE INTO tt_zlec_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
				VALUES(concat('A-',md5(concat(_GUID, '{371577DA-2ADC-434D-899A-4E27CA665A1E}'))), '{371577DA-2ADC-434D-899A-4E27CA665A1E}', @_ZlecGUID, _SklHestia, _SklHestia, _ZLEC_Potr);
		END IF;
*/

		CALL pl_kreator_zlecen('pl.przepisz.dane.pracownika.one.zlec', _GUID, '', _rok, _miesiac, _Param_A, _Param_B, _Param_C, _Param_D, _Param_E, _Param_F);

		SET @_netto_brutto_kwota = @_ZaZlecenie;
		SET @countU = 0;
		set @info = '';
			-- przeliczenie kwot innych potracen i innych dodatkow
			SET _SQLText = 'UPDATE tt_prace_zlecone z
				SET
					z.InneDod = ifnull((select sum(kwota) from tt_zlec_skladniki s where s.guid_zapisu_placowego = ''#_ZlecGUID#'' and s.RodzajSkladnika = #_ZLEC_Dod#),0),
					z.InnePotr = ifnull((select sum(kwota) from tt_zlec_skladniki s where s.guid_zapisu_placowego = ''#_ZlecGUID#'' and s.RodzajSkladnika = #_ZLEC_Potr#),0)
				WHERE
					z.GUID = ''#_ZlecGUID#'' ;
				';
			SET _SQLText = REPLACE(_SQLText, '#_ZlecGUID#', _GUID);
			SET _SQLText = REPLACE(_SQLText, '#_ZLEC_Dod#', cInneDodatki);
			SET _SQLText = REPLACE(_SQLText, '#_ZLEC_Potr#', _ZLEC_Potr);
			SET @_SQLText = _SQLText;
			CALL _ExecuteCmd(_SQLText, @Error);

		SET @a629 = '629';

			REPEAT
				UPDATE tt_prace_zlecone SET ZaZlecenie = @_ZaZlecenie WHERE GUID = _GUID;

				REPLACE INTO tt_zlec_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
				VALUES(concat('A-',md5(concat(_GUID, 'Z_1'))), 'Z_1', _GUID, @_ZaZlecenie, @_ZaZlecenie , 0);

				-- SKLADKI ZUS
				CALL pl_kreator_zlecen('calc.one.order.mode.skladki', _GUID, '', _rok,_miesiac, _Param_A, _Param_B, _Param_C, _Param_D, _Param_E, _Param_F);

		SET @a640 = '640';

				-- przeliczenie kwot
				IF ((@ZwolnienieOdPodatku26Lat = 1 OR @ZwolnienieOdPodatkuDR = 1 OR @ZwolnienieOdPodatkuPE = 1)
						AND @RodzajRyczaltu <> 2) THEN
-- 26Lat BEGIN
					IF @ZwolnienieOdPodatku26Lat = 1 THEN -- wejscie tylko dla 26 lat
						SET @MaxDochodZwolnionyPodatek26lat = 0;
						CALL _IReg_Get('Place2003\\ZwPodatkowe', 'MaxDochodZwolnionyPodatek26lat', YEAR(_DataWyplaty), 'DOUBLE', @MaxDochodZwolnionyPodatek26lat, 85528.00);

						SET @KwotaDoLimitu26Narast = 0;
						SELECT SUM(KwotaDoLimitu26Narast) INTO @KwotaDoLimitu26Narast
						FROM (
						( SELECT IFNULL(SUM(KwotaDoLimitu26),0) AS KwotaDoLimitu26Narast
							FROM prace_zlecone WHERE GUID_Pracownika = _Param_D AND  YEAR(datawyplaty) = YEAR(_Param_E) AND GUID <> _GUID AND deleted = 0
						) UNION
						( SELECT IFNULL(SUM(KwotaDoLimitu26),0) AS KwotaDoLimitu26Narast
							FROM place WHERE GUID_pracownika = _Param_D AND YEAR(datawyplaty) = YEAR(_Param_E) AND GUID <> _GUID AND deleted = 0
						)
						) newTable; -- jest to kwota do limitu bez aktualnego zapisu



						SET @KwotaDoLimitu26 = 0; -- teraz kwota do limitu na tym zapisie, ale wstepna!!!
						SELECT _Rnd2(ZaZlecenie + wynagr_prokurent + kwota_za_UW +
								(dieta_delegacje * ProcFemerytalnyZleceniob/100 +
								dieta_delegacje * ProcFrentowyZleceniob/100 +
								dieta_delegacje * ProcFchorobowyZleceniob/100) +
								SkladkaPPE + PPKskladkaPracod + DodUbezpMedyczneZlec)
						INTO @KwotaDoLimitu26
						FROM tt_prace_zlecone
						WHERE GUID = _GUID
						;


						IF @MaxDochodZwolnionyPodatek26lat >= (@KwotaDoLimitu26Narast+@KwotaDoLimitu26) THEN
							UPDATE tt_prace_zlecone z SET z.RazemSklZleceniobiorcyDoOdlicz = 0, z.zPodstPPDprzedZaokr = 0, z.Dochod = 0,
							z.KosztyUzyskania = 0, z.ZaliczkaPrzedSklUbezp = 0
							WHERE GUID = _GUID;
						ELSE --  tutaj wchodzimy gdy nastpilo przeekroczenie limitu ulgi albo na tym zapisie albo   wczesniej
                            IF @MaxDochodZwolnionyPodatek26lat > (@KwotaDoLimitu26Narast) THEN --  nie było wczesniej przekroczenia limitu czyli przekroczenie jest na tym zapisie
							-- SET @KwotaDoLimitu26 = _Rnd2(@MaxDochodZwolnionyPodatek26lat - @KwotaDoLimitu26Narast);
/*
								UPDATE tt_prace_zlecone z SET z.RazemSklZleceniobiorcyDoOdlicz =
										_Rnd2(((@KwotaDoLimitu26Narast + @KwotaDoLimitu26 - z.PPKskladkaPracod) - @MaxDochodZwolnionyPodatek26lat)
											/ ((@KwotaDoLimitu26 - z.PPKskladkaPracod)) * z.RazemSkladkiZleceniobiorcy)
								WHERE GUID = _GUID
								;
*/
								UPDATE tt_prace_zlecone z
								SET z.RazemSklZleceniobiorcyDoOdlicz =
										_Rnd2(((@KwotaDoLimitu26Narast + ZaZlecenie + DodUbezpMedyczneZlec  - @MaxDochodZwolnionyPodatek26lat)
											/ (ZaZlecenie + DodUbezpMedyczneZlec)) * z.RazemSkladkiZleceniobiorcy)
								WHERE GUID = _GUID
								;

								-- 80.000 + 10.000 - 85528=4472

								UPDATE tt_prace_zlecone z SET z.KosztyUzyskania =
									_Rnd2(((@KwotaDoLimitu26Narast + ZaZlecenie + DodUbezpMedyczneZlec) -@MaxDochodZwolnionyPodatek26lat
									- z.RazemSklZleceniobiorcyDoOdlicz) * z.KosztyUzyskaniaWproc / 100)
								WHERE GUID = _GUID
								;

								UPDATE tt_prace_zlecone z SET z.zPodstPPDprzedZaokr =
								((@KwotaDoLimitu26Narast + @KwotaDoLimitu26)- @MaxDochodZwolnionyPodatek26lat)
								- z.RazemSklZleceniobiorcyDoOdlicz - z.KosztyUzyskania
								WHERE GUID = _GUID;


								UPDATE tt_prace_zlecone z SET z.Dochod = _Rnd(zPodstPPDprzedZaokr, 0)
								WHERE GUID = _GUID
								;

								SET @KwotaDoLimitu26 = @KwotaDoLimitu26 - (@KwotaDoLimitu26Narast + @KwotaDoLimitu26 -@MaxDochodZwolnionyPodatek26lat);


							ELSE -- przekroczenie limitu nastapilo juz wczeniej
								 -- wszystko jest opodatkowane - licze koszty tak jak przy normalnym zleceniu
								SET @KwotaDoLimitu26 = 0;

								UPDATE tt_prace_zlecone z SET z.KosztyUzyskania =
									_Rnd2((z.ZaZlecenie + kwota_za_UW + DodUbezpMedyczneZlec - z.RazemSkladkiZleceniobiorcy) * KosztyUzyskaniaWproc / 100)
								WHERE z.GUID = _GUID
								;

								UPDATE tt_prace_zlecone z SET z.zPodstPPDprzedZaokr = z.ZaZlecenie + z.kwota_za_UW + z.DodUbezpMedyczneZlec + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab - z.RazemSklZleceniobiorcyDoOdlicz - z.KosztyUzyskania  + z.PPKskladkaPracod
								WHERE GUID = _GUID
								;

								UPDATE tt_prace_zlecone z SET z.Dochod = _Rnd(zPodstPPDprzedZaokr, 0)
								WHERE GUID = _GUID
								;

							END IF;
						END IF;

						UPDATE tt_prace_zlecone z SET z.ZaliczkaPrzedSklUbezp =
							z.Dochod * z.ProcentPodatku / 100
						WHERE GUID = _GUID
						;

					END IF; -- wejscie tylko dla 26 lat

					IF @ZwolnienieOdPodatkuDR = 1 THEN -- wejscie tylko dla DR
						SET @MaxDochodZwolnionyPodatekDR = 0;
						CALL _IReg_Get('Place2003\\ZwPodatkowe', 'MaxDochodZwolnionyPodatekDR', YEAR(_DataWyplaty), 'DOUBLE', @MaxDochodZwolnionyPodatekDR, 85528.00);

						SET @KwotaDoLimituDRNarast = 0;
						SELECT SUM(KwotaDoLimituDRNarast) INTO @KwotaDoLimituDRNarast
						FROM (
						( SELECT IFNULL(SUM(KwotaDoLimituDR),0) AS KwotaDoLimituDRNarast
							FROM prace_zlecone WHERE GUID_Pracownika = _Param_D AND  YEAR(datawyplaty) = YEAR(_Param_E) AND GUID <> _GUID AND deleted = 0
						) UNION
						( SELECT IFNULL(SUM(KwotaDoLimituDR),0) AS KwotaDoLimituDRNarast
							FROM place WHERE GUID_pracownika = _Param_D AND YEAR(datawyplaty) = YEAR(_Param_E) AND GUID <> _GUID AND deleted = 0
						)
						) newTable;

						SET @KwotaDoLimituDR = 0;
						SELECT _Rnd2(ZaZlecenie + wynagr_prokurent + kwota_za_UW +
								(dieta_delegacje * ProcFemerytalnyZleceniob/100 +
								dieta_delegacje * ProcFrentowyZleceniob/100 +
								dieta_delegacje * ProcFchorobowyZleceniob/100) +
								SkladkaPPE + PPKskladkaPracod + DodUbezpMedyczneZlec)
						INTO @KwotaDoLimituDR
						FROM tt_prace_zlecone
						WHERE GUID = _GUID
						;


						IF @MaxDochodZwolnionyPodatekDR >= (@KwotaDoLimituDRNarast+@KwotaDoLimituDR) THEN
							UPDATE tt_prace_zlecone z SET z.RazemSklZleceniobiorcyDoOdlicz = 0, z.zPodstPPDprzedZaokr = 0, z.Dochod = 0,
							z.KosztyUzyskania = 0, z.ZaliczkaPrzedSklUbezp = 0
							WHERE GUID = _GUID;
						ELSE --  tutaj wchodzimy gdy nastpilo przeekroczenie limitu ulgi albo na tym zapisie albo   wczesniej
                            IF @MaxDochodZwolnionyPodatekDR > (@KwotaDoLimituDRNarast) THEN --  nie było wczesniej przekroczenia limitu czyli przekroczenie jest na tym zapisie
							-- SET @KwotaDoLimitu26 = _Rnd2(@MaxDochodZwolnionyPodatek26lat - @KwotaDoLimitu26Narast);

								UPDATE tt_prace_zlecone z
								SET z.RazemSklZleceniobiorcyDoOdlicz =
										_Rnd2(((@KwotaDoLimituDRNarast + ZaZlecenie + DodUbezpMedyczneZlec  - @MaxDochodZwolnionyPodatekDR)
											/ (ZaZlecenie + DodUbezpMedyczneZlec)) * z.RazemSkladkiZleceniobiorcy)
								WHERE GUID = _GUID
								;

								-- 80.000 + 10.000 - 85528=4472

								UPDATE tt_prace_zlecone z SET z.KosztyUzyskania =
									_Rnd2(((@KwotaDoLimituDRNarast + ZaZlecenie + DodUbezpMedyczneZlec) -@MaxDochodZwolnionyPodatekDR
									- z.RazemSklZleceniobiorcyDoOdlicz) * z.KosztyUzyskaniaWproc / 100)
								WHERE GUID = _GUID
								;

								UPDATE tt_prace_zlecone z SET z.zPodstPPDprzedZaokr =
								((@KwotaDoLimituDRNarast + @KwotaDoLimituDR)- @MaxDochodZwolnionyPodatekDR)
								- z.RazemSklZleceniobiorcyDoOdlicz - z.KosztyUzyskania
								WHERE GUID = _GUID;


								UPDATE tt_prace_zlecone z SET z.Dochod = _Rnd(zPodstPPDprzedZaokr, 0)
								WHERE GUID = _GUID
								;

								SET @KwotaDoLimituDR = @KwotaDoLimituDR - (@KwotaDoLimituDRNarast + @KwotaDoLimituDR -@MaxDochodZwolnionyPodatekDR);


							ELSE -- przekroczenie limitu nastapilo juz wczeniej
								 -- wszystko jest opodatkowane - licze koszty tak jak przy normalnym zleceniu
								SET @KwotaDoLimituDR = 0;

								UPDATE tt_prace_zlecone z SET z.KosztyUzyskania =
									_Rnd2((z.ZaZlecenie + kwota_za_UW + DodUbezpMedyczneZlec - z.RazemSkladkiZleceniobiorcy) * KosztyUzyskaniaWproc / 100)
								WHERE z.GUID = _GUID
								;

								UPDATE tt_prace_zlecone z SET z.zPodstPPDprzedZaokr = z.ZaZlecenie + z.kwota_za_UW + z.DodUbezpMedyczneZlec + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab - z.RazemSklZleceniobiorcyDoOdlicz - z.KosztyUzyskania  + z.PPKskladkaPracod
								WHERE GUID = _GUID
								;

								UPDATE tt_prace_zlecone z SET z.Dochod = _Rnd(zPodstPPDprzedZaokr, 0)
								WHERE GUID = _GUID
								;

							END IF;
						END IF;

						UPDATE tt_prace_zlecone z SET z.ZaliczkaPrzedSklUbezp =
							z.Dochod * z.ProcentPodatku / 100
						WHERE GUID = _GUID
						;

					END IF; -- wejscie tylko dla DR

					IF @ZwolnienieOdPodatkuPE = 1 THEN -- wejscie tylko dla PE

						SET @MaxDochodZwolnionyPodatekPE = 0;
						CALL _IReg_Get('Place2003\\ZwPodatkowe', 'MaxDochodZwolnionyPodatekPE', YEAR(_DataWyplaty), 'DOUBLE', @MaxDochodZwolnionyPodatekPE, 85528.00);

						SET @KwotaDoLimituPENarast = 0;
						SELECT SUM(KwotaDoLimituPENarast) INTO @KwotaDoLimituPENarast
						FROM (
						( SELECT IFNULL(SUM(KwotaDoLimituPE),0) AS KwotaDoLimituPENarast
							FROM prace_zlecone WHERE GUID_Pracownika = _Param_D AND  YEAR(datawyplaty) = YEAR(_Param_E) AND GUID <> _GUID AND deleted = 0
						) UNION
						( SELECT IFNULL(SUM(KwotaDoLimituPE),0) AS KwotaDoLimituPENarast
							FROM place WHERE GUID_pracownika = _Param_D AND YEAR(datawyplaty) = YEAR(_Param_E) AND GUID <> _GUID AND deleted = 0
						)
						) newTable;

						SET @KwotaDoLimituPE = 0;
						SELECT _Rnd2(ZaZlecenie + wynagr_prokurent + kwota_za_UW +
								(dieta_delegacje * ProcFemerytalnyZleceniob/100 +
								dieta_delegacje * ProcFrentowyZleceniob/100 +
								dieta_delegacje * ProcFchorobowyZleceniob/100) +
								SkladkaPPE + PPKskladkaPracod + DodUbezpMedyczneZlec)
						INTO @KwotaDoLimituPE
						FROM tt_prace_zlecone
						WHERE GUID = _GUID
						;


						IF @MaxDochodZwolnionyPodatekPE >= (@KwotaDoLimituPENarast+@KwotaDoLimituPE) THEN
							UPDATE tt_prace_zlecone z SET z.RazemSklZleceniobiorcyDoOdlicz = 0, z.zPodstPPDprzedZaokr = 0, z.Dochod = 0,
							z.KosztyUzyskania = 0, z.ZaliczkaPrzedSklUbezp = 0
							WHERE GUID = _GUID;
						ELSE --  tutaj wchodzimy gdy nastpilo przeekroczenie limitu ulgi albo na tym zapisie albo   wczesniej
                            IF @MaxDochodZwolnionyPodatekPE > (@KwotaDoLimituPENarast) THEN --  nie było wczesniej przekroczenia limitu czyli przekroczenie jest na tym zapisie

								UPDATE tt_prace_zlecone z
								SET z.RazemSklZleceniobiorcyDoOdlicz =
										_Rnd2(((@KwotaDoLimituPENarast + ZaZlecenie + DodUbezpMedyczneZlec  - @MaxDochodZwolnionyPodatekPE)
											/ (ZaZlecenie + DodUbezpMedyczneZlec)) * z.RazemSkladkiZleceniobiorcy)
								WHERE GUID = _GUID
								;

								-- 80.000 + 10.000 - 85528=4472

								UPDATE tt_prace_zlecone z SET z.KosztyUzyskania =
									_Rnd2(((@KwotaDoLimituPENarast + ZaZlecenie + DodUbezpMedyczneZlec) -@MaxDochodZwolnionyPodatekPE
									- z.RazemSklZleceniobiorcyDoOdlicz) * z.KosztyUzyskaniaWproc / 100)
								WHERE GUID = _GUID
								;

								UPDATE tt_prace_zlecone z SET z.zPodstPPDprzedZaokr =
								((@KwotaDoLimituPENarast + @KwotaDoLimituPE)- @MaxDochodZwolnionyPodatekPE)
								- z.RazemSklZleceniobiorcyDoOdlicz - z.KosztyUzyskania
								WHERE GUID = _GUID;


								UPDATE tt_prace_zlecone z SET z.Dochod = _Rnd(zPodstPPDprzedZaokr, 0)
								WHERE GUID = _GUID
								;

								SET @KwotaDoLimituPE = @KwotaDoLimituPE - (@KwotaDoLimituPENarast + @KwotaDoLimituPE -@MaxDochodZwolnionyPodatekPE);


							ELSE -- przekroczenie limitu nastapilo juz wczeniej
								 -- wszystko jest opodatkowane - licze koszty tak jak przy normalnym zleceniu
								SET @KwotaDoLimituPE = 0;

								UPDATE tt_prace_zlecone z SET z.KosztyUzyskania =
									_Rnd2((z.ZaZlecenie + kwota_za_UW + DodUbezpMedyczneZlec - z.RazemSkladkiZleceniobiorcy) * KosztyUzyskaniaWproc / 100)
								WHERE z.GUID = _GUID
								;

								UPDATE tt_prace_zlecone z SET z.zPodstPPDprzedZaokr = z.ZaZlecenie + z.kwota_za_UW + z.DodUbezpMedyczneZlec + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab - z.RazemSklZleceniobiorcyDoOdlicz - z.KosztyUzyskania  + z.PPKskladkaPracod
								WHERE GUID = _GUID
								;

								UPDATE tt_prace_zlecone z SET z.Dochod = _Rnd(zPodstPPDprzedZaokr, 0)
								WHERE GUID = _GUID
								;

							END IF;
						END IF;

						UPDATE tt_prace_zlecone z SET z.ZaliczkaPrzedSklUbezp =
							z.Dochod * z.ProcentPodatku / 100
						WHERE GUID = _GUID
						;


					END IF; -- wejscie tylko dla PE

                    UPDATE tt_prace_zlecone z
						SET z.KosztyUzyskaniaHipotetyczna = _Rnd((z.ZaZlecenie + kwota_za_UW + DodUbezpMedyczneZlec - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2),
						z.KwotaBrutto = z.ZaZlecenie + wynagr_prokurent + kwota_za_UW + DodUbezpMedyczneZlec + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab - z.RazemSklZleceniobiorcyDoOdlicz
                    WHERE GUID = _GUID;

					SET _SQLText = 'UPDATE tt_prace_zlecone z
						SET
						z.DochodHipotetyczna = _Rnd(
						(z.ZaZlecenie + kwota_za_UW + DodUbezpMedyczneZlec + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab - z.RazemSkladkiZleceniobiorcy)
						- KosztyUzyskaniaHipotetyczna
						+ SkladkaPPE
						+ PPKskladkaPracod,
							0),
						z.ZalPrzedSklUbezpHipotetyczna = _Rnd(z.KwotaBrutto - z.wynagr_prokurent + z.SkladkaPPE + z.PPKskladkaPracod
                            + z.RazemSklZleceniobiorcyDoOdlicz
							- z.RazemSkladkiZleceniobiorcy - z.KosztyUzyskaniaHipotetyczna
							, 0) * (z.ProcentPodatkuHipot/100),

						z.Zaliczka = _Rnd(
						 			GREATEST(0, _Rnd2(z.Dochod * (z.ProcentPodatku/100)) - z.SklKasaChorychZleceniobOdlicz)
								, 0),


						z.ZaliczkaHipotetyczna  = _Rnd(GREATEST(0, _Rnd((z.ZaZlecenie + kwota_za_UW + DodUbezpMedyczneZlec + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab)
									- z.RazemSkladkiZleceniobiorcy
									+ z.PPKskladkaPracod
									- _Rnd((z.ZaZlecenie + kwota_za_UW + DodUbezpMedyczneZlec - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2)  , 0) * (z.ProcentPodatkuHipot/100) - z.SklKCZlecOdliczHipot), 0)
						WHERE
							z.GUID = ''#_ZlecGUID#'' ; '
					;

					SET _SQLText = REPLACE(_SQLText, '#_ZlecGUID#', _GUID);
					SET @_SQLTextUpdate = _SQLText;
					CALL _ExecuteCmd(_SQLText, @Error);

					-- sekcja skopiowana z przebiegu dla zwyklej umowy, bo jednak przy czesciowym przekroczeniu trzeba i kwote wolna uwzglednic
					IF @KwotaWolnaOdPodatkuZlecKartoteka > 0 AND (@SumaKwotaWolnaOdPodatkuZlec < @KwotaWolnaOdPodatkuZlecKartoteka) THEN

						SET @PozostaloKwotyWolnej = @KwotaWolnaOdPodatkuZlecKartoteka - @SumaKwotaWolnaOdPodatkuZlec;

						SELECT z.ZaliczkaPrzedSklUbezp INTO @zaliczkaZapis FROM tt_prace_zlecone z WHERE z.guid = _GUID;

						SET @KwotaWolnaNaZapisie = LEAST(@zaliczkaZapis, @PozostaloKwotyWolnej);

						UPDATE tt_prace_zlecone z SET
							KwotaWolnaOdPodatkuZlec = @KwotaWolnaNaZapisie,
							z.zaliczka = _Rnd(z.Zaliczka - @KwotaWolnaNaZapisie,0),
							z.ZaliczkaPrzedSklUbezp = z.ZaliczkaPrzedSklUbezp - @KwotaWolnaNaZapisie
						WHERE z.GUID = _GUID;

					END IF;

					-- obliczamy czy stosować rozporzadzenie o przesunieciu poboru zaliczki, czyli obliczania ZaliczkiOdroczonej
					-- ale nic wiecej nie robimy bo 26lat DR PE są zwolnieni z podatku a wiece podatek jest =0
					-- i nie mozna go juz bardziej zmniejszyc, ustawiamy tylko pole ZaliczkaOdroczona na 0
					SET @CzyStosowacRozporzadzKwota =
						(SELECT ZaZlecenie + wynagr_prokurent + kwota_za_UW + DodUbezpMedyczneZlec
							FROM tt_prace_zlecone WHERE GUID = _GUID)
						+ @SumaZaZlecenieMsc + @SumaWynagr_prokurentMsc + @SumaKwota_za_UWMsc;

					UPDATE tt_prace_zlecone z
						SET z.KwotaNetto =
							if (z.RazemSkladkiZleceniobiorcy <> z.RazemSklZleceniobiorcyDoOdlicz,
								if (z.RazemSklZleceniobiorcyDoOdlicz = 0,
										z.KwotaBrutto - DodUbezpMedyczneZlec - z.RazemSkladkiZleceniobiorcy - z.SklKasaChorychZleceniobPobr,

										z.ZaZlecenie + z.wynagr_prokurent + z.kwota_za_UW
										+ z.ZasChorRazem + z.ZasMacierz
										+ z.ZasRehab + z.ZasOpiekun - z.RazemSkladkiZleceniobiorcy - z.SklKasaChorychZleceniobPobr -
										z.zaliczka),

							z.KwotaBrutto - DodUbezpMedyczneZlec - z.SklKasaChorychZleceniobPobr - z.zaliczka),
							z.KwotaDoLimitu26 = @KwotaDoLimitu26,
							z.KwotaDoLimitu26Narast = @KwotaDoLimitu26Narast,
							z.KwotaDoLimituDR = @KwotaDoLimituDR,
							z.KwotaDoLimituDRNarast = @KwotaDoLimituDRNarast,
							z.KwotaDoLimituPE = @KwotaDoLimituPE,
							z.KwotaDoLimituPENarast = @KwotaDoLimituPENarast,
							z.ZaliczkaOdroczona = 0
					WHERE z.GUID = _GUID
					;

					UPDATE tt_prace_zlecone z
						SET z.DoWyplaty = _Rnd(z.KwotaNetto - PotrDodUbezpMedyczneZlec - z.InnePotr + z.InneDod + z.InneZasilkZUS, 2) - z.PPKskladkaPracow
					WHERE z.GUID = _GUID
					;
-- 26Lat END
				ELSE -- koniec warunku zwolnien 26 lub DR lub PE i ryczaltu <> 2
                    -- rodzajryczaltu = 7 oznacza zwykla, ozusowana umowe zlec, mniej niz 7 to rozne formy ryczaltu
					IF @RodzajRyczaltu = 7 THEN

						UPDATE  tt_prace_zlecone z SET
							z.RazemSklZleceniobiorcyDoOdlicz = z.RazemSkladkiZleceniobiorcy
						WHERE z.GUID = _GUID
						;

						UPDATE tt_prace_zlecone z
                            SET z.KosztyUzyskaniaHipotetyczna = _Rnd((z.ZaZlecenie + kwota_za_UW + DodUbezpMedyczneZlec - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2),
                            z.KwotaBrutto = z.ZaZlecenie + wynagr_prokurent + kwota_za_UW + DodUbezpMedyczneZlec + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab - z.RazemSklZleceniobiorcyDoOdlicz
						WHERE z.GUID = _GUID
						;

						UPDATE  tt_prace_zlecone z SET
							z.KosztyUzyskania = z.KosztyUzyskaniaHipotetyczna
						WHERE z.GUID = _GUID
						;

                        -- wyliczam podstawy opodatkowania, bo juz mnie szlag trafil
						SELECT _Rnd(z.KwotaBrutto - z.KosztyUzyskania - z.wynagr_prokurent + PPKskladkaPracod, 0),

                            _Rnd(z.KwotaBrutto - z.wynagr_prokurent + PPKskladkaPracod + z.RazemSklZleceniobiorcyDoOdlicz -
                            RazemSkladkiZleceniobiorcy - KosztyUzyskaniaHipotetyczna,0)

						INTO @aPodstPodtk, @aPodstPodtkHipotetyczna
						FROM tt_prace_zlecone z
						WHERE z.GUID = _GUID
						;


						UPDATE  tt_prace_zlecone z SET
							z.ZaliczkaPrzedSklUbezp = @aPodstPodtk * (z.ProcentPodatku/100),
							z.ZalPrzedSklUbezpHipotetyczna = @aPodstPodtkHipotetyczna * (z.ProcentPodatkuHipot/100)
						WHERE z.GUID = _GUID
                        ;


						UPDATE  tt_prace_zlecone z SET
							z.DochodHipotetyczna = _Rnd(
							(z.ZaZlecenie + kwota_za_UW + DodUbezpMedyczneZlec + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab - z.RazemSkladkiZleceniobiorcy)
							- KosztyUzyskaniaHipotetyczna
							+ SkladkaPPE
							+ PPKskladkaPracod,
								0),

                            z.zPodstPPDprzedZaokr = z.KwotaBrutto - z.KosztyUzyskania  + z.PPKskladkaPracod,
                            z.Dochod = _Rnd(z.KwotaBrutto - z.KosztyUzyskania  + z.PPKskladkaPracod, 0),
                            -- regint.Zaokr_podstawy_zaliczki   dochod = KwotaBrutto - KosztyUzyskania

							z.Zaliczka  = _Rnd(GREATEST(0, _Rnd((z.ZaZlecenie + kwota_za_UW + DodUbezpMedyczneZlec + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab)
										- z.RazemSkladkiZleceniobiorcy
										+ z.PPKskladkaPracod
										- _Rnd((z.ZaZlecenie + kwota_za_UW + DodUbezpMedyczneZlec - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2)  , 0) * (z.ProcentPodatku/100) - z.SklKasaChorychZleceniobOdlicz), 0),


							z.ZaliczkaHipotetyczna  = _Rnd(GREATEST(0, _Rnd((z.ZaZlecenie + kwota_za_UW + DodUbezpMedyczneZlec + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab)
										- z.RazemSkladkiZleceniobiorcy
										+ z.PPKskladkaPracod
										- _Rnd((z.ZaZlecenie + kwota_za_UW + DodUbezpMedyczneZlec - z.RazemSkladkiZleceniobiorcy) * (KosztyUzyskaniaWproc / 100), 2)  , 0) * (z.ProcentPodatkuHipot/100) - z.SklKCZlecOdliczHipot), 0)

						WHERE z.GUID = _GUID;


						IF @KwotaWolnaOdPodatkuZlecKartoteka > 0 AND (@SumaKwotaWolnaOdPodatkuZlec < @KwotaWolnaOdPodatkuZlecKartoteka) THEN

							SET @PozostaloKwotyWolnej = @KwotaWolnaOdPodatkuZlecKartoteka - @SumaKwotaWolnaOdPodatkuZlec;

							SELECT z.ZaliczkaPrzedSklUbezp INTO @zaliczkaZapis FROM tt_prace_zlecone z WHERE z.guid = _GUID;

							SET @KwotaWolnaNaZapisie = LEAST(@zaliczkaZapis, @PozostaloKwotyWolnej);

							UPDATE tt_prace_zlecone z SET
								KwotaWolnaOdPodatkuZlec = @KwotaWolnaNaZapisie,
								z.zaliczka = _Rnd(z.Zaliczka - @KwotaWolnaNaZapisie,0),
								z.ZaliczkaPrzedSklUbezp = z.ZaliczkaPrzedSklUbezp - @KwotaWolnaNaZapisie
							WHERE z.GUID = _GUID;

						END IF;

						UPDATE tt_prace_zlecone z SET
						z.KwotaNetto = (z.ZaZlecenie + kwota_za_UW + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab)
									- z.RazemSkladkiZleceniobiorcy
									- z.SklKasaChorychZleceniobPobr
									- z.Zaliczka
						WHERE z.GUID = _GUID;

						SET @CzyStosowacRozporzadzKwota =
						(SELECT ZaZlecenie + wynagr_prokurent + kwota_za_UW
							FROM tt_prace_zlecone WHERE GUID = _GUID)
						+ @SumaZaZlecenieMsc + @SumaWynagr_prokurentMsc + @SumaKwota_za_UWMsc;


						SET @ZaliczkaOdroczona = 0;
						SET @aDoPrzerzucenia = 0;
						SET @aZaliczkaHipotetyczna = 0;
						SET @aKwotaNettoWstepnaTmp = 0;

						SELECT ZaliczkaHipotetyczna, Zaliczka
						INTO @ZaliczkaHipotetycznaZapis, @Zaliczka
						FROM tt_prace_zlecone
						WHERE GUID = _GUID;


						SET @a01 = @aKwotaNettoWstepnaTmp;
						SET @a02 = @Zaliczka;
						-- SET @a03 = @aKwotaNettoWstepnaTmp;

						if _Param_E > '2021-12-31' and @UwzglednijPrzesuniecieZal and @RezygnPrzesunZal = 0 then

							if @CzyStosowacRozporzadzKwota <= @MaxRezygnPrzesunZalKwota then

								IF (@ZwolnienieOdPodatku26Lat = 1) then
									SET @aZaliczkaHipotetyczna = 0;
								ELSE
									SET @aZaliczkaHipotetyczna = @ZaliczkaHipotetycznaZapis;
								END IF;

								if (@aZaliczkaHipotetyczna < @Zaliczka) then
									SET @ZaliczkaOdroczona = @Zaliczka - @aZaliczkaHipotetyczna;
									SET @Zaliczka = @aZaliczkaHipotetyczna;
                                END IF;
								IF (@aZaliczkaHipotetyczna > @Zaliczka) then
									SET @aDoPrzerzucenia = LEAST(@aZaliczkaHipotetyczna - @Zaliczka, @SUMZaliczkaOdroczona);
									SET @Zaliczka = @Zaliczka + @aDoPrzerzucenia;
									SET @ZaliczkaOdroczona = -@aDoPrzerzucenia;
								END IF;
							else
							-- przekroczył kwotę w miesiącu i muszę skorygować czyli cofnąc odroczenie zalczki czyli zwiększyć zaliczkę na tym zapisie
                                SET @a10 = 'przekroczenie kwoty';
								if @SUMZaliczkaOdroczona <> 0 then
									SET @ZaliczkaOdroczona = -@SUMZaliczkaOdroczona;
									SET @aPierwotnaZaliczkaTmp = @Zaliczka;
									SET @Zaliczka = @Zaliczka + @SUMZaliczkaOdroczona;
												--  20         20   + 500
									if @Zaliczka > (@aKwotaNettoWstepnaTmp + @aPierwotnaZaliczkaTmp) then
												--  520             100                      20
										SET @aMogePrzerzucic = FLOOR(@aKwotaNettoWstepnaTmp);
										SET @Zaliczka = @aPierwotnaZaliczkaTmp + @aMogePrzerzucic;
										SET @ZaliczkaOdroczona = -@aMogePrzerzucic;
									end IF;
								end IF;
							end IF;
						end if;

						UPDATE tt_prace_zlecone z SET
							z.Zaliczka = @Zaliczka,
							z.ZaliczkaOdroczona = @ZaliczkaOdroczona
						WHERE	z.GUID = _GUID
						;

						SELECT (z.ZaZlecenie + kwota_za_UW + z.ZasChorRazem + z.ZasMacierz + z.ZasRehab)
										- z.RazemSkladkiZleceniobiorcy
										- z.SklKasaChorychZleceniobPobr
										- z.Zaliczka
						INTO @aKwotaNettoWstepnaTmp
						FROM tt_prace_zlecone z
						WHERE z.GUID = _GUID
						;

						set @d01 = @aKwotaNettoWstepnaTmp;

						if (@Zaliczka > @aKwotaNettoWstepnaTmp) and (@ZaliczkaOdroczona<0) then
							SET @aNadwyzkaZaliczki = @Zaliczka - floor(@aKwotaNettoWstepnaTmp);
							SET @Zaliczka = floor(@aKwotaNettoWstepnaTmp);
							SET @aKwotaNettoWstepnaTmp = 0;
							SET @ZaliczkaOdroczona = @ZaliczkaOdroczona + @aNadwyzkaZaliczki;
						-- else
							-- SET @aKwotaNettoWstepnaTmp = @aKwotaNettoWstepnaTmp - @Zaliczka;
						END IF;

						UPDATE tt_prace_zlecone z SET
							-- z.KwotaNetto = @aKwotaNettoWstepnaTmp
							z.KwotaNetto = IF(@aKwotaNettoWstepnaTmp > 0, @aKwotaNettoWstepnaTmp, 0),
							z.Zaliczka = @Zaliczka,
							z.ZaliczkaOdroczona = @ZaliczkaOdroczona,
							z.DoWyplaty  = @aKwotaNettoWstepnaTmp
								- z.InnePotr + z.InneDod +z.InneZasilkZUS - z.PPKskladkaPracow - z.PotrDodUbezpMedyczneZlec
						WHERE	z.GUID = _GUID
						;
					ELSE -- umowa zlecenie ryczaltowea - inaczej liczone koszty i podatek - do przerobienia

						CALL _IReg_Get('Place2003\\Progi_podatkowe_stawki_ZUS', 'Procent_podatku_obcokrajowiec', _rok, 'FLOAT', @ProcentPodatku, 0);


						UPDATE  tt_prace_zlecone z SET
							KosztyUzyskaniaWproc = 0,
							ProcentPodatku = @ProcentPodatku,
                            z.RazemSklZleceniobiorcyDoOdlicz = z.RazemSkladkiZleceniobiorcy,
							z.KwotaBrutto     = (z.ZaZlecenie + DodUbezpMedyczneZlec - z.RazemSkladkiZleceniobiorcy),
							z.KosztyUzyskania = 0,
                            z.zPodstPPDprzedZaokr = ZaZlecenie + DodUbezpMedyczneZlec + PPKskladkaPracod,
                            z.Dochod          = _Rnd(ZaZlecenie + DodUbezpMedyczneZlec + PPKskladkaPracod, 0),
							z.ZaliczkaPrzedSklUbezp = 0,
							z.ZryczPodatekPrzedSklUbezp = _Rnd(_Rnd(ZaZlecenie + DodUbezpMedyczneZlec + PPKskladkaPracod, 2) * (z.ProcentPodatku/100), 2),
							z.ZryczaltowanyPodatek = _Rnd(_Rnd(ZaZlecenie + DodUbezpMedyczneZlec + PPKskladkaPracod, 2) * (z.ProcentPodatku/100), 0)
							WHERE
								z.GUID = @_ZlecGUID;

						UPDATE  tt_prace_zlecone z
						SET
							z.KwotaNetto = z.ZaZlecenie - z.RazemSkladkiZleceniobiorcy - z.SklKasaChorychZleceniobPobr - z.ZryczaltowanyPodatek,
							z.DoWyplaty = _Rnd( z.ZaZlecenie - z.RazemSkladkiZleceniobiorcy - z.SklKasaChorychZleceniobPobr - z.ZryczaltowanyPodatek - z.PPKskladkaPracow - PotrDodUbezpMedyczneZlec, 2)
						WHERE
							z.GUID = @_ZlecGUID;
					END IF;
				END IF;

				SELECT KwotaNetto INTO @_KwotaNetto FROM tt_prace_zlecone WHERE GUID = @_ZlecGUID;


				SET @_ZaZlecenieLast = @_ZaZlecenie; -- je?li to by?a ostatnia p?tla to chc? dok?adnie t? warto?? a nie powi?kszon?
				IF (@_netto_brutto_kwota <> @_KwotaNetto) THEN
					SET @_ZaZlecenie = _Rnd(@_ZaZlecenie + (@_netto_brutto_kwota-@_KwotaNetto),2);
				END IF;
				set @info = concat(ifnull(@info, ''), ' nbk: ',@_netto_brutto_kwota, ' KN: ',@_KwotaNetto, ' zz: ',@_ZaZlecenie, '<BR>' );
				SET @countU = @countU +1;

-- zrzucanie danych do tabeli tymczasowej, dziala jezeli badamy jeden wpis/zlecenie
/*
            update tt_prace_zlecone set idn=0;
            insert into tt_prace_zlecone_log
            select t.*,@_ZaZlecenieLast, @_ZaZlecenie, @_netto_brutto_kwota, @_KwotaNetto, @countU,
            @SUMZaliczkaOdroczona, @aDoPrzerzucenia, @aMogePrzerzucic
            from tt_prace_zlecone t;

	create temporary table tt_prace_zlecone_log
	select t.*,@_ZaZlecenieLast, @_ZaZlecenie, @_netto_brutto_kwota, @_KwotaNetto, @countU,
    @SUMZaliczkaOdroczona, @aDoPrzerzucenia, @aMogePrzerzucic
    from tt_prace_zlecone t;

*/

			UNTIL @_KwotaNetto >= @_netto_brutto_kwota || _netto_brutto = 0 || @countU = 200 END REPEAT;


			IF (_netto_brutto = 1 && @_ProporcjaNB != 0) THEN
				SET @_ZaZlecenie = _Rnd(@_ZaZlecenieLast * @_ProporcjaNB, 2);
				SET @_extra_wynagr = @_ZaZlecenieLast - @_ZaZlecenie;
				UPDATE tt_prace_zlecone SET ZaZlecenie = @_ZaZlecenie, kwota_za_UW = @_extra_wynagr WHERE GUID = @_ZlecGUID;
				REPLACE INTO tt_zlec_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
				VALUES(concat('A-',md5(concat(_GUID, 'Z_1'))), 'Z_1', _GUID, @_ZaZlecenie, @_ZaZlecenie , 0);
			END IF;

		-- brutto do netto end;

		IF _Param_F = 'auto' THEN          -- naliczanie automatyczne, zapis do prace_zlecone
			DROP TABLE IF EXISTS tt_prace_zlecone2;
			CREATE TEMPORARY TABLE tt_prace_zlecone2 SELECT * FROM tt_prace_zlecone;
			UPDATE tt_prace_zlecone2 SET idn=0;
			UPDATE tt_prace_zlecone2 t, prace_zlecone p
			SET t.idn = p.idn
			WHERE t.guid = p.guid;

			REPLACE INTO prace_zlecone
			SELECT *
			FROM tt_prace_zlecone2
			WHERE  GUID = _GUID;

			REPLACE INTO place_skladniki (GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika)
			SELECT GUID, GUID_definicja_skladnika_placy, GUID_zapisu_placowego, kwota, nomkwota, RodzajSkladnika
			FROM tt_zlec_skladniki
			WHERE  GUID_zapisu_placowego = _GUID;

			-- zapis do logu o powstaniu kolejnego wpisu
			CALL sys_log_insert(5087, 2, _GUID,'Stworzenie zapisu prace zlecone za miesiac z automatu.');

		ELSE
			select
				_SG AS StGodz, _GrafikCzasPracy AS PracaZ, _godzSNS AS godzSNS, _GodzNocne AS GodzNoc, _ProcPremii AS ProcPremii, _NCP AS NCP,
				ZaZlecenie, _DodNocny AS DodNocny, (ZaZlecenie - _DodNocny) AS Podst, DataWyplaty, DataOd, DataDo, _godzW, _kwotaW,
				aPlaca, aNadGodz150, aNadGodz200, aPremia, aPremiaMotyw, aPremiaUzn, aNoc, aNoc_yy
				from tt_prace_zlecone where GUID_pracownika = _Param_D;

		END IF;	-- trybu recznego

	END IF;  -- IF _MODE = 'calc.one.order'



/*----------------------------------------------------------------------------------------------------------
	'calc.one.order.mode.skladki'
		Naliczenie skladek dla jednego zlecenia
		Parametry
		_Param_A	GUID zlecenia
		_Param_B	rok
		_Param_C	miesiac
		_Param_D	GUID pracownika
		_Param_E	data wyplaty
		_Param_F    nieuzywany

		CALL pl_kreator_zlecen('calc.one.order.mode.skladki', '2011', '', '', 'GUID_Zlec', '1');
-----------------------------------------------------------------------------------------------------------*/
	IF _MODE = 'calc.one.order.mode.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"

		SET @ZwolnienieOdPodatku26Lat = IFNULL(@ZwolnienieOdPodatku26Lat,0); -- wewnętrzna funkcja jeśli będzie wołana skąś gdzie nie ma zmiennej to niech będzie 0
		SET @ZwolnienieOdPodatkuDR = IFNULL(@ZwolnienieOdPodatkuDR,0);
		SET @ZwolnienieOdPodatkuPE = IFNULL(@ZwolnienieOdPodatkuPE,0);

		CALL _IReg_Get('Place2003\\Progi_podatkowe_stawki_ZUS', 'Max_podstawa_ubezp_emeryt', _rok, '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;



		-- dodanie + kwota_za_UW
		SET _SQLText =
		'SELECT
			IF(DeklarowanaPodstUbezpiecz>0, DeklarowanaPodstUbezpiecz, ZaZlecenie + kwota_za_UW) AS podst,
			NaliczacZus, PodlUbezpZdrowot, DeklarowanaPodstUbezpiecz
		INTO @pl.zlec.skladki_Podstawa, @pl.zlec.skladki_NaliczacZUS, @pl.zlec.skladki_PodlUbezpZdrowot, @pl.zlec.skladki_Dekl
		FROM tt_prace_zlecone
		WHERE
			GUID = ''#_Param_A#''
		;				'		;

		SET _SQLText = REPLACE(_SQLText, '#_Param_A#', _GUID);
		SET @_SQLText = _SQLText;
		CALL _ExecuteCmd(_SQLText, @Error);



		IF (@pl.zlec.skladki_NaliczacZUS OR @pl.zlec.skladki_PodlUbezpZdrowot) THEN

			DELETE FROM `tt_skladki_place_do_zlec`;

			SET _SQLText =
			'INSERT INTO `tt_skladki_place_do_zlec`
				SELECT ''#_Param_A#'' 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,
			  IFNULL(SUM(PPKskladkaPracow), 0) as SUMPPKskladkaPracow,
		    IFNULL(SUM(PPKskladkaPracod), 0) as SUMPPKskladkaPracod,
		    IFNULL(SUM(SklKasaChorOdliczHipot), 0) as SUMSklKasaChorOdliczHipot
			  FROM place

			  WHERE GUID_pracownika = ''#_Param_D#''  AND deleted = 0
			    AND Year(ifnull(DataWyplDoDeklar, datawyplaty)) =  YEAR(''#_Param_E#'')
			    AND Month(ifnull(DataWyplDoDeklar, datawyplaty)) = MONTH(''#_Param_E#'')
			    AND KodTytUbezp = (SELECT KodTytUbezp FROM tt_prace_zlecone WHERE GUID = ''#_Param_A#'') AND zapis_koryg_skl = 0
			;
			'
			;  -- qrPlaceSkladkiZaMiesiacDoZlecen

			SET _SQLText = REPLACE(_SQLText, '#_Param_A#', _GUID);
			SET _SQLText = REPLACE(_SQLText, '#_Param_B#', _rok);
			SET _SQLText = REPLACE(_SQLText, '#_Param_C#', _miesiac);
			SET _SQLText = REPLACE(_SQLText, '#_Param_D#', _Param_D);
			SET _SQLText = REPLACE(_SQLText, '#_Param_E#', _Param_E);
			SET @_SQLText = _SQLText;
			CALL _ExecuteCmd(_SQLText, @Error);

			set @db.pdz_sql = @_SQLText;
			set @db.pdz_err = @Error;

			DELETE FROM `tt_skladki_zlec_do_zlec`;

			-- SET _SQLText =
			INSERT INTO `tt_skladki_zlec_do_zlec`
				SELECT _GUID 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,
			  IFNULL(SUM(PodstFemerytBezOgr), 0) as SumaPodstFemerytBezOgr,
			  IFNULL(SUM(PPKskladkaPracow), 0)  as SumaPPKskladkaPracow,
			  IFNULL(SUM(PPKskladkaPracod), 0)  as SumaPPKskladkaPracod,
			  IFNULL(SUM(SklKCZlecOdliczHipot), 0) as SumaSklKCZlecOdliczHipot

			FROM prace_zlecone WHERE GUID_Pracownika = _Param_D AND YEAR(datawyplaty) = YEAR(_Param_E) AND MONTH(datawyplaty) = MONTH(_Param_E)
			AND GUID <> _GUID and KodTytUbezp = (SELECT KodTytUbezp FROM tt_prace_zlecone WHERE GUID = _GUID) and deleted = 0
			;


/*
			SET _SQLText = REPLACE(_SQLText, '#_Param_A#', _GUID);
			SET _SQLText = REPLACE(_SQLText, '#_Param_B#', _rok);
			SET _SQLText = REPLACE(_SQLText, '#_Param_C#', _miesiac);
			SET _SQLText = REPLACE(_SQLText, '#_Param_D#', _Param_D);
			SET _SQLText = REPLACE(_SQLText, '#_Param_E#', _Param_E);
			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;

				SELECT
					IFNULL(SUM(PodstFemerytalny), 0) AS suma
				INTO @pl.zlec.skladki_SumaZ
				FROM prace_zlecone
				WHERE GUID_Pracownika = _Param_D AND GUID <> _GUID and deleted = 0
					AND datawyplaty >= CONCAT(_rok,'-01-01') AND datawyplaty <= LAST_DAY(CONCAT(_rok,'-',_miesiac,'-01'))
				;

				SET @test948 = @pl.zlec.skladki_SumaZ;
				SET @pl.zlec.skladki_SumaZ = IFNULL(@pl.zlec.skladki_SumaZ, 0.0);
				SET @test950 = @pl.zlec.skladki_SumaZ;

				SET @pl.zlec.skladki_SumaP = 0.0;

				SET _SQLText =
				'SELECT
					IFNULL(SUM(PodstFemerytalny), 0) AS suma
					INTO @pl.zlec.skladki_SumaP
				FROM place
				WHERE GUID_Pracownika = ''#_Param_D#'' AND GUID <> ''#_Param_A#'' and deleted = 0
					AND datawyplaty >= ''#_Param_B#-01-01'' AND datawyplaty <= LAST_DAY(''#_Param_B#-#_Param_C#-01'')
				;
				'
				;

				SET _SQLText = REPLACE(_SQLText, '#_Param_A#', _GUID);
				SET _SQLText = REPLACE(_SQLText, '#_Param_B#', _rok);
				SET _SQLText = REPLACE(_SQLText, '#_Param_C#', _miesiac);
				SET _SQLText = REPLACE(_SQLText, '#_Param_D#', _Param_D);
				SET @_SQLText = _SQLText;
				CALL _ExecuteCmd(_SQLText, @Error);

				SET @pl.zlec.skladki_SumaP = IFNULL(@pl.zlec.skladki_SumaP, 0.0);

-- 180.000 -(20.000 + 170.000)

				IF @pl.zlec.skladki_SumaP + @pl.zlec.skladki_SumaZ > @MaxPodstUbezpEm  THEN
                    -- gdy przekorczenie bylo wczesniej
                   SET @pl.zlec.skladki_PodstE = 0;
				ELSE
					IF @pl.zlec.skladki_SumaP + @pl.zlec.skladki_SumaZ + @pl.zlec.skladki_Podstawa > @MaxPodstUbezpEm THEN
						-- przekroczenie na tym zapise
						SET @pl.zlec.skladki_PodstE = @pl.zlec.skladki_Podstawa + @pl.zlec.skladki_SumaP + @pl.zlec.skladki_SumaZ - @MaxPodstUbezpEm;
					ELSE -- nie ma i nie bylo przekroczenia
						SET @pl.zlec.skladki_PodstE = @pl.zlec.skladki_Podstawa;
					END IF;
				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_PodstE = _Rnd(@pl.zlec.skladki_PodstE, 2);
				SET @pl.zlec.skladki_PodstR = _Rnd(@pl.zlec.skladki_PodstR, 2);

				SET @pl.zlec.skladki_SumaPodstCW = 0;
				SELECT
					(select ifnull(sum(z.podstfchorobowy), 0) from prace_zlecone z
					where z.guid <> _Param_A and month(z.datawyplaty) = _Param_C and z.rok = _Param_B and z.deleted = 0 and z.guid_pracownika = _Param_D
					) +
					(select ifnull(sum(p.podstfchorobowy), 0) from place p
					where p.rok = _Param_B and month(p.datawyplaty) = _Param_C and p.deleted = 0 and p.guid_pracownika = _Param_D
					) INTO @pl.zlec.skladki_SumaPodstCW;

				SET @pl.zlec.skladki_KwotaPoprz = 0;
				select ifnull(KwotaDo3procZaktualnegoMsca, 0) INTO @pl.zlec.skladki_KwotaPoprz from Pracownicy where GUID = _Param_D;  -- bylo: KwotaZpoprzZaklDoSkl3proc

				CALL _IReg_Get('Place2003\\Progi_podatkowe_stawki_ZUS', 'Skladka_na_FP', _rok, '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 tt_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_A#''
				;'	;

				-- 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, '#_Param_A#', _GUID);
				SET @_SQLText = _SQLText;

				-- set @szambo = @_SQLText;

				CALL _ExecuteCmd(_SQLText, @Error);

				-- uwzgledniamy ustawienia w kartotece pracownikow
				SET @NieNaliczajSkladekER = false;
				SELECT (TypNaliczaniaSkladek <> 0)
				INTO @NieNaliczajSkladekER
				FROM Pracownicy
				WHERE GUID = _Param_D
				;

				-- żeby w następnym zapytaniu móc używać PodstFemerytBezOgr
				UPDATE tt_prace_zlecone Z SET Z.PodstFemerytBezOgr = if(@NieNaliczajSkladekER,0 , _Rnd(@pl.zlec.skladki_Podstawa, 2))	WHERE Z.GUID = _GUID;

				UPDATE tt_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),

				Z.PPKskladkaPracow 			= _Rnd((_Rnd((tp.SUMPodstFchorobowy + tz.SumaPodstFemerytBezOgr + Z.PodstFemerytBezOgr) *
											  Z.PPKprocSkladkaPracow/100,2)) - (tp.SUMPPKskladkaPracow + tz.SumaPPKskladkaPracow), 2),
				Z.PPKskladkaPracod 			= _Rnd((_Rnd((tp.SUMPodstFchorobowy + tz.SumaPodstFemerytBezOgr + Z.PodstFemerytBezOgr) *
											  Z.PPKprocSkladkaPracod/100, 2)) - (tp.SUMPPKskladkaPracod + tz.SumaPPKskladkaPracod), 2)

				WHERE Z.GUID = _GUID
				;

				-- set @szambo2 = @_SQLText;

				-- set @szambo2error = @Error;

				-- zerowanie składek ze względu na ustawienie w kartotece pracownika TypNaliczaniaSkladek
				UPDATE tt_prace_zlecone Z
				SET
					Z.SklFemerytalnyZleceniob = 0,
					Z.SklFemerytalnyZleceniod = 0,
					Z.SklFrentowyZleceniob = 0,
					Z.SklFrentowyZleceniod = 0
				WHERE Z.GUID = _GUID and @NieNaliczajSkladekER;



			END IF;		-- IF _NaliczacZUS THEN

			IF @pl.zlec.skladki_PodlUbezpZdrowot THEN   -- robimy jako oddzielne zapytanie, bo korzystamy tu z wyliczonych skladek na zapisie


				IF @RodzajRyczaltu = 7 THEN -- jest to pelna wersja naliczenia skladek (RodzajRyczaltu = 7)

				-- oddzielnie skladka pobrana, odzielnie skladka odliczona - ta sama podstawa, inny procent
					SET _SQLText =
					'UPDATE tt_prace_zlecone Z, tt_skladki_place_do_zlec tp, tt_skladki_zlec_do_zlec tz
						SET
					Z.PodstKasaChorych 				= Z.ZaZlecenie + Z.kwota_za_UW  - (Z.SklFemerytalnyZleceniob + Z.SklFrentowyZleceniob + Z.SklFchorobowyZleceniob),
					Z.SklKasaChorychZleceniobPobr   = _Rnd( ((Z.ZaZlecenie + Z.kwota_za_UW  - (Z.SklFemerytalnyZleceniob + Z.SklFrentowyZleceniob + Z.SklFchorobowyZleceniob))+
						(tz.SumaPodstKCh + tp.SUMPodstKasaChorych)) * ProcKasaChorychZleceniobPobr/100 -
						( tp.SUMSklKasaChorychPracowPobr + tz.SumaSklKChPobrZB ), 2),
					Z.SklKasaChorychZleceniobOdlicz = _Rnd( ((Z.ZaZlecenie + Z.kwota_za_UW  - (Z.SklFemerytalnyZleceniob + Z.SklFrentowyZleceniob + Z.SklFchorobowyZleceniob))+
						(tz.SumaPodstKCh + tp.SUMPodstKasaChorych)) * ProcKasaChorychZleceniobOdlicz/100 -
						( tp.SUMSklKasaChorOdlicz + tz.SumaSklKChOdlZB), 2),

					Z.SklKCZlecOdliczHipot = _Rnd( ((Z.ZaZlecenie + Z.kwota_za_UW  - (Z.SklFemerytalnyZleceniob + Z.SklFrentowyZleceniob + Z.SklFchorobowyZleceniob))+
						(tz.SumaPodstKCh + tp.SUMPodstKasaChorych)) * ProcKasaChorOdliczHipot/100 -
						( tp.SUMSklKasaChorOdliczHipot + tz.SumaSklKCZlecOdliczHipot), 2)

					WHERE Z.GUID = ''#_Param_A#''
					;
					'
					;
				ELSE
				-- jest to niepelna wersja naliczenia skladek (RodzajRyczaltu = 2) - do przerobienia po sprawdzeniu w kodzie programu
					SET _SQLText =
					'UPDATE tt_prace_zlecone Z, tt_skladki_place_do_zlec tp, tt_skladki_zlec_do_zlec tz
						SET
					Z.PodstKasaChorych 				= Z.ZaZlecenie + Z.kwota_za_UW  - (Z.SklFemerytalnyZleceniob + Z.SklFrentowyZleceniob + Z.SklFchorobowyZleceniob),
					Z.SklKasaChorychZleceniobPobr   = _Rnd( ((Z.ZaZlecenie + Z.kwota_za_UW  - (Z.SklFemerytalnyZleceniob + Z.SklFrentowyZleceniob + Z.SklFchorobowyZleceniob))+
						(tz.SumaPodstKCh + tp.SUMPodstKasaChorych)) * ProcKasaChorychZleceniobPobr/100 -
						( tp.SUMSklKasaChorychPracowPobr + tz.SumaSklKChPobrZB ), 2),
					Z.SklKasaChorychZleceniobOdlicz = 0
					WHERE Z.GUID = ''#_Param_A#''
					;
					'
					;
				END IF;

				SET _SQLText = REPLACE(_SQLText, '#_Param_A#', _GUID);
				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 tt_prace_zlecone Z
				 SET
					Z.SklKChZleceniobOdliczNomin = Z.SklKasaChorychZleceniobOdlicz,
					Z.SklKChZleceniobPobrNomin   = Z.SklKasaChorychZleceniobPobr,
					Z.RazemSkladkiZleceniobiorcy = Z.SklFemerytalnyZleceniob + Z.SklFrentowyZleceniob + Z.SklFchorobowyZleceniob,
					Z.RazemSklZleceniobiorcyDoOdlicz = Z.SklFemerytalnyZleceniob + Z.SklFrentowyZleceniob + Z.SklFchorobowyZleceniob,
					Z.RazemSkladkiZleceniodawcy  = Z.SklFemerytalnyZleceniod + Z.SklFrentowyZleceniod + Z.SklFwypadkowyZleceniod
				 WHERE Z.GUID = 	''#_Param_A#''
				;
				'
				;

			SET _SQLText = REPLACE(_SQLText, '#_Param_A#', _GUID);
			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 = 'calc.one.order.mode.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    GUID zlecenia
		_Param_B	Rok
		_Param_C	Miesiac
		_Param_D	GUID pracownika


		CALL pl_kreator_zlecen('pl.przepisz.dane.pracownika.one.zlec', 'Prac1');
-----------------------------------------------------------------------------------------------------------*/
	IF _MODE = 'pl.przepisz.dane.pracownika.one.zlec' THEN

		SET @sel_zakres_DataOd = ifnull(concat(_rok, '-', _miesiac, '-01'), current_date);
		SET @sel_zakres_DataDo = ifnull(last_day(concat(_rok, '-', _miesiac, '-01')), current_date);
		SET _DataWyplaty = _Param_E;

		SELECT ValueN INTO @ProcentPodatkuHipot FROM IReg where idkey='Procent_podatku_od_umow_zlecen' and rok=2021;

			UPDATE tt_prace_zlecone g, Pracownicy p, pracownicy_ZUS z, osoby o
			SET
				g.nazwisko         = o.nazwisko,
				g.KodTytUbezp      = p.KodUbezpUmZlecenie,
				g.ProcentPodatku   = p.ProcPodOdZlecen,
				g.ProcentPodatkuHipot = @ProcentPodatkuHipot,
				g.AnalitykaFK      = ifnull(p.AnalitykaFK, ''),
				g.Kategoria_Idn    = p.KategoriaPracownicza,
				g.naliczFGSP	   = p.naliczFGSP_zlec,
				g.naliczFP		   = p.naliczFP_zlec,
				g.US_GUID		   = p.KluczUrzeduSkarbowego,
				g.calosc_przelewem = p.CzyCosPrzelewem,
				g.katcol0 		   = p.katcol0,
				g.katcol1 		   = p.katcol1,
				g.katcol2          = p.katcol2,
				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 OR z.Dobr_UbzpChorobowe), 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 IN (1,5) AND ((z.KodKasyChorych <> '') AND !ISNULL(z.KodKasyChorych)), 1, 0),
				g.WzorDekr     = ifnull(if((SELECT ValueB FROM IReg WHERE idkey = 'Inicjacja_wzoru_PK_zlecenia')=1, p.wzordekr_zlec, 0), 0),
				g.GUID_division = p.GUID_division

			WHERE g.GUID = _GUID AND p.GUID = g.GUID_pracownika AND p.GUID = z.GUID_Pracownika AND o.GUID = p.GUID;

			SET @PPKprocSkladkaPracow = 0;
			SET @PPKprocSkladkaPracod = 0;
			SET @PPKrownaSkladkaPracodawca = 0;

			SELECT
				IF(pppk.aktywnyPPK = 1, pppk.procSkladPodstPPKpracow+pppk.procSkladDodPPKpracow, 0) AS PPKprocSkladkaPracow,
				IF(pppk.aktywnyPPK = 1, pppk.procSkladPodstPPKpracod+pppk.procSkladDodPPKpracod, 0) AS PPKprocSkladkaPracod
			INTO @PPKprocSkladkaPracow, @PPKprocSkladkaPracod
			FROM pracownicy_ppk pppk, tt_prace_zlecone g
			WHERE pppk.GUID_Pracownika = g.GUID_pracownika AND pppk.OdDnia <= _DataWyplaty AND pppk.deleted = 0 AND g.GUID = _GUID
			ORDER BY pppk.OdDnia DESC LIMIT 1;

			CALL _IReg_Get('Place2003\PPK', 'PPKrownaSkladkaPracodawca', YEAR(_DataWyplaty), 'INTEGER', @PPKrownaSkladkaPracodawca, 0);
			IF ( @PPKrownaSkladkaPracodawca = 1 ) THEN
				CALL _IReg_Get('Place2003\PPK', 'PPKskladPodstPracod', YEAR(_DataWyplaty), 'DOUBLE', @PPKskladPodstPracod, 0);
				CALL _IReg_Get('Place2003\PPK', 'PPKskladDodatPracod', YEAR(_DataWyplaty), 'DOUBLE', @PPKskladDodatPracod, 0);
				SET @PPKprocSkladkaPracod = @PPKskladPodstPracod + @PPKskladDodatPracod ;
			END IF;

			UPDATE tt_prace_zlecone g
			SET
			 g.PPKprocSkladkaPracow = @PPKprocSkladkaPracow,
		     g.PPKprocSkladkaPracod = @PPKprocSkladkaPracod
			WHERE g.GUID = _GUID;

		-- czesc dla PW nr 3
		IF _Param_E >= '2022-07-01' THEN
            UPDATE tt_prace_zlecone g SET
                g.RezygnPrzesunZal = 1,
                g.NaliczUlgeDlaKS = 0,
                g.ProcentPodatku = IF(g.ProcentPodatku = 17, 12, g.ProcentPodatku)
            WHERE g.GUID = _GUID;

            SET @RezygnPrzesunZal = 1;
                    -- NaliczUlgeDlaKS
        END IF;



	END IF;	--	IF _MODE = 'pl.przepisz.dane.pracownika.one.zlec'

END$$

DELIMITER ;

/*
=============================================================================================================
	NOTATNIK
=============================================================================================================

CALL pl_kreator_zlecen('create.work.tables', '', '', '', '', '', '','','','','');

CALL pl_kreator_zlecen('calc.multi.order', '', '','', '', '', '', '', '', '', 'auto');
SELECT * FROM tt_dane_zlecenia;
SELECT * FROM tt_prace_zlecone;
SELECT * FROM tt_zlec_skladniki;
SELECT * FROM listy_plac ORDER BY idn DESC;
SELECT * FROM ta_umzlec;


CALL pl_kreator_zlecen('calc.one.order', 'A_c5ebeaf659a3766501ddd7f680dda26a', '1564', '2023', '1', '','','','AUTOID27309', '2023-01-31','manual');


select @KwotaWolnaOdPodatkuZlecKartoteka, @SumaKwotaWolnaOdPodatkuZlec, @zaliczkaZapis, @UwzglednijPrzesuniecieZal, @RezygnPrzesunZal;

select * from prace_zlecone where rok=2023 and guid in ('{735C6CC3-D24B-4156-B76D-F427F73B4E04}','A_c5ebeaf659a3766501ddd7f680dda26a');


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
*/
