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

DROP PROCEDURE IF EXISTS `ht_pr_noty`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `ht_pr_noty`(
	IN _Mode VARCHAR(50),
	IN _GUIDPlatnika VARCHAR(38),
	IN _ScenarioName VARCHAR(250),
	IN _WHERE_SQL TEXT,
	IN _Rok INT(11),
	IN _NaDzien VARCHAR(10),
	IN _ParamA VARCHAR(50),
	IN _ParamB VARCHAR(50),
	IN _ParamC VARCHAR(50),
	IN _ParamD VARCHAR(50)
)
BEGIN
	DECLARE _GUID VARCHAR(38);
	DECLARE _GUIDPlatnika2 VARCHAR(38);
	DECLARE done Bool default False;
 	
	DECLARE _ALL_POZ SMALLINT;
	DECLARE _S TEXT DEFAULT '';
	DECLARE _WHERE TEXT DEFAULT '';
	DECLARE _LIMIT_ODSETEK DOUBLE(16,4) DEFAULT 0;
	DECLARE _SUMA_ODSETEK DOUBLE(16,4) DEFAULT 0;
	-- DECLARE _TEXT1 TEXT DEFAULT '';
	-- DECLARE _TEXT2 TEXT DEFAULT '';
	DECLARE _baza VARCHAR(100); -- baza danych w ktorej jestesmy
	DECLARE c_Guidy CURSOR FOR
		SELECT guid FROM t_notkipz;
	DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

	SELECT DATABASE() INTO _baza;
	SET _WHERE_SQL = IFNULL(_WHERE_SQL, '');
	SET _ALL_POZ = (select ValueB from IReg where idkey='WezwanieDoZaplatyCALLWszystkiePozDlaKontrah' limit 1); 
	SET _LIMIT_ODSETEK = (select ValueN from IReg where idkey='NotaOdsetkowa_MinimalnaWartoscOdsetek' limit 1); 
	-- korzystamy z klucza dla wezwan, identyczna zasada i takie samo zachowanie dla wezwan i not w danej firmie
	-- istotne jest to, ze trzeba tez wlaczyc klucz  WezwaniaSQLzFiltremFDBC - bo to uruchamia w programie przekazywaniefiltrow - czy dla not tez jest takie cos?
		
	-- CALL ht_pr_noty('GetNoty_Checkownia', '','','',0,'','','','','')
	IF _Mode IN ('GetNoty_Checkownia') THEN	-- jest to mod, ktory przygotowuje rekordy pokazywane w czekowni
		
		SET _S = 
		"select 
		1 as 'check',KK.symbol,KK.nazwa,KK.GUID AS platnikGUID,
		KK.nazwamiasta AS miasto, KK.ulica, KK.zipcode,
        if(KK.podzialnip<2, if(KK.podzialnip=0,insert(insert(insert(KK.nip,4,0,'-'),8,0,'-'),11,0,'-'),insert(insert(insert(KK.nip,4,0,'-'),7,0,'-'),10,0,'-')),KK.nip) as kontrnip_podzial
        FROM opng O
        LEFT JOIN kontrah KK ON (O.PlatnikGUID=KK.GUID) 
        INNER JOIN tb_opng tb ON tb.GUID=O.GUID			-- tabela tworzona przez program z danych wyflitrowanych w przegladarce (ma byc tb_opng!)
		WHERE 
		(O.rodzaj in (select rodzaj from operdoc where nazwa like 'ST%%' and grupa=0) OR O.rodzaj=1 or O.rodzaj=43) 
		AND KK.GUID<>'' AND 
		O.wystawiono_note_ods = 0 AND O.nierozliczony = 0 AND 
		ABS(IF((O.kurs_rozliczen = 0 AND (O.rodzaj NOT IN (20,21,36,37)) ) OR (O.To_RK), 0, IF(O.CWN, O.CKwota, -O.CKwota)- O.CRozliczone)) < 0.01 
		AND O.odsetki > _LIMIT_ODSETEK AND O.odsetki > 0
		GROUP BY KK.guid,O.wystawiono_note_ods
		ORDER BY KK.symbol
		;";
		
		SET _S = REPLACE(_S, '_LIMIT_ODSETEK', _LIMIT_ODSETEK);
		
		-- select _S;
		SET @TMP = _S;
		CALL _ExecuteCmd(_S, @Error);

