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

DROP PROCEDURE IF EXISTS `ht_pr_wezwaniadozaplaty`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `ht_pr_wezwaniadozaplaty`(
	IN _Mode VARCHAR(50),
	IN _GUIDPlatnika VARCHAR(38),
	IN _ScenarioName VARCHAR(250),
	IN _WHERE_SQL TEXT,
	IN _ParamA VARCHAR(50),
	IN _ParamB VARCHAR(50),
	IN _ParamC VARCHAR(50),
	IN _ParamD VARCHAR(50)
)
BEGIN
	DECLARE _ALL_POZ SMALLINT;
	DECLARE _ALL_GRUPY SMALLINT;
	DECLARE S TEXT;
	DECLARE _SQLText TEXT;
	DECLARE _TEXT1 TEXT;
	DECLARE _PlatnikGUID VARCHAR(38);
	DECLARE _PlatnikIDN INT(11);
	DECLARE _TEXT2 TEXT;
	DECLARE _BankNazwa VARCHAR(50); -- nazwa banku dla kont dynamicznych
	DECLARE _BankPrefix VARCHAR(12); -- prefix numeru konta dla kont dynamicznych
	DECLARE _Dynamiczne VARCHAR(1); -- czy konta sa dynamiczne
	DECLARE _DomyslnyBank INT(11); -- czy kontrahent ma domyslny bank
	DECLARE _KontoBankowe TEXT; -- konto na wydruku faktury
	DECLARE _BankOpisDodatkowy TEXT;
	DECLARE _KontoBankoweOper TEXT;
	DECLARE _owner VARCHAR(100); -- owner z dbglobals
	DECLARE _pozostalo_poterminie DOUBLE(16,4); -- podsumowanie dla Volt
	DECLARE _osobaGUID VARCHAR(38); -- uzytkownik zalogowany
	
	SET _WHERE_SQL = IFNULL(_WHERE_SQL, '');
	SET _ALL_POZ = (select ValueB from IReg where idkey='WezwanieDoZaplatyCALLWszystkiePozDlaKontrah' limit 1);
	SET _ALL_GRUPY = (select ValueB from IReg where idkey='WezwanieSQLWszystkieGrupyRozrach' limit 1);
	-- istotne jest to, ze trzeba tez wlaczyc klucz  WezwaniaSQLzFiltremFDBC - bo to uruchamia w programie przekazywaniefiltrow
	SET _owner := @session.globals.Owner;
	SET @session.CheckLogonUserLogin = IFNULL(@session.CheckLogonUserLogin, @session.Registration.UserLogin); 
	SET _osobaGUID = IFNULL((SELECT osobaGUID FROM _user_accounts WHERE login = @session.CheckLogonUserLogin),'');
	
	SET @_osobaGUID = _osobaGUID;
	

	-- nowa wersja czekowni z tabela tymczasowa tb_wezwaniadozaplaty - nowa wersja z nowymi programami (kwiecien 2024)
	-- rozbite na dwa oddzielne mody, bo nowa metoda ma mocno uproszczone dane
	IF (_Mode = 'GetWezwanieDoZaplaty_Checkownia'  AND _WHERE_SQL = 'TABELA_TYMCZASOWA') THEN

		SET _TEXT1 = "select distinct
		1 as 'check',KK.symbol,KK.nazwa,KK.GUID AS platnikGUID,
		KK.nazwamiasta AS miasto, KK.ulica, KK.zipcode ";

		SET _TEXT2 = " FROM opng O
		inner join tb_wezwaniadozaplaty tb ON tb.GUID = O.GUID
		LEFT JOIN kontrah K ON O.KontrGUID=K.GUID
		LEFT JOIN kontrah KK ON O.PlatnikGUID=KK.GUID
		WHERE O.rozrachunek and #gruparozrach# and O.nierozliczony
		-- WHERE (O.rozrachunek > 0 or O.rodzaj in (55, 56))
		-- and O.gruparozrach=1 and O.nierozliczony=1
		AND KK.GUID<>'' AND O.deleted=0
		and (IF(O.CWN, O.CKwota, -O.CKwota)- O.CRozliczone)>0.009 "
		;

		SET _TEXT2 = REPLACE(_TEXT2, '#gruparozrach#',
									CASE WHEN _ALL_GRUPY=1 THEN 'O.gruparozrach > 0 '
									ELSE 'O.gruparozrach in (1,2)' END);

		IF _ScenarioName='STPRN_ROZRACH_NIEPRZET_WEZW_DO_ZAP' then
			SET S = CONCAT(
			_TEXT1,
			_TEXT2,
			"\n ORDER BY KK.symbol "
			);

			CALL _ExecuteCmd(S, @Error);

		ELSE -- dla wezwan, a nie przypomnienia, trzeba odfiltrowac pozycje nieprzeterminowane
			DROP TABLE IF EXISTS t_wezt1;
			DROP TABLE IF EXISTS t_wezt2;
			SET S = CONCAT(
			"CREATE TEMPORARY TABLE t_wezt1",
			"\n SELECT DISTINCT ",
			"\n O.platnikGUID, ",
			"\n Round(IF(IF(O.CWN, O.CKwota, -O.CKwota)= O.CRozliczone,TO_DAYS(datarozliczenia)-TO_DAYS(O.dataplatnosci),",
			"\n TO_DAYS(CURRENT_DATE)-TO_DAYS(O.dataplatnosci)), 0) As Dni ",
			_TEXT2,
			"\n HAVING Dni>0 "
			);

			SET @S = S;

			CALL _ExecuteCmd(S, @Error);

			CREATE TEMPORARY TABLE t_wezt2
			SELECT DISTINCT platnikGUID
			FROM t_wezt1;
			ALTER TABLE t_wezt2 ADD INDEX platnikGUID(platnikGUID);

			SET S = CONCAT(
			_TEXT1,
			"\n FROM kontrah KK INNER JOIN t_wezt2 t ON KK.GUID=t.platnikGUID ",
			"\n ORDER BY KK.symbol "
			);

			SET @_SQLText =	S;
			CALL _ExecuteCmd(S, @Error);

		END IF;

	END IF; -- GetWezwanieDoZaplaty_Checkownia z tabela tymczasowa



	-- tutaj stara wersja checkowni, zachowana dla zgodnosci z programem starszym, z czasem do wywalenia
	IF (_Mode = 'GetWezwanieDoZaplaty_Checkownia'  AND _WHERE_SQL <> 'TABELA_TYMCZASOWA') THEN
		
		SET _TEXT1 = "select distinct
			1 as 'check',KK.symbol,KK.nazwa,KK.GUID AS platnikGUID,
			KK.nazwamiasta AS miasto, KK.ulica, KK.zipcode ";
		
		SET _TEXT2 = " FROM opng O
		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
		WHERE O.rozrachunek and #gruparozrach# and O.nierozliczony
		-- WHERE (O.rozrachunek > 0 or O.rodzaj in (55, 56))
		-- and O.gruparozrach=1 and O.nierozliczony=1
		AND KK.GUID<>'' AND O.deleted=0
		and (IF(O.CWN, O.CKwota, -O.CKwota)- O.CRozliczone)>0.009 "
		;
		
		SET _TEXT2 = REPLACE(_TEXT2, '#rok#',  ifnull(@session.FK.AktRokObrach, year(current_date)));
		SET _TEXT2 = REPLACE(_TEXT2, '#gruparozrach#',
									CASE WHEN _ALL_GRUPY=1 THEN 'O.gruparozrach > 0 '
									ELSE 'O.gruparozrach in (1,2)' END);
	
		IF _ScenarioName='STPRN_ROZRACH_NIEPRZET_WEZW_DO_ZAP' then
			SET S = CONCAT(
			_TEXT1,
			_TEXT2,
			IF(_WHERE_SQL = "", "", CONCAT(" AND ",_WHERE_SQL)),
			"\n ORDER BY KK.symbol "  
			);

			SET @S = S;

			CALL _ExecuteCmd(S, @Error);
			
		ELSE -- dla wezwan, a nie przypomnienia, trzeba odfiltrowac pozycje nieprzeterminowane
			DROP TABLE IF EXISTS t_wezt1;
			DROP TABLE IF EXISTS t_wezt2;
			SET S = CONCAT(
			"CREATE TEMPORARY TABLE t_wezt1",
			"\n SELECT DISTINCT ",
			"\n O.platnikGUID, ",
			"\n Round(IF(IF(O.CWN, O.CKwota, -O.CKwota)= O.CRozliczone,TO_DAYS(datarozliczenia)-TO_DAYS(O.dataplatnosci),",
			"\n TO_DAYS(CURRENT_DATE)-TO_DAYS(O.dataplatnosci)), 0) As Dni ",
			_TEXT2,
			IF(_WHERE_SQL = "", "", CONCAT(" AND ",_WHERE_SQL)),
			"\n HAVING Dni>0 "
			);

			SET @S = S;

			CALL _ExecuteCmd(S, @Error);
			
			CREATE TEMPORARY TABLE t_wezt2
			SELECT DISTINCT platnikGUID
			FROM t_wezt1;
			ALTER TABLE t_wezt2 ADD INDEX platnikGUID(platnikGUID);
			
			SET S = CONCAT(
			_TEXT1,
			"\n FROM kontrah KK INNER JOIN t_wezt2 t ON KK.GUID=t.platnikGUID ",
			"\n ORDER BY KK.symbol "
			);
						
			SET @_SQLText =	S;
			CALL _ExecuteCmd(S, @Error);
			
		END IF; -- koniec starej wersji przygotowania checkowni

