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

DROP PROCEDURE IF EXISTS `fr_ht_konto`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `fr_ht_konto`(
	IN _MODE VARCHAR(50),
	IN _GUID VARCHAR(38),
	IN _scenario VARCHAR(150),
	IN _translate VARCHAR(50),
	IN _rok INT(11),
	IN _Param_A VARCHAR(150),  
	IN _Param_B VARCHAR(150),
	IN _Param_C VARCHAR(150),
	IN _Param_D VARCHAR(150)
	)

SPROC: BEGIN
	DECLARE _PlatnikGUID VARCHAR(38);
	DECLARE _waluta INT(11);
	DECLARE _PlatnikIDN INT(11);
	DECLARE _rodzaj INT(11);
	DECLARE _zmagazynu INT(11);
	DECLARE _datawystaw VARCHAR(10);
	DECLARE _CKwotaWal DOUBLE(16,4);

	DECLARE _rodzaj_platnosci INT(11); -- rodzaj platnosci do badania czy faktoring
	DECLARE _split_payment INT(11); -- znacznik na fakturze
	DECLARE _BankNazwa VARCHAR(200); -- nazwa banku dla kont dynamicznych
	DECLARE _BankPrefix VARCHAR(20); -- prefix numeru konta dla kont dynamicznych
	DECLARE _Dynamiczne VARCHAR(1); -- czy konta sa dynamiczne
	DECLARE _DomyslnyBank, _konto_oper INT; -- czy kontrahent ma domyslny bank, konto podlaczone pod opng (idn z tabeli banki)
	DECLARE _KontoBankowe TEXT; -- konto na wydruku faktury
	DECLARE _BankOpisDodatkowy TEXT; -- dodatkowy opis do rachunków bankowych

	DECLARE _walutaStr VARCHAR(3);
	DECLARE _baza VARCHAR(100); -- baza danych w ktorej jestesmy
	DECLARE _owner VARCHAR(100); -- owner z dbglobals
	DECLARE _swift, _konto, _nazwabanku VARCHAR(100); -- swift z tabeli banki, nr konta, czyli pole konto z tabeli banki
	DECLARE _idnbanku, _walutabanku INT;

	SET _KontoBankowe = '', @_KontoBankowe = '', _split_payment = 0, @_KontoBankowePotw = '', _swift = '', _konto = '',
	@_swift = '', @_konto = '', _nazwabanku = '', @_nazwabanku = '', _idnbanku = '', @_idnbanku = '', _walutabanku = '', @_walutabanku = '';