-- CALL ht_pr_noty('GetNoty_Checkownia','','',"(((O.datawystaw >= '2011-03-01') and (O.datawystaw <= '2011-03-04')))",2011, '', '', '','' );			
	END IF;


	IF _Mode IN ('GetNotyObc_Checkownia') THEN	-- jest to mod, ktory przygotowuje rekordy pokazywane w czekowni

		SET _S =
		"select
		1 as 'check',KK.symbol,KK.nazwa,KK.GUID AS platnikGUID,
		KK.nazwamiasta AS miasto, KK.ulica, KK.zipcode,
        if(KK.podzialnip<2, if(KK.podzialnip=0,insert(insert(insert(KK.nip,4,0,'-'),8,0,'-'),11,0,'-'),insert(insert(insert(KK.nip,4,0,'-'),7,0,'-'),10,0,'-')),KK.nip) as kontrnip_podzial
        FROM opng O
        LEFT JOIN kontrah KK ON (O.PlatnikGUID=KK.GUID)
        INNER JOIN tb_opng tb ON tb.GUID=O.GUID			-- tabela tworzona przez program z danych wyflitrowanych w przegladarce (ma byc tb_opng!)
		WHERE
		(O.rodzaj in (select rodzaj from operdoc where nazwa like 'ST%%' and grupa=0) OR O.rodzaj=1 or O.rodzaj=43)
		AND KK.GUID<>'' AND O.nierozliczony = 0 AND
		ABS(IF((O.kurs_rozliczen = 0 AND (O.rodzaj NOT IN (20,21,36,37)) ) OR (O.To_RK), 0, IF(O.CWN, O.CKwota, -O.CKwota)- O.CRozliczone)) < 0.01
		GROUP BY KK.guid
		ORDER BY KK.symbol
		;";

		-- select _S;
		SET @TMP = _S;
		CALL _ExecuteCmd(_S, @Error);

-- CALL ht_pr_noty('GetNotyObc_Checkownia','','',"(((O.datawystaw >= '2011-03-01') and (O.datawystaw <= '2011-03-04')))",2011, '', '', '','' );
	END IF;