/*
SET @session.globals.Owner = 'TRANSBUD';

CALL ht_pr_wezwaniadozaplaty('GetWezwanieDoZaplaty_Checkownia', '', 'STPRN_ROZRACH_WEZW_DO_ZAPLATY', "TABELA_TYMCZASOWA", '2025', '','','');
CALL ht_pr_wezwaniadozaplaty('GetWezwanieDoZaplaty_Naglowek', '{804C4B06-CB9A-4BE3-9D98-1B4D40851B45}', 'STPRN_ROZRACH_WEZW_DO_ZAPLATY', "TABELA_TYMCZASOWA", '2025', '','','');
CALL fr_ht_konto('WEZW', '{804C4B06-CB9A-4BE3-9D98-1B4D40851B45}', 'STPRN_ROZRACH_WEZW_DO_ZAPLATY', '',0,'','','','');
SELECT @_KontoBankowe;
CALL ht_pr_wezwaniadozaplaty('GetWezwanieDoZaplaty_Pozycje', '{804C4B06-CB9A-4BE3-9D98-1B4D40851B45}', 'STPRN_ROZRACH_WEZW_DO_ZAPLATY', "TABELA_TYMCZASOWA", '2025', '','','');

*/		
			
	END IF; -- GetWezwanieDoZaplaty_Checkownia
	
	-- naglowek zawsze jest taki sam, niezaleznie od tabel tymczasowych
	IF _Mode='GetWezwanieDoZaplaty_Naglowek' THEN  
		
	SET _BankNazwa= '';   
	SET _BankPrefix= '';			
		
	SET _SQLText =
		'SELECT "ht_pr_wezwaniadozaplaty" AS ht_pr_wezwaniadozaplaty, 
			KK.symbol,KK.nazwa,KK.GUID AS platnikGUID, KK.nip,
			"#_DomyslnyBank#" AS DomyslnyBank,
			"#_BankNazwa#" AS BankNazwa,
			"#_BankPrefix#" AS BankPrefix,
			DATABASE() as baza,
			IF(length(KK.w_zipcode) > 3,KK.w_zipcode,KK.zipcode) as kod2,
			IF(length(KK.w_ulica) > 3,KK.w_ulica,KK.ulica) as ulica2, 
			IF(length(KK.w_nazwamiasta) > 3,KK.w_nazwamiasta,KK.nazwamiasta) as miasto2,
			KK.nazwamiasta AS miasto, KK.ulica, KK.zipcode, 
			KK.IsoCountryCode AS kraj,
			SUBSTRING(CONCAT(KK.w_ulica," ",KK.W_zipcode," ",KK.W_NazwaMiasta),1,250) AS AdresKor,
			(SELECT dane_adresowe FROM erp_division_schema WHERE guid = KK.ugrpGUID AND deleted=0 LIMIT 1) AS DaneAdresoweOddzialu,
			(SELECT dane_kontaktowe FROM erp_division_schema WHERE guid = KK.ugrpGUID AND deleted=0 LIMIT 1) AS DaneKontaktoweOddzialu,
			-- IF(KK.IsoCountryCode<> "PL", "en", "pl") AS lang_id,
			KK.lang_id,
			"#_ScenarioName#" AS scenariusz,"#_DomyslnyBank2#" AS DomyslnyBank2,
			(SELECT p.analityka FROM plankont p WHERE p.obcyguid=KK.guid LIMIT 1) AS analityka,
			(SELECT valuea FROM IReg WHERE idkey = "Miasto" AND IdPath LIKE "%DaneFirmy" LIMIT 1) AS FirmaMiasto,
			
			ifnull((SELECT CONCAT(imie1," ",nazwisko) FROM osoby WHERE guid = "#_osobaGUID#"), "") AS User,
			ifnull((select Left(Group_Concat(DISTINCT adres SEPARATOR ", "),150) from kontakty where  typ_medium = 3 and nieaktywny = 0 and osobaGUID = "#_osobaGUID#" and kontrGUID<>"" order by priorytet DESC), "") as User_Mail, 
			ifnull((select Left(Group_Concat(DISTINCT adres SEPARATOR ", "),150) from kontakty where  typ_medium in (0) and nieaktywny = 0 and osobaGUID = "#_osobaGUID#" and kontrGUID<>"" order by priorytet DESC), "") as User_Telefon, 
			ifnull((select Left(Group_Concat(DISTINCT adres SEPARATOR ", "),150) from kontakty where  typ_medium in (2) and nieaktywny = 0 and osobaGUID = "#_osobaGUID#" and kontrGUID<>"" order by priorytet DESC), "") as User_Komorka, 
			ifnull((select Left(Group_Concat(DISTINCT adres SEPARATOR ", "),150) from kontakty where  typ_medium in (1) and nieaktywny = 0 and osobaGUID = "#_osobaGUID#" and kontrGUID<>"" order by priorytet DESC), "") as User_Fax
			-- ifnull(ht_Translate_Word(O.stanowisko,N.lang_id),O.stanowisko) as User_Stanowisko, 

		FROM kontrah KK  
		WHERE 
			KK.GUID ="#_GUIDPlatnika#"
		;
		'
		;
		-- sekcja z bankiem domyslnym kontrahenta, zrobiona dla Izohanu wiec jest to dla platnika
		-- dla innych mozna to przerobic na dane kontrahenta

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

			
		SET _SQLText =	REPLACE(_SQLText, '#_ScenarioName#', _ScenarioName);
		SET _SQLText =	REPLACE(_SQLText, '#_GUIDPlatnika#', _GUIDPlatnika);	
		SET _SQLText =	REPLACE(_SQLText, '#_DomyslnyBank2#', @_KontoBankowe);
		SET _SQLText =	REPLACE(_SQLText, '#_DomyslnyBank#', @_KontoBankowe);
		SET _SQLText =	REPLACE(_SQLText, '#_BankNazwa#', _BankNazwa);
		SET _SQLText =	REPLACE(_SQLText, '#_BankPrefix#', _BankPrefix);
		SET _SQLText =	REPLACE(_SQLText, '#_osobaGUID#', _osobaGUID);
		
		-- SET @_KontoBankowe = _KontoBankowe; SET @_BankOpisDodatkowy = _BankOpisDodatkowy;
		SET @_SQLText =	_SQLText;
		CALL _ExecuteCmd(_SQLText, @Error);
		
	END IF; -- koniec _Mode='GetWezwanieDoZaplaty_Naglowek' 


	IF _Mode='GetWezwanieDoZaplaty_Pozycje' THEN  
		
		SET S = 
		"select
			op.opis as RodzajDok,
			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,O.CKwotaWal,
			IF(O.CWN, O.CKwota, -O.CKwota) as CKwotaWn, O.netto as netto, O.nettowal as nettowal,
			IF(O.CWN, O.CKwota, -O.CKwota)- O.CRozliczone as CPozostalo,
			IF(O.CWN, O.CKwotaWal, -O.CKwotaWal)- O.CRozliczoneWal as CPozostaloWal,
			O.datawystaw, O.dataplatnosci,
			Round(IF(IF(O.CWN, O.CKwota, -O.CKwota)= O.CRozliczone,TO_DAYS(datarozliczenia)-TO_DAYS(O.dataplatnosci),
			TO_DAYS(CURRENT_DATE)-TO_DAYS(O.dataplatnosci)), 0) As Dni,
			O.odsetki, O.odsetki as OdsetkiCalc, 
			SUBSTRING(concat(K.w_ulica,' ',K.W_zipcode,' ',K.W_NazwaMiasta),1,250) As AdresKor,
			w.symbol as Waluta 
			FROM opng O
			#INNER#
			LEFT JOIN kontrah K on K.GUID=O.kontrGUID
			LEFT JOIN waluty w ON w.idn=O.waluta
			LEFT JOIN operdoc op on O.rodzaj=op.rodzaj
			WHERE 
			#WHERE_SQL#
			O.deleted=0 AND O.rozrachunek and O.nierozliczony
			AND #gruparozrach#
			#faktor#
			AND O.platnikGUID = '#GUIDPlatnika#' AND O.platnikGUID <> '' 
			AND O.rodzaj NOT IN (20,21) --  to konsekwencja wlaczenia korekt, wywalamy wprost KP/KW ale moze to nie jest do konca dobrze i warunki powinny byc inne
			-- a w ogole to powinno byc tak samo tutaj i w czekowni
			-- HAVING (CPozostalo > 0)  AND  (Dni > 0)
			HAVING (CPozostalo <> 0)  AND  (Dni > 0) -- zmiana dla korekt, dla jarz (korekty tez maja wchodzic, a maja kwoty ujemne)
			ORDER BY O.waluta, O.datawystaw, O.dataplatnosci
		;";
		
		SET S = REPLACE(S, '#GUIDPlatnika#', _GUIDPlatnika);
		-- SET S = REPLACE(S, '#WHERE_SQL#', IF(_ALL_POZ = 0, IF(_WHERE_SQL = '', '', CONCAT(_WHERE_SQL, ' and')),''));
		-- SET S = REPLACE(S, '#INNER#', IF(_ALL_POZ = 0,'INNER JOIN tb_opng tb ON tb.GUID=O.GUID ',''));

		-- zmiana dla baltimy i docelowa, z zalozeniem, ze wydruki sa zawsze z tabela tymczasowa
		SET S = REPLACE(S, '#INNER#', IF(_ALL_POZ = 0,'INNER JOIN tb_wezwaniadozaplaty tb ON tb.GUID=O.GUID ',''));
		SET S = REPLACE(S, '#WHERE_SQL#', '');