/*
procedura wyboru konta bankowego na wydruku, z zalozenia dla operacji, zamowien/proform, wezwan do zaplaty i potwierdzen sald
rozbita na mody OP, ZM, WEZW, POTW z powodow oczywistych
wybor rachunku oparty jest na platniku dokumentu lub dokumentów
	SET @session.globals.Owner = '';
	CALL fr_ht_konto('OP', _GUID, _scenario, '',0,'','','','');
	SELECT @_KontoBankowe, @_swift, @_konto, @_nazwabanku;
	SELECT @test1, @test2, @test3, @test4;
*/

	SELECT value INTO @session.globals.Owner FROM _db_globals g WHERE g.key='Owner';
	SET _owner = @session.globals.Owner;

	IF _MODE = 'OP' THEN
		select n.platnikGUID, n.waluta, n.rodzaj, n.zmagazynu, n.datawystaw, n.split_payment, n.CKwotaWal, IFNULL(p.rodzaj,0), n.nrkasy
			INTO _PlatnikGUID, _waluta, _rodzaj, _zmagazynu, _datawystaw, _split_payment, _CkwotaWal, _rodzaj_platnosci, _konto_oper
		from opng n
		LEFT JOIN platnosc p ON n.sposobplatn = p.idn
		WHERE n.guid = _GUID
		;

	ELSEIF _MODE = 'ZM' THEN
		select n.platnikGUID, n.waluta, n.rodzaj, n.datawystaw, n.BruttoWal, IFNULL(p.rodzaj,0), 0 as nrkasy
		INTO _PlatnikGUID, _waluta, _rodzaj, _datawystaw, _CkwotaWal, _rodzaj_platnosci, _konto_oper
		FROM zmng n 
		LEFT JOIN platnosc p ON n.sposobplatn = p.idn
		WHERE n.guid = _GUID 
		;

	ELSEIF _MODE IN ('WEZW') THEN
		SELECT DATABASE() INTO _baza;
		SET _PlatnikGUID = _GUID;
		SET _rodzaj = 1000;

	ELSEIF _MODE IN ('POTW') THEN
		SELECT DATABASE() INTO _baza;
		SET _PlatnikGUID = _GUID;
		SET _rodzaj = 1000;
		SET _waluta = _Param_D;

	END IF;

	SELECT domyslnybank, idn INTO _DomyslnyBank, _PlatnikIDN FROM kontrah WHERE GUID = _PlatnikGUID;
	SELECT symbol INTO _walutaStr FROM waluty WHERE idn = _waluta;

	IF ( _owner IN ('TRANSBUD') AND IFNULL((SELECT r.IsKorekta FROM opng n , operdoc r WHERE n.rodzaj=r.rodzaj AND n.guid=_GUID),'0')=1) THEN
		SET @wart_split = (SELECT SUM(j_wartBrtWal) FROM oppo_corr o, TowrNg t  WHERE o.j_idnTowr=t. guid AND t.usluga<>8 AND Idnoper_corr=_GUID);
	ELSE 
		SET @wart_split = _CkwotaWal;
	END IF;
	
	IF (_MODE IN ('OP','ZM')) OR
		 -- (_MODE = 'WEZW' AND _owner NOT IN ('IZOHAN','ASTE','PBUCH','OFFSHORE')) OR
		 (_MODE = 'POTW' AND _waluta <> '-1') THEN

		-- specjalne wyjatki dla roznych firm
		IF (_MODE	IN ('OP','ZM') AND _owner IN ('TRANSBUD') AND @wart_split >= 15000 AND _scenario <> 'STZTMGZM_FV_DEFAULT_SPLIT')
			-- AND DATABASE()NOT IN ('alfa','baltex','transtor','Nowakzoo','psm')
			-- OR (_owner IN ('AZO') AND _rodzaj IN (1) AND _datawystaw >= '2019-11-01')
			THEN SET _split_payment = 1;
		END IF;     

		IF (_MODE	IN ('OP','ZM') AND _owner IN ('TRANSBUD') AND _rodzaj = 2) THEN
			SET _split_payment = 0;
		END IF;

  SET @test1 =
  concat(_MODE,';',_waluta,';',ifnull(_owner, 'owner null'),'; rodzaj plat.: ',ifnull(_rodzaj_platnosci, 'rodzaj_plat. null'),'; domyslny bank: ',_DomyslnyBank, '; konto oper: ', ifnull(_konto_oper,'konto_oper null'));


  -- sekcja dla faktur RR, ehhhh
  IF _rodzaj IN (5,6,7,8) THEN

			SELECT
			IFNULL(concat(ifnull(rb.NazwaKonta,''),'\n', rb.NrRachunku,'\n', rb.swift), ''),
			rb.swift, rb.NrRachunku, rb.NazwaKonta,
			rb.idn, rb.waluta
			INTO _KontoBankowe, _swift, _konto, _nazwabanku, _idnbanku, _walutabanku
			FROM rachbankowe rb
			WHERE rb.kontrguid= _PlatnikGUID AND rb.nieaktywny=0
			ORDER BY rb.NrRachunku LIMIT 1;

			SET @_KontoBankowe = IFNULL(_KontoBankowe, '');
			SET @_swift = IFNULL(_swift, '');
			SET @_konto = IFNULL(_konto, '');
			SET @_nazwabanku = IFNULL(_nazwabanku, '');
			SET @_idnbanku = IFNULL(_idnbanku, '');
			SET @_walutabanku = IFNULL(_walutabanku, '');

			LEAVE SPROC;
  END IF; -- sekcja dla RR

		-- zanim wejdziemy do zwyklego badania sprawdzamy, czy rachunek jest przypisany do operacji/zamowienia
				-- tabela banki: Konto, NazwaBanku, SWIFT

		-- inna sciezka dla Simexu, zupelnie wlasna
		IF @session.globals.Owner IN ('SIMEX') THEN
		SET @test10 = 'sciezka simexu';
			SELECT platnikGUID, waluta  INTO _PlatnikGUID, _waluta FROM opng WHERE GUID = _GUID;
			/*
			SET _KontoBankowe = IFNULL((SELECT CONCAT(B.NazwaBanku,"\n", B.Konto,"\n",B.swift,'')  FROM banki B
								WHERE B.waluta=_waluta AND B.drukowac=1 AND B.nieaktywna=0 LIMIT 1),'');
				*/

				SELECT
				IFNULL(concat(ifnull(b.NazwaBanku,''),'\n', b.Konto,'\n', b.swift), ''),
				b.swift,
				b.konto,
				b.NazwaBanku,
				b.idn, b.waluta
				INTO _KontoBankowe, _swift, _konto, _nazwabanku, _idnbanku, _walutabanku
				FROM banki b where b.waluta = _waluta AND b.drukowac=1 AND b.nieaktywna=0 LIMIT 1;


				-- dla dokumentow walutowych i niektorych scenariuszy wydruku skladamy dwa konta (waluta i pln)
			IF _waluta <> 0 AND _scenario IN ('STZTMGZM_PROFORMA', 'STZTMGZM_PROFORMA_BR', 'STZTMGZM_PROFORMA_WAL', 'STZTMGZM_ZAMOWIENIE', 'STZTMGZM_ZAMOWIENIE_BR', 'STZTMGZM_FV_ZAL', 'STZTMGZM_FV_ZAL_KONCOWA', 'STZTMGZM_FV_DEFAULT') AND DATABASE()='ht' THEN

			/*
			SET _KontoBankowe = CONCAT(_KontoBankowe, '\n',
                                IFNULL((SELECT CONCAT(B.NazwaBanku,'\n', B.Konto,'\n',B.swift,'')  FROM banki B
								WHERE B.waluta=0 AND B.drukowac=1 AND B.nieaktywna=0 LIMIT 1),'')
   );
   */

					SELECT
					concat(_KontoBankowe, '\n',
					IFNULL(concat(ifnull(b.NazwaBanku,''),'\n', b.Konto,'\n', b.swift), '')
					),
					b.swift,
					b.konto,
					b.NazwaBanku,
					b.idn, b.waluta
					INTO _KontoBankowe, _swift, _konto, _nazwabanku, _idnbanku, _walutabanku
					FROM banki b where b.waluta = 0 AND b.drukowac=1 AND b.nieaktywna=0 LIMIT 1;

			END IF;


			IF _KontoBankowe = '' AND DATABASE()='kpr_formento' THEN
				SET _KontoBankowe = IFNULL((SELECT valuex FROM IReg WHERE idkey="Konta" AND IdPath= 'INT\\SYSTEM\\MOTLAWA\\DaneFirmy'),'');
				/*
				SELECT
					IFNULL(concat(ifnull(b.NazwaBanku,''),'\n', b.Konto,'\n', if(b.swift<>"",concat("\n",b.swift),"")), ''),
					b.swift,
					b.konto,
					b.NazwaBanku
					INTO _KontoBankowe, _swift, _konto, _nazwabanku
					FROM banki b where b.waluta = 0 AND b.drukowac=1 AND b.nieaktywna=0 LIMIT 1;
					*/
			END IF;

			SET @_KontoBankowe = IFNULL(_KontoBankowe, '');
			SET @_swift = IFNULL(_swift, '');
			SET @_konto = IFNULL(_konto, '');
			SET @_nazwabanku = IFNULL(_nazwabanku, '');
			SET @_idnbanku = IFNULL(_idnbanku, '');
			SET @_walutabanku = IFNULL(_walutabanku, '');

			LEAVE SPROC;
		END IF; -- koniec sciezki dla Simexu


		-- gdy platnosc jest gotowkowa to nie robimy nic, zerujemy zmienne i wypad z procedury z wyjatkami:
		-- AZO chce mieć konto zawsze na wydruku i w ksef
		-- CDG chce nr konta na wydruku faktury do paragonu w specjalnych swoich przypadkach, takze gdy platnosc to gotowka
		IF _rodzaj_platnosci = 0
				AND NOT @session.globals.Owner IN ('AZO')
				AND NOT (@session.globals.Owner IN ('CDG') AND _rodzaj = 0) THEN
				SET @_KontoBankowe =  '';
				SET @_swift = '';
				SET @_konto =  '';
				SET @_nazwabanku = '';
				SET @_idnbanku = '';
			 SET @_walutabanku = '';
				LEAVE SPROC;
		END IF;

		-- jezeli jest dodatkowy opis konta to jest on potem doklejany przed rachunkiem (np. paraqua)
		CALL _IReg_Get('Wydruki', 'Uzupelnienie opisu kont bankowych na dok', '0', 'memo',_BankOpisDodatkowy, '');

		-- gdy do operacji jest podpiety bank operacji
		IF _konto_oper <> 0  AND _rodzaj_platnosci <> 0 THEN
				SELECT
				IFNULL(concat(ifnull(b.NazwaBanku,''),'\n', b.Konto,' ' ,  if(b.swift<>"",concat("\n",b.swift),"")), ''),
				b.swift,
				b.konto,
				b.NazwaBanku,
				b.idn, b.waluta
				INTO _KontoBankowe, _swift, _konto, _nazwabanku, _idnbanku, _walutabanku
				FROM banki b where b.idn = _konto_oper;

				IF _split_payment = 1 THEN
					SET _KontoBankowe = CONCAT(_KontoBankowe,"\n","mechanizm podzielonej płatności");
				END IF;

			IF LENGTH(IFNULL(_BankOpisDodatkowy,'')) > 3 THEN
				SET _KontoBankowe = CONCAT(_BankOpisDodatkowy,'\n',_KontoBankowe);
			END IF;

				SET @_KontoBankowe = IFNULL(_KontoBankowe, '');
				SET @_swift = IFNULL(_swift, '');
				SET @_konto = IFNULL(_konto, '');
				SET @_nazwabanku = IFNULL(_nazwabanku, '');
				SET @_idnbanku = IFNULL(_idnbanku, '');
			 SET @_walutabanku = IFNULL(_walutabanku, '');

				LEAVE SPROC;
		END IF;

		-- gdy do kontrahenta(platnika) jest podpięty bank
		IF _DomyslnyBank > 0 THEN

				SELECT
				IFNULL(concat(ifnull(b.NazwaBanku,''),'\n',IF(@session.globals.Owner IN ('AXIS') AND b.waluta>0,'IBAN:',' '), b.Konto,'',  if(b.swift<>"",concat("\n",b.swift),"")), ''),
				b.swift,
				b.konto,
				b.NazwaBanku,
				b.idn, b.waluta
				INTO _KontoBankowe, _swift, _konto, _nazwabanku, _idnbanku, _walutabanku
				FROM banki b where b.idn = _DomyslnyBank;

				IF _split_payment = 1 THEN
					SET _KontoBankowe = CONCAT(_KontoBankowe,"\n","mechanizm podzielonej płatności");
				END IF;

			IF LENGTH(IFNULL(_BankOpisDodatkowy,'')) > 3 THEN
				SET _KontoBankowe = CONCAT(_BankOpisDodatkowy,'\n',_KontoBankowe);
			END IF;

				SET @_KontoBankowe = IFNULL(_KontoBankowe, '');
				SET @_swift = IFNULL(_swift, '');
				SET @_konto = IFNULL(_konto, '');
				SET @_nazwabanku = IFNULL(_nazwabanku, '');
				SET @_idnbanku = IFNULL(_idnbanku, '');
			 SET @_walutabanku = IFNULL(_walutabanku, '');

				LEAVE SPROC;
		END IF;


		IF @session.globals.Owner NOT IN ('SIMEX') THEN
			IF _DomyslnyBank = 0 THEN 
				IF @session.globals.Owner IN ('SECURITY') THEN
					IF _scenario <> 'STZTMGZM_FV_DEFAULT2' THEN
                        /*
						SET _KontoBankowe = IFNULL((select concat(ifnull(b.Nazwa,''),"\n",r.NrRachunku,if(r.swift<>"",concat("\n",r.swift),""))
                            from rachbankowe r left join bankidef b ON b.guid = r.bankguid WHERE r.kontrGUID = _PlatnikGUID
                                AND nazwakonta LIKE '%indywidualny%' limit 1),'');
						*/
						SELECT
						IFNULL(concat(ifnull(b.Nazwa,''),"\n",r.NrRachunku,if(r.swift<>"",concat("\n",r.swift),"")), ''),
						-- IFNULL(concat(ifnull(b.Nazwa,''),' ', r.NrRachunku,' ' ,  if(r.swift<>"",concat("\n",r.swift),"")), ''),
						r.swift,
						r.NrRachunku,
						b.Nazwa,
						r.idn, r.waluta
						INTO _KontoBankowe, _swift, _konto, _nazwabanku, _idnbanku, _walutabanku
						from rachbankowe r left join bankidef b ON b.guid = r.bankguid WHERE r.kontrGUID = _PlatnikGUID
						AND nazwakonta LIKE '%indywidualny%' limit 1;
					
					ELSE -- nowy wydruk faktury, domyslny, glowny dla Security
                        -- SET _KontoBankowe = IFNULL((select concat(ifnull(b.Nazwa,""),"  <b>", r.NrRachunku,"</b> " ,  if(r.swift<>"",concat("\n",r.swift),""))
						/*
                        SET _KontoBankowe = IFNULL((select concat(ifnull(b.Nazwa,''),' ', r.NrRachunku,' ' ,  if(r.swift<>"",concat("\n",r.swift),""))
						from rachbankowe r left join bankidef b ON b.guid = r.bankguid WHERE r.kontrGUID = _PlatnikGUID
							AND nazwakonta LIKE '%indywidualny%' limit 1),'');
						*/
						SELECT
						IFNULL(concat(ifnull(b.Nazwa,''),' ', r.NrRachunku,' ' ,  if(r.swift<>"",concat("\n",r.swift),"")), ''),
						r.swift,
						r.NrRachunku,
						b.Nazwa,
						r.idn, r.waluta
						INTO _KontoBankowe, _swift, _konto, _nazwabanku, _idnbanku, _walutabanku
						from rachbankowe r left join bankidef b ON b.guid = r.bankguid WHERE r.kontrGUID = _PlatnikGUID
						AND nazwakonta LIKE '%indywidualny%' limit 1;

					END IF;
			/*
			-- uwaga: wartosci sa pobierane raz z valuea a raz z valuex - mamy burdel w kluczach
				ELSEIF @session.globals.Owner IN ('VOLT') AND _rodzaj NOT IN (50,80,85,90) THEN
					SET _KontoBankowe = IFNULL((select valuea from IReg where idkey='Bank' AND IdPath= 'INT\\SYSTEM\\MOTLAWA\\DaneFirmy'),'');
				ELSEIF @session.globals.Owner IN ('VOLT') AND _rodzaj IN (50,90) THEN
					SET _KontoBankowe = IFNULL((select valuex from IReg where idkey='Konta na FV exp' AND IdPath= 'INT\\SYSTEM\\MOTLAWA\\Owner'),'');
				ELSEIF @session.globals.Owner IN ('VOLT') AND _rodzaj IN (80,85) THEN
					SET _KontoBankowe = IFNULL((select valuex from IReg where idkey='Konta na FV UE' AND IdPath= 'INT\\SYSTEM\\MOTLAWA\\Owner'),'');
			*/
				ELSE
					SET _KontoBankowe = '';
				END IF; -- owner in security
			END IF; -- _DomyslnyBank = 0

	SET @test2 = _KontoBankowe;
	
			IF _DomyslnyBank > 0 THEN 

					SET _KontoBankowe = IFNULL((SELECT CONCAT(B.NazwaBanku,"\n",IF(@session.globals.Owner IN ('AXIS') AND B.waluta>0,'IBAN: ',''), B.Konto,if(B.swift<>'',concat('\n',B.swift),'')) FROM banki B WHERE B.idn = _DomyslnyBank),'');
			END IF;

			-- sekcja z faktoringiem w postaci prostej, pod katem Volt-a
			IF @session.globals.Owner IN ('VOLT','PLISZKA') AND _rodzaj_platnosci = 3 THEN
				SET _KontoBankowe = IFNULL((select valuea from IReg where idkey='BankFaktoring' AND IdPath= 'INT\\SYSTEM\\MOTLAWA\\DaneFirmy'),'');
			END IF;

			CALL _IReg_Get('Wydruki', 'Uzupelnienie opisu kont bankowych na dok', '0', 'memo',_BankOpisDodatkowy, '');


			-- impuls dal Probier Dzieci, konta dynamiczne sa nadrzedne, 
			-- ale to wcale nie musi byc wszedzie sluszne
			SET _Dynamiczne = 0; 
			CALL _IReg_Get('Wydruki', 'Dynamiczny numer konta', '0', 'BOOLEAN',_Dynamiczne, '(brak danych)');

	SET @test3 = _KontoBankowe;
	
			IF _Dynamiczne = 1 THEN
				CALL _IReg_Get('Wydruki', 'Nazwa banku przy generowanym IBAN', '0', 'STRING',_BankNazwa, '(brak danych)');
				CALL _IReg_Get('Wydruki', 'Numer konta dla przelewow indywidualnych', '0', 'STRING',_BankPrefix, '(brak danych)');

				SET _KontoBankowe = CONCAT(_BankNazwa,' ',GetNRBbyIDN(_BankPrefix,_PlatnikIDN,0));
			END IF;

			IF _Dynamiczne = 0  AND _KontoBankowe = '' THEN
				IF _waluta = 0 AND _rodzaj = 80 THEN -- tutaj jest prefiks dla FV UE w PLN-ach
					/*
					SET _KontoBankowe = IFNULL((select concat(B.NazwaBanku,"\n", 'PL',B.Konto,if(B.swift<>"",concat("\n",B.swift),"")) from banki B where B.idn=_DomyslnyBank),'');
				*/
				 SELECT
					-- IFNULL(concat(ifnull(b.NazwaBanku,''),'\n',IF(_owner IN ('AXIS') AND b.waluta>0,'IBAN:',' '), b.Konto,'',  if(b.swift<>"",concat("\n",b.swift),"")), ''),
					IFNULL(CONCAT(b.NazwaBanku,"\n", 'PL',b.Konto,IF(b.swift<>"",CONCAT("\n",b.swift),"")), ""),
					b.swift,
					b.konto,
					b.NazwaBanku,
					b.idn, b.waluta
					INTO _KontoBankowe, _swift, _konto, _nazwabanku, _idnbanku, _walutabanku
					FROM banki b
					where b.idn = _DomyslnyBank limit 1;

				ELSE -- tu jest podstawowe przypisanie konta
					SET @test_pod = 'podstawowe';
					/*
					SET _KontoBankowe = IFNULL((select concat(B.NazwaBanku,"\n", IF(@session.globals.Owner IN ('AXIS') AND B.waluta>0,'IBAN: ',''), B.Konto,if(B.swift<>"",concat("\n",B.swift),"")) from banki B where B.idn=_DomyslnyBank),'');
					*/
					SELECT
					IFNULL(concat(ifnull(b.NazwaBanku,''),'\n',IF(_owner IN ('AXIS') AND b.waluta>0,'IBAN:',' '), b.Konto,'',  if(b.swift<>"",concat("\n",b.swift),"")), ''),
					b.swift,
					b.konto,
					b.NazwaBanku,
					b.idn, b.waluta
					INTO _KontoBankowe, _swift, _konto, _nazwabanku, _idnbanku, _walutabanku
					FROM banki b
					where b.idn = _DomyslnyBank limit 1;

				END IF;

				IF _KontoBankowe = '' THEN
					IF _waluta = 0 AND _rodzaj = 80 THEN -- tutaj jest prefiks dla FV UE w PLN-ach
						SET _KontoBankowe = IFNULL((select concat(B.NazwaBanku,"\n", 'PL',B.Konto,if(B.swift<>"",concat("\n",B.swift),"")) from banki B 
								where B.waluta=_waluta and B.drukowac=1 and B.nieaktywna=0 limit 1),'');

					ELSE -- tu jest podstawowe przypisanie konta
						/*
						SET _KontoBankowe = IFNULL((select concat(B.NazwaBanku,"\n", IF(@session.globals.Owner IN ('AXIS') AND B.waluta>0,'IBAN: ',''), B.Konto,if(B.swift<>"",concat("\n",B.swift),"")) from banki B
								where B.waluta = _waluta and B.drukowac=1 and B.nieaktywna=0 limit 1),'');
						*/
						SELECT
							IFNULL(concat(ifnull(b.NazwaBanku,''),'\n',IF(_owner IN ('AXIS') AND b.waluta>0,'IBAN:',' '), b.Konto,'',  if(b.swift<>"",concat("\n",b.swift),"")), ''),
							b.swift,
							b.konto,
							b.NazwaBanku,
							b.idn, b.waluta
						INTO _KontoBankowe, _swift, _konto, _nazwabanku, _idnbanku, _walutabanku
						FROM banki b
						where b.waluta = _waluta and b.drukowac=1 and b.nieaktywna=0 limit 1;
					END IF;
				END IF;

	SET @test4 = _KontoBankowe;
	
				IF _KontoBankowe = '' THEN
																	-- (select valuea from IReg where idkey="Numer_konta" AND IdPath= 'INT\\SYSTEM\\MOTLAWA\\DaneFirmy'))
					SET _KontoBankowe = IFNULL((select valuex from IReg where idkey="Konta" AND IdPath= 'INT\\SYSTEM\\MOTLAWA\\DaneFirmy'),'');
					IF _owner IN ('WEGA') THEN
						SET _KontoBankowe = IFNULL((SELECT REPLACE(valuex,'\r\n',' ') FROM IReg WHERE idkey = 'Konta' AND IdPath= 'INT\\SYSTEM\\MOTLAWA\\DaneFirmy'),'');
					END IF;

				END IF;
			END IF; -- _Dynamiczne = 0  AND _KontoBankowe = ''

/*
			IF LENGTH(IFNULL(_BankOpisDodatkowy,'')) > 3 THEN
				SET _KontoBankowe = CONCAT(_BankOpisDodatkowy,'\n',_KontoBankowe);
			END IF;
*/
		-- inna sciezka, prosta dla Simexu
		ELSEIF @session.globals.Owner IN ('SIMEX') THEN
			SELECT platnikGUID, waluta  INTO _PlatnikGUID, _waluta FROM opng WHERE GUID = _GUID;
			SET _KontoBankowe = IFNULL((SELECT CONCAT(B.NazwaBanku,"\n", B.Konto,"\n",B.swift,'')  FROM banki B 
								WHERE B.waluta=_waluta AND B.drukowac=1 AND B.nieaktywna=0 LIMIT 1),'');

			IF _waluta <> 0 AND _scenario IN ('STZTMGZM_PROFORMA', 'STZTMGZM_PROFORMA_BR', 'STZTMGZM_PROFORMA_WAL', 'STZTMGZM_ZAMOWIENIE', 'STZTMGZM_ZAMOWIENIE_BR', 'STZTMGZM_FV_ZAL', 'STZTMGZM_FV_ZAL_KONCOWA', 'STZTMGZM_FV_DEFAULT') AND DATABASE()='ht' THEN
                SET _KontoBankowe = CONCAT(_KontoBankowe, '\n',
                                IFNULL((SELECT CONCAT(B.NazwaBanku,'\n', B.Konto,'\n',B.swift,'')  FROM banki B
								WHERE B.waluta=0 AND B.drukowac=1 AND B.nieaktywna=0 LIMIT 1),'')
                                );
			END IF;
								
				IF _KontoBankowe = '' AND DATABASE()='kpr_formento' THEN 
					SET _KontoBankowe = IFNULL((SELECT valuex FROM IReg WHERE idkey="Konta" AND IdPath= 'INT\\SYSTEM\\MOTLAWA\\DaneFirmy'),'');
				END IF;				
		END IF; -- wybor bankow

/*
			-- dla Koloru bardzo specjalny przypadek
		IF @session.globals.Owner IN ('BYSEWO') AND _zmagazynu IN (1,8,13) THEN
			SET _KontoBankowe = 'BGŻ BNP Paribas Kod SWIFT: PPABPLPKXXX\nPL37175013250000000032563187';
		END IF;
*/

			-- dla marine i wydruku faktury krajowej w walucie oraz korekty dodanie konta zlotowkowego
		IF @session.globals.Owner IN ('MARINE') AND _waluta <> 0 AND _rodzaj IN (1,3) THEN
			SET _KontoBankowe = CONCAT(_KontoBankowe, '\n',
                                IFNULL((SELECT CONCAT('PLN ',B.NazwaBanku,'\n', B.Konto,'\n',B.swift,'')  FROM banki B
								WHERE B.waluta=0 AND B.drukowac=1 AND B.nieaktywna=0 LIMIT 1),'')
                                );
		END IF;


		IF _split_payment = 1 THEN  
			IF @session.globals.Owner IN ('ASTE','SIMTEL') THEN
				SET _KontoBankowe =   CONCAT(_KontoBankowe,'\n','<b>MECHANIZM PODZIELONEJ PŁATNOŚCI</b>');

			ELSEIF @session.globals.Owner IN ('COMEX') AND _waluta <> 0 THEN
				SET _KontoBankowe = CONCAT(_KontoBankowe, '\n',
                                IFNULL((SELECT CONCAT('Konto VAT: ',B.NazwaBanku,'\n', B.Konto,'\n',B.swift,'')  FROM banki B
								WHERE B.waluta=0 AND B.drukowac=1 AND B.nieaktywna=0 LIMIT 1),''),
								'\n','mechanizm podzielonej płatności'
                                );

   ELSEIF @session.globals.Owner IN ('INT') THEN -- int nie chce konta z informacja o mpp
    SET _KontoBankowe = _KontoBankowe;

			ELSE
				SET _KontoBankowe =   CONCAT(_KontoBankowe,"\n","mechanizm podzielonej płatności");
			END IF;
		END IF;

		IF IFNULL(_KontoBankowe,'') <> '' AND @session.globals.Owner NOT IN ('SIMEX','COMEX')  THEN
			SET _KontoBankowe = CONCAT(_walutaStr,' ',_KontoBankowe);
		END IF;

		IF LENGTH(IFNULL(_BankOpisDodatkowy,'')) > 3 THEN
			SET _KontoBankowe = CONCAT(_BankOpisDodatkowy,'\n',_KontoBankowe);
		END IF;

		-- koncowe przypisanie zmiennych
		SET @_KontoBankowe = IFNULL(_KontoBankowe, '');
		SET @_swift = IFNULL(_swift, '');
		SET @_konto = IFNULL(_konto, '');
		SET @_nazwabanku = IFNULL(_nazwabanku, '');
		SET @_idnbanku = IFNULL(_idnbanku, '');
		SET @_walutabanku = IFNULL(_walutabanku, '');

	END IF; -- _MODE IN ('OP','ZM')

	-- potwierdzenia sald - jednowalutowe trafilo do sciezki ogolnej,
	-- wielowalutowe jest tutaj, ale inaczej niz dla wezwan, bo zabraklo parametrow do przekazywania danych z ht_pr_potwsald2.sql
	IF (_MODE = 'POTW' AND _waluta = '-1') THEN

		DROP TEMPORARY TABLE IF EXISTS ta_waluty;
		CREATE TEMPORARY TABLE ta_waluty
			SELECT b.idn,w.symbol AS Waluta,
			CASE WHEN @session.globals.Owner IN ('ATM','SIMEX') THEN
				CONCAT(b.NazwaBanku,'\n', b.Konto ,'\n' ,REPLACE(IF(b.SWIFT<>'',CONCAT('SWIFT ',b.SWIFT), ''),'SWIFT SWIFT','SWIFT'))
				WHEN @session.globals.Owner = 'PLISZKA' THEN
				CONCAT(b.Konto,' ', b.NazwaBanku ,' ' ,REPLACE(IF(b.SWIFT<>'',CONCAT('SWIFT ',b.SWIFT), ''),'SWIFT SWIFT','SWIFT'))
			ELSE
				CONCAT(b.NazwaBanku,' ', b.Konto ,REPLACE(IF(b.SWIFT<>'',CONCAT(' SWIFT ',b.SWIFT), ''),'SWIFT SWIFT','SWIFT'))
			END AS bank
			FROM ta_waluty_potw t
			LEFT JOIN waluty w ON w.symbol = t.waluta
			LEFT JOIN banki b ON w.idn=b.waluta AND b.drukowac=1 AND b.nieaktywna=0
		;

		IF @session.globals.Owner IN ('PLISZKA','SIMEX') THEN
			SELECT IFNULL(GROUP_CONCAT(bank SEPARATOR '\n'),'') INTO _KontoBankowe FROM ta_waluty;
		ELSE
            SELECT IFNULL(GROUP_CONCAT(Waluta,' - ',bank SEPARATOR '\n'),'') INTO _KontoBankowe FROM ta_waluty;
		END IF;

-- 		SET @_BankNazwa = _BankNazwa;
-- 		SET @_BankPrefix= _BankPrefix;
		SET @_KontoBankowePotw = _BankNazwa;

	END IF; -- POTW

	-- wezwania do zaplaty, inne i skomplikowane bo wielowalutowe i nie znamy waluty!
	-- CALL fr_ht_konto('WEZW', '{3E59E0DA-77CA-478D-8229-0FC916BA25A0}', 'STPRN_ROZRACH_WEZW_DO_ZAPLATY', '',0,'','','','');
	-- SELECT @_KontoBankowe;
	IF _MODE IN ('WEZW') THEN 
	
        SET @test1a = _PlatnikGUID;

		IF (_DomyslnyBank > 0 AND @session.globals.Owner = 'BALTIMA') THEN 
			SET _KontoBankowe = IFNULL((SELECT CONCAT(B.NazwaBanku,"\n",IF(@session.globals.Owner IN ('AXIS') AND B.waluta>0,'IBAN: ',''), B.Konto,if(B.swift<>'',concat('\n',B.swift),'')) FROM banki B WHERE B.idn = _DomyslnyBank),'');
		END IF;
			
		IF @session.globals.Owner IN ('IZOHAN','ASTE','PBUCH','OFFSHORE','MAXFORM','PLISZKA','ATM','SIMEX','KONKOL','CRIST') OR
			 (@session.globals.Owner = 'BALTIMA' AND _DomyslnyBank = 0) THEN -- CZY TO MA SENS? powinno byc <> WEGA

			 DROP TEMPORARY TABLE IF EXISTS ta_waluty; 
					IF _scenario IN ('STPRN_ROZRACH_WEZW_DO_ZAPLATY_WLASNE_F',
								'STPRN_ROZRACH_OST_WEZW_DO_ZAPL_F',
								'STPRN_ROZRACH_WEZW_DO_ZAPLATY_FAK') THEN 
									CREATE TEMPORARY TABLE ta_waluty
									SELECT b.idn,w.symbol AS Waluta,CONCAT(b.NazwaBanku," ", b.Konto ,IF(b.SWIFT<>'',CONCAT(' SWIFT ',b.SWIFT), '')) AS bank
									FROM banki b 
									LEFT JOIN waluty w ON w.idn=b.waluta
									WHERE b.idn= (SELECT r.valuex FROM IReg r WHERE r.IdKey='Wezwanie_Bank_faktoring');
																													
					ELSE
						CREATE TEMPORARY TABLE ta_waluty
							SELECT b.idn,w.symbol AS Waluta,
								CASE WHEN @session.globals.Owner IN ('ATM','SIMEX','KONKOL') THEN
									CONCAT(b.NazwaBanku,'\n', b.Konto ,'\n' ,REPLACE(IF(b.SWIFT<>'',CONCAT('SWIFT ',b.SWIFT), ''),'SWIFT SWIFT','SWIFT'))
									WHEN @session.globals.Owner = 'PLISZKA' THEN
									CONCAT(b.Konto,' ', b.NazwaBanku ,' ' ,REPLACE(IF(b.SWIFT<>'',CONCAT('SWIFT ',b.SWIFT), ''),'SWIFT SWIFT','SWIFT'))

								ELSE
									CONCAT(b.NazwaBanku,' ', b.Konto ,REPLACE(IF(b.SWIFT<>'',CONCAT(' SWIFT ',b.SWIFT), ''),'SWIFT SWIFT','SWIFT')) 
								END AS bank
							FROM opng O 
							LEFT JOIN banki b ON O.waluta=b.waluta AND b.drukowac=1 AND b.nieaktywna=0
							LEFT JOIN waluty w ON w.idn=O.waluta
							WHERE O.deleted=0 AND O.rozrachunek AND O.nierozliczony
								AND O.platnikGUID = _PlatnikGUID AND O.platnikGUID <> '' 
								AND (IF(O.CWN, O.CKwota, -O.CKwota)- O.CRozliczone)>0 
								AND 
									CASE WHEN _scenario = 'STPRN_ROZRACH_NIEPRZET_WEZW_DO_ZAP' THEN TRUE
										ELSE
											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) > 0
										END
								GROUP BY b.idn;
					END IF;
			
			IF @session.globals.Owner IN ('PLISZKA','SIMEX') THEN
                SELECT IFNULL(GROUP_CONCAT(bank SEPARATOR '\n'),'') INTO _KontoBankowe FROM ta_waluty;
			ELSE
                SELECT IFNULL(GROUP_CONCAT(Waluta,' - ',bank SEPARATOR '\n'),'') INTO _KontoBankowe FROM ta_waluty;
			END IF;

		ELSEIF @session.globals.Owner IN ('WEGA','VOLT') THEN
			SET _KontoBankowe = 
				IFNULL((SELECT REPLACE(valuex,'\r\n',' ') FROM IReg WHERE idkey = 'Konta' AND IdPath= 'INT\\SYSTEM\\MOTLAWA\\DaneFirmy'),'');

		/* -- tak bylo, ale dla wezwan walutowych to sie nie moze sprawdzac
		ELSEIF @session.globals.Owner IN ('MARINE') THEN
			SET _KontoBankowe = 
				IFNULL((SELECT valuex FROM IReg WHERE idkey = 'Konta' AND IdPath= 'INT\\SYSTEM\\MOTLAWA\\DaneFirmy'),'');
		*/
		ELSEIF @session.globals.Owner IN ('MARINE') THEN
			SET _KontoBankowe =
				(select GROUP_CONCAT(CONCAT(b.NazwaBanku,' ', b.Konto ,REPLACE(IF(b.SWIFT<>'',CONCAT(' SWIFT ',b.SWIFT), ''),'SWIFT SWIFT','SWIFT')) SEPARATOR '\n')
				FROM banki b WHERE b.drukowac=1 AND b.nieaktywna=0);

		ELSEIF @session.globals.Owner IN ('SECURITY') THEN
            SET @test1sec = 'wszedl';
			SET _KontoBankowe = IFNULL((select concat(ifnull(b.Nazwa,''),' ',r.NrRachunku,if(r.swift<>'',concat('\n',r.swift),'')) 
						from rachbankowe r left join bankidef b ON b.guid = r.bankguid WHERE r.kontrGUID = _PlatnikGUID
							AND nazwakonta LIKE '%indywidualny%' limit 1),'');

		END IF;

		SET @_BankNazwa = _BankNazwa;   
		SET @_BankPrefix= _BankPrefix;
	END IF; --  WEZW

		-- SET @_KontoBankowe = _KontoBankowe; SET @_BankOpisDodatkowy = _BankOpisDodatkowy;

	SET @_KontoBankowe = _KontoBankowe;
	SET @_KontoBankowePotw = IF(@_KontoBankowePotw <> '', @_KontoBankowePotw, @_KontoBankowe);

END$$

DELIMITER ;

/*
$Log: fr_ht_konto.sql,v $
Revision 1.73  2026/07/16 08:12:37  waliant
$SEND$ wyjatek dla azo dla gotowkowych

Revision 1.72  2026/04/21 10:21:42  waliant
$SEND$ przeoczona  poprawka

Revision 1.71  2026/04/20 08:43:38  apro
log


*/
