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

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

SPROC: BEGIN
	DECLARE _SQLText TEXT;
	DECLARE _SQLText2 TEXT;
	DECLARE _lp2 TEXT; -- potrzebne do ustawienia sortowania pozycji wg wyroznikow, dla Izohanu
	DECLARE _zaliczka TEXT; -- potrzebne do usuwania pozycji towarowych (zaliczek, uslug), dla PBUCH-u czy Maxformu
	DECLARE _group_by TEXT; -- grupowanie pozycji, inne dla Hydromegi
	DECLARE _having TEXT; -- potrzebne do usuwania pozycji zerowych po grupowaniu, dla KONKOL-a
	DECLARE _order TEXT;
	DECLARE _WhereSQL TEXT;
	DECLARE _uwagipoz TEXT; -- uwagi do pozycji skladane z kilku pol, dla PROBIER
	DECLARE _guidstr VARCHAR(100); -- guid dla pozycji, pojedynczy lub zbiorczy
	DECLARE _join VARCHAR(100); -- zlaczenie w pozycjach dla dok zbiorczych
	DECLARE _nazwadoc VARCHAR(100); -- nazwa dokumentu z operdoc lub zbiorowy
	DECLARE _towrnazwa VARCHAR(250); -- modyfikowana nazwa towaru w zaleznosci od scenariusza (KOLOR)
	-- _MODE = 'OP_NG_ZALEGLOSCI'
	DECLARE _TylkoPrzetermin VARCHAR(250);
	DECLARE _DniPrzetermin INTEGER;
	DECLARE _PlatnikGUID VARCHAR(38);
	DECLARE _waluta, _PlatnikIDN, _rodzaj, _zmagazynu, _domagazynu, _status, _zaksiegowana, _korekta INT;
	DECLARE _nrdokmag, _nrdokfin VARCHAR(100);
	DECLARE _datawystaw VARCHAR(10);
	DECLARE _datawezwania VARCHAR(10); -- okres, w ktorym szukamy wezwania
	DECLARE _zaplaty VARCHAR(100);
	DECLARE _lang_id VARCHAR(10);
	DECLARE _spedycja2 TEXT;
	DECLARE _wyjazdGUID VARCHAR(38);
	DECLARE _duplikat, _wystawil VARCHAR(100);
	DECLARE _SposobPlatnosci VARCHAR(250);
	DECLARE _param VARCHAR(10);

	DECLARE _rodzaj_platnosci INT(11); -- rodzaj platnosci do badania czy faktoring
	DECLARE _BankNazwa VARCHAR(50); -- 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 INT(11); -- czy kontrahent ma domyslny bank
	DECLARE _KontoBankowe TEXT; -- konto na wydruku faktury
	DECLARE _BankOpisDodatkowy TEXT; -- dodatkowy opis do rachunków bankowych

-- sumowanie pozycji opng_vat i podawanie sumy do naglowka
	DECLARE _v_netto DOUBLE(16,4);
	DECLARE _v_vat DOUBLE(16,4);
	DECLARE _v_brutto DOUBLE(16,4);
	DECLARE _v_nettowal DOUBLE(16,4);
	DECLARE _v_vatwal DOUBLE(16,4);
	DECLARE _v_bruttowal DOUBLE(16,4);
	DECLARE _v_ilosc INT(11);

	DECLARE _baza VARCHAR(100); -- baza danych w ktorej jestesmy

	-- DECLARE _dorealizacji TEXT ; -- tylko pozycje do realizacji, AXIS, zalezy od scenariusza

	SET _SQLText = '', _SQLText2 = '', _lp2 = '', _zaliczka = '', _having = '' , _group_by = '', _order = '', _uwagipoz = '', _guidstr = '',
			_nazwadoc = '', _duplikat = '', _wystawil = '';

/*
	Procedura dla wydruków operacji
	Dane dla naglowka, dla pozycji (bez grupowania i z grupowaniem), dla tabelki vat
	Potem dla dekretki?, specyfikacji, inne?

	Dodane wywołania dla zamowien - maja tez isc przez procedure operacji, dla ujednolicenia doplywu danych do wydrukow

	Datasety frOP... sa wypelniane po wlaczeniu klucza CALL_OP_PR
	Datasety frDB..Call (czyli te starsze, do wykoszenia) sa wypelniane po wlaczeniu klucza CALL_Wydruk_OP w walueb skladnia:
										CALL fr_ht_OP ('OP_PO_DEFAULT','#GUID#','','',0,'','','','') - lub inna procedura, tez mozliwe


	Klucz w _db_globals DOC_with_AdrLink wlacza zupelnie nowa adresacje w programie, gdzie adresy kontrahneta, platnika i dostawy sa w tabeli geo_int_adr_link
	i podawane na wydruk w postaci k_A, k_CC itd.

	fr_ht_OP('ZM_NG_SERYJNE', _GUID, _scenario, '',0,'','','','');
*/
/*
	zaleglosci kontrahenta
	CALL fr_ht_OP('OP_NG_ZALEGLOSCI', _GUID, _scenario, '',0,'','','','');
*/
IF _MODE = 'OP_NG_ZALEGLOSCI_TEST' THEN
	SELECT '1' as odp;
END IF;


IF _MODE IN ('OP_NG_ZALEGLOSCI','ZM_NG_ZALEGLOSCI') THEN

	-- SET @PlatnikGUID = '???';
	IF _MODE IN ('OP_NG_ZALEGLOSCI') THEN
		select platnikGUID, datawystaw INTO _PlatnikGUID, _datawystaw from opng where GUID = _GUID;
	ELSE
		select if(platnikGUID='',kontrguid,platnikguid), datawystaw INTO _PlatnikGUID, _datawystaw from zmng where GUID = _GUID;
	END IF;

	SET _TylkoPrzetermin = IFNULL((SELECT valueb FROM IReg WHERE idkey='WydrukFK_Zaleglosci_TylkoPrzeterminowane' AND IdPath= 'INT\\SYSTEM\\MOTLAWA\\Zaleglosci'),0);

	IF _TylkoPrzetermin = 1 THEN
		SET _DniPrzetermin = IFNULL((SELECT valueI FROM IReg WHERE idkey='Wydruk_Zaleglosci_Ilosc_Dni_Przeterminowania' AND IdPath= 'INT\\SYSTEM\\MOTLAWA\\Zaleglosci'),0);
	END IF;

	SELECT DATE_ADD(_datawystaw, interval -1 month) INTO _datawezwania;



	DROP TABLE IF EXISTS t_zaleglosci;
	CREATE TEMPORARY TABLE t_zaleglosci (
		`GUID` VARCHAR(38) NOT NULL DEFAULT '',
		`rodzaj` INT(11) NOT NULL DEFAULT 0,
		`PlatnikGUID` VARCHAR(38) NOT NULL DEFAULT '',
		`status` TINYINT(4) DEFAULT 0,
		`nrdokfin` VARCHAR(30) DEFAULT NULL,
		`nrraportu` VARCHAR(20) DEFAULT NULL,
		`sr_opoznienie` DOUBLE(16,4) NOT NULL DEFAULT 0.0000,
		`nazwaplatnosci` VARCHAR(275) DEFAULT NULL,
		`rodzajplatnosci` INT(11) DEFAULT 0,
		`CKwota` DOUBLE(16,4) NOT NULL DEFAULT 0.0000,
		`CRozliczone` DOUBLE(16,4) NOT NULL DEFAULT 0.0000,
		`CWN` INT(11) NOT NULL DEFAULT 0,
		`WN` DOUBLE(16,4) NOT NULL,
		`MA` DOUBLE(16,4) NOT NULL,
		`CPozostalo` DOUBLE(21,4) NOT NULL,
		`nrkasy` INT(11) NOT NULL DEFAULT 0,
		`sposobplatn` INT(11) DEFAULT NULL,
		`KontrIdn` INT(11) DEFAULT NULL,
		`Kontrahent` VARCHAR(50) NOT NULL,
		`rozrachunek` INT(11) NOT NULL DEFAULT 0,
		`brutto` DOUBLE(16,4) NOT NULL DEFAULT 0.0000,
		`zaplacono` DOUBLE(16,4) NOT NULL DEFAULT 0.0000,
		`datasprzed` DATE DEFAULT NULL,
		`datawystaw` DATE DEFAULT NULL,
		`dataplatnosci` DATE DEFAULT NULL,
		`nrdokkas` VARCHAR(20) DEFAULT NULL,
		`grupaoper` INT(11) DEFAULT NULL,
		`opis` VARCHAR(250) NOT NULL DEFAULT '',
		`uwagi` VARCHAR(250) DEFAULT NULL,
		`Dni` INT(11) DEFAULT NULL,
		`Dni2` VARCHAR(23) DEFAULT NULL
	) DEFAULT CHARSET=cp1250;

	-- SET _SQLText =
	INSERT INTO t_zaleglosci
		SELECT
		O.GUID, O.rodzaj, O.PlatnikGUID, O.status,
		IF(O.rodzaj IN (20,21,22), O.nrdokkas,
		IF(O.rodzaj IN (36,37), O.nrraportu, O.nrdokfin)) AS nrdokfin,
		O.nrraportu,
		O.sr_opoznienie,
		REPLACE(P.nazwa, "%d", P.dni) AS nazwaplatnosci,
		P.rodzaj AS rodzajplatnosci,
		O.CKwota, O.CRozliczone,
		O.CWN,
		IF(O.CWN, O.CKwota, 0) AS WN,
		IF(O.CWN, 0, O.CKwota) AS MA,
		IF(O.CWN, O.CKwota, -O.CKwota)- O.CRozliczone AS CPozostalo,
		O.nrkasy, O.sposobplatn, O.kontridn AS KontrIdn,
		SUBSTRING(O.KontrNazwa, 1, 50) AS Kontrahent,
		O.rozrachunek, O.brutto, O.zaplacono, O.datasprzed,
		O.datawystaw, O.dataplatnosci, O.nrdokkas, O.grupaoper, O.opis,
		SUBSTRING(O.uwagi,1,250) AS uwagi,
		ROUND(IF(O.nierozliczony, TO_DAYS(CURRENT_DATE)-TO_DAYS(O.dataplatnosci), TO_DAYS(O.datarozliczenia)-TO_DAYS(O.dataplatnosci)), 0) * _varDOUBLE(1.0) AS Dni,
		"" AS Dni2
	FROM opng O
	INNER JOIN kontrah KK ON O.platnikGUID=KK.GUID
	LEFT JOIN platnosc P ON O.sposobplatn=P.idn
	WHERE
		O.PlatnikGUID = _PlatnikGUID
		AND KK.Druk_zaleglosci_na_FV = 1
		AND O.CWN = 1 AND O.CKwota <> 0
		AND O.deleted = 0 AND O.rozrachunek = 1 AND O.gruparozrach IN (1,2)
		AND ABS(IF(O.CWN, O.CKwota, -O.CKwota)- O.CRozliczone) > 0.009
		AND IF(_TylkoPrzetermin = 1, TO_DAYS(1*CURRENT_DATE)-TO_DAYS(1*O.dataplatnosci) >= _DniPrzetermin, TRUE)
		AND IF(@session.globals.Owner = 'SECURITY', O.GUID <> _GUID, TRUE)
		AND IF(@session.globals.Owner = 'SECURITY' AND O.rodzaj = 43, O.datawystaw < _datawezwania, TRUE)
	;


 	UPDATE t_zaleglosci SET Dni2 = IF(Dni <= 0, '', Dni);

    SELECT SUM(CPozostalo) INTO @saldo_poprzednie FROM t_zaleglosci;

	SELECT * FROM t_zaleglosci;

END IF;  -- _MODE = ''OP_NG_ZALEGLOSCI','ZM_NG_ZALEGLOSCI''