/* -- wylaczenie tej sekcji, bo wchodzi ta wyzej i porzucamy wielowariantowosc
		-- pozycje sa albo odfiltrowane (dwiema metodami) albo wszystkie, co zalezy od klucza
		IF _WHERE_SQL = 'TABELA_TYMCZASOWA' THEN
			SET S = REPLACE(S, '#INNER#', IF(_ALL_POZ = 0,'INNER JOIN tb_wezwaniadozaplaty tb ON tb.GUID=O.GUID ',''));
			SET S = REPLACE(S, '#WHERE_SQL#', '');
		ELSE
			SET S = REPLACE(S, '#INNER#', '');
			SET S = REPLACE(S, '#WHERE_SQL#', IF(_ALL_POZ = 0, IF(_WHERE_SQL = '', '', CONCAT(_WHERE_SQL, ' and')),''));
		END IF;
*/

		SET S = REPLACE(S, '#gruparozrach#',
											CASE WHEN _ALL_GRUPY=1 THEN 'O.gruparozrach > 0 '
											ELSE 'O.gruparozrach in (1,2)' END);
											
		IF @session.globals.Owner IN ('IZOHAN') THEN	
			SET S = REPLACE(S, '#faktor#',
						CASE WHEN _ScenarioName IN ('STPRN_ROZRACH_WEZW_DO_ZAPLATY_WLASNE_F',
						'STPRN_ROZRACH_OST_WEZW_DO_ZAPL_F',
						'STPRN_ROZRACH_WEZW_DO_ZAPLATY_FAK') THEN ' AND O.status_obieg in (8,9)'
						ELSE 'AND O.status_obieg not in (8,9)' END);
		ELSE	
			SET S = REPLACE(S, '#faktor#', '');	
		END IF;	

		SET @SQLTextx = S;

		#select S;
		CALL _ExecuteCmd(S, @Error);
		

	END IF; -- koniec _Mode='GetWezwanieDoZaplaty_Pozycje' 
	
	IF _Mode='GetNieprzeterminowaneWezwanieDoZaplaty_Pozycje' and _owner <> 'VOLT' THEN  
		
		SET S = 
			"select
			op.opis as RodzajDok,
			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,O.CKwotaWal,
			IF(O.CWN, O.CKwota, -O.CKwota) as CKwotaWn, O.netto as netto, O.nettowal as nettowal,
			IF(O.CWN, O.CKwota, -O.CKwota)- O.CRozliczone as CPozostalo,
			IF(O.CWN, O.CKwotaWal, -O.CKwotaWal)- O.CRozliczoneWal as CPozostaloWal,
			O.datawystaw, O.dataplatnosci,
			Round(IF(IF(O.CWN, O.CKwota, -O.CKwota)= O.CRozliczone,TO_DAYS(datarozliczenia)-TO_DAYS(O.dataplatnosci),
			TO_DAYS(CURRENT_DATE)-TO_DAYS(O.dataplatnosci)), 0) As Dni,
			O.odsetki, O.odsetki as OdsetkiCalc, 
			SUBSTRING(concat(K.w_ulica,' ',K.W_zipcode,' ',K.W_NazwaMiasta),1,250) As AdresKor,
			w.symbol as Waluta
			FROM opng O
			#INNER#
			LEFT JOIN kontrah K on K.GUID=O.kontrGUID
			LEFT JOIN waluty w ON w.idn=O.waluta
			LEFT JOIN operdoc op on O.rodzaj=op.rodzaj
			WHERE 
			#WHERE_SQL#
			O.deleted=0 AND O.rozrachunek and O.gruparozrach in (1,2) and O.nierozliczony
			AND O.platnikGUID = '#GUIDPlatnika#' AND O.platnikGUID <> '' 
			HAVING (CPozostalo > 0)  and Dni <= 0
			ORDER BY O.waluta, O.datawystaw, O.dataplatnosci
		;";
		
		SET S = REPLACE(S, '#GUIDPlatnika#', _GUIDPlatnika);
		-- SET S = REPLACE(S, '#WHERE_SQL#', IF(_ALL_POZ=0,IF(_WHERE_SQL = '', '', CONCAT(_WHERE_SQL, ' and')),''));
		-- SET S = REPLACE(S, '#INNER#', IF(_ALL_POZ = 0,'INNER JOIN tb_opng tb ON tb.GUID=O.GUID ',''));

				-- pozycje sa albo odfiltrowane (dwiema metodami) albo wszystkie, co zalezy od klucza
		IF _WHERE_SQL = 'TABELA_TYMCZASOWA' THEN
			SET S = REPLACE(S, '#INNER#', IF(_ALL_POZ = 0,'INNER JOIN tb_wezwaniadozaplaty tb ON tb.GUID=O.GUID ',''));
			SET S = REPLACE(S, '#WHERE_SQL#', '');
		ELSE
			SET S = REPLACE(S, '#INNER#', '');
			SET S = REPLACE(S, '#WHERE_SQL#', IF(_ALL_POZ = 0, IF(_WHERE_SQL = '', '', CONCAT(_WHERE_SQL, ' and')),''));
		END IF;




		
		#select S;
		CALL _ExecuteCmd(S, @Error);

	END IF; -- koniec _Mode='GetNieprzeterminowaneWezwanieDoZaplaty_Pozycje' 
	
	
	IF _Mode='GetNieprzeterminowaneWezwanieDoZaplaty_Pozycje' and _owner = 'VOLT' THEN  
		
		SET @test1='VOLT';
		
		DROP TEMPORARY TABLE IF EXISTS t_wezt20;
		
		SET S = 
		"CREATE TEMPORARY TABLE t_wezt20
		select
			op.opis as RodzajDok,
			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,O.CKwotaWal,
			IF(O.CWN, O.CKwota, -O.CKwota) as CKwotaWn, O.netto as netto, O.nettowal as nettowal,
			IF(O.CWN, O.CKwota, -O.CKwota)- O.CRozliczone as CPozostalo,
			IF(O.CWN, O.CKwotaWal, -O.CKwotaWal)- O.CRozliczoneWal as CPozostaloWal,
			O.datawystaw, O.dataplatnosci,
			Round(IF(IF(O.CWN, O.CKwota, -O.CKwota)= O.CRozliczone,TO_DAYS(datarozliczenia)-TO_DAYS(O.dataplatnosci),
			TO_DAYS(CURRENT_DATE)-TO_DAYS(O.dataplatnosci)), 0) As Dni,
			O.odsetki, O.odsetki as OdsetkiCalc, 
			SUBSTRING(concat(K.w_ulica,' ',K.W_zipcode,' ',K.W_NazwaMiasta),1,250) As AdresKor,
			w.symbol as Waluta,
			'PO TERMINIE' as przekroczenie
			FROM opng O 
			#INNER#
			LEFT JOIN kontrah K on K.GUID=O.kontrGUID
			LEFT JOIN waluty w ON w.idn=O.waluta
			LEFT JOIN operdoc op on O.rodzaj=op.rodzaj
			WHERE 
			#WHERE_SQL#
			O.deleted=0 AND O.rozrachunek and O.nierozliczony
			-- AND #gruparozrach#
			-- #faktor#
			AND O.platnikGUID = '#GUIDPlatnika#' AND O.platnikGUID <> '' 
			HAVING (CPozostalo > 0)  AND  (Dni > 0)
			ORDER BY O.waluta, O.datawystaw, O.dataplatnosci
		;";
		
		SET S = REPLACE(S, '#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 ',''));

		IF _WHERE_SQL = 'TABELA_TYMCZASOWA' THEN
			SET S = REPLACE(S, '#INNER#', IF(_ALL_POZ = 0,'INNER JOIN tb_wezwaniadozaplaty tb ON tb.GUID=O.GUID ',''));
			SET S = REPLACE(S, '#WHERE_SQL#', '');
		ELSE
			SET S = REPLACE(S, '#INNER#', '');
			SET S = REPLACE(S, '#WHERE_SQL#', IF(_ALL_POZ = 0, IF(_WHERE_SQL = '', '', CONCAT(_WHERE_SQL, ' and')),''));
		END IF;


		CALL _ExecuteCmd(S, @Error);
		
		
		
		
		SET S = 
			"INSERT INTO t_wezt20
			select
			op.opis as RodzajDok,
			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,O.CKwotaWal,
			IF(O.CWN, O.CKwota, -O.CKwota) as CKwotaWn, O.netto as netto, O.nettowal as nettowal,
			IF(O.CWN, O.CKwota, -O.CKwota)- O.CRozliczone as CPozostalo,
			IF(O.CWN, O.CKwotaWal, -O.CKwotaWal)- O.CRozliczoneWal as CPozostaloWal,
			O.datawystaw, O.dataplatnosci,
			Round(IF(IF(O.CWN, O.CKwota, -O.CKwota)= O.CRozliczone,TO_DAYS(datarozliczenia)-TO_DAYS(O.dataplatnosci),
			TO_DAYS(CURRENT_DATE)-TO_DAYS(O.dataplatnosci)), 0) As Dni,
			O.odsetki, O.odsetki as OdsetkiCalc, 
			SUBSTRING(concat(K.w_ulica,' ',K.W_zipcode,' ',K.W_NazwaMiasta),1,250) As AdresKor,
			w.symbol as Waluta,
			'' as przekroczenie
			FROM opng O
			#INNER#
			LEFT JOIN kontrah K on K.GUID=O.kontrGUID
			LEFT JOIN waluty w ON w.idn=O.waluta
			LEFT JOIN operdoc op on O.rodzaj=op.rodzaj
			WHERE 
			#WHERE_SQL#
			O.deleted=0 AND O.rozrachunek and O.gruparozrach in (1,2) and O.nierozliczony
			AND O.platnikGUID = '#GUIDPlatnika#' AND O.platnikGUID <> '' 
			HAVING (CPozostalo > 0)  and Dni <= 0
			ORDER BY O.waluta, O.datawystaw, O.dataplatnosci
		;";
		
		SET S = REPLACE(S, '#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 ',''));
		
		IF _WHERE_SQL = 'TABELA_TYMCZASOWA' THEN
			SET S = REPLACE(S, '#INNER#', IF(_ALL_POZ = 0,'INNER JOIN tb_wezwaniadozaplaty tb ON tb.GUID=O.GUID ',''));
			SET S = REPLACE(S, '#WHERE_SQL#', '');
		ELSE
			SET S = REPLACE(S, '#INNER#', '');
			SET S = REPLACE(S, '#WHERE_SQL#', IF(_ALL_POZ = 0, IF(_WHERE_SQL = '', '', CONCAT(_WHERE_SQL, ' and')),''));
		END IF;



		#select S;
		#SET @S = S;
		CALL _ExecuteCmd(S, @Error);

		SET _pozostalo_poterminie = (select sum(CPozostaloWal) from t_wezt20 where przekroczenie <> '');
				
		SELECT t.*, ifnull(_pozostalo_poterminie,0) as suma_poterminie
		FROM t_wezt20 t ORDER BY waluta, datawystaw, dataplatnosci;

	END IF; -- koniec _Mode='GetNieprzeterminowaneWezwanieDoZaplaty_Pozycje' 
	
END$$

DELIMITER ;