/*
wywolanie w security dla pozycji wszystkich (po odfiltrowaniu pozycji)
CALL ht_pr_noty('GetNoty_Pozycje', '','STPRN_ROZRACH_NOTA_ODSETKOWA2'," ((O.KontrGUID = 'SE_2b8f621e9244cea5007bac8f5d50e476') AND ((O.datawystaw >= '2022-01-01') and (O.datawystaw <= '2022-12-31'))) AND O.deleted=0 AND O.deleted=0 AND (O.rozrachunek = 1) AND abs(IF((O.kurs_rozliczen = 0 and (O.rodzaj not in (20,21,36,37)) ) or (O.To_RK) , 0, IF(O.CWN, O.CKwota, -O.CKwota)- O.CRozliczone ) ) < 0.01 AND (O.tymczasowa < 2)  ",2022,'2022-06-13','N','','','')
*/
	IF _Mode  IN ('GetNoty_Pozycje') THEN  -- przygotowuje pozycje not, dla zaznaczonych w czekowni kontrahentow
	-- checkowania kontrahentow to tabela tb_chk_noty
	-- wybrane pozycje do noty sa w tabeli tb_opng
		
		DROP TABLE IF EXISTS t_noty_poz;

		SET _S = 
		"CREATE TEMPORARY TABLE t_noty_poz
            SELECT
			'ht_pr_noty_GetNoty_Pozycje' as ht_pr_noty_GetNoty_Pozycje,
			0 as lpg, O.GUID,
			'#_ScenarioName#' AS scenariusz,
            '#_baza#' AS baza,

			(SELECT valuea FROM IReg WHERE idkey = 'Pelna_nazwa' LIMIT 1) AS FirmaNazwa,
			(SELECT valuea FROM IReg WHERE idkey = 'Address Info' LIMIT 1) AS FirmaAdres,
			(SELECT valuea FROM IReg WHERE idkey = 'NIP' AND IdPath LIKE '%DaneFirmy' LIMIT 1) AS FirmaNIP,
			(SELECT valuea FROM IReg WHERE idkey = 'Miasto' AND IdPath LIKE '%DaneFirmy' LIMIT 1) AS FirmaMiasto,

			IFNULL((select concat(B.NazwaBanku,' ', B.Konto) from banki B where B.idn=KK.DomyslnyBank ),'.') as DomyslnyBank,
			KK.GUID as platnikGUID,
			KK.symbol,KK.nazwa, KK.nip,
			KK.nazwamiasta AS miasto, KK.ulica, KK.zipcode, 
			SUBSTRING(concat(KK.w_ulica,' ',KK.W_zipcode,' ',KK.W_NazwaMiasta),1,250) As AdresKor, 
			'_NaDzien' as nadzien,
			O.CKwotaWal, O.kurs, IF(O.rodzaj in (20,21,22), O.nrdokkas,
			IF(O.rodzaj in (36,37), O.nrraportu, O.nrdokfin)) as nrdokfin,
			O.sr_opoznienie,O.CKwota,IF(O.CWN, O.CKwota, -O.CKwota) as CKwotaWn,
			IF(O.CWN, O.CKwota, -O.CKwota)- O.CRozliczone as CPozostalo,
			O.datawystaw, O.dataplatnosci,
			CONCAT(IF(KK.kontofk<>'','konto FK: ',' '),REPLACE(REPLACE(KK.kontofk,'*','' ),'|','') ,' ',IF(KK.kontofk2<>'' and KK.kontofk<>KK.kontofk2, REPLACE(REPLACE(KK.kontofk2,'*','' ),'|',''),'')) as kontofk, 
			WR.symbol as waluta,
			Round(IF(IF(O.CWN, O.CKwota, -O.CKwota)= O.CRozliczone,
			TO_DAYS(O.datarozliczenia)-TO_DAYS(O.dataplatnosci),
			TO_DAYS('_NaDzien')-TO_DAYS(O.dataplatnosci)), 0)
			-- +(select zerod from zero limit 1)
			As Dni,   --  TO_DAYS(CURRENT_DATE)-...
			LEFT((select group_concat(rn.datawystaw) from rozrach r inner join opng rn on rn.guid=r.idnoper2 where r.idnoper=O.GUID),200) as datarozliczenia, 
			O.odsetki,
			_Rnd2(O.odsetki/O.kurs) as odsetki_wal,

			_ht_OdsetkiDlaDat(O.dataplatnosci, O.datarozliczenia) as stawkiproc,
			(select zerod from zero) as odsetki_prognoza 
			FROM opng O 
			INNER JOIN tb_chk_noty tbo ON tbo.GUID=O.platnikGUID
			#INNER#
			LEFT JOIN kontrah K ON O.KontrGUID=K.GUID 
			LEFT JOIN kontrah KK ON O.PlatnikGUID=KK.GUID 
			LEFT JOIN platnosc P ON O.sposobplatn=P.idn 
			LEFT JOIN banki bn ON O.wyslano_przelew = bn.idn 
			LEFT JOIN operdoc RS ON O.rodzaj = RS.rodzaj 
			LEFT JOIN banki KB ON O.NrKasy = KB.idn 
			LEFT JOIN kasy KB2 ON O.NrKasy = KB2.idn 
			LEFT JOIN Miasta M ON K.NazwaMiasta=M.NazwaMiasta 
						
			LEFT JOIN v_kkn0 KC0 ON O.katcol0 = KC0.klucz AND KC0.rok IN(0, #rok#) 
			LEFT JOIN v_kkn1 KC1 ON O.katcol1 = KC1.klucz AND KC1.rok IN(0, #rok#) 
			LEFT JOIN v_kkn2 KC2 ON O.katcol2 = KC2.klucz AND KC2.rok IN(0, #rok#) 
			LEFT JOIN v_kkn3 KC3 ON O.katcol3 = KC3.klucz AND KC3.rok IN(0, #rok#) 
			LEFT JOIN v_kkn4 KC4 ON O.katcol4 = KC4.klucz AND KC4.rok IN(0, #rok#) 
			
			LEFT JOIN osoby OO ON O.ugrpGUID = OO.GUID 
			LEFT JOIN waluty W ON O.waluta = W.idn 
			LEFT JOIN zlec ZL ON ZL.GUID = O.zlecenieGUID 
			LEFT JOIN waluty WR ON O.waluta_rozliczen = WR.idn 
			LEFT JOIN plankont PP ON PP.symbol = O.kontofk AND PP.Rok = _Rok
		  WHERE 
			-- #WHERE_SQL#
		    -- _WHERE 
			O.rozrachunek and (O.rodzaj in (select rodzaj from operdoc where nazwa like 'ST%%' and grupa=0) or O.rodzaj in (1,43))
			AND O.datawystaw<='_NaDzien' AND O.wystawiono_note_ods = 0 AND O.nierozliczony=0 AND O.odsetki > _LIMIT_ODSETEK AND O.odsetki > 0
			ORDER BY KK.symbol, KK.GUID, O.datawystaw, O.idn
			;";

        set @SQLtekst1=_S;
		-- SET _WHERE_SQL = IF(_ALL_POZ=0,_WHERE_SQL,'');  -- uwwzglednia klucz na wszystkie lub nie pozycje
		-- SET _S = REPLACE(_S, '_WHERE', IF(_WHERE_SQL = '', ' WHERE ', CONCAT('\n WHERE ', _WHERE_SQL, ' and ')));
		
		SET _S =	REPLACE(_S, '#_ScenarioName#', _ScenarioName);
		SET _S =	REPLACE(_S, '#_baza#', _baza);

		--  SET _S =	REPLACE(_SQLText, '#_GUIDPlatnika#', _GUIDPlatnika);
		-- SET _S = REPLACE(_S, '#WHERE_SQL#', IF(_ALL_POZ=0,IF(_WHERE_SQL = '', '', '#WHERE_SQL# and '),''));
		SET _S = REPLACE(_S, '#INNER#', IF(_ALL_POZ = 0,'INNER JOIN tb_opng tb ON tb.GUID=O.GUID ',''));
		-- SET _S = REPLACE(_S, '#INNER#', IF(_ALL_POZ = 0,'INNER JOIN tb_chk_noty tb ON tb.GUID=O.GUID ',''));

		SET _S = REPLACE(_S, '_Rok', _Rok);
		SET _S = REPLACE(_S, '_NaDzien', _NaDzien);
		SET _S = REPLACE(_S, '_LIMIT_ODSETEK', _LIMIT_ODSETEK);
		SET _S = REPLACE(_S, '#rok#', @session.FK.AktRokObrach);
		
		set @SQLtekst2=_S;
		#select _S;
		CALL _ExecuteCmd(_S, @Error);
		
        SELECT platnikGUID INTO _GUIDPlatnika2 FROM t_noty_poz LIMIT 1;
        SELECT _Rnd2(SUM(odsetki)) INTO _SUMA_ODSETEK FROM t_noty_poz;

		CALL fr_ht_konto('WEZW', _GUIDPlatnika2, _ScenarioName, '',0,'','','','');

		SELECT t.*,
            @_KontoBankowe AS DomyslnyBank2,
            _SUMA_ODSETEK AS sum_odsetki
		FROM t_noty_poz t;

        DROP TABLE IF EXISTS t_noty_poz;

	END IF; -- koniec _Mode='GetNoty_Pozycje' 



/*
wywolanie w cristtest, httest
CALL ht_pr_noty('GetNotyObc_Pozycje', '','CScenPRN_ROZRACH_NOTA_ODBCIAZENIOWA'," ((O.KontrGUID = 'SE_2b8f621e9244cea5007bac8f5d50e476') AND ((O.datawystaw >= '2022-01-01') and (O.datawystaw <= '2022-12-31'))) AND O.deleted=0 AND O.deleted=0 AND (O.rozrachunek = 1) AND abs(IF((O.kurs_rozliczen = 0 and (O.rodzaj not in (20,21,36,37)) ) or (O.To_RK) , 0, IF(O.CWN, O.CKwota, -O.CKwota)- O.CRozliczone ) ) < 0.01 AND (O.tymczasowa < 2)  ",2022,'2022-06-13','N','','','')
*/
	IF _Mode  IN ('GetNotyObc_Pozycje') THEN  -- przygotowuje pozycje not, dla zaznaczonych w czekowni kontrahentow

		DROP TABLE IF EXISTS t_noty_poz;

		SET _S =
		"CREATE TEMPORARY TABLE t_noty_poz
            SELECT
			'ht_pr_noty_GetNotyObc_Pozycje' as ht_pr_noty_GetNotyObc_Pozycje,
			0 as lpg, O.GUID,
			'#_ScenarioName#' AS scenariusz,
            '#_baza#' AS baza,

			(SELECT valuea FROM IReg WHERE idkey = 'Pelna_nazwa' LIMIT 1) AS FirmaNazwa,
			(SELECT valuea FROM IReg WHERE idkey = 'Address Info' LIMIT 1) AS FirmaAdres,
			(SELECT valuea FROM IReg WHERE idkey = 'NIP' AND IdPath LIKE '%DaneFirmy' LIMIT 1) AS FirmaNIP,
			(SELECT valuea FROM IReg WHERE idkey = 'Miasto' AND IdPath LIKE '%DaneFirmy' LIMIT 1) AS FirmaMiasto,

			IFNULL((select concat(B.NazwaBanku,' ', B.Konto) from banki B where B.idn=KK.DomyslnyBank ),'.') as DomyslnyBank,
			KK.GUID as platnikGUID,
			KK.symbol,KK.nazwa, KK.nip,
			KK.nazwamiasta AS miasto, KK.ulica, KK.zipcode,
			SUBSTRING(concat(KK.w_ulica,' ',KK.W_zipcode,' ',KK.W_NazwaMiasta),1,250) As AdresKor,
			'_NaDzien' as nadzien,
			O.CKwotaWal, O.kurs, IF(O.rodzaj in (20,21,22), O.nrdokkas,
			IF(O.rodzaj in (36,37), O.nrraportu, O.nrdokfin)) as nrdokfin,
			O.sr_opoznienie,O.CKwota,IF(O.CWN, O.CKwota, -O.CKwota) as CKwotaWn,
			IF(O.CWN, O.CKwota, -O.CKwota)- O.CRozliczone as CPozostalo,
			O.datawystaw, O.dataplatnosci,
			CONCAT(IF(KK.kontofk<>'','konto FK: ',' '),REPLACE(REPLACE(KK.kontofk,'*','' ),'|','') ,' ',IF(KK.kontofk2<>'' and KK.kontofk<>KK.kontofk2, REPLACE(REPLACE(KK.kontofk2,'*','' ),'|',''),'')) as kontofk,
			Round(IF(IF(O.CWN, O.CKwota, -O.CKwota)= O.CRozliczone,
			TO_DAYS(O.datarozliczenia)-TO_DAYS(O.dataplatnosci),
			TO_DAYS('_NaDzien')-TO_DAYS(O.dataplatnosci)), 0)
			#+(select zerod from zero limit 1)
			As Dni,   --  TO_DAYS(CURRENT_DATE)-...
			LEFT((select group_concat(rn.datawystaw) from rozrach r inner join opng rn on rn.guid=r.idnoper2 where r.idnoper=O.GUID),200) as datarozliczenia,
			O.odsetki,
			_ht_OdsetkiDlaDat(O.dataplatnosci, O.datarozliczenia) as stawkiproc,
			(select zerod from zero) as odsetki_prognoza
			FROM opng O
			-- INNER JOIN tb_chk_noty tb ON tb.GUID=O.platnikGUID
			-- #INNER#
			INNER JOIN tb_opng tb ON tb.GUID=O.GUID
			LEFT JOIN kontrah K ON O.KontrGUID=K.GUID
			LEFT JOIN kontrah KK ON O.PlatnikGUID=KK.GUID
			LEFT JOIN platnosc P ON O.sposobplatn=P.idn
			LEFT JOIN banki bn ON O.wyslano_przelew = bn.idn
			LEFT JOIN operdoc RS ON O.rodzaj = RS.rodzaj
			LEFT JOIN banki KB ON O.NrKasy = KB.idn
			LEFT JOIN kasy KB2 ON O.NrKasy = KB2.idn
			LEFT JOIN Miasta M ON K.NazwaMiasta=M.NazwaMiasta

			LEFT JOIN v_kkn0 KC0 ON O.katcol0 = KC0.klucz AND KC0.rok IN(0, #rok#)
			LEFT JOIN v_kkn1 KC1 ON O.katcol1 = KC1.klucz AND KC1.rok IN(0, #rok#)
			LEFT JOIN v_kkn2 KC2 ON O.katcol2 = KC2.klucz AND KC2.rok IN(0, #rok#)
			LEFT JOIN v_kkn3 KC3 ON O.katcol3 = KC3.klucz AND KC3.rok IN(0, #rok#)
			LEFT JOIN v_kkn4 KC4 ON O.katcol4 = KC4.klucz AND KC4.rok IN(0, #rok#)

			LEFT JOIN osoby OO ON O.ugrpGUID = OO.GUID
			LEFT JOIN waluty W ON O.waluta = W.idn
			LEFT JOIN zlec ZL ON ZL.GUID = O.zlecenieGUID
			LEFT JOIN waluty WR ON O.waluta_rozliczen = WR.idn
			LEFT JOIN plankont PP ON PP.symbol = O.kontofk AND PP.Rok = _Rok
		  WHERE
			#WHERE_SQL#
		    -- _WHERE
			O.rozrachunek and (O.rodzaj in (select rodzaj from operdoc where nazwa like 'ST%%' and grupa=0) or O.rodzaj in (1,43))
			AND O.datawystaw<='_NaDzien'
			ORDER BY KK.symbol, KK.GUID, O.datawystaw, O.idn
			;";

        set @SQLtekst1=_S;
		-- SET _WHERE_SQL = IF(_ALL_POZ=0,_WHERE_SQL,'');  -- uwwzglednia klucz na wszystkie lub nie pozycje
		-- SET _S = REPLACE(_S, '_WHERE', IF(_WHERE_SQL = '', ' WHERE ', CONCAT('\n WHERE ', _WHERE_SQL, ' and ')));

		SET _S =	REPLACE(_S, '#_ScenarioName#', _ScenarioName);
		SET _S =	REPLACE(_S, '#_baza#', _baza);

		--  SET _S =	REPLACE(_SQLText, '#_GUIDPlatnika#', _GUIDPlatnika);

		SET _S = REPLACE(_S, '#WHERE_SQL#', IF(_ALL_POZ=0,IF(_WHERE_SQL = '', '', '#WHERE_SQL# and '),''));
		SET _S = REPLACE(_S, '#INNER#', IF(_ALL_POZ = 0,'INNER JOIN tb_opng tb ON tb.GUID=O.GUID ',''));
		-- SET _S = REPLACE(_S, '#INNER#', IF(_ALL_POZ = 0,'INNER JOIN tb_chk_noty tb ON tb.GUID=O.GUID ',''));

		SET _S = REPLACE(_S, '_Rok', _Rok);
		SET _S = REPLACE(_S, '_NaDzien', _NaDzien);
		SET _S = REPLACE(_S, '_LIMIT_ODSETEK', _LIMIT_ODSETEK);
		SET _S = REPLACE(_S, '#rok#', @session.FK.AktRokObrach);

		set @SQLtekst2=_S;
		#select _S;
		CALL _ExecuteCmd(_S, @Error);

        SELECT platnikGUID INTO _GUIDPlatnika2 FROM t_noty_poz LIMIT 1;
        SELECT _Rnd2(SUM(odsetki)) INTO _SUMA_ODSETEK FROM t_noty_poz;

		CALL fr_ht_konto('WEZW', _GUIDPlatnika2, _ScenarioName, '',0,'','','','');

		SELECT t.*,
            @_KontoBankowe AS DomyslnyBank2,
            _SUMA_ODSETEK AS sum_odsetki
		FROM t_noty_poz t;

        DROP TABLE IF EXISTS t_noty_poz;

	END IF; -- koniec _Mode='GetNotyObc_Pozycje'



	-- CALL ht_pr_noty('GetNoty_Pozycje_grp', '','Scenario',"parama",2015,'2015-06-10','0','','','')
	IF _Mode IN ('GetNoty_Pozycje_grp','GetNotyObc_Pozycje_grp') THEN  -- przygotowuje pozycje not, dla zaznaczonych w czekowni kontrahentow z pogrupowaniem (w srodku stawki %)
		
		SET @SQLx= 'aa';
		
		DROP TEMPORARY TABLE IF EXISTS t_notki;
		
		SET _S = 
		"
		CREATE TEMPORARY TABLE t_notki
		SELECT 
			0 as lpg, O.GUID, now() as DayB, now() as DayE, 
			KK.symbol,KK.nazwa,KK.GUID as platnikGUID, KK.nip,
			IFNULL((select concat(B.NazwaBanku,' ', B.Konto) from banki B where B.idn=KK.DomyslnyBank ),'.') as DomyslnyBank, 
			KK.nazwamiasta AS miasto, KK.ulica, KK.zipcode, 
			SUBSTRING(concat(KK.w_ulica,' ',KK.W_zipcode,' ',KK.W_NazwaMiasta),1,250) As AdresKor, 
			'_NaDzien' as nadzien,	
		
			O.CKwotaWal, O.kurs, IF(O.rodzaj in (20,21,22), O.nrdokkas,
			IF(O.rodzaj in (36,37), O.nrraportu, O.nrdokfin)) as nrdokfin,
			O.sr_opoznienie,O.CKwota,IF(O.CWN, O.CKwota, -O.CKwota) as CKwotaWn,
			IF(O.CWN, O.CKwota, -O.CKwota)- O.CRozliczone as CPozostalo,
			O.datawystaw, O.dataplatnosci,

			CONCAT(IF(KK.kontofk<>'','konto FK: ',' '),REPLACE(REPLACE(KK.kontofk,'*','' ),'|','') ,' ',IF(KK.kontofk2<>'' and KK.kontofk<>KK.kontofk2, REPLACE(REPLACE(KK.kontofk2,'*','' ),'|',''),'')) as kontofk, 

			Round(IF(IF(O.CWN, O.CKwota, -O.CKwota)= O.CRozliczone,
			TO_DAYS(O.datarozliczenia)-TO_DAYS(O.dataplatnosci),
			TO_DAYS('_NaDzien')-TO_DAYS(O.dataplatnosci)), 0)
			#+(select zerod from zero limit 1) 
			As Dni,   --  TO_DAYS(CURRENT_DATE)-...

			LEFT((select group_concat(rn.datawystaw) from rozrach r inner join opng rn on rn.guid=r.idnoper2 where r.idnoper=O.GUID),200) as datarozliczenia, 
			O.datarozliczenia as datarozliczeniaOrg,
			O.odsetki, 
			_ht_OdsetkiDlaDat(O.dataplatnosci, O.datarozliczenia) as stawkiproc,
			(select zerod from zero) as odsetki_prognoza 
			FROM opng O 
			-- INNER JOIN tb_chk_noty tb ON tb.GUID=O.platnikGUID
			#INNER#
			LEFT JOIN kontrah K ON O.KontrGUID=K.GUID 
			LEFT JOIN kontrah KK ON O.PlatnikGUID=KK.GUID 
			LEFT JOIN platnosc P ON O.sposobplatn=P.idn 
			LEFT JOIN banki bn ON O.wyslano_przelew = bn.idn 
			LEFT JOIN operdoc RS ON O.rodzaj = RS.rodzaj 
			LEFT JOIN banki KB ON O.NrKasy = KB.idn 
			LEFT JOIN kasy KB2 ON O.NrKasy = KB2.idn 
			LEFT JOIN Miasta M ON K.NazwaMiasta=M.NazwaMiasta 
						
			LEFT JOIN v_kkn0 KC0 ON O.katcol0 = KC0.klucz AND KC0.rok IN(0, #rok#) 
			LEFT JOIN v_kkn1 KC1 ON O.katcol1 = KC1.klucz AND KC1.rok IN(0, #rok#) 
			LEFT JOIN v_kkn2 KC2 ON O.katcol2 = KC2.klucz AND KC2.rok IN(0, #rok#) 
			LEFT JOIN v_kkn3 KC3 ON O.katcol3 = KC3.klucz AND KC3.rok IN(0, #rok#) 
			LEFT JOIN v_kkn4 KC4 ON O.katcol4 = KC4.klucz AND KC4.rok IN(0, #rok#) 
			
			LEFT JOIN osoby OO ON O.ugrpGUID = OO.GUID 
			LEFT JOIN waluty W ON O.waluta = W.idn 
			LEFT JOIN zlec ZL ON ZL.GUID = O.zlecenieGUID 
			LEFT JOIN waluty WR ON O.waluta_rozliczen = WR.idn 
		  LEFT JOIN plankont PP ON PP.symbol = O.kontofk AND PP.Rok = _Rok
		  --   _WHERE 
		  WHERE 
			#WHERE_SQL#  
			O.rozrachunek and (O.rodzaj in (select rodzaj from operdoc where nazwa like 'ST%%' and grupa=0) or O.rodzaj in (1))
			AND O.datawystaw<='_NaDzien' AND O.wystawiono_note_ods = 0 AND O.nierozliczony=0 AND O.odsetki > _LIMIT_ODSETEK AND O.odsetki > 0
			ORDER BY KK.symbol, KK.GUID, O.datawystaw, O.idn
			;";

		-- SET _WHERE_SQL = IF(_ALL_POZ=0,_WHERE_SQL,'');  -- uwwzglednia klucz na wszystkie lub nie pozycje
		-- SET _S = REPLACE(_S, '_WHERE', IF(_WHERE_SQL = '', ' WHERE ', CONCAT('\n WHERE ', _WHERE_SQL, ' and ')));
		SET _S = REPLACE(_S, '#WHERE_SQL#', IF(_ALL_POZ=0,IF(_WHERE_SQL = '', '', '#WHERE_SQL# and '),''));
		SET _S = REPLACE(_S, '#INNER#', IF(_ALL_POZ = 0,'INNER JOIN tb_opng tb ON tb.GUID=O.GUID ',''));
		SET _S = REPLACE(_S, '_Rok', _Rok);
		SET _S = REPLACE(_S, '_NaDzien', _NaDzien);
		SET _S = REPLACE(_S, '_LIMIT_ODSETEK', _LIMIT_ODSETEK);
		SET _S =	REPLACE(_S, '#rok#', IFNULL(@session.FK.AktRokObrach, '2015') );
		SET @SQLx= IFNULL(_S,'nullek');
		
		#select _S;
		CALL _ExecuteCmd(_S, @Error);
		
		DROP TEMPORARY TABLE IF EXISTS t_notkipz;
		
		CREATE TEMPORARY TABLE t_notkipz
		SELECT distinct platnikGUID from t_notki;
		
		-- ###  dla kazdego 
				

			DROP TEMPORARY TABLE IF EXISTS t_notkipz;
			CREATE TEMPORARY TABLE t_notkipz
				SELECT GUID from t_notki;


			
			OPEN c_Guidy;
				loop1: LOOP
					FETCH c_Guidy INTO _GUID;
					IF done THEN 
						LEAVE loop1;
					END IF;
					
					select platnikguid, guid, CKwota, DataWystaw, dataplatnosci, datarozliczeniaOrg
					into @PlatnikGUID, @GUID, @KwotaBazowa, @DataWystaw, @DataPlatnosci, @DataRozliczenia
					from t_notki where guid=_GUID;
					
					DROP TEMPORARY TABLE IF EXISTS t_tt;
					
					-- CREATE TABLE t_tt 
						SET @TMPWAR = ht_rozrach_CalcOdsetki('', '', @KwotaBazowa, @DataPlatnosci, @DataRozliczenia, @PlatnikGUID, '', '', '', '')	;
			
					INSERT INTO t_notki
					SELECT 
						1 as lpg, 
						@GUID as GUID, 
						DayB, 
						DayE, 
						'' as symbol, '' as nazwa, @PlatnikGUID as platnikGUID, 
						(select nip from kontrah where guid=@GUID limit 1) as nip,
						'' DomyslnyBank, 
						''  AS miasto, ''  as ulica, '' as zipcode, 
						'' As AdresKor, 
						_NaDzien as nadzien,	
						0 as CKwotaWal, 
						1 as kurs, '' as nrdokfin,
						0 as sr_opoznienie,
						0 as CKwota,
						0 as CKwotaWn,
						0  as CPozostalo,
						DayB as datawystaw, DayB as dataplatnosci,
						' ' as kontofk, 0 As Dni,   --  TO_DAYS(CURRENT_DATE)-...
						DayB as datarozliczenia, 
						DayB as datarozliczeniaOrg,
						T.odsetki as odsetki, 
						_ht_OdsetkiDlaDat(DayB,DayE) as stawkiproc,
						0 as odsetki_prognoza 
					FROM 
						t_tabodsetki T
					WHERE 
						T.odsetki>0
					ORDER BY dateb
					;
			
			
				
				END LOOP;		
			CLOSE c_Guidy;
		
	
		SELECT * FROM t_notki ORDER BY  guid,platnikguid,lpg
				;
		
		
		
	END IF; -- koniec _Mode='GetNoty_Pozycje_grp' 
	



	IF _Mode='DropTempTable' THEN  
		DROP TABLE IF EXISTS tb_chk_noty;
	END IF;

	-- CALL ht_pr_noty('CreateTempTable', '','',"",2015,'','','','','');
	IF _Mode='CreateTempTable' THEN  
		CALL ht_pr_noty('DropTempTable', '','','',0,'','','','','');
		
		CREATE TEMPORARY TABLE tb_chk_noty (GUID VARCHAR(38) UNIQUE);
		-- CREATE TABLE tb_chk_noty (GUID VARCHAR(38) UNIQUE);
		
	END IF;

	-- CALL ht_pr_noty('CreateTempTable', 'GUID','',"",2015,'','','','','');
	IF _Mode='AddToTempTable' THEN  
		INSERT IGNORE INTO tb_chk_noty SET GUID = _GUIDPlatnika;
	END IF;
	
-- CALL ht_pr_noty('ROZRACH_DEFAULT', '','STPRN_ROZRACH_DEFAULT',"",2024,'','{3FF9680D-4511-4C39-B200-1DA25E6473DF}','','','')
	IF _Mode='ROZRACH_DEFAULT' THEN
		SELECT
		'ht_pr_noty_ROZRACH_DEFAULT' AS ht_pr_noty_ROZRACH_DEFAULT,
		n.*
		FROM opng n WHERE GUID = _ParamA;
	END IF;






END$$

DELIMITER ;