/*
SET @session.globals.Owner = '';
CALL fr_ht_OP('OP_NG_DEFAULT','{9ECB79F4-8EF2-45F6-90EB-BEB817F13352}','STZTMGZM_FV_DEFAULT','',0,'','','','');
CALL fr_ht_OP('OP_NG_DEFAULT','{446DBF46-053A-4238-A540-FD7AA486F17D}','STZTMGZM_WZ_TRANS','',0,'','','',''); transbud
CALL fr_ht_OP('OP_PO_DEFAULT','{446DBF46-053A-4238-A540-FD7AA486F17D}','STZTMGZM_WZ_TRANS','',0,'','','','');
CALL fr_ht_OP('OP_NG_DEFAULT','{2C6866EC-5C53-4AB3-B683-0534297DCFE0}','','',0,'','','','');
*/
	IF (_MODE = 'OP_NG_DEFAULT') THEN

		CALL geo_int_adr_link_NED_SELECT('DOC.SELECT.Prepare', _GUID, 'opng', '', '', '', '', '');
		-- ta procedura jest zapisana w trigerach

	-- sumowanie tabelki vat, zeby te kwoty dodac do danych naglowkowych
		SELECT
			SUM(IFNULL(v.netto,0)),
			SUM(IFNULL(v.vat,0)),
			SUM(IFNULL(v.brutto,0)),
			SUM(IFNULL(v.nettowal,0)),
			SUM(IFNULL(v.vatwal,0)),
			SUM(IFNULL(v.bruttowal,0)),
			COUNT(v.idnoper),
			n.CKwotaWal - n.CRozliczoneWal
			INTO _v_netto, _v_vat, _v_brutto, _v_nettowal, _v_vatwal, _v_bruttowal, _v_ilosc,
			@naleznosc_biezaca
		FROM opng n
		LEFT JOIN opng_vat v ON n.guid=v.idnoper
		WHERE n.guid = _GUID
		GROUP BY n.guid
		;

        -- SET @naleznosc_biezaca = _v_bruttowal;

		SET _SQLText =
		'SELECT
		"fr_ht_OP_OP_NG_DEFAULT" AS fr_ht_OP_OP_NG_DEFAULT,
		"#scenario#" AS scenariusz,
		k.pesel,  k.opis_dzialalnosci, k.uzgodnienia_dodatkowe,
		_VarStr(nd.Nazwa) AS AreaNazwa,
		k_p.extraA as plat_extraA,
		_VarStr(adr.d_C) AS Areakraj,
		N.areaGUID as Stara_lokalizacja,
		IFNULL(a.AdrDescr,"") as Dodatkowy_opis_lokal,
		IFNULL((SELECT adrdescr FROM geo_int_adr_link WHERE objguid = N.kontrguid AND adrtyp LIKE "%F%" LIMIT 1),"") AS kontr_opis_adresu,

		_VarStr(_ConcatStr(nd.Nazwa, IF(adr.d_A != "", adr.d_A, a.Adres) , " - ")) AS AreaOpis,
		_VarStr(IFNULL(IFNULL(adr.d_A, a.Adres), IFNULL(a.ulica_not_GUS,IFNULL(nd.Nazwa, "")))) AS AreaOpis2,

		_VarStr(IF(adr.d_A = "", adr.k_A, adr.d_A)) AS lokalizacja,
		(SELECT nazwa FROM kontrah WHERE GUID=N.AkwizytorGUID ) AS AkwizytorNazwa,
		_VarStr(spier.DisplayValue) AS TranszaStr,

		k.FVnaAdresSpedycyjny, k.krs,
		IFNULL((SELECT rb.NazwaKonta FROM rachbankowe rb WHERE rb.kontrguid=k.GUID AND rb.nieaktywny=0 ORDER BY rb.NrRachunku LIMIT 1),"") AS kontr_bank_nazwa,
		IFNULL((SELECT rb.NrRachunku FROM rachbankowe rb WHERE rb.kontrguid=k.GUID AND rb.nieaktywny=0 ORDER BY rb.NrRachunku LIMIT 1),"") AS kontr_bank_numer,

		IFNULL((SELECT GROUP_CONCAT(DISTINCT CONCAT(z.nrdokmag," z dnia ",z.datawystaw)) AS lista_wz FROM oppo o INNER JOIN opng z ON z.guid=o.idnoper WHERE o.idnoperfin=N.GUID),"") AS lista_wz_z_data ,
		IFNULL((SELECT GROUP_CONCAT(DISTINCT z.nrdokmag) AS lista_wz FROM oppo o INNER JOIN opng z ON z.guid=o.idnoper WHERE o.idnoperfin=N.GUID),"") AS lista_wz,
		IFNULL((SELECT GROUP_CONCAT(DISTINCT n.nrzamw) AS lista_zamowien FROM oppo o INNER JOIN zmpo z ON z.guid=o.guidzm INNER JOIN zmng n ON n.guid=z.idnng WHERE (N.guid = o.idnoper) OR (N.guid = o.idnoperfin)), "") AS lista_zamowien,
		IFNULL((SELECT GROUP_CONCAT(DISTINCT n.zamawiajacy) AS lista_zamowien FROM oppo o INNER JOIN zmpo z ON z.guid=o.guidzm INNER JOIN zmng n ON n.guid=z.idnng WHERE (N.guid = o.idnoper) OR (N.guid = o.idnoperfin)), "") AS lista_zamawiajacych,
		IFNULL((SELECT GROUP_CONCAT(DISTINCT n.nrzamwkontr) AS lista_zamowien FROM oppo o INNER JOIN zmpo z ON z.guid=o.guidzm INNER JOIN zmng n ON n.guid=z.idnng WHERE (N.guid = o.idnoper) OR (N.guid = o.idnoperfin)), "") AS lista_nr_zamowien_kontrah ,
		IFNULL(IF(N.fvrudowz, IFNULL((SELECT GROUP_CONCAT(DISTINCT n.warunki_dostawy SEPARATOR "
") AS warunki_dostawy FROM oppo o INNER JOIN zmpo z ON z.guid=o.guidzm INNER JOIN zmng n ON n.guid=z.idnng WHERE o.idnoperfin=N.GUID),"")   ,IFNULL((SELECT GROUP_CONCAT(DISTINCT n.warunki_dostawy SEPARATOR "
") AS warunki_dostawy FROM oppo o INNER JOIN zmpo z ON z.guid=o.guidzm INNER JOIN zmng n ON n.guid=z.idnng WHERE o.idnoper=N.GUID),""))  ,"") AS lista_warunki_dostawy_zm,

		IFNULL(IF(N.fvrudowz, IFNULL((SELECT GROUP_CONCAT(DISTINCT n.uwagi SEPARATOR "
") FROM oppo o INNER JOIN zmpo z ON z.guid=o.guidzm INNER JOIN zmng n ON n.guid=z.idnng WHERE o.idnoperfin=N.GUID),""),IFNULL((SELECT GROUP_CONCAT(DISTINCT n.uwagi SEPARATOR "
") FROM oppo o INNER JOIN zmpo z ON z.guid=o.guidzm INNER JOIN zmng n ON n.guid=z.idnng WHERE o.idnoper=N.GUID),""))  ,"") AS lista_uwagi_zm,


IFNULL(IF(N.fvrudowz, IFNULL((SELECT GROUP_CONCAT(DISTINCT n.info4 SEPARATOR "
") FROM oppo o INNER JOIN zmpo z ON z.guid=o.guidzm INNER JOIN zmng n ON n.guid=z.idnng WHERE o.idnoperfin=N.GUID),""),IFNULL((SELECT GROUP_CONCAT(DISTINCT n.info4 SEPARATOR "
") FROM oppo o INNER JOIN zmpo z ON z.guid=o.guidzm INNER JOIN zmng n ON n.guid=z.idnng WHERE o.idnoper=N.GUID),""))  ,"") AS info4_zm,


IFNULL(IF(N.fvrudowz, IFNULL((SELECT GROUP_CONCAT(DISTINCT n.info5 SEPARATOR "
") FROM oppo o INNER JOIN zmpo z ON z.guid=o.guidzm INNER JOIN zmng n ON n.guid=z.idnng WHERE o.idnoperfin=N.GUID),""),IFNULL((SELECT GROUP_CONCAT(DISTINCT n.info5 SEPARATOR "
") FROM oppo o INNER JOIN zmpo z ON z.guid=o.guidzm INNER JOIN zmng n ON n.guid=z.idnng WHERE o.idnoper=N.GUID),""))  ,"") AS info5_zm,

		(select opis from Magazyny where idnmagazynu=N.domagazynu) as magdo, -- magazyn docelowy, nazwy z zamowien
		(select opis from Magazyny where idnmagazynu=N.zmagazynu) as magzr, -- magazyn zrodlowy


		"." AS osoba_przypisana, k.GLN, WEEK(N.datawystaw)+1 AS tydzienrealizacji,
		week(ZN.terminrealizacji,1) as tydzienrealizacji2,

		(SELECT COUNT(*) FROM oppo WHERE idnoper=N.GUID AND usluga=1 LIMIT 1) AS ilepozusl, PL.rodzaj AS rodzaj_platnosci,
		k.analityka,k.reprezentant, k.UwagiNaFV, k_p.UwagiNaFV AS platnik_UwagiNaFV,
		k.uwagi AS uwagikontrah, k_p.uwagi AS platnik_uwagikontrah,
		k.W_ulica, k.W_zipcode, k.W_nazwamiasta, k.odbierajacy AS kontrodbierajacy, k.w_TelKontaktowy,
		IF(IFNULL(k.odbierajacy,"") <> "", k.odbierajacy, k.nazwa) AS kontrnazwa2,
		IF(@session.globals.Owner in ("TRANSBUD","AMICUS") ,(SELECT edev2.nazwa FROM erp_division_schema edev2, Magazyny M WHERE N.zmagazynu= M.IdnMagazynu AND if(@session.globals.Owner="AMICUS"  OR (@session.globals.Owner="TRANSBUD" AND N.datawystaw<="2022-10-01"),M.Param5,M.ugrpGUID) = edev2.GUID  LIMIT 1),edev.nazwa ) AS oddzial_nazwa,
		IF(@session.globals.Owner in ("TRANSBUD","AMICUS") ,(SELECT edev2.symbol FROM erp_division_schema edev2, Magazyny M WHERE N.zmagazynu= M.IdnMagazynu AND if(@session.globals.Owner="AMICUS" OR (@session.globals.Owner="TRANSBUD" AND N.datawystaw<="2022-10-01"),M.Param5,M.ugrpGUID) = edev2.GUID  LIMIT 1),edev.symbol ) AS oddzial_symbol,
		IF(@session.globals.Owner in ("TRANSBUD","AMICUS") ,(SELECT edev2.dane_adresowe FROM erp_division_schema edev2, Magazyny M WHERE N.zmagazynu= M.IdnMagazynu AND if(@session.globals.Owner="AMICUS" OR (@session.globals.Owner="TRANSBUD" AND N.datawystaw<="2022-10-01"),M.Param5,M.ugrpGUID) = edev2.GUID  LIMIT 1),edev.dane_adresowe) AS oddzial_dane_adresowe,
		IF(@session.globals.Owner in ("TRANSBUD","AMICUS") ,(SELECT edev2.dane_kontaktowe FROM erp_division_schema edev2, Magazyny M WHERE N.zmagazynu= M.IdnMagazynu AND if(@session.globals.Owner="AMICUS" OR (@session.globals.Owner="TRANSBUD" AND N.datawystaw<="2022-10-01"),M.Param5,M.ugrpGUID) = edev2.GUID  LIMIT 1),edev.dane_kontaktowe) AS oddzial_dane_kontaktowe,
		kr.Nazwa AS kontrPanstwo,
		kr2.Nazwa AS W_kontrPanstwo,

		k.regon AS kontrREGON,  k.nip, k.min_ord_quant,  ABS(CKwotaWal) AS CKwotaWal,
		W.Symbol AS WalutaStr, k.extraA AS extraA,  k.numer_na_trasie,  ZN.terminrealizacji,  k.zipcode, k.NazwaMiasta, k.ulica,  ZL.nr_zlecenia AS nr_zlecenia, k.odp_za_zam,  k_p.GUID AS platnikGUID,
		-- N.kontrGUID,
		IF(N.fvrudowz,(SELECT GROUP_CONCAT(DISTINCT nrdokmag) FROM oppo oo,opng nn WHERE oo.idnoper=nn.guid AND oo.idnoperfin=N.guid GROUP BY oo.idnoperfin LIMIT 1 ),N.nrdokmag) AS nrdokmag,
		IF(N.fvrudowz,(SELECT CONCAT("od ",MIN(datawystaw)," do ",MAX(datawystaw))  FROM oppo oo WHERE oo.idnoperfin=N.guid GROUP BY oo.idnoperfin LIMIT 1 ),N.datawystaw) AS zakres_dat_wz,
		IF(N.kontrpodzialnip<2, IF(N.kontrpodzialnip=0,INSERT(INSERT(INSERT(N.kontrnip,4,0,"-"),8,0,"-"),11,0,"-"),INSERT(INSERT(INSERT(N.kontrnip,4,0,"-"),7,0,"-"),10,0,"-")),N.kontrnip) AS kontrnip_podzial,
		k.symbol AS kontr_symbol,
		IF(k_p.GUID<>N.kontrGUID, k_p.symbol, k.symbol) AS platnik_symbol,  krp.Nazwa  AS platnik_kraj,
		IF(k_p.GUID<>N.kontrGUID,k_p.nazwa,N.kontrnazwa) AS platnik_nazwa,
		adr.p_M AS platnik_NazwaMiasta,
		adr.p_U_N AS platnik_ulica,
		adr.p_Z AS platnik_zipcode,

		IF(k_p.GUID<>N.kontrGUID, k_p.nip, N.kontrnip) AS platnik_nip,
		k_p.nip AS platnik_nip2,
		IF(IFNULL(DATE_FORMAT(N.odbierajacy,"%Y"),"0000-00-00")<>"0000-00-00",N.odbierajacy,N.datasprzed) AS datazaladunku,
		N.*,
		_varSTR((SELECT vu.DisplayValue FROM v_ubezpieczyciele vu WHERE vu.Value = N.ubezpieczyciel)) AS ubezpieczycielStr,
		k.zatrudnienie, k.nr_umowy, k.data_waznosci_umowy,
		(SELECT symbol_fmt FROM plankont p WHERE p.symbol=N.kontofk AND p.rok = 2014 ) AS kontofk_fmt,
		(SELECT CONCAT(sp1.DisplayValue,", ",sp2.DisplayValue) AS SpedycjaStr  FROM spedycje s  LEFT JOIN slowniki_pierwotne sp1 ON sp1.Slownik_GUID="RODZ_SPED" AND sp1.value=s.rodzajspedycji  LEFT JOIN slowniki_pierwotne sp2 ON sp2.Slownik_GUID="TYP_TRANSPORT" AND sp2.value=s.typtransportu  LEFT JOIN kontrah sK ON s.Spedytor=sK.GUID  WHERE s.idn=N.spedycja) AS SpedycjaStr,
		(SELECT sK.nazwa AS SpedytorNazwa  FROM spedycje s  LEFT JOIN slowniki_pierwotne sp1 ON sp1.Slownik_GUID="RODZ_SPED" AND sp1.value=s.rodzajspedycji  LEFT JOIN slowniki_pierwotne sp2 ON sp2.Slownik_GUID="TYP_TRANSPORT" AND sp2.value=s.typtransportu  LEFT JOIN kontrah sK ON s.Spedytor=sK.GUID  WHERE s.idn=N.spedycja) AS SpedytorNazwa,
		(SELECT CONCAT(sK.zipcode," ",sK.NazwaMiasta,", ",sK.ulica) AS SpedytorAdres  FROM spedycje s  LEFT JOIN slowniki_pierwotne sp1 ON sp1.Slownik_GUID="RODZ_SPED" AND sp1.value=s.rodzajspedycji  LEFT JOIN slowniki_pierwotne sp2 ON sp2.Slownik_GUID="TYP_TRANSPORT" AND sp2.value=s.typtransportu  LEFT JOIN kontrah sK ON s.Spedytor=sK.GUID  WHERE s.idn=N.spedycja) AS SpedytorAdres,
		(SELECT sK.nip AS SpedytorNIP  FROM spedycje s  LEFT JOIN slowniki_pierwotne sp1 ON sp1.Slownik_GUID="RODZ_SPED" AND sp1.value=s.rodzajspedycji  LEFT JOIN slowniki_pierwotne sp2 ON sp2.Slownik_GUID="TYP_TRANSPORT" AND sp2.value=s.typtransportu  LEFT JOIN kontrah sK ON s.Spedytor=sK.GUID  WHERE s.idn=N.spedycja) AS SpedytorNIP,
		(SELECT sK.regon AS SpedytorREGON  FROM spedycje s  LEFT JOIN slowniki_pierwotne sp1 ON sp1.Slownik_GUID="RODZ_SPED" AND sp1.value=s.rodzajspedycji  LEFT JOIN slowniki_pierwotne sp2 ON sp2.Slownik_GUID="TYP_TRANSPORT" AND sp2.value=s.typtransportu  LEFT JOIN kontrah sK ON s.Spedytor=sK.GUID  WHERE s.idn=N.spedycja) AS SpedytorREGON,
		(SELECT valuex FROM v_kkn0 WHERE rok IN (0, #rok#) AND klucz=N.katcol0) AS katcol0Str,
		(SELECT valuex FROM v_kkn1 WHERE rok IN (0, #rok#) AND klucz=N.katcol1) AS katcol1Str,
		(SELECT valuex FROM v_kkn2 WHERE rok IN (0, #rok#) AND klucz=N.katcol2) AS katcol2Str,
		(SELECT valuex FROM v_kkn3 WHERE rok IN (0, #rok#) AND klucz=N.katcol3) AS katcol3Str,
		IF(@session.globals.Owner = "TRANSBUD" AND DATABASE()= "ht",(SELECT valuex FROM v_kkn0 WHERE rok IN (0, #rok#) AND klucz=N.katcol0),(SELECT valuex FROM v_kkn4 WHERE rok IN (0, #rok#) AND klucz=N.katcol4) ) AS katcol4Str,
		(SELECT valuex FROM v_kkn0 WHERE rok IN (0, #rok#) AND klucz=k.katcol0) AS Kontrkatcol0Str,
		(SELECT valuex FROM v_kkn1 WHERE rok IN (0, #rok#) AND klucz=k.katcol1) AS Kontrkatcol1Str,
		(SELECT valuex FROM v_kkn2 WHERE rok IN (0, #rok#) AND klucz=k.katcol2) AS Kontrkatcol2Str,
		(SELECT valuex FROM v_kkn3 WHERE rok IN (0, #rok#) AND klucz=k.katcol3) AS Kontrkatcol3Str,
		(SELECT valuex FROM v_kkn4 WHERE rok IN (0, #rok#) AND klucz=k.katcol4) AS Kontrkatcol4Str,
		k.EDI_Seller_CodeByBuyer,
		IFNULL((SELECT LEFT(GROUP_CONCAT(adres),150) FROM kontakty WHERE  typ_medium = 3 AND nieaktywny = 0 AND osobaGUID = O.GUID AND kontrGUID<>"" ORDER BY priorytet DESC), "") AS User_Mail,
		IFNULL((SELECT LEFT(GROUP_CONCAT(adres),150) FROM kontakty WHERE  typ_medium IN (0) AND nieaktywny = 0 AND osobaGUID = O.GUID AND kontrGUID<>""  ORDER BY priorytet DESC), "") AS User_Telefon,
		IFNULL((SELECT LEFT(GROUP_CONCAT(adres),150) FROM kontakty WHERE  typ_medium IN (2) AND nieaktywny = 0 AND osobaGUID = O.GUID AND kontrGUID<>""  ORDER BY priorytet DESC), "") AS User_Komorka,
		IFNULL((SELECT LEFT(GROUP_CONCAT(adres),150) FROM kontakty WHERE  typ_medium IN (1) AND nieaktywny = 0 AND osobaGUID = O.GUID AND kontrGUID<>""  ORDER BY priorytet DESC), "") AS User_Fax,
		IFNULL(ht_Translate_Word(O.stanowisko,N.lang_id),O.stanowisko) AS User_Stanowisko,

		IFNULL((SELECT LEFT(GROUP_CONCAT(adres),150) FROM kontakty WHERE typ_medium IN (1) AND nieaktywny = 0 AND kontrGUID=N.kontrGUID ORDER BY priorytet DESC LIMIT 1), "") AS kontrah_Fax,

		k.wysylacFVviaMail,
		N.localtime AS LastModified, hki.druk_KP_z_WZ_FV,
		IF(O2.Nazwisko IS NULL, CONCAT(O.Imie1," ",O.Nazwisko), CONCAT(O2.Imie1," ",O2.Nazwisko)) AS UserName,
		PL.Rodzaj AS RodzajPlatnosci,

		"#SposobPlatnosci#" AS SposobPlatnosci,

		PL.dni as dni_platnosci,
		IF(PL.dni > 1, CONCAT(REPLACE(PL.Nazwa,"%d",PL.dni), " ", PL.dni, " dni"), IF(PL.dni > 0, CONCAT(REPLACE(PL.Nazwa,"%d",PL.dni), " ", " dzień"), PL.Nazwa))
		AS SposobPlatnosci2,
		REPLACE(PL.Nazwa,"%d",PL.dni) AS SposobPlatnosciSimple,
		PL.Nazwa as NazwaPlatnosci,
		"#spedycja2#" AS SpedycjaStr2,
		"#duplikat#" AS duplikat,
		(select pozabilans from Magazyny where if(N.zmagazynu>0,N.zmagazynu=idnmagazynu,N.domagazynu=idnmagazynu)) AS mag_pozabilans,
		"#DomyslnyBank#" AS DomyslnyBank,
		ifnull((SELECT Valuex FROM IReg WHERE IdKey = "Tekst_RODO" limit 1),"") as Tekst_RODO,
		ifnull((SELECT ValueA FROM IReg WHERE IdKey = "BDO" limit 1),"") as BDO,
		ifnull((SELECT ValueA FROM IReg WHERE IdKey = "EORI" limit 1),"") as EORI,
		adr.*,
		(SELECT valuea FROM IReg WHERE IdKey = "Pelna_nazwa" LIMIT 1) AS Nazwa_firmy,
		ifnull((SELECT ValueA FROM IReg WHERE IdKey = "Numer_rejestrowy_utylizacyjny" limit 1),"") as Numer_rejestrowy_utylizacyjny,
		ifnull((SELECT Valuex FROM IReg WHERE IdKey = "Dodatkowe uwagi na fakturze" limit 1),"") as uwagi_dodatkowe,
		k.rabat_na_FV,
		IF(N.split_payment=0,"","MECHANIZM PODZIELONEJ PŁATNOŚCI") as split_paymentStr,
		"#zaplaty#" AS zaplaty,
		"#nazwadoc#" AS NazwaDoc,
		"#wystawil#" as wystawil,
		#v_sumy#
		FROM opng N
		LEFT JOIN platnosc PL ON PL.Idn = N.sposobplatn

		LEFT JOIN _user_accounts U ON N.idnuser = U.login
		LEFT JOIN osoby O ON U.osobaGUID = O.GUID

		LEFT JOIN osoby O2 ON N.CreatorGUID = O2.GUID
		LEFT JOIN kontrah k ON k.GUID = N.kontrGUID
		LEFT JOIN ht_kontrah_info hki ON hki.KontrGUID = k.GUID
		LEFT JOIN kontrah k_p ON k_p.GUID = N.platnikGUID
		LEFT JOIN Miasta mi ON mi.NazwaMiasta = k.NazwaMiasta
		LEFT JOIN Kraje kr ON kr.idn_kraju = mi.IDNKraju
		LEFT JOIN Miasta mi2 ON mi2.NazwaMiasta = k.W_NazwaMiasta
		LEFT JOIN Kraje kr2 ON kr2.idn_kraju = mi2.IDNKraju
		LEFT JOIN Miasta mip ON mip.NazwaMiasta = k_p.NazwaMiasta
		LEFT JOIN Kraje krp ON krp.idn_kraju = mip.IDNKraju
		INNER JOIN waluty W ON W.idn = N.waluta
		LEFT JOIN zlec ZL ON ZL.GUID = N.zlecenieGUID
		LEFT JOIN zmng ZN ON ZN.GUID = N.zlecenieGUID
		LEFT JOIN slowniki_pierwotne spier ON spier.Slownik_GUID="ZM_TRANSZE" AND spier.Value=N.transza_zamow
		LEFT JOIN erp_division_schema edev ON N.ugrpGUID = edev.GUID
		LEFT JOIN erp_area_nodes nd ON nd.GUID = N.areaGUID AND nd.deleted = 0
		LEFT JOIN geo_int_adr_link a ON a.ObjGUID = nd.GUID AND a.objTable = "erp_area_nodes"
		LEFT JOIN t_doc_adr_1_one adr ON TRUE
		WHERE
			N.GUID= "#GUID#"
		;
		'
		;

		SET @test1 =	_SQLText;
		CALL fr_ht_konto('OP', _GUID, _scenario, '',0,'','','','');

		select rodzaj, zmagazynu, domagazynu, IFNULL(nrdokmag,''), IFNULL(nrdokfin,''), lang_id, wyjazdGUID, `status`, zaksiegowana
		INTO _rodzaj, _zmagazynu, _domagazynu, _nrdokmag, _nrdokfin, _lang_id, _wyjazdGUID, _status, _zaksiegowana
		from opng where GUID = _GUID
		;

		SET @zaliczka_nag = 0;
		IF @session.globals.Owner IN ('PLISZKA') AND _rodzaj IN (1, 50, 80) THEN
			SELECT COUNT(*) INTO @zaliczka_nag
			FROM oppo WHERE usluga = 8 AND wartnet >= 0 AND (idnoper = _GUID OR idnoperfin = _GUID);
		END IF;

		SET _zaplaty = '';

		IF (@session.globals.Owner IN ('PLISZKA') AND _rodzaj IN (1)) OR
		(@session.globals.Owner IN ('ATM') AND _scenario IN ('STZTMGZM_FV_ZAL_KONCOWA')) THEN
			SELECT
			LEFT(GROUP_CONCAT(CONCAT('Zapłata: ',n.datawplywu,', wyciąg: ',n.nrraportu) SEPARATOR '\n'),500) INTO _zaplaty
			FROM opng n, rozrach r
			WHERE n.guid = r.idnoper2 AND r.idnoper = _GUID
			GROUP BY r.idnoper;
		END IF;

		SET @test3 =_rodzaj;

		IF @session.globals.Owner IN ('POLASZEK') AND _scenario IN ('STZTMGZM_WZ_GRUPOWY') THEN
			SET _nazwadoc = CONCAT('Lista zaladunkowa dla dok. nr: ',(select group_concat(n.nrdokmag) from opng n inner join t_prn_opng t where n.guid=t.guid));

		ELSEIF @session.globals.Owner IN ('SECURITY') AND _rodzaj= 9
					AND _zmagazynu IN (103,104) AND _domagazynu >= 2000 AND _domagazynu < 3000  THEN
			SET _nazwadoc = CONCAT('Wydanie odzieży roboczej i sprzętu nr ',_nrdokmag,'\n',
														(SELECT opis FROM Magazyny WHERE idnmagazynu = _domagazynu));

		ELSEIF @session.globals.Owner IN ('SECURITY') AND _scenario IN ('PRN_NOTA_OBCIAZENIOWA') THEN
			SET _nazwadoc = CONCAT('Nota Obciążeniowa ',_nrdokfin);

		ELSEIF @session.globals.Owner IN ('SECURITY') AND _rodzaj IN (105) THEN
			SET _nazwadoc = CONCAT('Faktura Korekta ',_nrdokfin);

		ELSEIF @session.globals.Owner IN ('SECURITY') AND _scenario IN ('STZTMGZM_FV_DEFAULT', 'STZTMGZM_FV_DEFAULT2', 'STZTMGZM_FV_USERDEFINE') THEN
			SET _nazwadoc = CONCAT('Faktura ',_nrdokfin);

		ELSEIF @session.globals.Owner IN ('SECURITY') AND _rodzaj NOT IN (0,1,2,3,4)
					AND (_rodzaj <> 9 OR _zmagazynu <> 103 OR _domagazynu < 2000 OR _domagazynu > 3000)  THEN
			SET _nazwadoc = CONCAT((SELECT opis FROM operdoc WHERE rodzaj = _rodzaj),' nr ',_nrdokmag);

		ELSEIF @session.globals.Owner IN ('JARZEBINSCY','WEGA') AND _rodzaj IN (1) AND _scenario IN ('STZTMGZM_FV_MARZA') THEN
			SET _nazwadoc = CONCAT('Faktura-procedura marży-towary używane nr');

		ELSEIF @session.globals.Owner IN ('JARZEBINSCY') AND _rodzaj IN (0) AND _scenario = 'STZTMGZM_FV_DEFAULT' THEN
			SET _nazwadoc = CONCAT('Faktura VAT do paragonu');

		ELSEIF @zaliczka_nag > 0 AND _rodzaj IN (1,50,80) AND _lang_id = 'pl' THEN
			SET _nazwadoc = 'Faktura VAT zaliczka';

        ELSEIF @zaliczka_nag > 0 AND _rodzaj IN (1,50,80) AND _lang_id <> 'pl' THEN
			SET _nazwadoc = 'Advance Payment Invoice';

		ELSE
			IF _lang_id <> 'pl' THEN
				SET _nazwadoc = (SELECT IFNULL(lt.tostr, opis) FROM operdoc o LEFT JOIN lang_translations lt ON o.opis=lt.fromstr AND lt.to_lang= _lang_id WHERE o.rodzaj = _rodzaj);
			ELSE
				SET _nazwadoc =  (SELECT opis FROM operdoc WHERE rodzaj = _rodzaj);
			END IF;

		END IF;

		SET @test2 = _nazwadoc;

		-- sekcja dla izohanu, paraquy, moze byc wywolywana w cdg, mpgk
		IF _wyjazdGUID <> '' THEN
		SET _spedycja2 =
			(SELECT CONCAT("spedycja: ", k_sped.Nazwa,
			IF(IFNULL(cs.nr_rej, "") != "", CONCAT(", nr rej.: ", cs.nr_rej), ""),
			IF(IFNULL(TRIM(CONCAT_WS(' ', o.Imiona, o.Nazwisko)), "") != "", CONCAT(", kier.: ", TRIM(CONCAT_WS(' ', o.Imiona, o.Nazwisko))), ""))
			FROM `crm_commisions` c
			INNER JOIN `crm_spedycje` cs ON cs.commisionGUID = c.GUID
			LEFT JOIN `kontrah` k_sped ON k_sped.GUID = cs.Spedytor_GUID
			LEFT JOIN crm_usr_links cul ON cul.commisionGUID = c.GUID AND cul.Poziom = 2
			INNER JOIN `osoby` o ON o.GUID = cul.osoba AND NOT (o.nazwisko LIKE "%Osoba reprezent%")
			WHERE c.GUID = _wyjazdGUID
			GROUP BY c.GUID);
		ELSE
			SET _spedycja2 = '';
		END IF;

		SET _duplikat =
		(SELECT CASE
			WHEN @session.globals.Owner IN ("VOLT") AND _zaksiegowana = 1 AND _status = 3 THEN CONCAT("DUPLIKAT z dnia ",CURRENT_DATE())
			WHEN @session.globals.Owner = "SECURITY" AND _status = 1 THEN CONCAT("DUPLIKAT z dnia ",CURRENT_DATE())
			WHEN @session.globals.Owner = "PLISZKA" AND _rodzaj IN (1,3) THEN CONCAT("DUPLIKAT z dnia ",CURRENT_DATE())
			WHEN @session.globals.Owner NOT IN ("VOLT","SECURITY","PLISZKA") AND _lang_id = "pl" AND _status > 0 THEN CONCAT("DUPLIKAT z dnia ",CURRENT_DATE())
			WHEN @session.globals.Owner NOT IN ("VOLT","SECURITY","PLISZKA") AND _lang_id <> "pl" AND _status > 0 THEN CONCAT("DUPLICATE from ",CURRENT_DATE())
		ELSE "" END);

		SET _SposobPlatnosci =
		(SELECT CASE
			WHEN _lang_id <> "pl" AND PL.dni > 1 THEN
			IFNULL((SELECT tostr FROM lang_translations WHERE fromstr = CONCAT(PL.nazwa," ",PL.dni," dni") AND from_lang="pl" AND to_lang= _lang_id LIMIT 1),
				IF(PL.dni > 1, CONCAT(REPLACE(PL.Nazwa,"%d",PL.dni), " ", PL.dni, "dni"), IF(PL.dni > 0, CONCAT(REPLACE(PL.Nazwa,"%d",PL.dni), " ", "dzień"), PL.Nazwa)))
			WHEN _lang_id <> "pl" AND PL.dni = 1 THEN
			IFNULL((SELECT tostr FROM lang_translations WHERE fromstr = CONCAT(PL.nazwa," ",PL.dni," dzień") AND from_lang="pl" AND to_lang= _lang_id LIMIT 1),
					IF(PL.dni > 1, CONCAT(REPLACE(PL.Nazwa,"%d",PL.dni), " ", PL.dni, "dni"), IF(PL.dni > 0, CONCAT(REPLACE(PL.Nazwa,"%d",PL.dni), " ", "dzień"), PL.Nazwa)))
			WHEN _lang_id <> "pl" AND PL.dni = 0 THEN
			IFNULL((SELECT tostr FROM lang_translations WHERE fromstr = PL.nazwa AND from_lang="pl" AND to_lang= _lang_id LIMIT 1),
					IF(PL.dni > 1, CONCAT(REPLACE(PL.Nazwa,"%d",PL.dni), " ", PL.dni, "dni"),
					IF(PL.dni > 0, CONCAT(REPLACE(PL.Nazwa,"%d",PL.dni), " ", "dzień"), PL.Nazwa)))
			ELSE
			IF(PL.dni > 1, CONCAT(REPLACE(PL.Nazwa,"%d",PL.dni), " ", PL.dni, " dni"), IF(PL.dni > 0, CONCAT(REPLACE(PL.Nazwa,"%d",PL.dni), " ", " 1 dzień"),
			IF(@session.globals.Owner = "RELACOM" AND PL.idn=61,CONCAT(PL.Nazwa," DN. ",N.dataplatnosci),PL.Nazwa)))
		END
		FROM opng N
		LEFT JOIN platnosc PL ON PL.Idn = N.sposobplatn
		WHERE N.GUID = _GUID
		);
		-- _VarStr jest dla likwidacji mix collaction!!!
		SET _wystawil = IFNULL((select concat(imie1," ", nazwisko) from osoby where guid = _VarStr(IFNULL(@session.CurrOsobaGUID,""))),"");

		SET _SQLText =	REPLACE(_SQLText, '#GUID#', _GUID);
		SET _SQLText =	REPLACE(_SQLText, '#scenario#', IFNULL(_scenario,''));
		SET _SQLText =	REPLACE(_SQLText, '#DomyslnyBank#', IFNULL(@_KontoBankowe,''));
		SET _SQLText =	REPLACE(_SQLText, '#nazwadoc#', _nazwadoc);
		SET _SQLText =	REPLACE(_SQLText, '#zaplaty#', IFNULL(_zaplaty,''));
		SET _SQLText =	REPLACE(_SQLText, '#spedycja2#', IFNULL(_spedycja2,''));
		SET _SQLText =	REPLACE(_SQLText, '#duplikat#', IFNULL(_duplikat,''));
		SET _SQLText =	REPLACE(_SQLText, '#SposobPlatnosci#', IFNULL(_SposobPlatnosci,''));
		SET _SQLText =	REPLACE(_SQLText, '#wystawil#', IFNULL(_wystawil,''));

		SET _SQLText =	REPLACE(_SQLText, '#rok#', ifnull(@session.FK.AktRokObrach, year(current_date)));
		SET _SQLText =	REPLACE(_SQLText, '#v_sumy#',
		CONCAT(_v_netto,' as v_netto, ', _v_vat,' as v_vat, ',_v_brutto,' as v_brutto, ',
		_v_nettowal,' as v_nettowal, ',_v_vatwal,' as v_vatwal, ',_v_bruttowal,' as v_bruttowal, ',_v_ilosc,' as v_ilosc')
		);

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

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

	END IF; -- _Symbol = 'OP_NG_DEFAULT'


IF _MODE = 'OP_PO_DEFAULT' THEN

-- CALL fr_ht_OP ('OP_PO_DEFAULT','{8101FA66-0D21-4448-8883-015A1E7569ED}','','',0,'','','','');
-- CALL fr_ht_OP ('OP_PO_DEFAULT','#GUID#','','',0,'','','','')

	SET @rodzaj = (SELECT rodzaj FROM opng where GUID = _GUID);
	SET _baza = (SELECT DATABASE());

--  sprawdzenie czy grupowac zwyczajnie czy nie
	CALL _IReg_Get('OPNGINFOPATH', 'Dok. drukować grupując towary', 0, 'INT', @session.grupowanie.pozycji, '0');

-- sprawdzenie czy nie grupowanie internalne i wtedy inna sciezka
	IF (select count(*) from oppo where (idnoper = _GUID OR idnoperfin = _GUID) and grp_GUID <> '') > 0 THEN
		SET @session.grupowanie.pozycji = '10';
	END IF;

	IF _scenario IN ('STZTMGZM_WZ_BEZ_GRUP','STZTMGZM_WZ_BEZ_GRUP_TU_PROSTY') OR _scenario  LIKE '%BEZ_GRP' OR @rodzaj = 105 THEN
		SET @session.grupowanie.pozycji = '0';
	END IF;
	-- wylaczenie grupowania dla wskazanego scenariusza i dla korekty zbiorczej

	IF _scenario='STZTMGZM_FV_GRUP' THEN
		SET @session.grupowanie.pozycji = '1';
	END IF;
	-- wlaczenie grupowania dla wskazanego scenariusza

	IF @session.grupowanie.pozycji = '10' THEN
		-- w zasadzie kiedys trzeba to przeniesc tutaj, ale na razie staroc pozostaje
		CALL fr_ht_OPZM('GRUPOWANIE_INTERNALNE', _GUID, _scenario, _translate, _Param_A, _Param_B, _Param_C, _Param_D);
		LEAVE SPROC;
	END IF;


	IF @session.grupowanie.pozycji = '0' THEN
	-- pozycje bez grupowania

  SET _SQLText ='
  SELECT "fr_ht_OP__OP_PO_DEFAULT__gr0" as fr_ht_OP__OP_PO_DEFAULT__gr0,
  "0" as Ilosc_Przelicznik,
  if(P.GUID_dostawy<>"",(select concat(OD.nazwa," ",zn.nrdokmag) from opng zn inner join oppo zo on zn.guid=zo.idnoper left join operdoc OD on OD.rodzaj=zn.rodzaj where zo.guid=P.GUID_dostawy),".") as nrdokmag_zwrotu,
  N.waluta,
  if(P.idnoper<>P.idnoperfin,(select NG.nrdokmag from opng NG where NG.guid=P.idnoper),N.nrdokmag) as nrdokmag, -- nie do konca prawidlowe, na potrzeby EDI
  "." as osobaGUID, "." as osobaNazwiskoImie,
  T.lokalizacja1, T.lokalizacja2, T.lokalizacja3, T.lokalizacja4,
  P.ilosc*T.objetosc as objetosc, T.objetosc as objetosc_jedn,
  W.Symbol AS WalutaStr, T.min_ord_quant,
  _varDOUBLE(0.0) as magTyp,

  P.kat0, P.kat1, P.kat2, P.kat3, P.kat4, P.kat5, P.kat6, P.kat7, P.kat8, P.kat9,
  IF(P.kat0 > 0, (select kc.valuex from v_kkn0 kc where kc.klucz=P.kat0 and rok in (0, #rok#) ), "" ) as katcol0Str,
  IF(P.kat1 > 0, (select kc.valuex from v_kkn1 kc where kc.klucz=P.kat1 and rok in (0, #rok#) ), "" ) as katcol1Str,
  IF(P.kat2 > 0, (select kc.valuex from v_kkn2 kc where kc.klucz=P.kat2 and rok in (0, #rok#) ), "" ) as katcol2Str,
  IF(P.kat3 > 0, (select kc.valuex from v_kkn3 kc where kc.klucz=P.kat3 and rok in (0, #rok#) ), "" ) as katcol3Str,
  IF(P.kat4 > 0, (select kc.valuex from v_kkn4 kc where kc.klucz=P.kat4 and rok in (0, #rok#) ), "" ) as katcol4Str,
  IF(@session.globals.Owner = "TRANSBUD",
  IF(P.kat5 > 0, (SELECT (CONCAT(kc.valuex,IF(descr<>"",CONCAT(" """,kc.descr,""""),""))) FROM katcols kc WHERE kc.klucz=P.kat5 AND kc.typ=1 AND kc.colnr=1 AND rok IN (0, #rok#)), "" ),
  IF(P.kat5 > 0, (SELECT kc.valuex FROM katcols kc WHERE kc.klucz=P.kat5 AND kc.typ=1 AND kc.colnr=1 AND rok IN (0, #rok#)), "" )) AS katcol5Str, 

  -- IF(P.kat5 > 0, (select kc.valuex from katcols kc where kc.klucz=P.kat5 and kc.typ=1 and kc.colnr=1 and rok in (0, #rok#)), "" ) as katcol5Str,
  IF(P.kat6 > 0, (select kc.valuex from katcols kc where kc.klucz=P.kat6 and kc.typ=1 and kc.colnr=2 and rok in (0, #rok#)), "" ) as katcol6Str,
  IF(P.kat7 > 0, (select kc.valuex from katcols kc where kc.klucz=P.kat7 and kc.typ=1 and kc.colnr=3 and rok in (0, #rok#)), "" ) as katcol7Str,
  IF(P.kat8 > 0, (select kc.valuex from katcols kc where kc.klucz=P.kat8 and kc.typ=1 and kc.colnr=4 and rok in (0, #rok#)), "" ) as katcol8Str,
  IF(P.kat9 > 0, (select kc.valuex from katcols kc where kc.klucz=P.kat9 and kc.typ=1 and kc.colnr=5 and rok in (0, #rok#)), "" ) as katcol9Str,
  IFNULL( (SELECT symbol_edi FROM oferty o WHERE  N.kontrGUID = o.kontrguid AND P.idntowr = o.idntowr),
          (SELECT symbol_edi FROM oferty o WHERE  N.platnikGUID = o.kontrguid AND P.idntowr = o.idntowr) )  AS oferty_symbol_edi,
  IFNULL( (SELECT symbol FROM oferty o WHERE  N.kontrGUID = o.kontrguid AND P.idntowr = o.idntowr),
          (SELECT symbol FROM oferty o WHERE  N.platnikGUID = o.kontrguid AND P.idntowr = o.idntowr) ) as oferty_symbol,
  IFNULL( (SELECT nazwa FROM oferty o WHERE  N.kontrGUID = o.kontrguid AND P.idntowr = o.idntowr),
          (SELECT nazwa FROM oferty o WHERE  N.platnikGUID = o.kontrguid AND P.idntowr = o.idntowr) )  as oferty_nazwa,
  P.CenaNetWalzRab, P.cenamag, P.wartmag,
  concat(P.ilosc div T.opakowanie,"+",P.ilosc mod T.opakowanie) as opakowan,
  P.idn, P.Lp, P.GUID, IFNULL(concat(zp.lp," "),"1") as zplp,
  P.datawystaw as datawystaw_pozycji,  -- np. data wystawienia wz <> od daty wyst. FV
  P.usluga, P.kurs, P.info, P.info2, P.info3, P.info4,
  T.info as Tinfo, T.info2 as Tinfo2, T.info3 as Tinfo3, T.info4 as Tinfo4,

  IF(T.katcol2 > 0, (SELECT kc.valuex FROM katcols kc WHERE kc.klucz=T.katcol2 AND kc.typ=1 AND kc.colnr=3 AND rok IN (0, #rok#)), "" ) AS katcol2TStr,


  P.termin_waznosci as terminrealizacji,
  (P.cenabrt) as cenabrt_przed_rab,
	P.cenabrt,
  T.Opis, T.waga as wagatowaru, T.NazwaUProducenta,
  T.kod_kreskowy, T.kod_kreskowy1, T.kod_kreskowy2,
  (select kod_kreskowy from towrng_instancje where idntowr=P.idntowr order by idn desc limit 1) as kod_kreskowy_ti,
  (P.Ilosc/P.ilewopakowaniu) AS ileopakowan, P.ilewopakowaniu,
  T.akcyza,
	IF(@session.globals.Owner = "TRANSBUD" AND DATABASE()= "ht",(IF(P.kat5 > 0, (SELECT kc.param5 FROM katcols kc WHERE kc.klucz=P.kat5 AND kc.typ=1 AND kc.colnr=1), "" )),T.pcn ) AS pcn,
	T.pcn AS grp_pcn,
    T.podlega_akcyzie,
  T.symboludost, T.SymbolProducenta, T.dataprodukcji, T.nazwa_segment3, T.wyroznik,
-- wyliczenie ilosci palet (dla izohanu poprawna)

	CASE WHEN @session.globals.Owner = "IZOHAN" AND J.Nazwa IN ("l","kg","g","Mg","usl") THEN
		_varDOUBLE(0.0)
	ELSE
   (((P.ilosc-1) div T.opakowanie_zbiorcze_d)+1) + _varDOUBLE(0.0)
	END as ilosc_palet,

	--  dla polaszka waga netto i bruto sa odwrotnie z powodu zaszlosci historycznych, tutaj liczymy wage netto!!!
	CASE WHEN @session.globals.Owner = "POLASZEK" THEN
	 _varDOUBLE(P.ilosc*_varDOUBLE(IF(T.lokalizacja1="",0,T.lokalizacja1)))
	ELSE
  _varDOUBLE(P.waga+(P.ilosc*(T.opak_waga_papier + T.opak_waga_drewno + T.opak_waga_tw_sztuczne + T.opak_waga_metal)))
	END as wagabrt,

	_varDOUBLE(P.waga+(P.ilosc*(T.opak_waga_papier + T.opak_waga_drewno + T.opak_waga_tw_sztuczne + T.opak_waga_metal))) as grp_wagabrt,

  -- dla domaxu inaczej {$IFDEF DOMAX}  _varDOUBLE(P.waga+(((P.ilosc-1) div T.opakowanie_zbiorcze)+1)  * 20) as wagabrt,
  P.towrsymb,
  -- P.towrnazwa, -- #towrnazwa#,

	IF(T.nazwa=P.towrnazwa, IFNULL(( SELECT tostr from lang_translations where to_lang=N.lang_id and object_name="TowrNg" and object_key=P.IdnTowr LIMIT 1), P.towrnazwa), P.towrnazwa) AS towrnazwaTranslate,
	-- IF(N.lang_id<>"pl", IF(T.nazwa=P.towrnazwa, IFNULL(( SELECT tostr from lang_translations where to_lang=N.lang_id and object_name="TowrNg" and object_key=P.IdnTowr -- LIMIT 1), P.towrnazwa), P.towrnazwa),P.towrnazwa) AS towrnazwa,
	#towrnazwa# AS towrnazwa,

  P.cenanet,
	IF(P.cenanetWal=0,_varDOUBLE(_Rnd2(P.wartnetwal/P.ilosc)), P.cenanetWal) as cenanetWal,
	P.idntowr,
  P.wspolplatnosc,
  P.rabat,

  -- P.uwagi,
	#uwagipoz# as uwagi,

  P.uwagi2, P.waga_pozycji,
  P.towrnazwa2,
  P.waga, P.waga AS grp_waga,

  Concat(os.Imiona," ",os.Nazwisko) as Osoba_ImieNazwisko,
  os.info1 as Osoba_Info1,
  os.info2 as Osoba_Info2, os.nazwa_dzialu,

  P.ilosc As Ilosc, P.iloscdo As IloscDo,
  P.iloscbylo, P.iloscjest, -- potrzebne do inwentaryzacji

  IF(N.rodzaj=39 and P.rodzaj=67, abs(P.ilosc), 0) as ilosc_p,
  IF(N.rodzaj=39 and P.rodzaj=67, abs(P.wartmag), 0) as wartnet_p,
  IF(N.rodzaj=39 and P.rodzaj=68, abs(P.ilosc), 0) as ilosc_r,
  IF(N.rodzaj=39 and P.rodzaj=68, abs(P.wartmag), 0) as wartnet_r,

  case when N.lang_id <> "pl" then
  IF((J.Nazwa1 = "" or isnull(J.Nazwa1)), J.Nazwa, J.Nazwa1)
  else J.Nazwa END As Jednostka,

  J.precyzja as JednostkaPrecyzja,

	case when N.lang_id <> "pl" then IF((JP.Nazwa = "" or isnull(JP.Nazwa)), JP.Nazwa, JP.Nazwa1)
	when @session.globals.Owner = "TRANSBUD" AND P.kat9=1 THEN "kg"
	else JP.Nazwa END As JednostkaPom,


  JP.precyzja as JednostkaPomPrecyzja,
  -- _varDOUBLE(_Rnd2(P.ilosc * T.przelicznik_l / T.przelicznik_m)) as iloscPom,
	IF(@session.globals.Owner = "TRANSBUD" AND P.kat9=1,_varDOUBLE(_Rnd(P.ilosc * 1000 / 1, JP.precyzja)),_varDOUBLE(_Rnd(P.ilosc * T.przelicznik_l / T.przelicznik_m, JP.precyzja)))  AS iloscPom,
	_varDOUBLE(_Rnd2(P.wartnetwal/(_Rnd(P.ilosc * T.przelicznik_l / T.przelicznik_m, JP.precyzja)))) as cenaPom,
  J.EDI_index,
  P.idnvat,
	case when N.lang_id <> "pl" then IFNULL((SELECT tostr FROM lang_translations  WHERE fromstr= vat.shortname AND to_lang = N.lang_id),vat.shortname)
	else vat.shortname end AS idnVatStr,

  P.Rodzaj_przeliczenia, zn.nrzamw, zn.nrzamwkontr,
  cast(IFNULL(zn.datawystaw,N.datawystaw) as char) as datazamowienia,
  N.GUID as GUIDng,
  P.grupuj, P.GUIDKorPO,
  P.wartvat,
  P.wartnet,
  P.wartbrt,

  -- P.wartvat as wartvatWal,
  _varDOUBLE(_Rnd2(P.wartvat/P.kurs)) as wartvatwal, -- zgodnosc z procedura dla zamowien i proform

  P.wartnetWal as wartnetWal,
	if(P.wartbrtwal=0,_Rnd2(P.wartbrt/P.kurs),P.wartbrtwal) as wartbrtwal,
  P.nrseryjny, P.inwnbo,
  P.oplata_produktowa, P.wartBrtWal as BruttoWal,
  T.treenode, T.symbol, P.pkwiu, T.sww,
  _varDOUBLE(0) as wartnetpln, T.idn as towr_idn,
	IF(P.recepturaGUID<>"",(SELECT nazwa FROM rcng WHERE guid=P.recepturaGUID),"") AS nazwa_receptury,

	zp.ilosc AS iloscZam, zp.iloscdo AS iloscdoZam, zp.ilosc_pierwotna AS ilosc_pierwotnaZam,
	IFNULL(N.info1, "") AS reczny_nrzamwkontr,
	IF(N.rodzaj IN (3,4),(SELECT zm.nrzamw FROM zmng zm, oppo o, zmpo udp WHERE P.guidkorpo = o.guid AND o.guidzm=udp.guid AND udp.idnng=zm.guid),zn.nrzamw) AS SupplierOrderNumber,
	JP.EDI_index AS PackItemUOM,
	ifnull((T.przelicznik_l / T.przelicznik_m),1) AS t_przelicz,
	_VarStr(nd.symbol) AS AreaSymbol,
	_VarStr(nd.Nazwa) AS AreaNazwa,
	P.wymiar_x,P.wymiar_y,P.wymiar_z,
	T.jpkgtu,
	zp.cena_dod_1, zp.cena_dod_2
  FROM opng N
	#JOIN# -- zlaczenie dla dok.zbiorczych
  INNER JOIN oppo P ON P.idnoper = N.GUID OR P.idnoperfin = N.GUID
  LEFT JOIN TowrNg T ON T.GUID = P.idntowr
  LEFT JOIN Jednostki J ON J.idn = P.jednostka
  LEFT JOIN Jednostki JP ON JP.idn = T.jednostka_pom
  LEFT JOIN zmpo zp ON zp.GUID = P.GUIDzm
  LEFT JOIN zmng zn ON zn.GUID = zp.IdnNG
  LEFT JOIN waluty W ON W.idn = N.waluta
  LEFT JOIN osoby os ON os.GUID = P.osobaGUID
  LEFT JOIN v_erp_vat vat ON vat.ID = P.idnvat
	LEFT JOIN erp_area_nodes nd ON nd.GUID = P.areaGUID AND nd.deleted = 0
--   WHERE N.GUID = "#GUID#"
	WHERE #GUID#
		IF(N.rodzaj in (11,12,13,9,10),1,T.opakowanie_zwrotne=0)
		and #zaliczka#
		#HAVING#
  #ORDER#
  '
  -- ORDER BY P.Lp  -- //P.Lp, zn.nrzamw
	;


 END IF;


 IF @session.grupowanie.pozycji in ('1','2') THEN

 SET _SQLText ='
  SELECT "fr_ht_OP__OP_PO_DEFAULT__gr12" as fr_ht_OP__OP_PO_DEFAULT__gr12,
  "0" as Ilosc_Przelicznik,
  if(P.GUID_dostawy<>"",(select concat(OD.nazwa," ",zn.nrdokmag) from opng zn inner join oppo zo on zn.guid=zo.idnoper left join operdoc OD on OD.rodzaj=zn.rodzaj where zo.guid=P.GUID_dostawy),".") as nrdokmag_zwrotu,
  N.waluta,
  if(P.idnoper<>P.idnoperfin,(select NG.nrdokmag from opng NG where NG.guid=P.idnoper),N.nrdokmag) as nrdokmag, -- nie do konca prawidlowe, na potrzeby EDI
  "." as osobaGUID, "." as osobaNazwiskoImie,
  T.lokalizacja1, T.lokalizacja2, T.lokalizacja3, T.lokalizacja4,
  SUM(P.ilosc*T.objetosc) as objetosc, T.objetosc as objetosc_jedn,
  W.Symbol AS WalutaStr, T.min_ord_quant,
  _varDOUBLE(0.0) as magTyp,

  P.kat0, P.kat1, P.kat2, P.kat3, P.kat4, P.kat5, P.kat6, P.kat7, P.kat8, P.kat9,
  IF(P.kat0 > 0, (select kc.valuex from v_kkn0 kc where kc.klucz=P.kat0 and rok in (0, #rok#) ), "" ) as katcol0Str,
  IF(P.kat1 > 0, (select kc.valuex from v_kkn1 kc where kc.klucz=P.kat1 and rok in (0, #rok#) ), "" ) as katcol1Str,
  IF(P.kat2 > 0, (select kc.valuex from v_kkn2 kc where kc.klucz=P.kat2 and rok in (0, #rok#) ), "" ) as katcol2Str,
  IF(P.kat3 > 0, (select kc.valuex from v_kkn3 kc where kc.klucz=P.kat3 and rok in (0, #rok#) ), "" ) as katcol3Str,
  IF(P.kat4 > 0, (select kc.valuex from v_kkn4 kc where kc.klucz=P.kat4 and rok in (0, #rok#) ), "" ) as katcol4Str,
  IF(@session.globals.Owner = "TRANSBUD",
  IF(P.kat5 > 0, (SELECT (CONCAT(kc.valuex,IF(descr<>"",CONCAT(" """,kc.descr,""""),""))) FROM katcols kc WHERE kc.klucz=P.kat5 AND kc.typ=1 AND kc.colnr=1 AND rok IN (0, #rok#)), "" ),
  IF(P.kat5 > 0, (SELECT kc.valuex FROM katcols kc WHERE kc.klucz=P.kat5 AND kc.typ=1 AND kc.colnr=1 AND rok IN (0, #rok#)), "" )) AS katcol5Str, 

  -- IF(P.kat5 > 0, (select kc.valuex from katcols kc where kc.klucz=P.kat5 and kc.typ=1 and kc.colnr=1 and rok in (0, #rok#)), "" ) as katcol5Str,
  IF(P.kat6 > 0, (select kc.valuex from katcols kc where kc.klucz=P.kat6 and kc.typ=1 and kc.colnr=2 and rok in (0, #rok#)), "" ) as katcol6Str,
  IF(P.kat7 > 0, (select kc.valuex from katcols kc where kc.klucz=P.kat7 and kc.typ=1 and kc.colnr=3 and rok in (0, #rok#)), "" ) as katcol7Str,
  IF(P.kat8 > 0, (select kc.valuex from katcols kc where kc.klucz=P.kat8 and kc.typ=1 and kc.colnr=4 and rok in (0, #rok#)), "" ) as katcol8Str,
  IF(P.kat9 > 0, (select kc.valuex from katcols kc where kc.klucz=P.kat9 and kc.typ=1 and kc.colnr=5 and rok in (0, #rok#)), "" ) as katcol9Str,
  IFNULL( (SELECT symbol_edi FROM oferty o WHERE  N.kontrGUID = o.kontrguid AND P.idntowr = o.idntowr),
          (SELECT symbol_edi FROM oferty o WHERE  N.platnikGUID = o.kontrguid AND P.idntowr = o.idntowr) )  AS oferty_symbol_edi,
  IFNULL( (SELECT symbol FROM oferty o WHERE  N.kontrGUID = o.kontrguid AND P.idntowr = o.idntowr),
          (SELECT symbol FROM oferty o WHERE  N.platnikGUID = o.kontrguid AND P.idntowr = o.idntowr) ) as oferty_symbol,
  IFNULL( (SELECT nazwa FROM oferty o WHERE  N.kontrGUID = o.kontrguid AND P.idntowr = o.idntowr),
          (SELECT nazwa FROM oferty o WHERE  N.platnikGUID = o.kontrguid AND P.idntowr = o.idntowr) )  as oferty_nazwa,
  -- P.CenaNetWalzRab,
	-- _varDOUBLE(_Rnd2(SUM(P.wartnetwal)/SUM(P.ilosc))) AS CenaNetWalzRab, zmiana 23 stycznia 2020 dla Konkola
	P.CenaNetWalzRab,
	P.cenamag, SUM(P.wartmag) as wartmag,
  concat(SUM(P.ilosc) div T.opakowanie,"+",SUM(P.ilosc) mod T.opakowanie) as opakowan,
  P.idn, P.Lp, P.GUID, IFNULL(concat(zp.lp," "),"1") as zplp,
  P.datawystaw as datawystaw_pozycji,  -- np. data wystawienia wz <> od daty wyst. FV
  P.usluga, P.kurs, P.info, P.info2, P.info3, P.info4,
  T.info as Tinfo, T.info2 as Tinfo2, T.info3 as Tinfo3, T.info4 as Tinfo4,

  IF(T.katcol2 > 0, (SELECT kc.valuex FROM katcols kc WHERE kc.klucz=T.katcol2 AND kc.typ=1 AND kc.colnr=3 AND rok IN (0, #rok#)), "" ) AS katcol2TStr,


  P.termin_waznosci as terminrealizacji,
  (P.cenabrt) as cenabrt_przed_rab,
	P.cenabrt,
  T.Opis, T.waga as wagatowaru, T.NazwaUProducenta,
  T.kod_kreskowy, T.kod_kreskowy1, T.kod_kreskowy2,
  (select kod_kreskowy from towrng_instancje where idntowr=P.idntowr order by idn desc limit 1) as kod_kreskowy_ti,
  SUM(P.Ilosc/P.ilewopakowaniu) AS ileopakowan, P.ilewopakowaniu,
  T.akcyza,
  IF(@session.globals.Owner = "TRANSBUD" AND DATABASE()= "ht",(IF(P.kat5 > 0, (SELECT kc.param5 FROM katcols kc WHERE kc.klucz=P.kat5 AND kc.typ=1 AND kc.colnr=1), "" )),T.pcn ) AS pcn,
  T.pcn AS grp_pcn,
  T.podlega_akcyzie,
  T.symboludost, T.SymbolProducenta, T.dataprodukcji, T.nazwa_segment3, T.wyroznik,
-- wyliczenie ilosci palet

	CASE WHEN @session.globals.Owner = "IZOHAN" AND J.Nazwa IN ("l","kg","g","Mg","usl") THEN
		_varDOUBLE(0.0)
	ELSE
   SUM(((P.ilosc-1) div T.opakowanie_zbiorcze_d)+1) + _varDOUBLE(0.0)
	END as ilosc_palet,

--  dla polaszka waga netto i bruto sa odwrotnie z powodu zaszlosci historycznych, tutaj liczymy wage netto!!!
	CASE WHEN @session.globals.Owner = "POLASZEK" THEN
		_varDOUBLE(SUM(P.ilosc*_varDOUBLE(IF(T.lokalizacja1="",0,T.lokalizacja1))))
	ELSE
		_varDOUBLE(SUM((P.waga+(P.ilosc*(T.opak_waga_papier + T.opak_waga_drewno + T.opak_waga_tw_sztuczne + T.opak_waga_metal)))))
	END as wagabrt,

	_varDOUBLE(SUM((P.waga+(P.ilosc*(T.opak_waga_papier + T.opak_waga_drewno + T.opak_waga_tw_sztuczne + T.opak_waga_metal))))) AS grp_wagabrt,

  -- dla domaxu inaczej {$IFDEF DOMAX}  _varDOUBLE(P.waga+(((P.ilosc-1) div T.opakowanie_zbiorcze)+1)  * 20) as wagabrt,
  P.towrsymb,
  -- P.towrnazwa,
	IF(T.nazwa=P.towrnazwa, IFNULL(( SELECT tostr from lang_translations where to_lang=N.lang_id and object_name="TowrNg" and object_key=P.IdnTowr LIMIT 1), P.towrnazwa), P.towrnazwa) AS towrnazwaTranslate,

	-- IF(N.lang_id<>"pl", IF(T.nazwa=P.towrnazwa, IFNULL(( SELECT tostr from lang_translations where to_lang=N.lang_id and object_name="TowrNg" and object_key=P.IdnTowr -- LIMIT 1), P.towrnazwa), P.towrnazwa),P.towrnazwa) AS towrnazwa,
	#towrnazwa# AS towrnazwa,

  P.cenanet,
	-- P.cenanetWal,
	IF(P.cenanetWal=0,_varDOUBLE(_Rnd2(SUM(P.wartnetwal)/SUM(P.ilosc))), P.cenanetWal) as cenanetWal,
	P.idntowr,
  P.wspolplatnosc,
  P.rabat,

  -- P.uwagi,
	#uwagipoz# as uwagi,

	P.uwagi2, SUM(P.waga_pozycji) as waga_pozycji,
  P.towrnazwa2,
  SUM(P.waga) as waga, SUM(P.waga) as grp_waga,
  Concat(os.Imiona," ",os.Nazwisko) as Osoba_ImieNazwisko,
  os.info1 as Osoba_Info1,
  os.info2 as Osoba_Info2, os.nazwa_dzialu,

  SUM(P.ilosc) As Ilosc, SUM(P.iloscdo) As IloscDo,
  SUM(P.iloscbylo) AS iloscbylo, SUM(P.iloscjest) AS iloscjest,

  SUM(IF(N.rodzaj=39 and P.rodzaj=68, abs(P.ilosc), 0)) as ilosc_p,
  SUM(IF(N.rodzaj=39 and P.rodzaj=68, abs(P.wartnet), 0)) as wartnet_p,
  SUM(IF(N.rodzaj=39 and P.rodzaj=67, abs(P.ilosc), 0)) as ilosc_r,
  SUM(IF(N.rodzaj=39 and P.rodzaj=67, abs(P.wartnet), 0)) as wartnet_r,


  case when N.lang_id <> "pl" then
  IF((J.Nazwa1 = "" or isnull(J.Nazwa1)), J.Nazwa, J.Nazwa1)
  else J.Nazwa END As Jednostka,
  J.precyzja as JednostkaPrecyzja,

	case when N.lang_id <> "pl" then IF((JP.Nazwa = "" or isnull(JP.Nazwa)), JP.Nazwa, JP.Nazwa1)
	when @session.globals.Owner = "TRANSBUD" AND P.kat9=1 THEN "kg"
	else JP.Nazwa END As JednostkaPom,

  JP.precyzja as JednostkaPomPrecyzja,
  -- _varDOUBLE(_Rnd2(SUM(P.ilosc * T.przelicznik_l / T.przelicznik_m))) as iloscPom,
	IF(@session.globals.Owner = "TRANSBUD" AND P.kat9=1,_varDOUBLE(_Rnd(SUM(P.ilosc * 1000 / 1), JP.precyzja)),_varDOUBLE(_Rnd(SUM(P.ilosc * T.przelicznik_l / T.przelicznik_m), JP.precyzja)))  AS iloscPom,
	_varDOUBLE(_Rnd2(SUM(P.wartnetwal)/(_Rnd(SUM(P.ilosc * T.przelicznik_l / T.przelicznik_m), JP.precyzja)))) as cenaPom,

  J.EDI_index,
  P.idnvat,
	case when N.lang_id <> "pl" then IFNULL((SELECT tostr FROM lang_translations  WHERE fromstr= vat.shortname AND to_lang = N.lang_id),vat.shortname)
	else vat.shortname end AS idnVatStr,
  P.Rodzaj_przeliczenia, zn.nrzamw, zn.nrzamwkontr,
  cast(IFNULL(zn.datawystaw,N.datawystaw) as char) as datazamowienia,
  N.GUID as GUIDng,
  P.grupuj, P.GUIDKorPO,
  SUM(P.wartnet) as wartnet,
	-- SUM(P.wartvat) as wartvat,
	_varDOUBLE(_Rnd2(SUM(P.wartnet)*vat.value)) as wartvat,
  -- SUM(P.wartbrt) as wartbrt,
	_varDOUBLE(_Rnd2(SUM(P.wartnet)*vat.value)+SUM(P.wartnet)) as wartbrt,
  SUM(P.wartnetwal) as wartnetwal,
  -- _varDOUBLE(_Rnd2(SUM(P.wartvat/P.kurs))) as wartvatwal, -- zgodnosc z procedura dla zamowien i proform
	_varDOUBLE(_Rnd2(SUM(P.wartnetwal)*vat.value)) as wartvatwal,
  -- SUM(P.wartbrtwal) as wartbrtwal,

  -- if(SUM(P.wartbrtwal)=0,_Rnd2(sum(P.wartbrt/P.kurs)),SUM(P.wartbrtwal)) as wartbrtwal,
  -- _varDOUBLE(_Rnd2(SUM(P.wartnetwal)*vat.value)+SUM(P.wartnetwal)) as wartbrtwal,

	if(SUM(P.wartbrtwal)=0, _varDOUBLE(_Rnd2(SUM(P.wartnetwal)*vat.value)+SUM(P.wartnetwal)), SUM(P.wartbrtwal)) as wartbrtwal,

		-- SUM(P.wartbrtwal) as BruttoWal,
	_varDOUBLE(_Rnd2(SUM(P.wartnetwal)*vat.value)+SUM(P.wartnetwal)) as BruttoWal,
  P.nrseryjny, P.inwnbo,
  P.oplata_produktowa,
  T.treenode, T.symbol, P.pkwiu, T.sww,
  _varDOUBLE(0) as wartnetpln, T.idn as towr_idn,
	IF(P.recepturaGUID<>"",(SELECT nazwa FROM rcng WHERE guid=P.recepturaGUID),"") AS nazwa_receptury,
	_varDOUBLE(SUM(zp.ilosc)) AS iloscZam, _varDOUBLE(SUM(zp.iloscdo)) AS iloscdoZam,
	_varDOUBLE(SUM(zp.ilosc_pierwotna)) AS ilosc_pierwotnaZam,
	IFNULL(N.info1, "") AS reczny_nrzamwkontr,
	IF(N.rodzaj IN (3,4),(SELECT zm.nrzamw FROM zmng zm, oppo o, zmpo udp WHERE P.guidkorpo = o.guid AND o.guidzm=udp.guid AND udp.idnng=zm.guid),zn.nrzamw) AS SupplierOrderNumber,
  JP.EDI_index AS PackItemUOM,
	ifnull((T.przelicznik_l / T.przelicznik_m),1) AS t_przelicz,
	_VarStr(nd.symbol) AS AreaSymbol,
	_VarStr(nd.Nazwa) AS AreaNazwa,
	P.wymiar_x,P.wymiar_y,P.wymiar_z,
	T.jpkgtu,
	zp.cena_dod_1, zp.cena_dod_2
  FROM opng N
	#JOIN# -- zlaczenie dla dok.zbiorczych
  INNER JOIN oppo P ON P.idnoper = N.GUID OR P.idnoperfin = N.GUID
  LEFT JOIN TowrNg T ON T.GUID = P.idntowr
  LEFT JOIN Jednostki J ON J.idn = P.jednostka
  LEFT JOIN Jednostki JP ON JP.idn = T.jednostka_pom
  LEFT JOIN zmpo zp ON zp.GUID = P.GUIDzm
  LEFT JOIN zmng zn ON zn.GUID = zp.IdnNG
  LEFT JOIN waluty W ON W.idn = N.waluta
  LEFT JOIN osoby os ON os.GUID = P.osobaGUID
  LEFT JOIN v_erp_vat vat ON vat.ID = P.idnvat
	LEFT JOIN erp_area_nodes nd ON nd.GUID = P.areaGUID AND nd.deleted = 0
--   WHERE N.GUID = "#GUID#"
	WHERE #GUID#
		IF(N.rodzaj in (11,12,13,9,10),1,T.opakowanie_zwrotne=0)
		and #zaliczka#
	GROUP BY #group_by#
	#HAVING#
  #ORDER#
  -- ORDER BY P.Lp  , P.Lp, zn.nrzamw
	';
  SET @_sql_text_debug=_SQLTEXT;
 END IF; -- grupowanie 1,2

		-- zaliczka ogolnie ogranicza rekordy, i zaliczkowe i inne, np uslugowe w maxformie, czy ilosc<>0 w inwentaryzacji w Torbaczu
		SET _zaliczka =
			CASE WHEN @session.globals.Owner IN ('MAXFORM') AND @rodzaj IN (11) THEN '(T.usluga not in (1))'
						WHEN @session.globals.Owner IN ('AZO') AND @rodzaj IN (10) AND _scenario IN  ('STZTMGZM_MM_BC')
								THEN '(T.usluga not in (1))'
						WHEN @session.globals.Owner IN ('TORBACZ') AND @rodzaj IN (39) THEN '(P.ilosc <> 0)'

						WHEN @session.globals.Owner IN ('AXIS') AND @rodzaj IN (39) AND _scenario IN  ('STPRN_OP_ARKUSZ_SPISOWY_ROZNICE2') THEN '(P.ilosc <> 0)'

						WHEN @session.globals.Owner IN ('PLISZKA') AND @rodzaj IN (39) THEN '(P.iloscjest <> 0 OR P.iloscbylo <> 0)'
						WHEN @session.globals.Owner IN ('BYSEWO') AND @rodzaj IN (1) AND _scenario IN  ('STZTMGZM_FV_DEFAULT2')
								THEN '(T.wyroznik not in ("REKL"))'
					WHEN @session.globals.Owner IN ('HYDROMEGA') AND @rodzaj IN (10) AND _scenario IN  ('STZTMGZM_MM_BC')
								THEN '(T.usluga not in (8))'
					WHEN @session.globals.Owner IN ('COMEX') AND _scenario IN  ('STZTMGZM_L_PACK')
								THEN '(P.towrsymb not in ("U_DELIVERY"))' -- to samo jest w procedurze fr_ht_OPZM!

		ELSE TRUE END;


		SET _having =
			CASE WHEN @session.globals.Owner IN ('KONKOL') THEN 'HAVING  ilosc <> 0'
					WHEN @session.globals.Owner IN ('TRANSBUD') AND  _scenario ='STZTMGZM_WZ_TRANS' THEN 'HAVING P.usluga=0'
					WHEN @session.globals.Owner IN ('AMICUS') AND  _scenario ='STZTMGZM_EXPORT' THEN 'HAVING T.wyroznik<>"TR"'
				ELSE ''
			END;

		SET _order =
			CASE WHEN @session.globals.Owner IN ('DOMAX','KONKOL') THEN 'ORDER BY towrsymb'
					 WHEN @session.globals.Owner IN ('SIMEX') THEN 'ORDER BY zn.nrzamwkontr, P.idnoper, P.lp'
					 WHEN @session.globals.Owner IN ('POLASZEK') AND _scenario IN ('STZTMGZM_WZ_GRUPOWY') THEN 'ORDER BY zn.nrzamwkontr, P.idnoper, P.lp'
					 WHEN @session.globals.Owner IN ('PLISZKA') AND _scenario IN ('STPRN_OP_ARKUSZ_SPISOWY') THEN 'ORDER BY  T.lokalizacja1, P.towrsymb'
				ELSE (SELECT CONCAT('ORDER BY ',valuea) FROM IReg WHERE idkey = 'Sortowanie pozycji dokumentu FV' LIMIT 1)
			END;

		SET _uwagipoz =
			CASE WHEN @session.globals.Owner IN ('PROBIER') THEN
					'CASE WHEN IFNULL(P.inwnnadw,"")<>"" AND IFNULL(P.inwnbo,"")<>"" THEN
								CONCAT(IF(P.uwagi IS NULL,"",CONCAT(P.uwagi,"\n")),"Stan początkowy: ",P.inwnbo," Stan końcowy: ",P.inwnnadw)
					 ELSE P.uwagi END '
				ELSE 'P.uwagi'
			END;

		SET _group_by =
			CASE WHEN @session.globals.Owner IN ('KONKOL')
				AND _scenario NOT IN ('STZTMGZM_FV_DEFAULT9','STZTMGZM_EXPORT_XML') THEN
					'P.idntowr, P.cenanet, P.rabat, P.idnvat, P.recepturaGUID '
				WHEN @session.globals.Owner IN ('KONKOL') AND _scenario IN ('STZTMGZM_FV_DEFAULT9','STZTMGZM_EXPORT_XML') THEN
					-- 'T.kod_kreskowy, P.cenanet, P.rabat, P.idnvat '
						'P.towrsymb, P.cenanet, P.rabat, P.idnvat '
				WHEN @session.globals.Owner IN ('SECURITY') THEN
						'P.areaguid, P.towrsymb, P.cenanet, P.rabat, P.idnvat '
-- 				WHEN @session.globals.Owner IN ('CDG') AND _baza = 'rgl' THEN
--  						'P.idntowr, P.towrnazwa, P.cenanet, P.rabat, P.idnvat '
				ELSE 'P.idntowr, P.cenanet, P.rabat, P.idnvat '
			END;

		-- zlaczenie i guid dla dokumentow zbiorczych (lub nie)
		IF @session.globals.Owner IN ('POLASZEK') AND _scenario IN ('STZTMGZM_WZ_GRUPOWY') THEN
			SET _guidstr = '';
			SET _join = 'INNER JOIN t_prn_opng t ON t.guid = N.guid ';
		ELSE
			SET _guidstr = CONCAT('N.GUID = "',_GUID,'" AND ');
			SET _join = '';
		END IF;

		SET _towrnazwa =
		CASE WHEN @session.globals.Owner = 'BYSEWO' AND _scenario IN ('STZTMGZM_EXPORT2') THEN
			'SUBSTRING_INDEX(P.towrnazwa,"PCN",1)'
			WHEN @session.globals.Owner = 'IRKO' THEN
			'CONCAT(P.towrnazwa,IF(T.pcn<>"",CONCAT(" CN: ",T.pcn),""))'
			ELSE
			'IF(N.lang_id<>"pl", IF(T.nazwa=P.towrnazwa, IFNULL(( SELECT tostr from lang_translations where to_lang=N.lang_id and object_name="TowrNg" and object_key=P.IdnTowr LIMIT 1), P.towrnazwa), P.towrnazwa),P.towrnazwa)'
		END;

		SET _SQLText =	REPLACE(_SQLText, '#JOIN#', _join);
		SET _SQLText =	REPLACE(_SQLText, '#GUID#', _guidstr);
		SET _SQLText =	REPLACE(_SQLText, '#ORDER#', _order) ;
		SET _SQLText =	REPLACE(_SQLText, '#rok#', ifnull(@session.FK.AktRokObrach, year(current_date)));
		SET _SQLText =	REPLACE(_SQLText, '#HAVING#', _having);
		SET _SQLText =	REPLACE(_SQLText, '#zaliczka#', _zaliczka);
		SET _SQLText =	REPLACE(_SQLText, '#uwagipoz#', _uwagipoz);
		SET _SQLText =	REPLACE(_SQLText, '#group_by#', _group_by);
		SET _SQLText =	REPLACE(_SQLText, '#towrnazwa#', _towrnazwa);
		-- SET _SQLText =	REPLACE(_SQLText, '#LANG#', IFNULL((SELECT lang_id FROM opng WHERE guid=_GUID limit 1),'pl'));


		set @nowy_naglowek_op = 'nie';
			IF _zaliczka <> true OR _scenario IN ('STZTMGZM_WZ_GRUPOWY') then
				drop table if exists temp_poz01_op;
				set _SQLText2 = concat('create temporary table temp_poz01_op ', _SQLText);
				CALL _ExecuteCmd(_SQLText2, @Error);
				set @nowy_naglowek_op = 'tak';
				SET @_SQLText2_op =	_SQLText2;
			end if;

		SET @_SQLText =	_SQLText;
 		CALL _ExecuteCmd(_SQLText, @Error);
		-- select _SQLText, @session.FK.AktRokObrach;


END IF; -- _Symbol = 'OP_PO_DEFAULT'


-- to ma być tabelka vat
IF _MODE = 'OP_NG_VAT' THEN

	SELECT kurs, waluta, rodzaj, lang_id into @kurs_op, @waluta_op, _rodzaj, @lang_id FROM opng where GUID = _GUID;

	SET @nowy_naglowek_op = IFNULL(@nowy_naglowek_op,'nie');

	IF _rodzaj IN (3,4,85,90) THEN
        SET _korekta = 1;
    ELSE
        SET _korekta = 0;
    END IF;


    IF _korekta = 0 THEN
        IF @lang_id = 'pl' THEN

            if @nowy_naglowek_op = 'tak' then
                select t.idnvat as idvat, _Rnd2(sum(wartnet)) as netto, _Rnd2(sum(wartvat)) as vat, _Rnd2(sum(wartbrt)) as brutto,
                    _Rnd2(sum(wartnetwal)) as nettowal, _Rnd2(sum(bruttowal)-sum(wartnetwal)) as vatwal, _Rnd2(sum(bruttowal)) as bruttowal,
                    v.name as name, v.shortname as idnVatStr, v.value as stawka
                from temp_poz01_op t
                inner join v_erp_vat v ON v.id = t.idnvat
                group by t.idnvat;
            end if;

        -- czolgowe obejscie problemu zaokraglen przy braku kwot walutowych, dla kursu=1
            if (@nowy_naglowek_op <> 'tak' and @kurs_op = 1) then
                SELECT n.IdVat, n.Netto, n.Vat, n.Brutto,
                    if(n.NettoWal=0, n.Netto, n.NettoWal) as NettoWal,
                    if(n.VatWal=0, n.Vat, n.VatWal) as VatWal,
                    if(n.BruttoWal=0, n.Brutto, n.BruttoWal) as BruttoWal,
                    v.name as name, v.shortname as idnVatStr, v.value as stawka
                FROM opng_vat n
                INNER JOIN v_erp_vat v ON v.id = n.idvat
                INNER JOIN oppo p ON (p.idnoper = n.idnoper OR p.idnoperfin = n.idnoper) AND n.idvat = p.idnvat
                WHERE n.idnoper = _GUID
                GROUP BY n.IdVat;
            end if;


            if (@nowy_naglowek_op <> 'tak' and @kurs_op<>1) then
                SELECT n.IdVat, n.Netto, n.Vat, n.Brutto,
                    if(n.NettoWal=0 and n.Netto<>0, sum(p.wartnetwal), n.NettoWal) as NettoWal,
                    if(n.VatWal=0 and n.Vat<>0, _Rnd2(sum(p.wartnetwal)*(v.value)), n.VatWal) as VatWal,
                    if(n.BruttoWal=0 and n.Brutto<>0, _Rnd2(sum(p.wartnetwal) + _Rnd2(sum(p.wartnetwal)*(v.value))), n.BruttoWal) as BruttoWal,
                    v.name as name, v.shortname as idnVatStr, v.value as stawka
                FROM opng_vat n
                INNER JOIN v_erp_vat v ON v.id = n.idvat
                INNER JOIN oppo p ON (p.idnoper = n.idnoper OR p.idnoperfin = n.idnoper) AND n.idvat = p.idnvat
                WHERE n.idnoper = _GUID
                GROUP BY n.IdVat;
            end if;

        ELSE -- dla jezyka innego niz pl wlaczamy tlumaczenia
            if @nowy_naglowek_op = 'tak' then
                select t.idnvat as idvat, _Rnd2(sum(wartnet)) as netto, _Rnd2(sum(wartvat)) as vat, _Rnd2(sum(wartbrt)) as brutto,
                    _Rnd2(sum(wartnetwal)) as nettowal, _Rnd2(sum(bruttowal)-sum(wartnetwal)) as vatwal, _Rnd2(sum(bruttowal)) as bruttowal,
                    ifnull(l.tostr, v.name) as name, ifnull(l2.tostr, v.shortname) as idnVatStr, v.value as stawka
                from temp_poz01_op t
                inner join v_erp_vat v ON v.id = t.idnvat
                left join lang_translations l ON v.name = l.fromstr AND l.to_lang = @lang_id
                left join lang_translations l2 ON v.shortname = l2.fromstr AND l2.to_lang = @lang_id
                group by t.idnvat;
            end if;

        -- czolgowe obejscie problemu zaokraglen przy braku kwot walutowych, dla kursu=1
            if (@nowy_naglowek_op <> 'tak' and @kurs_op = 1) then
                SELECT n.IdVat, n.Netto, n.Vat, n.Brutto,
                    if(n.NettoWal=0, n.Netto, n.NettoWal) as NettoWal,
                    if(n.VatWal=0, n.Vat, n.VatWal) as VatWal,
                    if(n.BruttoWal=0, n.Brutto, n.BruttoWal) as BruttoWal,
                    ifnull(l.tostr, v.name) as name, ifnull(l2.tostr, v.shortname) as idnVatStr, v.value as stawka
                FROM opng_vat n
                INNER JOIN v_erp_vat v ON v.id = n.idvat
                INNER JOIN oppo p ON (p.idnoper = n.idnoper OR p.idnoperfin = n.idnoper) AND n.idvat = p.idnvat
                left join lang_translations l ON v.name = l.fromstr AND l.to_lang = @lang_id
                left join lang_translations l2 ON v.shortname = l2.fromstr AND l2.to_lang = @lang_id
                WHERE n.idnoper = _GUID
                GROUP BY n.IdVat;
            end if;


            if (@nowy_naglowek_op <> 'tak' and @kurs_op<>1) then
                SELECT n.IdVat, n.Netto, n.Vat, n.Brutto,
                    if(n.NettoWal=0 and n.Netto<>0, sum(p.wartnetwal), n.NettoWal) as NettoWal,
                    if(n.VatWal=0 and n.Vat<>0, _Rnd2(sum(p.wartnetwal)*(v.value)), n.VatWal) as VatWal,
                    if(n.BruttoWal=0 and n.Brutto<>0, _Rnd2(sum(p.wartnetwal) + _Rnd2(sum(p.wartnetwal)*(v.value))), n.BruttoWal) as BruttoWal,
                    ifnull(l.tostr, v.name) as name, ifnull(l2.tostr, v.shortname) as idnVatStr, v.value as stawka
                FROM opng_vat n
                INNER JOIN v_erp_vat v ON v.id = n.idvat
                INNER JOIN oppo p ON (p.idnoper = n.idnoper OR p.idnoperfin = n.idnoper) AND n.idvat = p.idnvat
                left join lang_translations l ON v.name = l.fromstr AND l.to_lang = @lang_id
                left join lang_translations l2 ON v.shortname = l2.fromstr AND l2.to_lang = @lang_id
                WHERE n.idnoper = _GUID
                GROUP BY n.IdVat;
            end if;

        END IF;
    END IF;

    -- dla korekt trzeba zupelnie inaczej, z drugiej strony nie ma czesciowych pozycji i braku kwot walutowych
    IF _korekta = 1 THEN
        IF @lang_id = 'pl' THEN

            SELECT n.IdVat, n.Netto, n.Vat, n.Brutto, n.NettoWal, n.VatWal, n.BruttoWal,
                v.name as name, v.shortname as idnVatStr, v.value as stawka
            FROM opng_vat n
            INNER JOIN v_erp_vat v ON v.id = n.idvat
            WHERE n.idnoper = _GUID
            GROUP BY n.IdVat;

        ELSE

            SELECT n.IdVat, n.Netto, n.Vat, n.Brutto, n.NettoWal, n.VatWal, n.BruttoWal,
                ifnull(l.tostr, v.name) as name, ifnull(l2.tostr, v.shortname) as idnVatStr, v.value as stawka
            FROM opng_vat n
            INNER JOIN v_erp_vat v ON v.id = n.idvat
            left join lang_translations l ON v.name = l.fromstr AND l.to_lang = @lang_id
            left join lang_translations l2 ON v.shortname = l2.fromstr AND l2.to_lang = @lang_id
            WHERE n.idnoper = _GUID
            GROUP BY n.IdVat;

        END IF;
    END IF;
/*
-- dla korekt bez wpisow w opng_vat - generowanie zerowej linijki dla stawek w pozycjach
	if (select count(*) from opng_vat where idnoper= _GUID)=0 AND _rodzaj IN (3,4,85,90) then
		SELECT
			'',
			SUM(IFNULL(v.netto,0)),
			SUM(IFNULL(v.vat,0)),
			SUM(IFNULL(v.brutto,0)),
			SUM(IFNULL(v.nettowal,0)),
			SUM(IFNULL(v.vatwal,0)),
			SUM(IFNULL(v.bruttowal,0)),
			'','',''
		FROM opng n
		LEFT JOIN opng_vat v ON n.guid=v.idnoper
		WHERE n.guid = _GUID
		GROUP BY n.guid;

	end if;
*/

END IF;


-- to ma być dekretka
IF _MODE = 'OP_NG_DEKRETKA' THEN

select 'dekretka' as dekretka;

END IF;



-- specyfikacja 1
IF _MODE = 'OP_NG_SPEC1' THEN

/*
	IF @session.globals.Owner IN ('HYDROMEGA') AND _scenario ='STZTMGZM_FV_ZAL_KONCOWA' THEN
		SET @GUID_zamowienia = (select distinct idnng from zmpo zo inner join oppo o ON o.GUIDzm=zo.GUID
														where o.idnoper = _GUID or o.idnoperfin = _GUID limit 1);
		drop table if exists t_spec1;
		CREATE TEMPORARY TABLE t_spec1
		SELECT n.IdVat, n.Netto, n.Vat, n.Brutto,
			if(n.NettoWal=0,_Rnd2(n.Netto/ng.kurs),n.NettoWal) as NettoWal,
			if(n.NettoWal=0,_Rnd2(n.Vat/ng.kurs),n.VatWal) as VatWal,
			if(n.NettoWal=0,_Rnd2(n.Netto/ng.kurs)+_Rnd2(n.Vat/ng.kurs),n.BruttoWal) as BruttoWal,
			v.name as name, v.shortname as idnVatStr, v.value as stawka
		FROM opng_vat n
		INNER JOIN v_erp_vat v ON v.id = n.idvat
		INNER JOIN opng ng ON ng.guid = n.idnoper
		WHERE n.idnoper = _GUID;

		insert into t_spec1
		SELECT n.IdVat, sum(-n.Netto) as Netto, sum(-n.Vat) as Vat, sum(-n.Brutto) as Brutto,
			sum(if(n.NettoWal=0,_Rnd2(-n.Netto/ng.kurs),-n.NettoWal)) as NettoWal,
			sum(if(n.NettoWal=0,_Rnd2(-n.Vat/ng.kurs),-n.VatWal)) as VatWal,
			sum(if(n.NettoWal=0,_Rnd2(-n.Netto/ng.kurs)+_Rnd2(-n.Vat/ng.kurs),-n.BruttoWal)) as BruttoWal,
			v.name as name, v.shortname as idnVatStr, v.value as stawka
		FROM opng_vat n
		INNER JOIN v_erp_vat v ON v.id = n.idvat
		INNER JOIN opng ng ON ng.guid = n.idnoper
		inner join oppo o ON (ng.guid=o.idnoperfin or ng.guid=o.idnoper)
		inner join zmpo zo ON o.guidzm=zo.guid
		where zo.idnng = @GUID_zamowienia
		and o.towrsymb in ('Zaliczka','ZALICZKA') and ng.guid <> _GUID
		and ng.datawystaw <= (select datawystaw from opng where guid = _GUID)
		and ng.idn < (select idn from opng where guid = _GUID)
		group by n.IdVat;

		select Idvat,
			sum(netto) as netto, sum(vat) as vat, sum(brutto) as brutto,
			sum(nettowal) as nettowal, sum(vatwal) as vatwal, sum(bruttowal) as bruttowal,
			name, idnvatstr, stawka
		from t_spec1
		group by idvat
		order by idnVatStr;

		ELSE
			select 'spec1' as spec1;
		END IF;
*/

	SELECT rodzaj, platnikGUID, datawystaw INTO _rodzaj, _PlatnikGUID, _datawystaw FROM opng where GUID = _GUID;

	IF @session.globals.Owner IN ('POLASZEK') AND _rodzaj = 80 THEN -- AND _scenario ='STZTMGZM_FV_ZAL_KONCOWA' THEN
		select n1.guid, left(group_concat(distinct n.info1),255) as zm_info1, left(group_concat(distinct n.info2),255) as zm_info2
		from opng n1
		inner join oppo o on o.idnoper = n1.guid or o.idnoperfin = n1.guid
		left join zmpo z on z.guid=o.guidzm left join zmng n on n.guid=z.idnng
		where n1.guid = _GUID
		group by n.guid;
	ELSEIF @session.globals.Owner IN ('ATM') AND _rodzaj = 11 THEN

		drop table if exists t_zlec_guid;
		CREATE TEMPORARY TABLE t_zlec_guid
		SELECT DISTINCT z.idnng AS guid
			FROM opng n1
			INNER JOIN oppo o ON o.idnoper = n1.guid OR o.idnoperfin = n1.guid
			LEFT JOIN zmpo z ON z.guid=o.guidzm LEFT JOIN zmng n ON n.guid=z.idnng
			WHERE n1.guid = _GUID;
		ALTER TABLE t_zlec_guid ADD INDEX guid(guid);

		SELECT ifnull(concat(p. towrsymb,', ',p.towrnazwa,', ilosc: ', p.ilosc,' ', j.nazwa),'') as spec1
		FROM zmpo p, t_zlec_guid t, Jednostki j
		WHERE p.idnng=t.guid and j.idn=p.jednostka AND magtyp<>2;

	ELSEIF @session.globals.Owner IN ('KONKOL') THEN
		SELECT t.nazwa,o.ilosc
			FROM oppo o,TowrNg t
			WHERE o.ilosc>0 AND o.idntowr=t.guid AND t.wyroznik='O' AND o.wartnet=0
			AND (o.idnoper = _GUID OR o.idnoperfin = _GUID);

    ELSEIF @session.globals.Owner IN ('SECURITY') AND _rodzaj IN (1,2) AND _scenario ='STZTMGZM_FV_DEFAULT2' THEN

		SELECT KC1.param2 INTO _param
		FROM kontrah k
		LEFT JOIN v_kkn1 KC1 on KC1.klucz = k.katcol1 AND KC1.colnr = 2 AND KC1.rok IN (0,YEAR(_datawystaw))
		WHERE k.GUID = _platnikGUID;


        -- TODO - to co nizej, to prowizorka, zrobic kiedys odwolanie do wartosci w cyklu zamowienia?
        SELECT DATE_ADD(_datawystaw, interval -1 month) INTO _datawezwania;

        SELECT _Rnd2(sum(brutto)) AS brutto INTO @koszty_wezwania FROM opng WHERE deleted=0 AND platnikGUID = _PlatnikGUID AND rodzaj = 43
        AND datawystaw between _datawezwania and _datawystaw
        AND opis NOT LIKE '%kompensata%';

        -- ewentualne, nierozliczone nadplaty
        SELECT _Rnd2(sum(CKwotaWal + CRozliczoneWal)) INTO @nadplata FROM opng
        WHERE deleted=0 AND platnikGUID = _PlatnikGUID AND rodzaj = 36 AND rozrachunek = 1
        AND datawystaw between _datawezwania and _datawystaw AND ABS((CKwotaWal + CRozliczoneWal)) > 0.009;

		-- odsetki
        IF IFNULL(_param,'') = 'O' THEN
			SELECT _Rnd2(sum(odsetki)) INTO @odsetki_op FROM opng
			WHERE deleted=0 AND platnikGUID = _PlatnikGUID AND rodzaj IN (1,2) AND rozrachunek = 1
			AND datawystaw between _datawezwania and _datawystaw AND odsetki > 0.009;
		ELSE
			SET @odsetki_op = 0;
		END IF;

        select 'spec' as spec1_security,
        _Rnd2(IFNULL(@saldo_poprzednie,0)) as saldo_poprzednie,
        _Rnd2(IFNULL(@naleznosc_biezaca,0) - IFNULL(@nadplata,0)) as naleznosc_biezaca,
        _Rnd2(IFNULL(@koszty_wezwania,0)) as koszty_wezwania,
        _Rnd2(IFNULL(@odsetki_op,0)) as odsetki, -- op w nazwie jest dlatego, ze jest konflikt z inna zmienna
        _Rnd2(IFNULL(@saldo_poprzednie,0) + IFNULL(@naleznosc_biezaca,0) - IFNULL(@nadplata,0) + IFNULL(@koszty_wezwania,0) + IFNULL(@odsetki_op,0)) as do_zaplaty
        ;

	ELSE
		select 'spec1' as spec1;
	END IF;




END IF;

-- specyfikacja 2
-- dla security jest to lista biezacych odsetek  w drugim zestawie zaleglosci w szablonie R_OP_FV_sec2.fr3
IF _MODE = 'OP_NG_SPEC2' THEN

	SELECT rodzaj, platnikGUID, datawystaw INTO _rodzaj, _PlatnikGUID, _datawystaw FROM opng where GUID = _GUID;

	IF @session.globals.Owner IN ('SECURITY') AND _rodzaj IN (1,2) AND _scenario ='STZTMGZM_FV_DEFAULT2' THEN

		SELECT DATE_ADD(_datawystaw, interval -1 month) INTO _datawezwania;

		SELECT
		IF(O.rodzaj IN (36,37), O.nrraportu, O.nrdokfin) AS nrdokfin,
		O.datawystaw, O.dataplatnosci, O.datarozliczenia,
		IF(O.CWN, O.CKwota, 0) AS WN,
		ROUND(IF(O.nierozliczony, TO_DAYS(CURRENT_DATE)-TO_DAYS(O.dataplatnosci), TO_DAYS(O.datarozliczenia)-TO_DAYS(O.dataplatnosci)), 0) * _varDOUBLE(1.0) AS Dni,
		-- "" AS Dni2,
		O.odsetki
		FROM opng O
		INNER JOIN kontrah KK ON O.platnikGUID=KK.GUID
        WHERE O.deleted=0 AND O.platnikGUID = _PlatnikGUID AND O.rodzaj IN (1,2) AND O.rozrachunek = 1
        AND datawystaw between _datawezwania and _datawystaw AND odsetki > 0.009
        AND KK.Druk_zaleglosci_na_FV = 1
        ORDER BY O.datawystaw;

	ELSE
		select 'spec2' as spec2;
	END IF;

END IF;


-- specyfikacja 3
IF _MODE = 'OP_NG_SPEC3' THEN

select 'spec3' as spec3;

END IF;



/************************************************************
 sekcje odwolujace sie do zamowien, z naciskiem na proformy

wlaczyc klucz CALL_ZM_PR!!!
*************************************************************/

IF _MODE = 'ZM_NG_DEFAULT' THEN

CALL fr_ht_ZM2('ZM_NG_DEFAULT', _GUID, _scenario, '',0,'','','','');

END IF;


IF _MODE = 'ZM_PO_DEFAULT' THEN

CALL fr_ht_ZM2('ZM_PO_DEFAULT', _GUID, _scenario, '',0,'','','','');

END IF;


IF _MODE = 'ZM_NG_VAT' THEN

CALL fr_ht_ZM2('ZM_NG_VAT', _GUID, _scenario, '',0,'','','','');

END IF;

IF _MODE = 'ZM_NG_DEKRETKA' THEN

CALL fr_ht_ZM2('ZM_NG_DEKRETKA', _GUID, _scenario, '',0,'','','','');

END IF;

/* - zakomentowane, bo bez sensu jest powielanie sekcji zaleglosci w fr_ht_ZM2.sql
IF _MODE = 'ZM_NG_ZALEGLOSCI' THEN
CALL fr_ht_ZM2('ZM_NG_ZALEGLOSCI', _GUID, _scenario, '',0,'','','','');
END IF;
*/

IF _MODE = 'ZM_NG_SPEC1' THEN

CALL fr_ht_ZM2('ZM_NG_SPEC1', _GUID, _scenario, '',0,'','','','');

END IF;


IF _MODE = 'ZM_NG_SPEC2' THEN

CALL fr_ht_ZM2('ZM_NG_SPEC2', _GUID, _scenario, '',0,'','','','');

END IF;


IF _MODE = 'ZM_NG_SPEC3' THEN

CALL fr_ht_ZM2('ZM_NG_SPEC3', _GUID, _scenario, '',0,'','','','');

END IF;



/************************************************************
sekcje odwolujace sie do ofert
_Param_D podaje wersje oferty, ustawiona podczas wywolywania wydruku w CRM
*************************************************************/

IF _MODE = 'OF_NG_CRM' THEN

    select 'fr_ht_OP_OF_NG_CRM' AS fr_ht_OP_OF_NG_CRM,
    c.*
    from crm_commisions c where GUID = _GUID;

END IF;


IF _MODE = 'OF_NG_DEFAULT' THEN

CALL fr_ht_ZM2('ZM_NG_DEFAULT', _GUID, _scenario, '',0,'','','',_Param_D);

END IF;


IF _MODE = 'OF_PO_DEFAULT' THEN
-- CALL fr_ht_ZM2('ZM_PO_DEFAULT', _GUID, _scenario, '',0,'','','','');
-- dataset w ofertach FRCRMPoCall - czyli pozycje oferty z procedury
CALL fr_ht_OF('OfertaZM.CRM', _GUID, _scenario,'','',_Param_D);

END IF;


IF _MODE = 'OF_NG_VAT' THEN

CALL fr_ht_ZM2('ZM_NG_VAT', _GUID, _scenario, '',0,'','','',_Param_D);

END IF;


IF _MODE = 'OF_NG_SPEC1' THEN

-- CALL fr_ht_ZM2('ZM_NG_SPEC1', _GUID, _scenario, '',0,'','','','');
-- 2016-01-27 -> crm: 42187, zmienilem paramc na 2
-- dataset w ofertach frxDBCallCRM
CALL erp_descr_tools('DESCR_SELECT_DESCR', _GUID, 0, 0, '1', '', '2', '');

END IF;


IF _MODE = 'OF_NG_SPEC2' THEN

	select 'spec2' as spec2;
	-- CALL fr_ht_ZM2('ZM_NG_SPEC2', _GUID, _scenario, '',0,'','','','');

END IF;


IF _MODE = 'OF_NG_SPEC3' THEN

	select 'spec3' as spec3;
-- CALL fr_ht_ZM2('ZM_NG_SPEC3', _GUID, _scenario, '',0,'','','','');

END IF;



/*
sekcja dla wydrukow seryjnych z zamowien
fr_ht_OP('ZM_NG_SERYJNE', _GUID, _scenario, '',0,'','','','');
*/


IF _MODE = 'ZM_NG_SERYJNE' THEN

CALL fr_ht_ZM('4', 'ZM_SERYJNY1', '', _scenario, '', '', '');

END IF;



/************************************************************
 sekcje odwolujace sie do ZP i procedury ZP
 moze kiedys to sie tutaj zrobi
*************************************************************/
/*
IF _MODE IN ('ZP_NG_DEFAULT', 'ZP_ALL_NG_DEFAULT')  THEN

CALL fr_ht_ZP('ZP_ALL_NG_DEFAULT', _GUID, _scenario, '',0,'','','','');

END IF;


IF _MODE IN ('ZP_PO_DEFAULT','ZP_ALL_PO_DEFAULT') THEN

CALL fr_ht_ZP('ZP_ALL_PO_DEFAULT', _GUID, _scenario, '',0,'','','','');

END IF;
*/








END$$

DELIMITER ;


/* REWIZJE
$Log: fr_ht_OP.sql,v $
Revision 1.237  2024/04/22 12:05:40  waliant
Poprawki dla inwentaryzacji $SEND$

Revision 1.236  2024/04/18 08:59:10  waliant
Poprawki dla inwentaryzacji $SEND$

Revision 1.235  2024/04/18 07:55:03  waliant
Kolumny inwent. w pozycjach $SEND$

Revision 1.234  2024/04/12 09:45:48  waliant
Dodanie w pozycjach pol inwentaryzacji $SEND$

Revision 1.233  2024/04/02 09:21:08  waliant
Dodanie opisow magazynow do danych naglowka $SEND$

Revision 1.232  2024/03/22 10:17:23  waliant
Zmiana dla kolumny wystawil $SEND$

Revision 1.231  2024/03/18 07:47:38  waliant
Kolumna wystawil w naglowku $SEND$

Revision 1.230  2023/12/07 10:17:56  waliant
Kategoria kolumnowa w pozycjach, z kartoteki towarowej, dla ATM $SEND$

Revision 1.229  2023/10/24 10:15:46  waliant
Poprawki zaleglosci i spec2 dla security $SEND$

Revision 1.228  2023/10/10 12:06:09  waliant
Dodanie z zamowien pol cena_dod_1/2 $SEND$

Revision 1.227  2023/09/28 08:44:47  waliant
Poprawka w zaleglosciach (dni przeterminowania) dla Jarz $SEND$

Revision 1.226  2023/07/24 06:48:33  waliant
Poprawka dla wywolan internalnych $SEND$

Revision 1.225  2023/07/20 09:15:05  waliant
Dodanie pola info4_zm dla Comexu $SEND$

Revision 1.224  2023/07/19 08:16:56  waliant
Dodanie pol grp_... dla zgodnosci z grupowaniem internalnym $SEND$

Revision 1.223  2023/07/05 08:43:48  waliant
Pole info5_zm dla Comexu $SEND$

Revision 1.222  2023/06/12 07:31:21  waliant
Jeszcze poprawki dla Security $SEND$

Revision 1.221  2023/06/06 12:40:58  waliant
Poprawka w zaleglosciach dla Security $SEND$

Revision 1.220  2023/06/06 08:24:49  waliant
Poprawka bledu w spec1 dla security $SEND$

Revision 1.219  2023/06/05 12:42:28  waliant
Poprawki w odsetkach dla security $SEND$

Revision 1.218  2023/05/09 09:57:55  waliant
Dodanie komentarza do spec2

Revision 1.217  2023/03/15 10:42:35  waliant
Zaplaty dla ATM-u $SEND$

Revision 1.216  2023/02/17 10:15:13  waliant
SPEC2 - odsetki dla Security $SEND$

Revision 1.215  2023/02/13 08:02:38  waliant
Wyliczanie odsetek dla security w spec1 $SEND$

Revision 1.214  2023/02/08 13:24:40  waliant
Zmiana w pobieraniu rachunkow bankowych kontrahentow $SEND$

Revision 1.213  2023/01/20 14:06:10  waliant
Poprawka w spec1 dla security $SEND$

Revision 1.212  2023/01/20 09:10:41  waliant
Poprawka wyliczania wartbrtwal dla pozycji grupowanych $SEND$

Revision 1.211  2023/01/12 15:35:07  rafalg
zmiany w nazwewnictwie wegla wymuszone ustawa

Revision 1.210  2022/12/01 11:34:51  rafalg
cena NETTO PRZED RABATEM DLA ZGRUPOWANYCH

Revision 1.209  2022/11/29 07:47:45  rafalg
Zmiany dla TRANSBUD

Revision 1.208  2022/11/14 14:05:17  waliant
Poprawki w duplikacie dla Vole $SEND$

Revision 1.207  2022/09/26 07:30:50  waliant
Zmiana nazwy zmiennej @odsetki (dla Security) $SEND$

Revision 1.206  2022/09/21 11:35:44  waliant
Poprawka w zaleglosciach dla security $SEND$

Revision 1.205  2022/09/06 09:56:04  waliant
Poprawki dla security w spec1 (naleznosci biezace) $SEND$

Revision 1.204  2022/08/19 09:20:09  waliant
Nazwa faktur zaliczkowych ST UE dla Pliszki $SEND$

Revision 1.203  2022/08/10 07:44:07  waliant
Aktualizacja $SEND$

Revision 1.202  2022/08/08 12:34:31  waliant
Poprawki formatowania w SPEC1 $SEND$

Revision 1.201  2022/08/04 11:38:32  waliant
Poprawka w SPEC1 - wybor wezwan $SEND$

Revision 1.200  2022/08/04 09:24:04  waliant
SPEC1 dla Security $SEND$

Revision 1.199  2022/06/08 12:10:05  waliant
Pole UserName po nowemu $SEND$

Revision 1.198  2022/06/08 10:16:53  waliant
Poprawka dla formy platnosci przelew 1 dzien $SEND$

Revision 1.197  2022/05/30 11:21:31  waliant
Wersjonowanie oferty $SEND$

Revision 1.196  2022/05/23 09:37:24  waliant
Tworzenie tabelki dla korekt $SEND$

Revision 1.195  2022/01/13 13:18:18  apro
symbole, nazwy, edi z ofert

Revision 1.194  2022/01/13 12:31:44  slon
zmiana dla EDI

Revision 1.193  2022/01/13 12:14:37  slon
zmiana dla EDI

*/
