 DELIMITER $$

DROP PROCEDURE IF EXISTS `ht_ceny_tool`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `ht_ceny_tool`(
	IN _MODE VARCHAR(250),
	IN _Param_A VARCHAR(250),	
	IN _Param_B VARCHAR(250),	
	IN _Param_C VARCHAR(250),	
	IN _Param_D VARCHAR(250),	
	IN _Param_E VARCHAR(250),	
	IN _Param_F VARCHAR(250),	
	IN _Param_G VARCHAR(250)	
)
SPROC: BEGIN
	/*
	_MODE

	------------------------------------------------------------------------------------------------------------------------------------------------------------
	'CALC_CENA_RABAT_INIT'
		Inicjowanie naliczania ceny i rabatu
		Parametry
			_Param_A	GUID kontrahenta
			_Param_B	GUID Towaru
			_Param_C	Rodzaj
			_Param_D	Czy sprzedaz (BOOLEAN)
		CALL ht_ceny_tool('CALC_CENA_RABAT_INIT', KontrGUID, IdnTowr, Rodzaj, TRUE, '', '', '');		
		
	------------------------------------------------------------------------------------------------------------------------------------------------------------
	'CALC_CENA_RABAT_INIT_2'	'CALC_CENA_RABAT_SET'
		Inicjowanie naliczania ceny i rabatu
		Parametry
			_Param_A	AkwizytorGUID
			_Param_B	cdsEOpNg.FieldByName('kontrklasacenowa').AsInteger
			_Param_C	INgPoCOM.KontrahKlasaRabatowa
			_Param_D	cdsEOpNg.FieldByName('kontrrabat').AsCurrency
			_Param_E	aCDSNg.FieldByName('Waluta').asInteger
			_Param_F	aCDSNg.FieldByName('Idn_tab_kurs').asInteger
		CALL ht_ceny_tool('CALC_CENA_RABAT_INIT_2', AkwizytorGUID, kontrklasacenowa, KontrahKlasaRabatowa, kontrrabat, Waluta, Idn_tab_kurs, '');		
		lub
		CALL ht_ceny_tool('CALC_CENA_RABAT_SET', AkwizytorGUID, kontrklasacenowa, KontrahKlasaRabatowa, kontrrabat, Waluta, Idn_tab_kurs, '');		
		
	------------------------------------------------------------------------------------------------------------------------------------------------------------
	'CALC_CENA_RABAT_OFERTY'
		Przegladarka zamowien na dzien
		Parametry brak
		CALL ht_ceny_tool('CALC_CENA_RABAT_OFERTY', '', '', '', '', '', '', '');		
		
	------------------------------------------------------------------------------------------------------------------------------------------------------------
	'GET_LAST_KURS_FOR_WALUTA'
		
		Parametry
			_Param_A	Waluta
			_Param_B	Idn_tab_kurs
		CALL ht_ceny_tool('GET_LAST_KURS_FOR_WALUTA', Waluta, Idn_tab_kurs, '', '', '', '', '');		
		
	------------------------------------------------------------------------------------------------------------------------------------------------------------
	*/
	
	DECLARE _TerminRealizacji DATETIME;
	DECLARE _TerminRealizacji_Start DATETIME;
	DECLARE _TerminRealizacji_End DATETIME;
	DECLARE _ParentKonto VARCHAR(250);
	DECLARE _NextPart VARCHAR(250);
	DECLARE _NextPos INTEGER;
	DECLARE _Poziom INTEGER;
	DECLARE _KontoSymbol VARCHAR(250);
	DECLARE _KontoSymbolFmt VARCHAR(250);
	DECLARE _ObcyGUID VARCHAR(38);
	DECLARE _Separator VARCHAR(5);
	
	DECLARE _CS_UNKNOWN INTEGER DEFAULT -1;
	DECLARE _CS_EXIST INTEGER DEFAULT 0;
	DECLARE _CS_CREATE INTEGER DEFAULT 1;
	DECLARE _CS_INVALID INTEGER DEFAULT 2;
	
	DECLARE _ErrNo INTEGER DEFAULT 0;
	DECLARE _MyErrNo INTEGER DEFAULT 0;

	DECLARE _DataSprzed DATE;
	
	-- dla pola RabatType 
	DECLARE CRT_DEFAULT INTEGER DEFAULT 0;
	DECLARE CRT_AKWIZYTOR INTEGER DEFAULT 1;
	DECLARE CRT_TABRABAT INTEGER DEFAULT 2;
	DECLARE CRT_MATRAB INTEGER DEFAULT 4;
	DECLARE CRT_OFERTA INTEGER DEFAULT 8;

	DECLARE _CMD TEXT;
	
	-- SET _ErrNo = 0;
	
	IF _MODE = 'TEST' THEN
		SELECT
			_VarStr(CONCAT(
					'"', db1.Value, '"', '\n',
					'Czy przepisac nastepujaca sliczna pozycje:', '\n',
					'Cena: ', db2.Value, ' ?')) AS Info
		FROM _db_globals db1, _db_globals db2			
		WHERE 
			db1.Key = 'CONNECT_LIMIT_MSG_ERR' AND
			db2.Key = 'CONNECT_LIMIT_MSG_EXTRA'
		;	
	END IF;	--	IF _MODE = 'TEST'
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'CALC_CENA_RABAT_INIT'
		Inicjowanie tabel
		Parametry brak
		CALL ht_ceny_tool('CALC_CENA_RABAT_INIT', '', '', '', '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'CALC_CENA_RABAT_INIT' THEN
		SET @Exist_t_cenyrabat_info = IFNULL(@Exist_t_cenyrabat_info, FALSE);
		
		IF NOT @Exist_t_cenyrabat_info THEN
			DROP TEMPORARY TABLE IF EXISTS `t_cenyrabat_info`;
			CREATE TEMPORARY TABLE `t_cenyrabat_info`(
				KontrGUID VARCHAR(38) NOT NULL DEFAULT '',
				PlatnikGUID VARCHAR(38) NOT NULL DEFAULT '',
				IdnTowr VARCHAR(38) NOT NULL DEFAULT '',
				AkwizytorGUID VARCHAR(38) NOT NULL DEFAULT '',
				Rodzaj int(11),
				CzyCenaSprzedazy int(11),
				DataSprzed DATE,
				CzyRabatyHierarchiczne int(11),
				
				Kontrah_TreeNode VARCHAR(250) NOT NULL DEFAULT '',
				Kontrah_KlasaCenowa int(11) NOT NULL DEFAULT 0,
				Kontrah_KlasaRabatowa int(11) NOT NULL DEFAULT 0,
				Kontrah_Rabat DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
				
				Towar_TreeNode VARCHAR(250) NOT NULL DEFAULT '',
				Towar_KalasaRabatowa int(11) NOT NULL DEFAULT 0,
				Towar_CenaEwid DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
				Towar_Cenazkpnet DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
				Towar_nie_realizuje_zamow int(11) NOT NULL DEFAULT 0,
				--  dla Pliszki??? sprawdzic!!!	Towar_nie_realizuje_zamow int(11),
				
				Default_KlasaCenowa int(11) NOT NULL DEFAULT 0,
				Default_Cena DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
				Default_Waluta int(11) NOT NULL DEFAULT 0,
				
				Waluta int(11) NOT NULL DEFAULT 0,
				Idn_tab_kurs int(11) NOT NULL DEFAULT 0,
				Last_Kurs_For_Waluta DOUBLE(16,4) NOT NULL DEFAULT '1.0000',
				PRIMARY KEY (`IdnTowr`)
			);
			DROP TEMPORARY TABLE IF EXISTS `t_cenyrabat_result`;
			CREATE TEMPORARY TABLE `t_cenyrabat_result`(
				RabatType int(11) NOT NULL DEFAULT 0,
				KlasaCenowa int(11) NOT NULL DEFAULT 0,
				Waluta int(11) NOT NULL DEFAULT 0,
				czy_ceny_brt int(11) NOT NULL DEFAULT 0,
				CenaWal DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
				Cena DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
				Rabat DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
				-- CenaAddWal DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
				-- CenaAdd DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
				CenaObl DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
				AskExist int(11) NOT NULL DEFAULT 0,
				WarunekMsg VARCHAR(250) DEFAULT '',
				AskMsg TEXT,
				priorytet int(11) NOT NULL DEFAULT 0,
				internal_ord int(11) NOT NULL DEFAULT 0,
				Towar_nie_realizuje_zamow int(11) NOT NULL DEFAULT 0
			);
			SET @Exist_t_cenyrabat_info = TRUE;
			CALL _Session_Refresh_Variables('HT', 'opng', '');
		ELSE
			DELETE FROM `t_cenyrabat_info`;
			DELETE FROM `t_cenyrabat_result`;
		END IF;	--	@Exist_t_cenyrabat_info
		
		-- CALL _Session_Refresh_Variables('HT', '', '');
		/* 
		zast�puje _Session_Refresh_Variables 
		dawnie
		itd

		CALL _IReg_Get('OPNGINFOPATH', 'CenyPrecisionWalutowe', 0, 'INTEGER', @session.HT.IR.CenyPrecisionWalutowe, 2);
		CALL _IReg_Get('OPNGINFOPATH', 'CenyPrecisionPLN', 0, 'INTEGER', @session.HT.IR.CenyPrecisionPLN, 2);
		*/
		
		
	END IF;	--	IF _MODE = 'CALC_CENA_RABAT_INIT'
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'CALC_CENA_RABAT_SET_NG'
		Inicjowanie naliczania ceny i rabatu
		Parametry
			_Param_A	GUID kontrahenta
			_Param_B	Rodzaj
			_Param_C	Czy sprzedaz (CzyCenaSprzedazy BOOLEAN/INTEGER 0 lub 1)
			_Param_D	CzyRabatyHierarchiczne
			_Param_E	DataSprzed
		
			_Param_A	GUID kontrahenta
			_Param_B	GUID Towaru
			_Param_C	Rodzaj
			_Param_D	Czy sprzedaz (CzyCenaSprzedazy BOOLEAN/INTEGER 0 lub 1)
			_Param_E	CzyRabatyHierarchiczne
		CALL ht_ceny_tool('CALC_CENA_RABAT_SET_NG', KontrGUID, Rodzaj, TRUE, TRUE, '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'CALC_CENA_RABAT_SET_NG' THEN
/*		
		
init podziel na
	czy sprzedaz,  rodzaj i 
	init kontrahenta z dokumentu
		aKontrahGuid, aAkwizytor
		(aKlasaCenowa), aKlasaRabatowaK: Integer; aRabat: Currency);
	i towar  
		....
		
	naglowek
		aKontrahGuid	rodzaj	czy sprzedaz,  aKlasaRabatowaK: Integer; aRabat: Currency
		
	pozycje	
		towar	aKlasaCenowa	i dodatkowo aAkwizytor, waluta
czy sprzedaz = 
	dla operacji
		CrdzOper[cdsEOpNG.FieldByName('Rodzaj').AsInteger].TwTyp <> TwPz
		LUB
		  aCenySprzedazy := (CrdzOper[cdsEOpNG.FieldByName('Rodzaj').AsInteger].TwTyp <> TwPz) or
			(cdsEOpNG.FieldByName('Rodzaj').AsInteger = CMGZW);
		  if cdsEOpNG.FieldByName('Rodzaj').AsInteger in [CRzRW, CRzKR, {CPZPW,} CPzKW] then
			aCenySprzedazy := cdsEOpNg.FieldByName('kontrklasacenowa').AsInteger<>0;
		
	dla zamowien
		cdsEZmNgRodzaj.AsInteger in [CZmOO, CZmEx, CZmZP]
		
*/	
		CALL ht_ceny_tool('CALC_CENA_RABAT_INIT', '', '', '', '', '', '', '');		
		SET	@CzyCenaSprzedazy = _VarInt_NotNull(_Param_C);
		SET @Rodzaj = _VarInt_NotNull(_Param_B);
		SET _DataSprzed = DATE(_Param_E);
		SET _DataSprzed = IFNULL(_DataSprzed, current_date);
		IF _DataSprzed < '1900-01-01' THEN
			SET _DataSprzed = current_date;
		END IF;
		/*
		select max(datasprzed) as datasprzed, (katcol0 = 2) As IsKlatkowiec, kontrsymbol from opng where kontrguid = @kontrguid and rodzaj in (0,1,2) and datasprzed < current_date;
		klatkowiec to 
		katcol0 = 2 w kontrah
		*/
		INSERT INTO `t_cenyrabat_info`
-- 			(KontrGUID, Rodzaj, CzyCenaSprzedazy, CzyRabatyHierarchiczne, DataSprzed)
		(KontrGUID, PlatnikGuid, Rodzaj, CzyCenaSprzedazy, CzyRabatyHierarchiczne, DataSprzed)
			SELECT
				_Param_A AS KontrGUID,
				ifnull((select k.platnikguid from kontrah k where k.guid=_Param_A),'') as platnikGUID,
				
				_VarInt_NotNull(_Param_B) AS Rodzaj,
				_VarInt_NotNull(_Param_C) AS CzyCenaSprzedazy,
				_VarInt_NotNull(_Param_D) AS CzyRabatyHierarchiczne,
				_DataSprzed AS DataSprzed
		;	
		
		SET @_ZakupPrzypisywacCenyEwidDo = 
			NOT @CzyCenaSprzedazy AND (
				(@session.HT.IR.PrzypisywacCenyEwidDoPW AND @Rodzaj IN (13, 15)) OR	--	PW i -PW
				(@session.HT.IR.PrzypisywacCenyEwidDoRW AND @Rodzaj IN (11, 14)) OR	--	RW i -RW
				(@session.HT.IR.PrzypisywacCenyEwidDoZP AND @Rodzaj IN (73, 106, 107)) OR	--	ZMZP ZM-ZP itd..
				(@session.HT.IR.PrzypisywacCenyEwidDoINWENT AND @Rodzaj IN (39, 67, 68)) 	--	Inwentaryzacja i inw. nadw, niedob.
			)
		;	
		UPDATE `t_cenyrabat_info` tci, `kontrah` k
		SET
			tci.Kontrah_KlasaRabatowa = k.KlasaRabatowa
		WHERE
			k.GUID = tci.KontrGUID
		;	
	END IF;	--	IF _MODE = 'CALC_CENA_RABAT_SET_NG'
	
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'CALC_CENA_RABAT_SET_PO'	
		towar	aKlasaCenowa	i dodatkowo aAkwizytor, waluta aKlasaRabatowaK: Integer; aRabat: Currency
		Inicjowanie naliczania ceny i rabatu
		Parametry
			_Param_A	GUID Towaru
			_Param_B	cdsEOpNg.FieldByName('kontrklasacenowa').AsInteger
			_Param_C	INgPoCOM.KontrahKlasaRabatowa
			_Param_D	cdsEOpNg.FieldByName('kontrrabat').AsCurrency
			_Param_E	aCDSNg.FieldByName('Waluta').asInteger
			_Param_F	AkwizytorGUID
		CALL ht_ceny_tool('CALC_CENA_RABAT_SET_PO', IdnTowr, kontrklasacenowa, KontrahKlasaRabatowa, kontrrabat, Waluta, AkwizytorGUID, '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'CALC_CENA_RABAT_SET_PO' THEN
	
		UPDATE `t_cenyrabat_info` tci
		SET
			tci.IdnTowr = _VarStr_NotNull(_Param_A),
			tci.Kontrah_KlasaCenowa = _VarInt_NotNull(_Param_B),
		-- 	tci.Kontrah_KlasaRabatowa = _VarInt_NotNull(_Param_C),
			tci.Kontrah_Rabat = _VarDouble_NotNull(_Param_D),
			tci.Waluta  = _VarInt_NotNull(_Param_E),
			-- tci.Idn_tab_kurs  = _VarInt_NotNull(_Param_F),
			tci.AkwizytorGUID = _VarStr_NotNull(_Param_F)
		;	
		
		UPDATE `t_cenyrabat_info` tci, `TowrNg` t
		SET
			tci.Towar_TreeNode = t.TreeNode,
			tci.Towar_KalasaRabatowa = t.klasarabatowa,
			tci.Towar_CenaEwid = IFNULL(t.cenaewid, 0),
			tci.Towar_Cenazkpnet = t.cenazkpnet,
			tci.Towar_nie_realizuje_zamow = t.nie_realizuje_zamow
		WHERE
			t.GUID = tci.IdnTowr
		;	
		
		SET @Kurs = 1;
		SELECT 
			k.kurs INTO @Kurs
		FROM `t_cenyrabat_info` tci
		LEFT JOIN `kursy` k ON k.idnwaluty = tci.Waluta AND k.idn_tab_kurs = tci.Idn_tab_kurs
		ORDER BY data DESC 
		LIMIT 1
		;
		UPDATE `t_cenyrabat_info` tci
		SET
			tci.Last_Kurs_For_Waluta = IFNULL(@Kurs, 1)
		;	
		
		
	END IF;	--	IF _MODE = 'CALC_CENA_RABAT_SET_PO'

/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'CALC_CENA_RABAT_CALC_ALL'
		Parametry brak
			_Param_G	!= '' to nie zwracam wyniku (selct)
		CALL ht_ceny_tool('CALC_CENA_RABAT_CALC_ALL', '', '', '', '', '', '', '');		
		CALL ht_ceny_tool('CALC_CENA_RABAT_CALC_ALL', '', '', '', '', '', '', '');		-- bez selecta
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'CALC_CENA_RABAT_CALC_ALL' THEN
		SET _Param_A = IFNULL(_Param_A, 0);
		IF @CzyCenaSprzedazy THEN
		-- S P R Z E D A Z
			CALL ht_ceny_tool('CALC_CENA_RABAT_CALC_DEFAULT', '', '', '', '', '', '', '');		
			IF _Param_A = 0 THEN
				CALL ht_ceny_tool('CALC_CENA_RABAT_CALC_OFERTA', '', '', '', '', '', '', '');		
				-- testuj bo gdy jest oferta to rezygnuj
				CALL ht_ceny_tool('CALC_CENA_RABAT_CALC_MATRAB', '', '', '', '', '', '', '');		
				CALL ht_ceny_tool('CALC_CENA_RABAT_CALC_TABRABAT', '', '', '', '', '', '', '');		
			END IF;
			
		ELSE
		-- Z A K U P Y
			CALL ht_ceny_tool('CALC_CENA_RABAT_CALC_DEFAULT', '', '', '', '', '', '', '');		
			IF NOT @_ZakupPrzypisywacCenyEwidDo THEN
				CALL ht_ceny_tool('CALC_CENA_RABAT_CALC_OFERTA', '', '', '', '', '', '', '');		
			END IF;	
		
		END IF;
	--	Jeszcze przelicz	
		CALL ht_ceny_tool('CALC_CENA_RABAT_CALC_UPATE_AFTER', '', '', '', '', '', '', '');		
		
		IF IFNULL(_Param_G, '') = '' THEN
		--	Select zwracany	
			SELECT 
				IF(RabatType = CRT_DEFAULT, 
					'DEFAULT',
					IF(RabatType = CRT_AKWIZYTOR,
						'AKWIZ',
						IF(RabatType = CRT_TABRABAT,
							'TABRABAT',
							IF(RabatType = CRT_MATRAB,
								'MATRAB',
								IF(RabatType = CRT_OFERTA,
									'OFERTA',
									'DEFAULT'
								)
							)
						)
					)
				) AS RabatTypeLevel,
				tcr.*
			FROM `t_cenyrabat_result` tcr	
			ORDER BY tcr.RabatType DESC, internal_ord
			;
		ELSE
		--	Kreuj pomocnicza dla CALL ht_ceny_tool('KONTR_x_TOWR_CALC', ...
			DROP TEMPORARY TABLE IF EXISTS `t_cenyrabat_result_k_x_t`;
			CREATE TEMPORARY TABLE  `t_cenyrabat_result_k_x_t`
				SELECT 
				IF(RabatType = CRT_DEFAULT, 
					'DEFAULT',
					IF(RabatType = CRT_AKWIZYTOR,
						'AKWIZ',
						IF(RabatType = CRT_TABRABAT,
							'TABRABAT',
							IF(RabatType = CRT_MATRAB,
								'MATRAB',
								IF(RabatType = CRT_OFERTA,
									'OFERTA',
									'DEFAULT'
								)
							)
						)
					)
				) AS RabatTypeLevel,
				tcr.*
				FROM `t_cenyrabat_result` tcr	
				ORDER BY tcr.RabatType DESC, internal_ord
				LIMIT 1
			;
		END IF;
	END IF;	--	IF _MODE = 'CALC_CENA_RABAT_CALC_ALL'
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'CALC_CENA_RABAT_CALC_UPATE_AFTER'
		Parametry
			_Param_A	RabatType - gdy '' przeliczam dla wszystkiech
		CALL ht_ceny_tool('CALC_CENA_RABAT_CALC_UPATE_AFTER', '', '', '', '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'CALC_CENA_RABAT_CALC_UPATE_AFTER' THEN
		SET _Param_A = IFNULL(_Param_A, '');
		SELECT tci.Last_Kurs_For_Waluta INTO @Last_Kurs_For_Waluta FROM `t_cenyrabat_info` tci;
		IF @Last_Kurs_For_Waluta != 1 AND @Last_Kurs_For_Waluta > 0 THEN
			SET @I_cenyPrecision = _VarInt(@session.HT.IR.CenyPrecisionWalutowe);
		ELSE
			SET @I_cenyPrecision = _VarInt(@session.HT.IR.CenyPrecisionPLN);
		END IF;
		
		UPDATE `t_cenyrabat_result` tcr, `t_cenyrabat_info` tci, `kursy_calc` ku
		SET
			tcr.Cena = 
				IF(tcr.Waluta <> tci.Waluta,
					Round(tcr.CenaWal*IFNULL(ku.kurs, 0), @I_cenyPrecision), 
					tcr.CenaWal
				)
			/*	,	
			tcr.CenaAdd = 
				IF(tcr.Waluta <> tci.Waluta,
					Round(tcr.CenaAddWal*IFNULL(ku.kurs, 0), @session.HT.IR.CenyPrecisionWalutowe),	
					tcr.CenaAddWal
				)	
			*/	
		WHERE
			IF(_Param_A = '', TRUE, tcr.RabatType = _Param_A)
			-- AND tcr.Waluta <> tci.Waluta
			AND ku.idnwaluty1 = tcr.waluta AND ku.idnwaluty2 = tci.Waluta
		;
		
		UPDATE `t_cenyrabat_result` tcr, `t_cenyrabat_info` tci	
		SET
			tcr.Towar_nie_realizuje_zamow = tci.Towar_nie_realizuje_zamow,
			tcr.Rabat = IF(tci.Towar_nie_realizuje_zamow, 100, tcr.Rabat)		--	warunek PLISZKA dla towar�w z wlacz."nie_realizuje_zamow" dajemy rabat 100%
		;
		UPDATE `t_cenyrabat_result` tcr
		SET
			tcr.CenaObl = 
					Round((1-tcr.Rabat/100)*tcr.Cena, @I_cenyPrecision)
		;	
		-- SET NAMES 'cp1250';
		UPDATE `t_cenyrabat_result` tcr
		SET
			tcr.AskMsg = 
					CONCAT(
						IF(tcr.RabatType = CRT_OFERTA,
							'Warunek zastosowania ceny specjalnej:',
							'Warunek udzielenia rabatu:'),
						'\n', '"', tcr.WarunekMsg, '"', '\n',	
						'Czy przepisac nastepujaca pozycje:', '\n',
						'Cena wej.: ', ROUND(tcr.Cena, @I_cenyPrecision), ' \n',
						IF(tcr.Rabat != 0,
							CONCAT('Rabat: ', ROUND(tcr.Rabat,2), '%\n'),
							''),
						'Cena nal.: ', ROUND(tcr.CenaObl, @I_cenyPrecision), ' ?'
					)
		WHERE 
			tcr.RabatType IN (CRT_OFERTA, CRT_MATRAB)	
			AND tcr.AskExist
		;	
		
	END IF;	--	IF _MODE = 'CALC_CENA_RABAT_CALC_UPATE_AFTER'
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'CALC_CENA_RABAT_CALC_DEFAULT'
		Parametry brak
		CALL ht_ceny_tool('CALC_CENA_RABAT_CALC_DEFAULT', '', '', '', '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'CALC_CENA_RABAT_CALC_DEFAULT' THEN
		DELETE FROM `t_cenyrabat_result` WHERE RabatType IN (CRT_DEFAULT, CRT_AKWIZYTOR);
		
		INSERT INTO `t_cenyrabat_result`
			(RabatType, Waluta, KlasaCenowa, CenaWal, Rabat, CenaObl, czy_ceny_brt)
			SELECT
				--	CRT_DEFAULT, tci.Waluta, tci.Kontrah_KlasaCenowa, tci.Towar_CenaEwid, 0, tci.Towar_CenaEwid
				CRT_DEFAULT, tci.Waluta, tci.Kontrah_KlasaCenowa, 
				IF(tci.CzyCenaSprzedazy, 0, IF(@session.globals.Owner = 'PARAQUA', tci.Towar_CenaZkpNet,tci.Towar_CenaEwid)),
				tci.Kontrah_Rabat, 0, kl.czy_ceny_brt
			FROM `t_cenyrabat_info` tci 
			LEFT JOIN klasycen kl ON kl.Idn = tci.Kontrah_KlasaCenowa
		;	
		IF @_ZakupPrzypisywacCenyEwidDo THEN
		--	Gdy zakup i RW, PW, INW i ustawione w regu to konczymy na cenie ewidencyjnej
			CALL ht_ceny_tool('CALC_CENA_RABAT_CALC_UPATE_AFTER', CRT_DEFAULT, '', '', '', '', '', '');		
			LEAVE SPROC;	--	wychodze bo nie mam nic do zapisywania
		END IF;
		
		INSERT INTO `t_cenyrabat_result`
			(RabatType, Waluta, KlasaCenowa, Cena, Rabat, CenaObl, czy_ceny_brt)
			SELECT
				CRT_AKWIZYTOR, tci.Waluta, tci.Kontrah_KlasaCenowa, 0, k.rabat, 0, kl.czy_ceny_brt
			FROM `t_cenyrabat_info` tci 
			INNER JOIN `kontrah` k ON k.GUID = tci.AkwizytorGUID
			LEFT JOIN `klasycen` kl ON kl.Idn = tci.Kontrah_KlasaCenowa
-- 			LEFT JOIN klasycen kl ON kl.Idn = tci.Kontrah_KlasaCenowa
			WHERE
				tci.AkwizytorGUID != ''
-- 				AND k.GUID = tci.AkwizytorGUID
				
		;	
		
		DROP TEMPORARY TABLE IF EXISTS `t_cennik_towaru`;
		CREATE TEMPORARY TABLE `t_cennik_towaru`
		
			SELECT 
				tci.DataSprzed,
				-- bylo IF((tci.DataSprzed between ifnull(c.waznoscod,'2000-01-01') and ifnull(c.waznoscdo,'2100-01-01')), 
				IF((tci.DataSprzed BETWEEN IFNULL(c.waznoscod,'2000-01-01') AND IF(IFNULL(c.waznoscdo, '0000-00-00') = '0000-00-00', '2100-01-01', c.waznoscdo)), 
					if( @session.HT.IR.Ceny_promocyjne_aktywne, c.Cena_promocyjna, c.cena),
					0) AS Cena, 
				c.waluta, 
				c.klasa, 
				IFNULL(kl.czy_ceny_brt, 0) AS czy_ceny_brt, 
				IF(tci.CzyCenaSprzedazy, 
					(c.klasa = tci.Kontrah_KlasaCenowa),
					1) AS Valid_Klasa
			FROM `t_cenyrabat_info` tci	
			INNER JOIN cennik c ON c.idntowr = tci.idntowr
			LEFT JOIN klasycen kl ON kl.Idn = c.klasa
			WHERE
				c.czyzakup = IF(tci.CzyCenaSprzedazy, 0, 1)
			HAVING cena <> 0	
			ORDER BY c.klasa
			
		;
/*		
			SELECT 
				IF(((tci.DataSprzed between c.waznoscod and c.waznoscdo) and @session.HT.IR.Ceny_promocyjne_aktywne), 
					c.Cena_promocyjna, 
					c.cena) AS Cena, 
				c.waluta, 
				c.klasa, 
				IFNULL(kl.czy_ceny_brt, 0) AS czy_ceny_brt, 
				(c.klasa = tci.Kontrah_KlasaCenowa) AS Valid_Klasa
			FROM `t_cenyrabat_info` tci	
			INNER JOIN cennik c ON c.idntowr = tci.idntowr
			LEFT JOIN klasycen kl ON kl.Idn = c.klasa
			WHERE
				c.czyzakup = IF(tci.CzyCenaSprzedazy, 0, 1)
			ORDER BY c.klasa
		;
*/
		
		SELECT COUNT(*) INTO @C_t_cennik_towaru FROM `t_cennik_towaru`;
		IF @C_t_cennik_towaru > 0 THEN

			SET @cena = NULL;
			--	szukam klasy i waluty
			SELECT 
				c.cena, c.waluta, c.klasa, c.czy_ceny_brt
			INTO 
				@cena, @waluta, @klasa, @czy_ceny_brt
			FROM `t_cennik_towaru` c, `t_cenyrabat_info` tci
			WHERE
				c.Valid_Klasa
				AND c.Waluta = tci.Waluta
			LIMIT 1	
			;
			IF @cena IS NULL THEN
			--	gdy cena NULL to szukam tylko klasy
				SELECT 
					c.cena, c.waluta, c.klasa, c.czy_ceny_brt
				INTO 
					@cena, @waluta, @klasa, @czy_ceny_brt
				FROM `t_cennik_towaru` c
				WHERE
					c.Valid_Klasa
				LIMIT 1	
				;
			END IF;
			
			IF @cena IS NULL AND @session.HT.IR.Pobieraj_cene_z_najwyzszej_klasy_cen THEN
				SELECT 
					c.cena, c.waluta, c.klasa, c.czy_ceny_brt
				INTO 
					@cena, @waluta, @klasa, @czy_ceny_brt
				FROM `t_cennik_towaru` c
				ORDER BY c.klasa	
				LIMIT 1	
				;
			END IF;
			
			IF @cena IS NOT NULL THEN		--	JEST CENA
				--	Teraz przepisz uzyskana cen� domy�ln� i klas� domy�ln� do p�l Cena i KlasaCenowa
				UPDATE `t_cenyrabat_result` tcr
				SET
					tcr.CenaWal = IFNULL(@Cena, 0),
					tcr.Cena = IFNULL(@Cena, 0),
					tcr.CenaObl = IFNULL(@Cena, 0),
					tcr.KlasaCenowa = IFNULL(@klasa, 0),
					tcr.Waluta = IFNULL(@waluta, tcr.Waluta),
					tcr.czy_ceny_brt = IFNULL(@czy_ceny_brt, 0)
				WHERE
					tcr.RabatType IN (CRT_DEFAULT, CRT_AKWIZYTOR)
				;	
			END IF;
			
		END IF;
		
		DROP TEMPORARY TABLE IF EXISTS `t_cennik_towaru`;
		CALL ht_ceny_tool('CALC_CENA_RABAT_CALC_UPATE_AFTER', CRT_DEFAULT, '', '', '', '', '', '');		
		
	END IF;	--	IF _MODE = 'CALC_CENA_RABAT_CALC_DEFAULT'
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'CALC_CENA_RABAT_CALC_OFERTA'
		dla CRT_OFERTA
		Parametry brak
		CALL ht_ceny_tool('CALC_CENA_RABAT_CALC_OFERTA', '', '', '', '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'CALC_CENA_RABAT_CALC_OFERTA' THEN
		DELETE FROM `t_cenyrabat_result` WHERE RabatType = CRT_OFERTA;
		
		INSERT INTO `t_cenyrabat_result`
			(RabatType, Waluta, CenaWal, Cena, Rabat, czy_ceny_brt, AskExist, WarunekMsg)
			SELECT
					CRT_OFERTA, O.waluta, 
					IF(O.cenazaile = 0, O.cena, O.cena/O.cenazaile), 
					Round((IF(O.cenazaile = 0, O.cena, O.cena/O.cenazaile))*IFNULL(ku.kurs, 0), @session.HT.IR.CenyPrecisionWalutowe), 
					IFNULL(O.rabat, 0), 
					O.czy_ceny_brt,
					(IFNULL(O.warunek, '') <> ''), O.warunek
			FROM `t_cenyrabat_info` tci
			INNER JOIN `oferty` O ON O.idntowr = tci.idntowr AND IF(@session.globals.Owner = 'MPGK' ,O.kontrGUID = tci.kontrGUID , O.kontrGUID IN (tci.kontrGUID,tci.platnikGUID))
--			INNER JOIN `oferty` O ON O.idntowr = tci.idntowr and O.kontrGUID = tci.kontrGUID 
--			INNER JOIN `oferty` O ON O.idntowr = tci.idntowr and O.kontrGUID in (tci.kontrGUID,tci.platnikGUID)
			LEFT JOIN `kursy_calc` ku ON ku.idnwaluty1 = O.waluta and ku.idnwaluty2 = tci.Waluta
			WHERE
				O.dataoferty <= now() 
            --  Data do dopisana na razie dla konkola
                AND 
                    IF(@session.globals.Owner IN ('KONKOL'),
                        NOW() <= IFNULL(O.DataDo, '2099-12-31'),
                        TRUE
                    )
                AND O.status = 0 AND cena <> 0 
				AND (NOT tci.CzyCenaSprzedazy OR tci.CzyRabatyHierarchiczne)		--	zawsze dla zakupu lub sprzedazy z wlaczonymi rabatami hierarch. 
		;	
		
		-- SET @CzyLiczyc = 2;
		UPDATE `t_cenyrabat_result` tcr
		SET
			tcr.AskMsg = 
				CONCAT(
					'Warunek zastosowania ceny specjalnej:', '\n', '"', tcr.WarunekMsg, '"', '\n',
					'Czy przepisac nastepujaca cene:', '\n',
					'Cena: ', tcr.Cena, ' ?')
		WHERE 
			tcr.RabatType = CRT_OFERTA	
			AND tcr.AskExist
		;	

		CALL ht_ceny_tool('CALC_CENA_RABAT_CALC_UPATE_AFTER', CRT_OFERTA, '', '', '', '', '', '');		
		
	END IF;	--	IF _MODE = 'CALC_CENA_RABAT_CALC_OFERTA'
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'CALC_CENA_RABAT_CALC_MATRAB'
		dla CRT_MATRAB
		Parametry brak
		CALL ht_ceny_tool('CALC_CENA_RABAT_CALC_MATRAB', '', '', '', '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'CALC_CENA_RABAT_CALC_MATRAB' THEN
		DELETE FROM `t_cenyrabat_result` WHERE RabatType = CRT_MATRAB;
		
-- 		SET @session.HT.IR.RabatyHierarchiczne_DataWaznosciUsed = TRUE; -- FALSE;
		
		SET @internal_ord = 0;
		INSERT INTO `t_cenyrabat_result`
			(RabatType, Waluta, KlasaCenowa, CenaWal, Rabat, /*CenaObl,*/ AskExist, WarunekMsg, priorytet, internal_ord, czy_ceny_brt)
		
			SELECT 
				CRT_MATRAB,
				c.waluta, 
				c.klasa, 
				IF(((tci.DataSprzed BETWEEN IFNULL(c.waznoscod,'2000-01-01') AND IF(IFNULL(c.waznoscdo, '0000-00-00') = '0000-00-00', '2100-01-01', c.waznoscdo)) AND 
					@session.HT.IR.Ceny_promocyjne_aktywne), 
				-- IF(((tci.DataSprzed between c.waznoscod and c.waznoscdo) and @session.HT.IR.Ceny_promocyjne_aktywne), 
					c.Cena_promocyjna, 
					IF(m.czy_rabat_kwotowy = 0, 
						c.cena, 
						c.cena - m.rabat_kwotowy
					)
				) AS cenawal, 
				IF(m.czy_rabat_kwotowy = 0, 
					m.procent, 
					0
				) AS Rabat,	
				
				/*
				(1-m.procent/100)*
				IF(((current_date between c.waznoscod and c.waznoscdo) and @session.HT.IR.Ceny_promocyjne_aktywne), 
					c.Cena_promocyjna, 
					IF(m.czy_rabat_kwotowy = 0, 
						c.cena, 
						tci.Default_Cena - m.rabat_kwotowy
					)
				) AS cenaobl, 
				*/
				(IFNULL(m.warunek, '') <> ''),
				m.warunek, 
				m.priorytet, 
				@internal_ord := @internal_ord + 1,
				kl.czy_ceny_brt
			FROM `t_cenyrabat_info` tci, `matrab` m, `cennik` c 
			LEFT JOIN klasycen kl ON kl.Idn = c.Klasa
			WHERE 
				( 
				  ((tci.Towar_TreeNode LIKE CONCAT(towar, '%')) and towar <> '') OR 
				  (GuidT != '' AND (GuidT = tci.idntowr)) OR 
				  (klasarabattowar = tci.Towar_KalasaRabatowa and klasarabattowar <> 0) 
				) 
				AND 
				( 
				  ((tci.Kontrah_TreeNode LIKE CONCAT(kontrahent, '%')) and kontrahent <> '') OR 
				  (GuidK != '' AND (GuidK = tci.KontrGUID or GuidK = tci.AkwizytorGUID)) OR -- dla slon zadanie nr 004347 -> ten drugi %s to aAkwizytorGUID
				  (m.klasarabatkontrah = tci.Kontrah_KlasaRabatowa AND m.klasarabatkontrah <> 0) 
				) 
				AND 
				( 
				  c.czyzakup = 0 and (c.klasa=IF(m.cennik = 0, tci.Kontrah_KlasaCenowa, m.cennik)) and c.idntowr = tci.idntowr AND
				  (tci.DataSprzed BETWEEN IFNULL(c.waznoscod,'2000-01-01') AND IF(IFNULL(c.waznoscdo, '0000-00-00') = '0000-00-00', '2100-01-01', c.waznoscdo)) AND 
				  IF(@session.HT.IR.RabatyHierarchiczne_DataWaznosciUsed, m.waznosc >= CURDATE(), TRUE)
				) 
			 
			ORDER BY m.priorytet DESC
		;	
		/*
			--, cenaobl
		--;
		*/
		CALL ht_ceny_tool('CALC_CENA_RABAT_CALC_UPATE_AFTER', CRT_MATRAB, '', '', '', '', '', '');		
		
		SET @internal_ord = 0;
		UPDATE `t_cenyrabat_result` tcr
		SET
			tcr.internal_ord = @internal_ord := @internal_ord + 1
		WHERE 
			tcr.RabatType = CRT_MATRAB	
		ORDER BY tcr.priorytet DESC,  tcr.cenaobl	
		;	
		
		UPDATE `t_cenyrabat_result` tcr
		SET
			tcr.AskMsg = 
				CONCAT(
					'Warunek udzielenia rabatu:', '\n', '"', tcr.WarunekMsg, '"', '\n',
					'Czy przepisac nastepujaca pozycje:', '\n',
					'Rabat:', tcr.Rabat, '\n',
					'Cena: ', tcr.Cena, ' ?')
		WHERE 
			tcr.RabatType = CRT_MATRAB	
			AND tcr.AskExist
		;	

	
	END IF;	--	IF _MODE = 'CALC_CENA_RABAT_CALC_MATRAB'
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'CALC_CENA_RABAT_CALC_TABRABAT'
		dla CRT_TABRABAT
		Parametry brak
		CALL ht_ceny_tool('CALC_CENA_RABAT_CALC_TABRABAT', '', '', '', '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'CALC_CENA_RABAT_CALC_TABRABAT' THEN
		DELETE FROM `t_cenyrabat_result` WHERE RabatType = CRT_TABRABAT;
		
		SELECT cenawal, waluta INTO @tcenawal, @twaluta FROM `t_cenyrabat_result` WHERE RabatType = CRT_DEFAULT;
		SET @tcenawal = IFNULL(@tcenawal, 0);
		IF @tcenawal = 0 THEN
			LEAVE SPROC;	--	wychodze bo nie mam nic do zapisywania
		END IF;
		
		INSERT INTO `t_cenyrabat_result`
			(RabatType, Waluta, KlasaCenowa, CenaWal, Rabat)
			SELECT 
				CRT_TABRABAT,
				@twaluta,
				tr.cennik, 
				-- tr.klasarabatkontrah, tr.klasarabattowar, 
				@tcenawal, 
				tr.procent 
				-- (1-tr.procent/100)*@tcenawal
				-- tr.waznosc  
			FROM `t_cenyrabat_info` tci, `tabrabat` tr
			WHERE 
				tr.klasarabatkontrah = tci.Kontrah_KlasaRabatowa
				AND  tr.klasarabattowar = tci.Towar_KalasaRabatowa
		;
		CALL ht_ceny_tool('CALC_CENA_RABAT_CALC_UPATE_AFTER', CRT_TABRABAT, '', '', '', '', '', '');		
			
	END IF;	--	IF _MODE = 'CALC_CENA_RABAT_CALC_TABRABAT'
	
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'CALC_LAST_KURS_FOR_WALUTA'
		Parametry
			_Param_A	Waluta
			_Param_B	Idn_tab_kurs
		CALL ht_ceny_tool('CALC_LAST_KURS_FOR_WALUTA', Waluta, Idn_tab_kurs, '', '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'CALC_LAST_KURS_FOR_WALUTA' THEN
		SET @Kurs = 1;
		SELECT 
			k.kurs INTO @Kurs
		FROM `kursy` k
		WHERE
			k.idnwaluty = _Param_A AND k.idn_tab_kurs = _Param_B
		ORDER BY k.data DESC 
		LIMIT 1
		;
		
	END IF;	--	IF _MODE = 'CALC_LAST_KURS_FOR_WALUTA'
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'GET_LAST_KURS_FOR_WALUTA'
		Parametry
			_Param_A	Waluta
			_Param_B	Idn_tab_kurs
		CALL ht_ceny_tool('GET_LAST_KURS_FOR_WALUTA', Waluta, Idn_tab_kurs, '', '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'GET_LAST_KURS_FOR_WALUTA' THEN
		CALL ht_ceny_tool('CALC_LAST_KURS_FOR_WALUTA', _Param_A, _Param_B, '', '', '', '', '');		
		SELECT IFNULL(@Kurs, 1) AS Kurs;
	END IF;	--	IF _MODE = 'GET_LAST_KURS_FOR_WALUTA'
	

/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'KONTR_x_TOWR_INIT.create'
		Zaklada tabel� `ht_kontrah_ceny` 
		CALL ht_ceny_tool('KONTR_x_TOWR_INIT.create', '', '', '', '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'KONTR_x_TOWR_INIT.create' THEN
		-- Tworze tabele
		DROP TABLE IF EXISTS `ht_kontrah_ceny`;
		CREATE TABLE `ht_kontrah_ceny` (
			`IdnTowr` VARCHAR(38) NOT NULL DEFAULT '',
			`KontrGUID` VARCHAR(38) NOT NULL DEFAULT '',
			`cenaObl` DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
			`waluta` INT(11) NOT NULL DEFAULT '0',
			`czy_ceny_brt` int(11) NOT NULL DEFAULT '0',
			`Cena` DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
			`Rabat` DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
			`RabatType` INT(11) NOT NULL DEFAULT 0,
			`KlasaCenowa` INT(11) NOT NULL DEFAULT 0,
			`CenaWal` DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
			`RabatTypeLevel` VARCHAR(20) NOT NULL DEFAULT '',
			`Towar_nie_realizuje_zamow` INT(11) NOT NULL DEFAULT 0,
			`Kontrah_KlasaCenowa` INT(11) NOT NULL DEFAULT 0,
			`Kontrah_KlasaRabatowa` INT(11) NOT NULL DEFAULT 0,
			`Kontrah_Rabat` DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
			`AkwizytorGUID` VARCHAR(38) NOT NULL DEFAULT '',
		  
		  PRIMARY KEY (`idntowr`,`kontrGUID`),
		  KEY `kontrGUID` (`kontrGUID`),
		  KEY `akwizytorGUID` (`kontrGUID`)
		) 
		;
	END IF;	--	IF _MODE = 'KONTR_x_TOWR_INIT.create'
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'KONTR_x_TOWR_INIT'
		Zaklada i wypelnia tabel� `ht_kontrah_ceny` 
		Parametry
		CALL ht_ceny_tool('KONTR_x_TOWR_INIT', '', '', '', '', '', '', '');		
		CALL ht_ceny_tool('KONTR_x_TOWR_INIT', '100', '', '', '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'KONTR_x_TOWR_INIT' THEN
		-- Tworze tabele
		CALL ht_ceny_tool('KONTR_x_TOWR_INIT.create', '', '', '', '', '', '', '');		
		
		CALL ht_ceny_tool('KONTR_x_TOWR.przelicz dla kontrah x towar.init', '', '', '', '', '', '', '');
		CALL ht_ceny_tool('KONTR_x_TOWR.przelicz dla kontrah x towar', _Param_A, _Param_B, '', '', '', '', '');		

		LEAVE SPROC;	--	wychodze 

	END IF;	--	IF _MODE = 'KONTR_x_TOWR_INIT'

/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'KONTR_x_TOWR.przelicz dla kontrah x towar.init'
		tworzy tabelki `t_cenyrabat_input_kontrah` i `t_cenyrabat_input_towar`
		Parametry
		CALL ht_ceny_tool('KONTR_x_TOWR.przelicz dla kontrah x towar.init', '', '', '', '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'KONTR_x_TOWR.przelicz dla kontrah x towar.init' THEN
		DROP TEMPORARY TABLE IF EXISTS `t_cenyrabat_input_kontrah`;
		CREATE TEMPORARY TABLE `t_cenyrabat_input_kontrah` (
			`KontrGUID` VARCHAR(38) NOT NULL DEFAULT '',
		  PRIMARY KEY `kontrGUID` (`kontrGUID`)
		) 
		;
		DROP TEMPORARY TABLE IF EXISTS `t_cenyrabat_input_towar`;
		CREATE TEMPORARY TABLE `t_cenyrabat_input_towar` (
			`IdnTowr` VARCHAR(38) NOT NULL DEFAULT '',
		  PRIMARY KEY `idntowr` (`idntowr`)
		) 
		;
	END IF;	--	IF _MODE = 'KONTR_x_TOWR.przelicz dla kontrah x towar.init'

/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'KONTR_x_TOWR.przelicz dla kontrah x towar.insert default'
		Wypelnia tabel� `t_cenyrabat_input_kontrah` oraz `t_cenyrabat_input_towar`  domy�lnymi GUIDami gdy tabele s� puste
		Parametry
			_Param_A	Ile maks. kontrahentow
			_Param_B	Ile maks. towar�w
		CALL ht_ceny_tool('KONTR_x_TOWR.przelicz dla kontrah x towar.insert default', '', '', '', '', '', '', '');		
		CALL ht_ceny_tool('KONTR_x_TOWR.przelicz dla kontrah x towar.insert default', 10, '', '', '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'KONTR_x_TOWR.przelicz dla kontrah x towar.insert default' THEN
		SET 
			_Param_A = IFNULL(_Param_A, ''),
			_Param_B = IFNULL(_Param_B, '')
		;
		SET 
			_Param_A = IF(_Param_A = '', 0, _Param_A),
			_Param_B = IF(_Param_B = '', 0, _Param_B)
		;
		SELECT _VarInt(Count(*)) INTO @t_cenyrabat_input_kontrah.Count FROM `t_cenyrabat_input_kontrah`;
		SELECT _VarInt(Count(*)) INTO @t_cenyrabat_input_towar.Count FROM `t_cenyrabat_input_towar`;
		SET
			@t_cenyrabat_input_kontrah.Count = IFNULL(@t_cenyrabat_input_kontrah.Count, 0),
			@t_cenyrabat_input_towar.Count = IFNULL(@t_cenyrabat_input_towar.Count, 0)
		;
		IF @t_cenyrabat_input_kontrah.Count = 0 THEN
			SET _CMD = 
			'
			INSERT IGNORE INTO `t_cenyrabat_input_kontrah` 
				SELECT
					k.GUID
				FROM `kontrah` k
				WHERE
					k.klasacenowa > 1 or k.katcol4>0
					AND NOT k.Deleted 
				#LIMIT#
			;
			';
			SET _CMD = REPLACE(_CMD, '#LIMIT#', IF(_Param_A > 0, CONCAT('LIMIT ', _Param_A), ''));
			CALL _ExecuteCmd(_CMD, @Error);
		END IF;
		
		IF @t_cenyrabat_input_towar.Count = 0 THEN
			SET _CMD = 
			'
			INSERT IGNORE INTO `t_cenyrabat_input_towar` 
				SELECT
					t.GUID
				FROM `TowrNg` t 
				WHERE
					t.treenode LIKE ''*|TOWARY|GAZ%''
				#LIMIT#
			;
			';
			SET _CMD = REPLACE(_CMD, '#LIMIT#', IF(_Param_B > 0, CONCAT('LIMIT ', _Param_B), ''));
			CALL _ExecuteCmd(_CMD, @Error);
		END IF;
	END IF;	--	IF _MODE = 'KONTR_x_TOWR.przelicz dla kontrah x towar.insert default'
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'KONTR_x_TOWR.przelicz dla kontrah x towar'
		Wypelnia tabel� `ht_kontrah_ceny`  wg tabel `t_cenyrabat_input_kontrah` i `t_cenyrabat_input_towar`
		Parametry
			_Param_A	Ile maks. kontrahentow
			_Param_B	Ile maks. towar�w
		CALL ht_ceny_tool('KONTR_x_TOWR.przelicz dla kontrah x towar', '', '', '', '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'KONTR_x_TOWR.przelicz dla kontrah x towar' THEN
	--	Wypelnia tabel� `t_cenyrabat_input_kontrah` oraz `t_cenyrabat_input_towar`  domy�lnymi GUIDami gdy tabele s� puste
		CALL ht_ceny_tool('KONTR_x_TOWR.przelicz dla kontrah x towar.insert default', _Param_A, _Param_B, '', '', '', '', '');		
	-- Tworze tabele
		DROP TEMPORARY TABLE IF EXISTS `t_cenyrabat_input_k_x_t`;
		CREATE TEMPORARY TABLE `t_cenyrabat_input_k_x_t` (
			`IdnTowr` VARCHAR(38) NOT NULL DEFAULT '',
			`KontrGUID` VARCHAR(38) NOT NULL DEFAULT '',
			`Kontrah_KlasaCenowa` INT(11) NOT NULL DEFAULT 0,
			`Kontrah_KlasaRabatowa` INT(11) NOT NULL DEFAULT 0,
			`Kontrah_Rabat` DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
			`AkwizytorGUID` VARCHAR(38) NOT NULL DEFAULT '',
		  PRIMARY KEY (`idntowr`,`kontrGUID`),
		  KEY `kontrGUID` (`kontrGUID`)
		);

		-- Wypelniam parami Towar x kontrahent
		INSERT IGNORE INTO `t_cenyrabat_input_k_x_t` 
			(IdnTowr, KontrGUID, Kontrah_KlasaCenowa, Kontrah_KlasaRabatowa, Kontrah_Rabat, AkwizytorGUID) 
			SELECT 
				tt.IdnTowr,
				tk.KontrGUID,
				k.klasacenowa,
				k.klasarabatowa,
				k.rabat,
				k.AkwizytorGUID
			FROM `t_cenyrabat_input_kontrah` tk, `t_cenyrabat_input_towar` tt, `kontrah` k
			WHERE
				k.GUID = tk.KontrGUID
			GROUP BY IdnTowr, kontrGUID
		;	
		SELECT
			_VarInt(0), _VarInt(COUNT(*))
		INTO
			@InfC_Rows,
			@InfC
		FROM `t_cenyrabat_input_k_x_t`
		;
		-- Naliczam ka�dy rekord
		SET @Inf = 'CALC_CENA_RABAT_INIT';
		CALL ht_ceny_tool('CALC_CENA_RABAT_INIT', '', '', '', '', '', '', '');		
		BEGIN
			DECLARE _IdnTowr VARCHAR(38);
			DECLARE _KontrGUID VARCHAR(38);
			DECLARE _KT_kontrklasacenowa INTEGER;
			DECLARE _KT_KontrahKlasaRabatowa INTEGER;
			DECLARE _KT_Kontrrabat DOUBLE;
			DECLARE _KT_AkwizytorGUID VARCHAR(38);
			DECLARE done BOOL DEFAULT FALSE;
			DECLARE c_proc CURSOR FOR
			--	Kursor zestawu Towar x kontrahent bez powt�rze�
				SELECT 
					tkt.idntowr, tkt.kontrGUID,
					tkt.Kontrah_KlasaCenowa, tkt.Kontrah_KlasaRabatowa, tkt.Kontrah_Rabat, tkt.AkwizytorGUID
				FROM `t_cenyrabat_input_k_x_t` tkt
			--	LIMIT 1000	
			;
			DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
			OPEN c_proc;
			loop1: LOOP
				FETCH c_proc INTO
					_IdnTowr, _KontrGUID,
					_KT_kontrklasacenowa,
					_KT_KontrahKlasaRabatowa,
					_KT_Kontrrabat,
					_KT_AkwizytorGUID
				;
				IF done THEN
					LEAVE loop1;
				ELSE

				SET _KT_Akwizytorguid=IF(@session.globals.Owner IN ('KONKOL','JARZEBINSCY'),'',_KT_Akwizytorguid);

				--	kolejny rekord
				set
					@_KT_kontrklasacenowa = _KT_kontrklasacenowa,
					@_KT_KontrahKlasaRabatowa = _KT_KontrahKlasaRabatowa,
					@_KT_Kontrrabat = _KT_Kontrrabat,
					@_KT_AkwizytorGUID = _KT_AkwizytorGUID
				;
					CALL ht_ceny_tool('KONTR_x_TOWR_CALC', _IdnTowr, _KontrGUID, _KT_kontrklasacenowa, _KT_KontrahKlasaRabatowa, _KT_Kontrrabat, _KT_AkwizytorGUID, '');		
				END IF;
			END LOOP;
			CLOSE c_proc;
		END;
		
		SELECT
			CONCAT('Przeliczono pozycji: ', @InfC, ', zmodyfikowano: ', @InfC_Rows) AS MsgInfo
		;	
	END IF;	--	IF _MODE = 'KONTR_x_TOWR.przelicz dla kontrah x towar'

/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'KONTR_x_TOWR_CALC'
		Nalicza tabel� `ht_kontrah_ceny` 
		Parametry
			_Param_A	IdnTowr
			_Param_B	KontrGUID
			_Param_C	Kontrah_KlasaCenowa, 
			_Param_D	Kontrah_KlasaRabatowa, 
			_Param_E	Kontrah_Rabat, 
			_Param_F	AkwizytorGUID
		CALL ht_ceny_tool('KONTR_x_TOWR_CALC', IdnTowr, KontrGUID, '', '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'KONTR_x_TOWR_CALC' THEN
		--	_Param_A	GUID kontrahenta
		SET @KT_KontrGUID = _Param_B;
		--	_Param_B	Rodzaj
		SET @KT_Rodzaj = 1;						--	Sprzedazowa FV
		--	_Param_C	Czy sprzedaz (CzyCenaSprzedazy BOOLEAN/INTEGER 0 lub 1)
		SET @KT_CzyCenaSprzedazy = 1;			--	Sprzedaz TAK
		--	_Param_D	CzyRabatyHierarchiczne
		-- SET @KT_CzyRabatyHierarchiczne = 0;		--	NIE
		SET @KT_CzyRabatyHierarchiczne = 1;		--	TAK
		--	_Param_E	DataSprzed
		SET @KT_DataSprzed = CURRENT_DATE;	
	
		--	_Param_A	GUID Towaru
		SET @KT_IdnTowr = _Param_A;
		--	_Param_B	cdsEOpNg.FieldByName('kontrklasacenowa').AsInteger
		--	_Param_C	INgPoCOM.KontrahKlasaRabatowa
		--	_Param_D	cdsEOpNg.FieldByName('kontrrabat').AsCurrency
		--	_Param_E	aCDSNg.FieldByName('Waluta').asInteger
		SET @KT_Waluta = 0;						--	PLN
		--	_Param_F	AkwizytorGUID
		
		SET @KT_kontrklasacenowa = _Param_C;
		SET @KT_KontrahKlasaRabatowa = _Param_D;
		SET @KT_Kontrrabat = _Param_E;
		SET @KT_AkwizytorGUID = _Param_F;
		
		/*
		SELECT 
			klasacenowa,
			klasarabatowa,
			rabat,
			AkwizytorGUID
		INTO
			@KT_kontrklasacenowa,
			@KT_KontrahKlasaRabatowa,
			@KT_Kontrrabat,
			@KT_AkwizytorGUID
		FROM `kontrah`
		WHERE
			GUID = @KT_KontrGUID
		;
		*/
		SET @Inf = CONCAT(@InfC, ' - ', 'PARAM przepisane');
		SET @Inf = CONCAT(@InfC, ' - ', 'CALC_CENA_RABAT_SET_NG');
		CALL ht_ceny_tool('CALC_CENA_RABAT_SET_NG', @KT_KontrGUID, @KT_Rodzaj, @KT_CzyCenaSprzedazy, @KT_CzyRabatyHierarchiczne, @KT_DataSprzed, '', '');		
		SET @Inf = CONCAT(@InfC, ' - ', 'CALC_CENA_RABAT_SET_PO');
		CALL ht_ceny_tool('CALC_CENA_RABAT_SET_PO', @KT_IdnTowr, @KT_kontrklasacenowa, @KT_KontrahKlasaRabatowa, @KT_Kontrrabat, @KT_Waluta, @KT_AkwizytorGUID, '');		
		SET @Inf = CONCAT(@InfC, ' - ', 'CALC_CENA_RABAT_CALC_ALL');
		CALL ht_ceny_tool('CALC_CENA_RABAT_CALC_ALL', '', '', '', '', '', '', '1');		-- bez selecta

		INSERT INTO `ht_kontrah_ceny`
			(IdnTowr, KontrGUID, 
				cenaObl, waluta, czy_ceny_brt, cena, Rabat, RabatType, KlasaCenowa, CenaWal, RabatTypeLevel, Towar_nie_realizuje_zamow
				-- Kontrah_KlasaCenowa, Kontrah_KlasaRabatowa, Kontrah_Rabat, AkwizytorGUID
			) 
			SELECT
				@KT_IdnTowr,
				@KT_KontrGUID,
				tkt.cenaObl,
				tkt.waluta,
				tkt.czy_ceny_brt,
				tkt.Cena,
				tkt.Rabat,
				tkt.RabatType,
				tkt.KlasaCenowa,
				tkt.CenaWal,
				tkt.RabatTypeLevel,
				tkt.Towar_nie_realizuje_zamow
				-- tkt.Kontrah_KlasaCenowa, 
				-- tkt.Kontrah_KlasaRabatowa, 
				-- tkt.Kontrah_Rabat, 
				-- tkt.AkwizytorGUID
			FROM `t_cenyrabat_result_k_x_t` tkt	
			WHERE
				tkt.cenaObl > 0
				AND tkt.Cena > 0
--			WHERE
--				tkt.KontrGUID = @KT_KontrGUID AND
--				tkt.IdnTowr = @KT_IdnTowr 
		ON DUPLICATE KEY
		UPDATE
			cenaObl = tkt.cenaObl,
			waluta = tkt.waluta,
			czy_ceny_brt = tkt.czy_ceny_brt,
			Cena = tkt.Cena,
			Rabat = tkt.Rabat,
			RabatType = tkt.RabatType,
			KlasaCenowa = tkt.KlasaCenowa,
			CenaWal = tkt.CenaWal,
			RabatTypeLevel = tkt.RabatTypeLevel,
			Towar_nie_realizuje_zamow = tkt.Towar_nie_realizuje_zamow
			-- Kontrah_KlasaCenowa = tkt.Kontrah_KlasaCenowa, 
			-- Kontrah_KlasaRabatowa = tkt.Kontrah_KlasaRabatowa, 
			-- Kontrah_Rabat = tkt.Kontrah_Rabat, 
			-- AkwizytorGUID = tkt.AkwizytorGUID
			
		;
		SET @InfC_RowCount = ROW_COUNT();
		SET 
			@InfC_Rows = @InfC_Rows + IF(@InfC_RowCount > 0, @InfC_RowCount, 0)
		;	
	END IF;	--	IF _MODE = 'KONTR_x_TOWR_CALC'

/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'GetNurkowanieAtom'
		Nalicza tabel� `ht_kontrah_ceny` 
		Parametry
			_Param_A	IdnTowr
			_Param_B	KontrGUID
			_Param_C	aCurrCena, 
			_Param_D	aRodzajDok, 
			_Param_E	Data, 
		///	_Param_F	AkwizytorGUID
		CALL ht_ceny_tool('GetNurkowanieAtom', IdnTowr, KontrGUID, CurrCena, RodzajDok, 'DataWystaw', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'GetNurkowanieAtom' THEN
		--	_Param_A	IdnTowr
		SET @Nurek.IdnTowr = _Param_A;
		--	_Param_B	KontrGUID
		SET @Nurek.KontrGUID = _Param_B;
		--	_Param_C	CurrCena
		SET @Nurek.CurrCena = _Param_C;			
		--	_Param_D	RodzajDok
		SET @Nurek.RodzajDok = _Param_D;			
	--	TEST czy liczymy
	/*
	Potrzebne zmienne IReg
		@session.HT.IR.Kontrola_cen_sprzed_w_dok_mag
		@session.HT.IR.Sprzedaz_ponizej_ceny_min
		@session.HT.IR.Sprzedaz_ponizej_ceny_zakupu
	*/
		SET
			@Nurek.SprCenaMin := not @session.HT.IR.Sprzedaz_ponizej_ceny_min,
			@Nurek.SprCenaZakupu := not @session.HT.IR.Sprzedaz_ponizej_ceny_zakupu,
			@Nurek.TowarExists = FALSE,
			@Nurek.cena_minimalna = NULL,
			@Nurek.cenazkpnet = NULL,
			@Nurek.cena_zl = NULL
		;
		
		SELECT
			TRUE,
			t.Symbol,
			t.cena_minimalna, t.cenazkpnet, GREATEST(t.cenazkpnet, t.cena_minimalna) AS cena_wieksza,
			c.waluta, c.cena, k.kurs, c.cena*k.kurs AS cena_zl, t.waga
		INTO
			@Nurek.TowarExists,
			@Nurek.TowrSymb,
			@Nurek.cena_minimalna, @Nurek.cenazkpnet, @Nurek.cena_wieksza,
			@Nurek.waluta, @Nurek.cena, @Nurek.kurs, @Nurek.cena_zl, @Nurek.waga
		FROM `TowrNg` t
		LEFT JOIN `cennik` c ON c.idntowr = t.GUID AND c.czyzakup
		LEFT JOIN `kursy` k ON c.waluta=k.idnwaluty
		LEFT JOIN `kursybiez` b ON c.waluta=b.idnwaluty AND b.ostdata=k.data
		WHERE
			t.GUID = @Nurek.IdnTowr
		ORDER BY cena_zl DESC LIMIT 1 
		;	
		SET 
			@Nurek.Result = FALSE,
			@Nurek.CenaPLN = 0,
			@Nurek.cenazkpnet.zwiekszenie = 0,
			@Nurek.MSG = ''
		;
		SELECT Grupa INTO @Nurek.OpTyp FROM `operdoc` WHERE rodzaj = @Nurek.RodzajDok;
		SET @Nurek.Badaj = 
			@Nurek.TowarExists AND
			(
			(@Nurek.OpTyp = @ht.ST) OR 
			(@Nurek.RodzajDok IN (@ht.CRzWZ, @ht.CRzRW, @ht.CRzKR, @ht.CZmEX, @ht.CZMOO))
			)
		;
		
		SET @Nurek.Result = NOT @Nurek.Badaj;
		
		IF @session.globals.Owner = 'CDG' AND @Nurek.Badaj THEN	-- TYLKO DLA CDG !!!!!!!!!!!!!!!!!!!!!!
			--	_Param_E	Data
/*			rozmowa z PA 20240910
			SET _Param_E = IFNULL(_Param_E, '');
			IF _Param_E != '' THEN
				SET @Nurek.DataWyst = _Param_E;
				SELECT 
					cena 
				INTO
					@Nurek.cenazkpnet
				FROM `cennik` 
				WHERE 
					czyzakup=1 AND klasa = 0 AND idntowr = @Nurek.IdnTowr AND @Nurek.DataWyst BETWEEN waznoscod AND waznoscdo
				;
			END IF;	
*/			
		--	Pobierz jeszcze cenazkpnet.zwiekszenie
			SELECT 
				k.msc_plan_sprzed*@Nurek.waga/1000
			INTO
				@Nurek.cenazkpnet.zwiekszenie
			FROM `kontrah` k	
			WHERE
				k.GUID = @Nurek.KontrGUID
			;	
			SET @Nurek.cenazkpnet = @Nurek.cenazkpnet + IFNULL(@Nurek.cenazkpnet.zwiekszenie, 0);
			-- SET @Nurek.cena_minimalna = @Nurek.cenazkpnet + IFNULL(@Nurek.cenazkpnet.zwiekszenie, 0);
		END IF;
		
		
		IF @Nurek.Badaj THEN
			SET @Nurek.cena_wieksza = GREATEST(@Nurek.cena_minimalna, @Nurek.cenazkpnet);
		
			IF @Nurek.SprCenaMin AND @Nurek.SprCenaZakupu THEN
				SET @Nurek.CenaPLN = @Nurek.cena_wieksza;
			ELSE
				IF @Nurek.SprCenaMin THEN
					SET @Nurek.CenaPLN = @Nurek.cena_minimalna;
				ELSE
					IF @Nurek.SprCenaZakupu THEN
						SET @Nurek.CenaPLN = @Nurek.cenazkpnet;
					ELSE
						SET @Nurek.Result = TRUE;
					END IF;
				END IF;
				
			END IF;
			
			IF NOT @Nurek.Result THEN
			
				IF @Nurek.CenaPLN = 0 AND @Nurek.SprCenaZakupu THEN -- czyli tylko dla zakupowej
					SET @Nurek.CenaPLN = @Nurek.cena_zl;
				END IF;
				
				SET @Nurek.Result = (@Nurek.CurrCena >= @Nurek.CenaPLN);
				
			END IF;
			
			IF NOT @Nurek.Result THEN
				SET @Nurek.MSGAll = '';
				IF @Nurek.SprCenaMin AND @Nurek.SprCenaZakupu THEN
					SET @Nurek.MSGAll = _UTF8'Uwaga wartość ceny sprzedaży po rabacie jest mniejsza od ceny zakupu lub od ceny minimalnej \n';
					SET @Nurek.CenaName = 'cena: ';
				ELSE
					IF @Nurek.SprCenaMin THEN
						SET @Nurek.MSGAll = _UTF8'Uwaga wartość ceny sprzedaży po rabacie jest mniejsza od ceny minimalnej \n';
						SET @Nurek.CenaName = 'cena minimalna: ';
					ELSE
						SET @Nurek.MSGAll = _UTF8'Uwaga wartość ceny sprzedaży po rabacie jest mniejsza od ceny zakupu \n';
						SET @Nurek.CenaName = 'cena zakupu: ';
					END IF;
					
				END IF;
				SET @Nurek.MSG = CONCAT(@Nurek.MSGAll, 'Pozycja dla towaru: ', @Nurek.TowrSymb, '\n', 'Cena po rabacie: ', @Nurek.CurrCena, '\n', @Nurek.CenaName, @Nurek.CenaPLN);
			END IF;
		END IF;
		
		IF @Nurek.Result THEN
		--	spr czy FVDoWZ	gdy nie ...
		--	to czy rodzaj in () i gdy tak ...
		--	spr. upr :  if not (User60.GetUprawnienie('HT_SprzedPonizejCenyZakupLubCenyMin') > 0) wtedy
		--	ALARM
			SET @X = '';
		END IF;
				
		SELECT
			NOT @Nurek.Result AS Err, IFNULL(@Nurek.MSG,'') AS Msg, IFNULL(@Nurek.waluta, 0) AS waluta, IFNULL(@Nurek.cena,0) AS cena, IFNULL(@Nurek.kurs,1) AS kurs, IFNULL(@Nurek.cena_zl,0) AS cena_zl 
		;	

	END IF;	--	IF _MODE = 'GetNurkowanieAtom'

/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'GetNurkowanie.NEW'
		Nalicza tabel `ht_kontrah_ceny` 
		Parametry
			_Param_A	IdnTowr
			_Param_B	KontrGUID
			_Param_C	aCurrCena, 
			_Param_D	aRodzajDok, 
			_Param_E	Data, 
		///	_Param_F	AkwizytorGUID
		CALL ht_ceny_tool('GetNurkowanie.NEW', IdnTowr, KontrGUID, CurrCena, RodzajDok, 'DataWystaw', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE LIKE 'GetNurkowanie.NEW%' THEN
	BEGIN
		--	_Param_A	IdnTowr
		SET @Nurek.Err = FALSE;
		SET @Nurek.IdnOper = _Param_A;
		SET @Nurek.IdnTowr = _Param_B;
		--	_Param_B	KontrGUID
		-- SET @Nurek.KontrGUID = _Param_B;
		--	_Param_C	CurrCena
		SET @Nurek.CurrCena = _Param_C;			
		--	_Param_D	RodzajDok
		SET @Nurek.RodzajDok = _Param_D;			
			
	--	TEST czy liczymy
	/*
	Potrzebne zmienne IReg
		@session.HT.IR.Kontrola_cen_sprzed_w_dok_mag
		@session.HT.IR.Sprzedaz_ponizej_ceny_min
		@session.HT.IR.Sprzedaz_ponizej_ceny_zakupu
	*/
	
	--	Gdy nie ma takiej osoby ktora nie ma super uprawnien w szczeg. w ogóle nie ma takiej osoby (np. algor.event) to wyjsz 
		IF 
		EXISTS(
			SELECT 
				a.OsobaGUID
			FROM `ng_e_rec` n, `_user_accounts` a
			WHERE 
				n.GUID = @Nurek.IdnOper
				AND a.OsobaGUID = n.Handle_UserGUID 
				AND _GetUprawnienie('HT_SprzedPonizejCenyZakupLubCenyMin', n.Handle_UserGUID) > 0
		)
		THEN
			LEAVE SPROC;	--	wychodze bo nie mam nic do zapisywania
		END IF;
	
	
	
		DROP TEMPORARY TABLE IF EXISTS `t_nurek_1_rec`;
		-- CREATE TEMPORARY TABLE `t_nurek_1_rec`
		CREATE TEMPORARY TABLE `t_nurek_1_rec` (
		  `Result` INT(1) NOT NULL DEFAULT '0',
		  `SprCenaMin` INT(1) DEFAULT NULL,
		  `SprCenaZakupu` INT(1) DEFAULT NULL,
		  `DataWystaw` DATE DEFAULT NULL,
		  `CurrCena` DECIMAL(5,4) NOT NULL DEFAULT '0.0000',
		  `CenaPLN` DECIMAL(2,1) NOT NULL DEFAULT '0.0',
		  `IdnTowr` VARCHAR(38) DEFAULT '',
		  `Symbol` VARCHAR(38) DEFAULT '',
		  `cena_minimalna` DOUBLE(16,4) DEFAULT '0.0000',
		  `cenazkpnet` DOUBLE(16,4) DEFAULT NULL,
		  `cena_wieksza` DOUBLE(21,4) DEFAULT NULL,
		  `waluta` INT(11) DEFAULT NULL,
		  `cena` DOUBLE(16,4) DEFAULT NULL,
		  `kurs` DOUBLE(16,4) DEFAULT NULL,
		  `cena_zl` DOUBLE(21,4) DEFAULT NULL,
		  `waga` DOUBLE(16,10) DEFAULT '0.0000000000',
		  `KontrGUID` VARCHAR(38) NOT NULL DEFAULT '',
		  `cenazkpnet_zwiekszenie` DECIMAL(2,1) NOT NULL DEFAULT '0.0',
		  `MSG` TEXT
		);
		
		INSERT INTO `t_nurek_1_rec`
			SELECT
				FALSE AS Result,
				NOT @session.HT.IR.Sprzedaz_ponizej_ceny_min AS SprCenaMin,
				NOT @session.HT.IR.Sprzedaz_ponizej_ceny_zakupu AS SprCenaZakupu,
				DATE(_Param_E) AS DataWystaw,
				@Nurek.CurrCena AS CurrCena,
				0.0 AS CenaPLN,
				t.GUID AS IdnTowr,
				t.Symbol,
				t.cena_minimalna, 
				t.cenazkpnet, 
				GREATEST(t.cenazkpnet, t.cena_minimalna) AS cena_wieksza,
				c.waluta, c.cena, k.kurs, c.cena*k.kurs AS cena_zl, t.waga,
				n.KontrGUID,
				0.0 AS cenazkpnet_zwiekszenie,
				'' AS MSG
			/*
			INTO
				@Nurek.TowrSymb,
				@Nurek.cena_minimalna, @Nurek.cenazkpnet, @Nurek.cena_wieksza,
				@Nurek.waluta, @Nurek.cena, @Nurek.kurs, @Nurek.cena_zl, @Nurek.waga,
				@Nurek.KontrGUID
			*/
			FROM `opng_e` n
			LEFT JOIN `TowrNg` t ON t.GUID = @Nurek.IdnTowr
			LEFT JOIN `cennik` c ON c.idntowr = t.GUID AND c.czyzakup
			LEFT JOIN `kursy` k ON c.waluta=k.idnwaluty
			LEFT JOIN `kursybiez` b ON c.waluta=b.idnwaluty AND b.ostdata=k.data
			WHERE
				n.GUID = @Nurek.IdnOper
			ORDER BY cena_zl DESC LIMIT 1 
		;	
		
		IF @session.globals.Owner = 'CDG'  THEN
			UPDATE `t_nurek_1_rec` t
			SET
				t.cenazkpnet = 
				IFNULL(
				(
					SELECT 
						c.cena 
					FROM `cennik` c
					WHERE 
						c.czyzakup=1 
						AND c.klasa = 0 
						AND c.idntowr = t.IdnTowr 
						AND t.DataWystaw BETWEEN c.waznoscod AND c.waznoscdo
				), t.cenazkpnet) 
				+
				IFNULL(
				(
					SELECT 
						k.msc_plan_sprzed*@Nurek.waga/1000 
					FROM `kontrah` k
					WHERE 
						k.GUID = t.KontrGUID
				), 0) 
				
			WHERE
				@session.globals.Owner = 'CDG' 
				AND NOT t.Result
			;
		END IF;
		
		UPDATE `t_nurek_1_rec` t
		SET
			t.Result = NOT t.SprCenaZakupu AND NOT SprCenaMin,
			t.cenazkpnet = IF(t.cenazkpnet = 0 AND t.SprCenaZakupu, t.cena_zl, t.cenazkpnet)	--	gdy zakupowa = 0 i spr. cene zak. to wstaw cene z cennika zakupowego
			
		WHERE 
			NOT t.Result
		;
		UPDATE `t_nurek_1_rec` t
		SET
			t.cena_wieksza = GREATEST(t.cena_minimalna, t.cenazkpnet)
		WHERE
			NOT t.Result
		;
		UPDATE `t_nurek_1_rec` t
		SET
			t.CenaPLN = 
			IF(t.SprCenaMin AND t.SprCenaZakupu,
				t.cena_wieksza,
				IF(t.SprCenaMin,
					t.cena_minimalna,
					IF(t.SprCenaZakupu,
						t.cenazkpnet,
						t.CenaPLN
					)
				)
			)
		WHERE
			NOT t.Result
		;
		/*
		bylo
		UPDATE `t_nurek_1_rec` t
		SET
			t.Result = 
				(t.CurrCena >= IF(t.CenaPLN = 0 AND t.SprCenaZakupu, t.cena_zl, t.CenaPLN))
		WHERE
			NOT t.Result
		;
		*/
		UPDATE `t_nurek_1_rec` t
		SET
			t.Result = (t.CurrCena >= t.CenaPLN)
		WHERE
			NOT t.Result
		;
		

		IF _MODE = 'GetNurkowanie.NEW.trigger' THEN
			SET @Nurek.Err = EXISTS(SELECT t.IdnTowr FROM `t_nurek_1_rec` t WHERE NOT t.Result);
		END IF;
		
		IF _MODE = 'GetNurkowanie.NEW.Inf' THEN
			UPDATE `t_nurek_1_rec` t
			SET
				t.Msg = 
					CONCAT(
						IF(t.SprCenaMin AND t.SprCenaZakupu,
							'Uwaga wartosc ceny sprzedazy po rabacie jest mniejsza od ceny zakupu lub od ceny minimalnej \n',
							IF(t.SprCenaMin ,
								'Uwaga wartosc ceny sprzedazy po rabacie jest mniejsza od ceny minimalnej \n',
								'Uwaga wartosc ceny sprzedazy po rabacie jest mniejsza od ceny zakupu \n'
							)
						), 
						'Pozycja dla towaru: ', 
						t.Symbol, '\n', 
						'Cena po rabacie: ', 
						t.CurrCena, '\n', 
						IF(t.SprCenaMin AND t.SprCenaZakupu, 
							'cena: ', 
							IF(t.SprCenaMin, 
								'cena minimalna: ',
								'cena zakupu: '
							)
						), 
						t.CenaPLN
					)
			WHERE
				NOT NOT t.Result
			;
			SELECT * FROM `t_nurek_1_rec`;
		END IF;
		
		IF _MODE = 'GetNurkowanie.NEW.Inf.????' THEN
			SELECT 
				CONCAT(
					'Uwaga sa ceny sprzedazy po rabacie ktore sa mniejsza od ceny zakupu lub od ceny minimalnej \n',
					'Pozycje dla nast. towarow:  \n', 
					GROUP_CONCAT(CONCAT(t.Symbol, ' - cena po rabacie: ', t.CurrCena) SEPARATOR '\n') 
				) AS Msg
			FROM `t_nurek_1_rec` t 
			WHERE 
				NOT NOT t.Result
			;
		END IF;
	
	LEAVE SPROC;	--	wychodze bo nie mam nic do zapisywania
	END;
		
		SELECT
			NOT @Nurek.Result AS Err, @Nurek.MSG AS Msg, @Nurek.waluta AS waluta, @Nurek.cena AS cena, @Nurek.kurs AS kurs, @Nurek.cena_zl AS cena_zl 
		;	

	
	END IF;	--	IF _MODE = 'GetNurkowanie.NEW'
	
	IF _MODE = 'Receptury.calc.Put_cena_Sprzed_To_Cennik' THEN
	/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
		'Receptury.calc.Put_cena_Sprzed_To_Cennik' 
			Po naliczenu receptur do wpis cennikow w 3 fazach
			Parametry
				_Param_A	???? IdnTowr/RcNg
				_Param_B	aKlasaCen
				_Param_C	aWaluta
			CALL ht_ceny_tool('Receptury.calc.Put_cena_Sprzed_To_Cennik', RcNg, aKlasaCen, aWaluta, '', '', '', '');		
	------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	--	1. usuniwecie pozycji cennika		
			DELETE c FROM `cennik` c, `rcpo` r, `rcng` rn  
			WHERE 
				rn.GUID = _Param_A  -- 'B16-2' 
				AND r.przepisac_cene_kalk <> 0
				AND r.IdnNG = rn.GUID
				AND r.przychod
				AND c.idntowr = r.idnTowr
				AND c.klasa = _Param_B
			;
	--	2. wstaw		
			DELETE c FROM `cennik` c, `rcpo` r, `rcng` rn  
			WHERE 
				rn.GUID = _Param_A  -- 'B16-2' 
				AND r.przepisac_cene_kalk <> 0
				AND r.IdnNG = rn.GUID
				AND r.przychod
				AND c.idntowr = r.idnTowr
				AND c.klasa = _Param_B
			;
	END IF;	--	IF _MODE = 'Receptury.calc.Put_cena_Sprzed_To_Cennik'
	
END$$


DROP PROCEDURE IF EXISTS `Calc_ceny_Po`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `Calc_ceny_Po`(
	IN _MODE VARCHAR(250),
	INOUT _Result BOOLEAN,
	IN _IdnOper VARCHAR(38),	
	IN _IdnTowr VARCHAR(38),
	IN _CurrCena DECIMAL(16,4),
	IN _Data DATE,
	IN _Param_A VARCHAR(50),	
	IN _Param_B VARCHAR(50),	
	IN _Param_C VARCHAR(50),	
	IN _Param_D VARCHAR(50),	
	IN _Param_E VARCHAR(50),	
	IN _Param_F VARCHAR(50)	
)
S_Calc_ceny_Po: BEGIN 
--	standardowe przeliczenie cena net.->rabat->wart.wal.
	DECLARE _SQLText, _SQLText_WHERE, _MSG MEDIUMTEXT;
	
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'GetNurkowanie.NEW'
		Nalicza tabel `ht_kontrah_ceny` 
		Parametry
			_Param_A	IdnTowr
			_Param_C	aCurrCena, 
			_Param_D	aRodzajDok, 
			_Param_E	Data, 
		///	_Param_F	AkwizytorGUID
		CALL Calc_ceny_Po('GetNurkowanie.oppo_e.trigger', @Nurek.OK, IdnOper, IdnTowr, CurrCena, 'DataWystaw', '', '', '', '', '', '');		
		CALL Calc_ceny_Po('GetNurkowanie.zmpo_e.trigger', @Nurek.OK, IdnOper, IdnTowr, CurrCena, 'DataWystaw', '', '', '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE LIKE 'GetNurkowanie.%' THEN
		SET @Nurek.Err = FALSE;
		SET _Result = NOT @Nurek.Err;	--	jako 
			
		/*
		Potrzebne zmienne IReg
			@session.HT.IR.Kontrola_cen_sprzed_w_dok_mag
			@session.HT.IR.Sprzedaz_ponizej_ceny_min
			@session.HT.IR.Sprzedaz_ponizej_ceny_zakupu
		*/
	set @Test_speed = 901;
	--	Gdy nie ma takiej osoby ktora nie ma super uprawnien w szczeg. w ogóle nie ma takiej osoby (np. algor.event) to wyjsz 
		-- IF @session.Registration.Admin IS NULL THEN
		IF TRUE THEN
	set @Test_speed = 902;
			IF NOT
			EXISTS(
				SELECT 
					a.OsobaGUID
				FROM `ng_e_rec` n, `_user_accounts` a
				WHERE 
					n.GUID = _IdnOper
					AND a.OsobaGUID = n.Handle_UserGUID 
					AND _GetUprawnienie('HT_SprzedPonizejCenyZakupLubCenyMin', n.Handle_UserGUID) = 0	--	i NIE Admin
			)
			THEN
				LEAVE S_Calc_ceny_Po;	--	wychodze bo nie mam nic do zapisywania
			END IF;
			
		ELSE
	set @Test_speed = 903;
			IF _GetUprawnienie('HT_SprzedPonizejCenyZakupLubCenyMin', @session.Registration.UserGUID) > 0	--	Admin
			THEN
				LEAVE S_Calc_ceny_Po;	--	wychodze bo nie mam nic do zapisywania
			END IF;
		END IF;
	
	set @Test_speed = 904;
		DROP TEMPORARY TABLE IF EXISTS `t_nurek_1_rec`;
		-- CREATE TEMPORARY TABLE `t_nurek_1_rec`
		CREATE TEMPORARY TABLE `t_nurek_1_rec` (
		  `Result` INT(1) NOT NULL DEFAULT '0',
		  `SprCenaMin` INT(1) DEFAULT NULL,
		  `SprCenaZakupu` INT(1) DEFAULT NULL,
		  `DataWystaw` DATE DEFAULT NULL,
		  `CurrCena` DECIMAL(16,4) NOT NULL DEFAULT '0.0000',
		  `CenaPLN` DECIMAL(16,4) NOT NULL DEFAULT '0.0',
		  `IdnTowr` VARCHAR(38) DEFAULT '',
		  `Symbol` VARCHAR(38) DEFAULT '',
		  `cena_minimalna` DOUBLE(16,4) DEFAULT '0.0000',
		  `cenazkpnet` DOUBLE(16,4) DEFAULT NULL,
		  `cena_wieksza` DOUBLE(21,4) DEFAULT NULL,
		  `waluta` INT(11) DEFAULT NULL,
		  `cena` DOUBLE(16,4) DEFAULT NULL,
		  `kurs` DOUBLE(16,4) DEFAULT NULL,
		  `cena_zl` DOUBLE(21,4) DEFAULT NULL,
		  `waga` DOUBLE(16,10) DEFAULT '0.0000000000',
		  `KontrGUID` VARCHAR(38) NOT NULL DEFAULT '',
		  `cenazkpnet_zwiekszenie` DECIMAL(16,4) NOT NULL DEFAULT '0.0',
		  `MSG` TEXT
		);
		
		INSERT INTO `t_nurek_1_rec`
			SELECT
				FALSE AS Result,
				NOT @session.HT.IR.Sprzedaz_ponizej_ceny_min AS SprCenaMin,
				NOT @session.HT.IR.Sprzedaz_ponizej_ceny_zakupu AS SprCenaZakupu,
				IF(_MODE LIKE '%oppo_e%', 
					(SELECT n.DataWystaw FROM `opng_e` n WHERE n.GUID = _IdnOper),
					(SELECT n.DataWystaw FROM `zmng_e` n WHERE n.GUID = _IdnOper)
				) AS DataWystaw,
				_CurrCena AS CurrCena,
				0.0 AS CenaPLN,
				t.GUID AS IdnTowr,
				t.Symbol,
				t.cena_minimalna, 
				t.cenazkpnet, 
				GREATEST(t.cenazkpnet, t.cena_minimalna) AS cena_wieksza,
				c.waluta, c.cena, k.kurs, ifnull(c.cena*k.kurs,0) AS cena_zl, t.waga,
				IF(_MODE LIKE '%oppo_e%', 
					(SELECT n.KontrGUID FROM `opng_e` n WHERE n.GUID = _IdnOper), 
					(SELECT n.KontrGUID FROM `zmng_e` n WHERE n.GUID = _IdnOper) 
				) AS KontrGUID,
				0.0 AS cenazkpnet_zwiekszenie,
				'' AS MSG
			FROM `TowrNg` t 
			LEFT JOIN `cennik` c ON c.idntowr = t.GUID AND c.czyzakup
			LEFT JOIN `kursy` k ON c.waluta = k.idnwaluty
			LEFT JOIN `kursybiez` b ON c.waluta = b.idnwaluty AND b.ostdata = k.data
			WHERE
				t.GUID = _IdnTowr
			ORDER BY cena_zl DESC LIMIT 1 
		;
		
		IF @session.globals.Owner = 'CDG'  THEN
			UPDATE `t_nurek_1_rec` t
			SET
				t.cenazkpnet = 
				IFNULL(
				(
					SELECT 
						c.cena 
					FROM `cennik` c
					WHERE 
						c.czyzakup=1 
						AND c.klasa = 0 
						AND c.idntowr = t.IdnTowr 
						AND t.DataWystaw BETWEEN c.waznoscod AND c.waznoscdo
				), t.cenazkpnet) 
				+
				IFNULL(
				(
					SELECT 
						k.msc_plan_sprzed*@Nurek.waga/1000 
					FROM `kontrah` k
					WHERE 
						k.GUID = t.KontrGUID
				), 0) 
				
			WHERE
				@session.globals.Owner = 'CDG' 
				AND NOT t.Result
			;
		END IF;
		
		UPDATE `t_nurek_1_rec` t
		SET
			t.Result = NOT t.SprCenaZakupu AND NOT SprCenaMin,
			t.cena_wieksza = GREATEST(t.cena_minimalna, t.cenazkpnet),
		--	2022-04-28 	jmam dodał jeszcze 2 linie:  aby dla zer nie porównywał.
			t.SprCenaMin = IF(IFNULL(t.cena_minimalna, 0) = 0, FALSE, t.SprCenaMin),
			t.SprCenaZakupu = IF(IFNULL(t.cenazkpnet, 0) = 0, FALSE, t.SprCenaZakupu)
		WHERE
			NOT t.Result
		;
		UPDATE `t_nurek_1_rec` t
		SET
			t.CenaPLN = 
			IF(t.SprCenaMin AND t.SprCenaZakupu,
				t.cena_wieksza,
				IF(t.SprCenaMin,
					t.cena_minimalna,
					IF(t.SprCenaZakupu,
						t.cenazkpnet,
						t.CenaPLN
					)
				)
			)
		WHERE
			NOT t.Result
		;
		UPDATE `t_nurek_1_rec` t
		SET
			t.Result = 
				(t.CurrCena >= IF(t.CenaPLN = 0, t.cena_zl, t.CenaPLN))
		WHERE
			NOT t.Result
		;

		SET @Nurek.Err = EXISTS(SELECT t.IdnTowr FROM `t_nurek_1_rec` t WHERE NOT t.Result);
		SET _Result = NOT @Nurek.Err;	--	jako 
		
	END IF;	--	IF _MODE = 'GetNurkowanie.NEW'
	
END$$

DELIMITER ;

/*
====================================================================================================================================================================================
	NOTATNIK
====================================================================================================================================================================================
	
SET @Exist_t_cenyrabat_info = NULL;
select @Exist_t_cenyrabat_info;
DROP TEMPORARY TABLE IF EXISTS `t_cenyrabat_info`;
SET @KontrGUID = 'IM_1';
SET @IdnTowr = '{77CB0312-EFB8-4436-A13F-9FE66FCA4EAF}';
SET @Rodzaj = 27;
SET @CzySprzedaz = TRUE;
SET @Waluta = 0;
SELECT klasacenowa, KlasaRabatowa,rabat INTO @kontrklasacenowa, @KontrahKlasaRabatowa, @kontrrabat from kontrah WHERE GUID = @KontrGUID;
select @kontrklasacenowa,@KontrahKlasaRabatowa,@kontrrabat;
CALL ht_ceny_tool('CALC_CENA_RABAT_INIT', '', '', '', '', '', '', '');		
CALL ht_ceny_tool('CALC_CENA_RABAT_SET_NG', @KontrGUID, @Rodzaj, @CzySprzedaz, TRUE, '2010-05-10', '', '');	
CALL ht_ceny_tool('CALC_CENA_RABAT_SET_PO', @IdnTowr, @kontrklasacenowa, @KontrahKlasaRabatowa, @kontrrabat, @Waluta, @AkwizytorGUID, '');			

CALL ht_ceny_tool('CALC_CENA_RABAT_CALC_ALL', '', '', '', '', '', '', '');		

select * from zmpo where IdnNG = '{D57F345B-4780-42E8-8232-7CD7EF084A78}';

CALL ht_ceny_tool('CALC_CENA_RABAT_OFERTY', '', '', '', '', '', '', '');		

SET @Cena = 1.34;
SET @Warunek = 'Tylko dla widocznych';
				SET @Ask_Msg =
				CONCAT(
					'Warunek zastosowania ceny specjalnej:', '\n', '"', @Warunek, '"', '\n',
					'Czy przepisa� nast�puj�c� cen�:', '\n',
					'Cena: ', @Cena, ' ?');


SELECT @Ask_Msg;
CALL ht_ceny_tool('CALC_CENA_RABAT_MATRAB', '', '', '', '', '', '', '');		
CALL ht_ceny_tool('CALC_CENA_RABAT_TABRABAT', '', '', '', '', '', '', '');		


		DROP TEMPORARY TABLE IF EXISTS `t_cennik_towaru`;
		CREATE TEMPORARY TABLE `t_cennik_towaru`
			SELECT 
				c.waluta, c.klasa, c.cena 
			FROM `t_cenyrabat_info` tci	
			INNER JOIN cennik c ON c.idntowr = tci.idntowr
			WHERE
				c.czyzakup = 0
			ORDER BY klasa
		;
		
SELECT COUNT(*) INTO @C_t_cennik_towaru FROM `t_cennik_towaru`;		
DELETE FROM `t_cennik_towaru`;
SELECT @C_t_cennik_towaru;




SET @KontrGUID = '{A0D634EA-A9AD-4873-AC4E-A81937076505}';
SET @IdnTowr = 'P11';
SET @Rodzaj = 1;
SET @AkwizytorGUID = '';
SET @Waluta = 0;
SET @CzySprzedaz = TRUE;
SELECT klasacenowa, KlasaRabatowa,rabat INTO @kontrklasacenowa, @KontrahKlasaRabatowa, @kontrrabat from kontrah WHERE GUID = @KontrGUID;
select @kontrklasacenowa,@KontrahKlasaRabatowa,@kontrrabat;
CALL ht_ceny_tool('CALC_CENA_RABAT_INIT', '', '', '', '', '', '', '');		
CALL ht_ceny_tool('CALC_CENA_RABAT_SET_NG', @KontrGUID, @Rodzaj, @CzySprzedaz, TRUE, '2010-05-10', '', '');	
CALL ht_ceny_tool('CALC_CENA_RABAT_SET_PO', @IdnTowr, @kontrklasacenowa, @KontrahKlasaRabatowa, @kontrrabat, @Waluta, @AkwizytorGUID, '');			

CALL ht_ceny_tool('CALC_CENA_RABAT_CALC_ALL', '', '', '', '', '', '', '');		


SEKWENCJA WYWO�ANIA u�ywaj�c `t_cenyrabat_input_kontrah` i `t_cenyrabat_input_towar`

--	kreowanie (czyszczenie) `t_cenyrabat_input_kontrah` i `t_cenyrabat_input_towar`
CALL ht_ceny_tool('KONTR_x_TOWR.przelicz dla kontrah x towar.init', '', '', '', '', '', '', '');		

-- wstawianie - przyk�ad
INSERT IGNORE INTO `t_cenyrabat_input_kontrah` SELECT '{31EBDAFE-6430-4904-B3F0-CD29523006DB}'; 
INSERT IGNORE INTO `t_cenyrabat_input_kontrah` SELECT '{88F4AEB2-4354-4243-95F5-D5FF1C55BFF9}'; 

INSERT IGNORE INTO `t_cenyrabat_input_towar` SELECT '{03EA7C45-A883-11D7-8C90-0050FC569029}'; 
INSERT IGNORE INTO `t_cenyrabat_input_towar` SELECT '{022461FA-C9C5-43FD-9F2B-6ED0A79AB61E}'; 

--	Naliczanie
CALL ht_ceny_tool('KONTR_x_TOWR.przelicz dla kontrah x towar', '', '', '', '', '', '', '');		




-- po zakomentowaniu i odkomentowaniu pobiernia z IRega:
update kontrah set klasacenowa=1,akwizytorguid=''  where guid='{1629BE3D-DC20-49BB-A83C-FD9538617B31}';
delete from matrab where guidk='{1629BE3D-DC20-49BB-A83C-FD9538617B31}';
CALL ht_ceny_tool('KONTR_x_TOWR.przelicz dla kontrah x towar.init', '', '', '', '', '', '', '');
INSERT IGNORE INTO `t_cenyrabat_input_kontrah` values ('{1629BE3D-DC20-49BB-A83C-FD9538617B31}');
-- Query OK, 1 row affected (0.00 sec)
CALL ht_ceny_tool('KONTR_x_TOWR.przelicz dla kontrah x towar', '', '', '', '', '', '', '');

select * from ht_kontrah_ceny where kontrguid='{1629BE3D-DC20-49BB-A83C-FD9538617B31}';

select * FROM `t_cenyrabat_input_kontrah`;
select * FROM `t_cenyrabat_input_k_x_t` ;
			SELECT 
				kc.IdnTowr, 
				kc.KontrGUID
			FROM `t_cenyrabat_input_kontrah` tk
			INNER JOIN `ht_kontrah_ceny` kc ON kc.KontrGUID = tk.KontrGUID
		;		
		
		select * from  `ht_kontrah_ceny` 
 		WHERE KontrGUID = '{1629BE3D-DC20-49BB-A83C-FD9538617B31}' 
		limit 100;
DROP TEMPORARY TABLE t_ht_kontrah_ceny;
CREATE TEMPORARY TABLE t_ht_kontrah_ceny
	SELECT
		'{1629BE3D-DC20-49BB-A83C-FD9538617B31}' AS KontrGUID, IdnTowr
	FROM `ht_kontrah_ceny` 
	GROUP BY IdnTowr
	limit 100
;	

INSERT IGNORE INTO `ht_kontrah_ceny` 
(KontrGUID, IdnTowr)
SELECT
	KontrGUID, IdnTowr
FROM t_ht_kontrah_ceny
;

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

/*
$Log: ht_ceny_tool.sql,v $
Revision 1.52  2025/02/26 09:51:29  jmam
$send$ Zmiany po TK

*/
