 DELIMITER $$


DROP PROCEDURE IF EXISTS `C_HT_Mag_Tools`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `C_HT_Mag_Tools`(
	IN _MODE VARCHAR(250),
	IN _FROM VARCHAR(250),
	IN _Key VARCHAR(38),
	IN _Param_A VARCHAR(255),
	IN _Param_B VARCHAR(255),
	IN _Param_C VARCHAR(255),
	IN _Param_D VARCHAR(255)
)
S_C_HT_Mag_Tools: BEGIN 
	DECLARE _SQLText TEXT;
	DECLARE _IdnNg, _IdnTowr VARCHAR(38);
	DECLARE _Ilosc DECIMAL(16,4);
	DECLARE _Ilewopakowaniu DECIMAL(16,4);
	
	IF _MODE LIKE 'PAKOWANIE.%' THEN
	SET @X = 'oo';
		IF _MODE = 'PAKOWANIE.SELECT.Do.Pakowania' THEN
		/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
			'PAKOWANIE.SELECT.Do.Pakowania'
				Zwraca zam/Wz które nalezy spakować
				Parametry
					_FROM		"ZAM" lub "WZ"/"OP"
					_Param_A	UserGUID
				CALL C_HT_Mag_Tools('PAKOWANIE.SELECT.Do.Pakowania', 'ZM', '', 'user', '', '', '');				
				CALL C_HT_Mag_Tools('PAKOWANIE.SELECT.Do.Pakowania', 'OP', '', 'user', '', '', '');				
		------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
			IF _FROM = 'ZM' THEN
			SET @X = 'aaaa';
				(
				SELECT
					n.ilepoz,
					n.ilepozzreal,
					n.idn AS kod,					
					n.GUID,
					n.nrzamw,
					n.ugrpguid,
					n.kontrGUID,
					n.kontrsymbol,
					n.datawystaw,
					n.terminrealizacji,
					n.areaGUID,
					IFNULL(n.uwagi,'-') AS uwagi,
					n.rodzaj,
					ot.Nazwa AS rodzajNazwa,
					IF(n.ilepoz > n.ilepozzreal AND n.rodzaj IN (27,52,91),
					IFNULL(
					(
					SELECT 
					COUNT(*) 
					FROM `zmpo` p, `TowrPo` t 
					WHERE 
					p.wersja = n.wersja AND p.idnng = n.guid 
					AND p.idntowr = t.idntowr AND p.idnmagazyn = t.magazyn 
					AND p.ilosc > p.zrealizowano AND (p.usluga OR IF(p.reserve, t.ilosc > 0, t.ilosc - t.zarezerwowano) > 0)
					), 0), 
					0
					) AS ok,
					IFNULL(m.Opis, 'Brak') AS Oddzial,
					MD5(m.Opis) AS OddzialGUID,
					IFNULL((SELECT 
							SUM(o.ilosc*t.objetosc) AS suma_obj
						FROM zmpo o 
						LEFT JOIN TowrNg t ON t.GUID=o.idntowr
						WHERE o.idnNG=n.GUID), 0) AS suma_obj
				FROM `zmng` n
				LEFT JOIN Magazyny m ON m.idnmagazynu=n.idnmagazyn
				LEFT JOIN `operdoc_typy` ot ON ot.rodzaj=n.rodzaj
				WHERE
				TRUE
				AND n.rodzaj IN (27,52) AND n.status <> 64 
				AND n.Status != 32
				AND n.ilepozzreal <> n.ilepoz 
			 AND IFNULL((SELECT COUNT(*) FROM `grupy_osob` grp WHERE grp.grupaGUID = n.ugrpGUID AND grp.osobaGUID = _Param_A), 0) > 0
				HAVING
					ok <= (ilepoz - ilepozzreal)
			)
			UNION
			(
			SELECT
					n.ilepoz,
					n.ilepozzreal,
					n.idn AS kod,					
					n.GUID,
					n.nrzamw,
					n.ugrpguid,
					n.kontrGUID,
					n.kontrsymbol,
					n.datawystaw,
					n.terminrealizacji,
					n.areaGUID,
					IFNULL(n.uwagi,'-') AS uwagi,
					n.rodzaj,
					ot.Nazwa AS rodzajNazwa,
					IF(n.ilepoz > n.ilepozzreal AND n.rodzaj IN (27,52,91),
					IFNULL(
					(
					SELECT 
					COUNT(*) 
					FROM `zmpo` p, `TowrPo` t 
					WHERE 
					p.wersja = n.wersja AND p.idnng = n.guid 
					AND p.idntowr = t.idntowr AND p.idnmagazyn = t.magazyn 
					AND p.ilosc > p.zrealizowano AND (p.usluga OR IF(p.reserve, t.ilosc > 0, t.ilosc - t.zarezerwowano) > 0)
					), 0), 
					0
					) AS ok,
					IFNULL(m.Opis, 'Brak') AS Oddzial,
					MD5(m.Opis) AS OddzialGUID,
					IFNULL((SELECT 
							SUM(o.ilosc*t.objetosc) AS suma_obj
						FROM zmpo o 
						LEFT JOIN TowrNg t ON t.GUID=o.idntowr
						WHERE o.idnNG=n.GUID), 0) AS suma_obj
				FROM `zmng` n
				LEFT JOIN Magazyny m ON m.idnmagazynu=n.idnmagazyn				
				LEFT JOIN `operdoc_typy` ot ON ot.rodzaj=n.rodzaj
				WHERE
				TRUE
				AND n.rodzaj IN (91) AND n.status <> 64 
				AND n.Status != 32
				AND n.ilepozzreal <> n.ilepoz
				HAVING
					ok <= (ilepoz - ilepozzreal)
			)		
			;
			ELSE
				SELECT * FROM `opng` WHERE FALSE;
			END IF;
		END IF;	-- IF _MODE = 'PAKOWANIE.SELECT.Do.Pakowania' THEN
		
		IF _MODE = 'PAKOWANIE.CHECK_ZAM_LOCK' THEN
		/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
			'PAKOWANIE.CHECK_ZAM_LOCK'
				Sprawdza czy dokument nie jest zablokowany
				Parametry
					_Key		GUID zamowienia lub WZ
					_FROM		"ZAM" lub "WZ"/"OP"
					_Param_A	UserGUID
				CALL C_HT_Mag_Tools('PAKOWANIE.CHECK_ZAM_LOCK', 'ZM', 'ZamGUID', 'UserGuid', '', '', '');				
				CALL C_HT_Mag_Tools('PAKOWANIE.CHECK_ZAM_LOCK', 'OP', 'WZGUID', '', '', '', '');				
		------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
			CALL ht_init('');
			CALL _Session_Refresh_Variables('', '', '');			
			CALL _ng_e_rec_init('Check.before.handle', _FROM, _Key, _Param_A, '', '');
			CALL _ng_e_rec_msg_select('', _Key, 'handle.init', '');			
		END IF;	-- IF _MODE = 'PAKOWANIE.CHECK_ZAM_LOCK' THEN
	
		IF _MODE = 'PAKOWANIE.INIT' THEN
		/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
			'PAKOWANIE.INIT'
				Inicjuje dok. w E
				Parametry
					_Key		GUID zamowienia lub WZ
					_FROM		"ZAM" lub "WZ"/"OP"
					_Param_A	UserGUID
				CALL C_HT_Mag_Tools('PAKOWANIE.INIT', 'ZM', 'ZamGUID', '', '', '', '');				
				CALL C_HT_Mag_Tools('PAKOWANIE.INIT', 'OP', 'WZGUID', '', '', '', '');				
		------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
			CALL _Session_Refresh_Variables('', '', '');
			IF _FROM = 'ZM' THEN				
				CALL zmng_E_init('EDIT', _Key, _Param_A, '', '');
				CALL zmng_E_Run('before.run', _Key, '', '', '');
				CALL zmng_E_Run('', _Key, '', '', '');
				CALL zmng_E_Run('after.run', _Key, '', '', '');
			
			ELSE
				CALL opng_E_init('EDIT', _Key, _Param_A, '', '');
				CALL opng_E_Run('before.run', _Key, '', '', '');
				CALL opng_E_Run('', _Key, '', '', '');
				CALL opng_E_Run('after.run', _Key, '', '', '');
			END IF;
		END IF;	-- IF _MODE = 'PAKOWANIE.INIT' THEN

		IF _MODE = 'PAKOWANIE.SELECT.p' THEN
		/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
			'PAKOWANIE.SELECT.p'
				Zwraca pozycje zam/Wz które nalezy spakować
				Parametry
					_Key		GUID zamowienia lub WZ
					_FROM		"ZAM" lub "WZ"/"OP"
					_Param_A	GUID pozycji
				CALL C_HT_Mag_Tools('PAKOWANIE.SELECT.p', 'ZM', 'ZamGUID', '', '', '', '');				
				CALL C_HT_Mag_Tools('PAKOWANIE.SELECT.p', 'OP', 'WZGUID', '', '', '', '');				
		------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
			IF _FROM = 'ZM' THEN
				SET _SQLText =
				"
				SELECT 
					p.GUID, p.idn, p.IdnTowr, p.towrnazwa, p.ilosc, p.ilewopakowaniu, 
					IF((p.spakowano / p.ilewopakowaniu) < 1, 1, ROUND((p.spakowano / p.ilewopakowaniu),1)) as spakowanych_opakowan, 
					IF((p.iloscdo / p.ilewopakowaniu) < 1, 1, ROUND((p.iloscdo / p.ilewopakowaniu),1)) as ilosc_opak, p.spakowano, p.iloscdo, p.towrsymb, j.Nazwa AS jednostka, 
					CONCAT('0', t.idn) AS kod, ROUND(tp.ilosc,2) AS na_stanie, 
					p.kat5, p.kat7, p.kat8,p.kat9, k0.valuex as katcol_0, k2.valuex as katcol_2, k3.valuex as katcol_3, k4.valuex as katcol_4, spd0.Nazwa as katcol0_label, spd2.Nazwa as katcol2_label, spd3.Nazwa as katcol3_label, spd4.Nazwa as katcol4_label
				FROM `zmng_e` n
				INNER JOIN `zmpo_e` p ON p.IdnNg = n.GUID AND p.Wersja = n.Wersja
				LEFT JOIN Jednostki j ON j.idn = p.jednostka
				LEFT JOIN TowrNg t ON t.GUID = p.idntowr
				LEFT JOIN TowrPo tp ON tp.idntowr = p.idntowr AND tp.magazyn = p.idnmagazyn
				LEFT JOIN v_ktw0 k0 ON k0.klucz = p.kat5
				LEFT JOIN v_ktw2 k2 ON k2.klucz = p.kat7
				LEFT JOIN v_ktw3 k3 ON k3.klucz = p.kat8
				LEFT JOIN v_ktw4 k4 ON k4.klucz = p.kat9
				LEFT JOIN slowniki_pierwotne_def spd0 ON spd0.typ=1 AND spd0.colnr=0
				LEFT JOIN slowniki_pierwotne_def spd2 ON spd2.typ=1 AND spd2.colnr=2
				LEFT JOIN slowniki_pierwotne_def spd3 ON spd3.typ=1 AND spd3.colnr=3
				LEFT JOIN slowniki_pierwotne_def spd4 ON spd4.typ=1 AND spd4.colnr=4
				WHERE 
					n.GUID = #_Key#
					#p# 
				ORDER BY p.towrsymb
				;
				";
			ELSE
				SET _SQLText =
				"
				SELECT 
					p.GUID, p.idn, p.IdnTowr, p.towrnazwa, p.ilosc,  p.ilewopakowaniu, IF((p.iloscdo / p.ilewopakowaniu) < 1, 1, ROUND((p.iloscdo / p.ilewopakowaniu),1)) as ilosc_opak, p.spakowano, p.towrsymb, j.Nazwa AS jednostka, CONCAT('0', t.idn) AS kod, ROUND(tp.ilosc,2) AS na_stanie, p.kat5, p.kat6, p.kat7
				FROM `oppo_e` p 
				LEFT JOIN Jednostki j ON j.idn = p.jednostka
				LEFT JOIN TowrNg t ON t.GUID = p.idntowr
				LEFT JOIN TowrPo tp ON tp.idntowr = p.idntowr AND tp.magazyn = p.ZMagazynu
				WHERE 
					p.idnOper = #_Key#
					#p#
				 ORDER BY p.towrsymb
				;
				";
			END IF;
			
			SET _SQLText = REPLACE(_SQLText, '#_Key#', QUOTE(_Key));
			IF _Param_B = '' THEN
				SET _SQLText = REPLACE(_SQLText, '#p#', IF(_Param_A = '', '', CONCAT('AND p.GUID = ', QUOTE(_Param_A))));
			ELSE
				SET _SQLText = REPLACE(_SQLText, '#p#', IF(_Param_A = '', '', CONCAT('AND p.GUID IN (', QUOTE(_Param_A),', ', QUOTE(_Param_B), ')')));
			END IF;
				
			SET @_SQLText = _SQLText;
			SET @_SQLTextXXX = _SQLText;
			CALL _ExecuteCmd(_SQLText, @Error);
			
		END IF;	-- IF _MODE = 'PAKOWANIE.SELECT.p.' THEN


		IF _MODE = 'PAKOWANIE.EDIT.INSERT.p' THEN
		/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
			'PAKOWANIE.EDIT.INSERT.p'
				Edycja / Wstawienie towaru 
				Na dzien 11-08-2015 yzywamy do locate pozycji IdnTowr czyli zajkladamy ze towary sa w zamowieniu unikalne 
				Parametry
					_Key		GUID zamowienia lub WZ
					_FROM		"ZAM" lub "WZ"/"OP"
					_Param_A	GUID pozycji zamowienia lub WZ	UWAGA!!!! zazwyczaj pusty 
					_Param_B	IdnTowr
					_Param_C	Ilosc
					_Param_D	""/"UNDO"/"DELETE"/"KOR"/"PART"
				CALL C_HT_Mag_Tools('PAKOWANIE.EDIT.INSERT.p', 'ZM', 'ZamGUID', 'P.GUID', 'BGR050', '150', '');				
				CALL C_HT_Mag_Tools('PAKOWANIE.SELECT.p', 'OP', '', '', '', '', '');				
		------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
			SET @P.X = '';
			IF _FROM = 'ZM' THEN
				SET 
					@P.GUID = IFNULL(_Param_A, ''),
					_IdnTowr = _Param_B, 
					_Ilosc = _Param_C,
					@_new_GUID = ''
				;
				--  SET _Ilosc = IF(_Ilosc IS NOT NULL AND _Ilosc = 0, NULL, _Ilosc);
				-- IF @P.GUID = '' THEN
				--	To szukaj po towarze
				--	SET
				--		@P.GUID = IFNULL(
				--			(SELECT p.GUID FROM `zmng` n, `zmpo_e` p WHERE n.GUID = _Key AND p.IdnNg = n.GUID AND p.Wersja = n.Wersja AND p.IdnTowr = _Param_B LIMIT 1), ''
				--		)
				--	;	
				-- END IF;
				IF @P.GUID = '' THEN
				--	nie ma jeszcze takiego towaru
					IF _Param_D = '' THEN -- _Param_D	""/"UNDO"/"DELETE"
						SET @P.GUID = LEFT(CONCAT("scan_",MD5(UUID())), 38);
						SET @P.X = 'jestem';
						-- CALL zmpo_E_Let_Insert('IdnTowr', @P.GUID, _Key, _IdnTowr, _Ilosc, 0, '', '', '', '');
						INSERT IGNORE INTO `zmpo_e` (GUID, IdnNg, IdnTowr, Ilosc, spakowano)
							SELECT
								@P.GUID,
								_Key,
								_IdnTowr,
								IFNULL(_Ilosc, 0.0),
								IFNULL(_Ilosc, 0.0)
						ON DUPLICATE KEY UPDATE
							IdnTowr = _IdnTowr,
							spakowano = IFNULL(_Ilosc, Ilosc),
							Ilosc = IFNULL(_Ilosc, Ilosc)							
						;
					END IF;
				ELSE
					--	CALL zmpo_E_Let_Edit('IdnTowr', @P.GUID, _Key, _IdnTowr, _Ilosc, 0, '', '', '', '');
					IF _Param_D = 'PART' THEN
						
							SET 
								@_new_ilosc = _Ilosc,
								@_old_ilosc = IFNULL(
								(SELECT p.ilosc FROM zmpo_e p WHERE p.GUID = @P.GUID), 0),
								@_ilewopak = (SELECT po.ilewopakowaniu FROM zmpo_e po WHERE po.GUID = @P.GUID)
							;
							
					END IF;	
					
					IF _Param_D = '' THEN -- _Param_D	""/"UNDO"/"DELETE"
						UPDATE `zmpo_e` p
						SET
							p.IdnTowr = IFNULL(_IdnTowr, p.IdnTowr),
							p.Ilosc = IFNULL(_Ilosc, p.Ilosc),
							p.spakowano = IFNULL(_Ilosc, p.Ilosc)
						WHERE
							p.GUID = @P.GUID
						;
					ELSE	
					
						UPDATE `zmpo_e` p
						SET
							p.IdnTowr = IFNULL(_IdnTowr, p.IdnTowr),							
							-- bylo p.Ilosc = IF(_Param_D = 'DELETE', 0, IF(_Param_D = 'UNDO', p.iloscdo, p.ilosc)),
							p.Ilosc = CASE _Param_D WHEN 'KOR' THEN _Ilosc WHEN 'PART' THEN _Ilosc WHEN 'UNDO' THEN p.iloscdo WHEN 'DELETE' THEN p.ilosc  ELSE p.ilosc END,							
							p.iloscdo = CASE _Param_D WHEN 'KOR' THEN _Ilosc WHEN 'PART' THEN _Ilosc ELSE p.iloscdo END,
							p.spakowano = CASE _Param_D WHEN 'KOR' THEN _Ilosc WHEN 'PART' THEN _Ilosc WHEN 'UNDO' THEN 0 WHEN 'DELETE' THEN (-1*p.iloscdo)  ELSE p.spakowano END
						WHERE
							p.GUID = @P.GUID
						;
						
						IF _Param_D = 'PART' THEN						
							SET @_new_GUID = UUID(),
							@ilosc =  @_old_ilosc - @_new_ilosc
							;					
							CALL zmpo_E_Let_Insert('Kopiuj.1.pozycje', @_new_GUID, '', '', @ilosc, 0, @P.GUID, '', '', ''); -- multiplikowanie pozycji
							 UPDATE `zmpo_e` p
							 SET
								p.spakowano = 0,
								p.iloscdo = @ilosc
								
							 WHERE
								p.GUID = @_new_GUID						
						 ;							
						END IF;	
					END IF;					
					
				END IF;
				
				CALL C_HT_Mag_Tools('PAKOWANIE.SELECT.p', 'ZM', _Key, @P.GUID, @_new_GUID, '', '');				
			ELSE
				SET @X = '';
			END IF;
			
		END IF;	-- IF _MODE = 'PAKOWANIE.EDIT.INSERT.p' THEN

		IF _MODE = 'PAKOWANIE.APPLY.CLEAR' THEN
		/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
			'PAKOWANIE.APPLY.CLEAR'
				Zapis ze statusem spakowane lub nie
				
				Parametry
					_Key		GUID zamowienia lub WZ
					_FROM		"ZAM" lub "WZ"/"OP"
					_Param_A	Pakowanie lub -1 zostaw jak byl
					_Param_B - uwagi
				CALL C_HT_Mag_Tools('PAKOWANIE.APPLY', 'ZM', 'ZamGUID', '-1', 'uwagii', '', '');				
				CALL C_HT_Mag_Tools('PAKOWANIE.APPLY', 'OP', 'IdnOper', '', 'uwagii', '', '');				
		------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
			CALL _Session_Refresh_Variables('', '', '');
			IF _FROM = 'ZM' THEN
				SET @P.X = 'app1';	
				UPDATE `zmng_e` n 
				SET
					n.Status = IF(_Param_A <= 0, n.Status, 32), --	32 to CZM_Status_PAKOWANE         = $0020;
					n.uwagi = _Param_B
				WHERE
					n.GUID = _Key
				;
		                SET @P.X = 'app2';	
				CALL zmng_E_Let('ApplyAndClear', _Key, '', '');
			ELSE
				UPDATE `opng_e` n
				SET
					n.Status = IF(_Param_A <= 0, n.Status, 16)	--	16 to COPNG_Status_PAKOWANA         = $0010;
				WHERE
					n.GUID = _Key
				;
				CALL opng_E_Let('ApplyAndClear', _Key, '', '');
			END IF;
		END IF;	-- IF _MODE = 'PAKOWANIE.APPLY.CLEAR' THEN
		
		IF _MODE = 'PAKOWANIE.APPLY' THEN
		/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
			'PAKOWANIE.APPLY'
				Zapis				
				Parametry
					_Key		GUID zamowienia lub WZ
					_FROM		"ZAM" lub "WZ"/"OP"

				CALL C_HT_Mag_Tools('PAKOWANIE.APPLY', 'ZM', 'ZamGUID', '', '', '', '');				
				CALL C_HT_Mag_Tools('PAKOWANIE.APPLY', 'OP', 'IdnOper', '', '', '', '');				
		------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
			CALL _Session_Refresh_Variables('', '', '');
			IF _FROM = 'ZM' THEN
				CALL zmng_E_Let('Apply', _Key, '', '');
			ELSE
				
				CALL opng_E_Let('Apply', _Key, '', '');
			END IF;
		END IF;	-- IF _MODE = 'PAKOWANIE.APPLY' THEN
		
		
		IF _MODE = 'PAKOWANIE.SPEC_PRZEW' THEN
		/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
			'PAKOWANIE.SPEC_PRZEW'
				Spcyfikacja przewozowa
				
				Parametry
					_Key		GUID zamowienia 	
			    CALL C_HT_Mag_Tools('PAKOWANIE.SPEC_PRZEW', '', 'GUID', '', '', '', '');								
		------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
		SELECT
		KC0.Valuex AS numerUN, KC2.Valuex AS nalepka,
		KC3.Valuex AS GrupaPakowania, 
		-- KC4.Valuex as opakowanie,
		KC9.Valuex AS opakowanie,
		t.info2 AS info2,
		'w sztukach przesylek' AS tekst1,
		SUM(IF(wyroznik='U',1,CEIL(o.ilosc/o.ilewopakowaniu))) AS opakowan,
		SUM(o.waga + IF(wyroznik='U',1,CEIL(o.ilosc/o.ilewopakowaniu))*t.opak_waga_metal) AS waga_brutto,
		SUM(IF(wyroznik='U',1,CEIL(o.ilosc/o.ilewopakowaniu))*t.opak_waga_metal) AS waga_opak,
		SUM(o.waga) AS waga_tow,
		SUM(t.waga*o.ilosc) AS waga_tow2,
		SUM(o.ilosc*t.objetosc) AS objetosc,
		'AD' AS tekst2
		FROM zmpo o
		INNER JOIN TowrNg t ON t.GUID = o.idntowr
		INNER JOIN zmng n ON n.guid=o.idnng
		LEFT JOIN katcols KC0 ON t.katcol0 = KC0.klucz AND KC0.colnr = 1 AND KC0.typ =1 
		LEFT JOIN katcols KC2 ON t.katcol2 = KC2.klucz AND KC2.colnr = 3 AND KC2.typ =1 
		LEFT JOIN katcols KC3 ON t.katcol3 = KC3.klucz AND KC3.colnr = 4 AND KC3.typ =1 
		LEFT JOIN katcols KC4 ON t.katcol4 = KC4.klucz AND KC4.colnr = 5 AND KC4.typ =1 
		LEFT JOIN katcols KC9 ON o.kat9 = KC9.klucz AND KC9.colnr = 5 AND KC9.typ =1
		WHERE n.GUID = _Key AND o.spakowano > 0
		GROUP BY KC0.Valuex, KC2.Valuex, KC3.Valuex, KC9.Valuex,t.info2
		ORDER BY KC0.Valuex, KC2.Valuex, KC3.Valuex, KC9.Valuex,t.info2; 

		END IF;

		IF _MODE = 'PAKOWANIE.EDIT.OPAK.p' THEN
			SET @P.X = '';
			IF _FROM = 'ZM' THEN
				SET 
					@P.GUID = IFNULL(_Param_A, ''),
					_Ilewopakowaniu = _Param_B, 
					_Ilosc = _Param_C, -- to nie ilosc ale nie chce wprorwadzac kolejnej zmiennej
					@_new_GUID = ''
				;
				
				UPDATE `zmpo_e` p
					SET
						p.kat9 = IFNULL(_Ilosc, 0),
						p.ilewopakowaniu = IFNULL(_Ilewopakowaniu,0)
					WHERE
						p.GUID = @P.GUID
				;
				
				SELECT p.kat9 FROM `zmpo_e` p  WHERE p.GUID = @P.GUID;

			ELSE
				SET @X = '';
			END IF;
		END IF;		
		
		IF _MODE = 'PAKOWANIE.LISTA.OPAKOWAN' THEN
			SELECT KC9.klucz,KC9.param1,KC9.valuex FROM  katcols KC9 WHERE  KC9.colnr = 5 AND KC9.typ =1 AND KC9.nieaktywna=0;
		END IF;		
		

		IF _MODE LIKE 'PAKOWANIE.SEARCH.TOWR.%' THEN
		/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
			'PAKOWANIE.SEARCH.TOWR'
				Spcyfikacja przewozowa
				
				Parametry
					_Key		IDN pozycji zam.
			    CALL C_HT_Mag_Tools('PAKOWANIE.SEARCH.TOWR.INIT', '', '123456', '', '', '', '');								
				CALL C_HT_Mag_Tools('PAKOWANIE.SEARCH.TOWR.select.INFO', '', '', '', '', '', '');								
				CALL C_HT_Mag_Tools('PAKOWANIE.SEARCH.TOWR.select.PWRW', '', '', '', '', '', '');								
				CALL C_HT_Mag_Tools('PAKOWANIE.SEARCH.TOWR.select.REALIZACJA', '', '', '', '', '', '');								
				CALL C_HT_Mag_Tools('PAKOWANIE.SEARCH.TOWR.CLEAR', '', '', '', '', '', '');								
				
		------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
			
			IF _MODE = 'PAKOWANIE.SEARCH.TOWR.INIT' THEN
				
				DROP TEMPORARY TABLE IF EXISTS `t_search.from.idn.zmpo`;
				CREATE TEMPORARY TABLE `t_search.from.idn.zmpo`
					SELECT
						p.GUID, p.IdnNg,
						n.Nrzamw, n.datawystaw, p.terminrealizacji, 
						k.Nazwa AS KontrNazwa,
						zn.GUID AS GUID_ZleceniaProd,
						zn.Nrzamw AS Nr_ZleceniaProd, zn.datawystaw AS Datawystaw_ZleceniaProd 
					FROM `zmpo` p
					INNER JOIN `zmng` n ON n.GUID = p.IdnNg
					LEFT JOIN `kontrah` k ON k.GUID = n.KontrGUID
					LEFT JOIN `zmpo` zp ON zp.zamowienieGUID  = p.GUID
					LEFT JOIN `zmng` zn ON zn.GUID = zp.IdnNg
					WHERE
						p.IDN = _Key
				;
			END IF;	-- IF _MODE = 'PAKOWANIE.SEARCH.TOWR.INIT'
			
			IF _MODE = 'PAKOWANIE.SEARCH.TOWR.select.INFO' THEN
				SELECT * FROM `t_search.from.idn.zmpo`;	
			END IF;	-- IF _MODE = 'PAKOWANIE.SEARCH.TOWR.select.INFO'
			
			IF _MODE = 'PAKOWANIE.SEARCH.TOWR.select.PWRW' THEN
				SELECT 
					pwrw_n.NrDokMag AS Nr_PWRW, pwrw_n.datawystaw AS Datawystaw_PWRW 
				FROM `t_search.from.idn.zmpo` i
				LEFT JOIN `zmpo` zp ON zp.IdnNg = i.GUID_ZleceniaProd
				LEFT JOIN `oppo` pwrw_p ON pwrw_p.GUIDzm = zp.GUID
				LEFT JOIN `opng` pwrw_n ON pwrw_n.GUID = pwrw_p.IdnOper
				;	
			END IF;	-- IF _MODE = 'PAKOWANIE.SEARCH.TOWR.select.PWRW'
			
			IF _MODE = 'PAKOWANIE.SEARCH.TOWR.select.REALIZACJA' THEN
				SELECT 
					wzfv_n.NrDokMag AS Nr_Mag, wzfv_n.NrDokFin AS Nr_Fin, wzfv_n.datawystaw AS Datawystaw
				FROM `t_search.from.idn.zmpo` i
				LEFT JOIN `oppo` wzfv_p ON wzfv_p.GUIDzm = i.GUID
				LEFT JOIN `opng` wzfv_n ON wzfv_n.GUID = wzfv_p.IdnOper
				GROUP BY wzfv_n.GUID
				;	
			END IF;	-- IF _MODE = 'PAKOWANIE.SEARCH.TOWR.select.REALIZACJA'
			
			IF _MODE = 'PAKOWANIE.SEARCH.TOWR.select.CLEAR' THEN
				DROP TEMPORARY TABLE IF EXISTS `t_search.from.idn.zmpo`;
			END IF;	-- IF _MODE = 'PAKOWANIE.SEARCH.TOWR.CLEAR'
			
		END IF;	-- IF _MODE LIKE 'PAKOWANIE.SEARCH.TOWR.%' THEN
		
	END IF;	-- IF _MODE LIKE 'PAKOWANIE.%' THEN
	
END$$


DROP PROCEDURE IF EXISTS `C_HT_Inwentaryzacja_Tools`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `C_HT_Inwentaryzacja_Tools`(
	IN _MODE VARCHAR(250),
	IN _GUID VARCHAR(38),
	IN _IdnOper VARCHAR(38),
	IN _IdnTowr VARCHAR(38),
	IN _Ilosc DECIMAL(16,4),
	IN _Param_A VARCHAR(50),	
	IN _Param_B VARCHAR(50),	
	IN _Param_C VARCHAR(50),	
	IN _Param_D TEXT
)
S_C_HT_Inwentaryzacja_Tools: BEGIN 
	DECLARE _oppo_GUID, _f_IdnTowr, _UserGUID, _KontrGUID, _OsobaGUID, _AreaGUID, _GUID_dostawy VARCHAR(38);
	-- DECLARE _Paleta_IdnTowr VARCHAR(38) DEFAULT 'NEXOP7310100020096';	--	dla izohanu
	-- DECLARE _Archiwum, _Is_Archiwum, _Is_Do_Zatw, _Is_ZatwierdzonaPoz BOOLEAN DEFAULT FALSE;
	-- DECLARE _DateView, _DataWystaw, _DataDo, _DataOd DATE;
	DECLARE _DateView, _DataDo, _DataOd, _DataWplywu_DO DATE;
	DECLARE _Archiwum, _Is_Archiwum, _Is_Do_Zatw, _Is_ZatwierdzonaPoz BOOLEAN DEFAULT FALSE;
	-- DECLARE _Idn_opng, _rodzaj, _rodzaj_typ, _ZMagazynu, _DoMagazynu, _Idn_zmpo_ZlecProd, _Jedn_Idx, _Ile_Palet INTEGER;
	DECLARE _Jedn_Idx, _rodzaj, _rodzaj_typ, _ZMagazynu, _DoMagazynu, _Magazynu_INW INTEGER;
	DECLARE _Ile, _Spakowano, _Zlecono, _DoRealizacji, _opakowanie_zbiorcze_d DECIMAL(16, 2) DEFAULT 0;
	-- DECLARE _CenaNet DECIMAL(16, 4) DEFAULT 0;
	DECLARE _Scan_IDN, _NrSeryjny VARCHAR(100) DEFAULT '';
	DECLARE _SQLText, _SQLText_WHERE, _MSG MEDIUMTEXT;
	DECLARE _Only_Diff BOOLEAN;
	
	DO _Birth_System();	--	tera ro tutaj!!! wszystkie zmiene sa aktywowane/pobierane
	SET @_MODE.2.0 = NOT(@session.globals.Owner IN ('IZOHAN'));
		IF _MODE LIKE 'Inwentaryzacja.SELECT.2.0.%' THEN
		/* *************************************************************************************************************************************************************
			SELECT Nowa inwentaryzacja
			CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.SELECT.2.0.MOB.Lista', '', '', '', 0, '', '', '', '');	
			CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.SELECT.2.0.MOB.Lista', '', '', '', 0, '', '', '', '');
		**************************************************************************************************************************************************************/
			IF _MODE LIKE 'Inwentaryzacja.SELECT.2.0.MOB.Lista%' THEN
				SET
					_Is_Archiwum = (_GUID = 'Archiwum'),
					_Is_Do_Zatw = (_GUID = 'DoZatw')
				;
							set @_Is_Archiwum = _Is_Archiwum, @_Is_Do_Zatw = _Is_Do_Zatw;
				DROP TEMPORARY TABLE IF EXISTS `t_mob_inw`;	
				CREATE TEMPORARY TABLE `t_mob_inw` (
				  `GUID` VARCHAR(38) NOT NULL DEFAULT '',
				  `World` VARCHAR(1) CHARACTER SET utf8 NOT NULL,
				  `Is_Lock` INT(1) NOT NULL,
				  `Rodzaj` INT(11) NOT NULL DEFAULT 0,
				  `Rodzaj_typ` INT(11) DEFAULT 0,
				  `Status` INT(11) NOT NULL DEFAULT 0,
				  `Tymczasowa` INT(11) NOT NULL DEFAULT 0,
				  `Datawystaw` DATE DEFAULT NULL,
				  `Datawplywu` DATE DEFAULT NULL,
				  `NrdokMag` VARCHAR(20) DEFAULT NULL,
				  `Idn` INT(11) NOT NULL DEFAULT 0,
				  `DoMagazynu` INT(11) DEFAULT NULL,
				  `C_Pozycji` INT(11) DEFAULT NULL,
				  `C_Spakowano` INT(11) DEFAULT NULL,
				  `C_exported` INT(11) DEFAULT NULL,
				  PRIMARY KEY GUID(GUID)
				)
				;
				TRUNCATE `t_mob_inw`;
				-- create TEMPORARY TABLE `t_mob_inw`	
				INSERT IGNORE INTO `t_mob_inw`
					SELECT
						ninw.GUID,
						'M' AS World,
						IFNULL((ss.log_USER_GUID <> @session.INFO.User_GUID), FALSE) AS Is_Lock,
						ninw.Rodzaj,
						ninw.Rodzaj_typ,
						ninw.Status,
						ninw.Tymczasowa,
						ninw.Datawystaw,
						ninw.Datawplywu,
						ninw.NrdokMag,
						ninw.Idn,
						-- CONCAT(ot.Opis, ' ', IFNULL(ninw.NrdokMag, ''), ' (', ninw.Idn,')') AS Opis,
						GREATEST(ninw.ZMagazynu, ninw.DoMagazynu) AS DoMagazynu,
						-- ninw.IlePoz
						-- , (SELECT COUNT(*) FROM oppo WHERE idnoper = ninw.GUID) AS IlePozycji 
						COUNT(p.GUID) AS C_Pozycji,
						SUM(p.Spakowano > 0) AS C_Spakowano,
						SUM(p.exported > 0) AS C_exported
						
					FROM `opng_m` ninw 
					LEFT JOIN `oppo_m` p ON p.IdnOper = ninw.GUID AND p.transza_zamow = 0
					LEFT JOIN `_sys_locks` lck ON lck.Rec_ID = ninw.GUID AND lck.Rec_TableName = "opng_m" 
					LEFT JOIN `_sys_db_logons` ss ON ss.GUID = lck.LockSession
					WHERE
						ninw.Deleted = 0
						AND
						ninw.Rodzaj = 39
						AND
						IF(_Is_Archiwum, ninw.Tymczasowa = 0, ninw.Tymczasowa != 0)
						AND
						IF(_Is_Do_Zatw, 
							ninw.Tymczasowa = 1 AND ninw.Status = 1,
							ninw.Tymczasowa = 1 AND ninw.Status = 0
						)
						AND 
						ninw.Datawystaw BETWEEN (CURRENT_DATE() - INTERVAL 17 DAY) AND (CURRENT_DATE() + INTERVAL 1 DAY)
					GROUP BY ninw.GUID
				;
					
				INSERT IGNORE INTO `t_mob_inw`
					SELECT
						ninw.GUID,
						'R' AS World,
						FALSE AS Is_Lock,
						ninw.Rodzaj,
						ninw.Rodzaj_typ,
						ninw.Status,
						ninw.Tymczasowa,
						ninw.Datawystaw,
						ninw.Datawplywu,
						ninw.NrdokMag,
						ninw.Idn,
						-- CONCAT(ot.Opis, ' ', IFNULL(ninw.NrdokMag, ''), ' (', ninw.Idn,')') AS Opis,
						GREATEST(ninw.ZMagazynu, ninw.DoMagazynu) AS DoMagazynu,
						-- ninw.IlePoz
						-- , (SELECT COUNT(*) FROM oppo WHERE idnoper = ninw.GUID) AS IlePozycji 
						COUNT(p.GUID) AS C_Pozycji,
						SUM(p.Spakowano > 0) AS C_Spakowano,
						SUM(p.exported > 0) AS C_exported
						
					FROM `opng` ninw 
					LEFT JOIN `oppo` p ON p.IdnOper = ninw.GUID AND p.transza_zamow = 0
					WHERE
						ninw.Deleted = 0
						AND
						ninw.Rodzaj = 39
						AND
						IF(_Is_Archiwum, ninw.Tymczasowa = 0, ninw.Tymczasowa != 0)
						AND
						IF(_Is_Do_Zatw, 
							ninw.Tymczasowa = 1 AND ninw.Status = 1,
							ninw.Tymczasowa = 1 AND ninw.Status = 0
						)
						AND 
						ninw.Datawystaw BETWEEN (CURRENT_DATE() - INTERVAL 17 DAY) AND (CURRENT_DATE() + INTERVAL 1 DAY)
					GROUP BY ninw.GUID
				;				
				--	SELECT * FROM `t_mob_inw`;
					
				SELECT 
					World,
					CONCAT_WS(', ',
						ot.Opis, 
						NULLIF(ninw.NrdokMag, ''), 
						CONCAT(' (', NULLIF(ninw.Idn, 0), ')'),
						_Varstr(CONCAT('\n', _Fmt_DateTime(ninw.Datawystaw, 'DDD D MMM YYYY@D@Y'))),
						CONCAT('MAG: ', ninw.DoMagazynu)
					) AS Descr_Long,
					ninw.GUID,
					ninw.Rodzaj,
					ninw.Rodzaj_typ,
					ninw.Datawplywu,
					ninw.DoMagazynu,		--	!!!!!!!!!!!!! Jak Wroci Grzes to dac tu normalnie magazyny
					m.Opis AS Magazyn,
					(ninw.Tymczasowa = 1 AND ninw.Status = 1) AS a,
					(ninw.Tymczasowa = 1 AND ninw.Status = 0) AS b,
					ninw.Status,
					ninw.Tymczasowa,
					ninw.C_Pozycji,
					ninw.C_Spakowano,
					ninw.C_exported
					
					 
				FROM `t_mob_inw` ninw
				INNER JOIN operdoc_typy ot ON ot.Rodzaj = ninw.Rodzaj AND ot.typ = ninw.Rodzaj_typ
				LEFT JOIN `Magazyny` m ON m.IdnMagazynu = ninw.DoMagazynu
				WHERE
					TRUE
				;
				

			END IF;
			
			IF _MODE LIKE 'Inwentaryzacja.SELECT.2.0.Lista%' THEN
				SET
					_Is_Archiwum = (_GUID = 'Archiwum'),
					_Is_Do_Zatw = (_GUID = 'DoZatw')
				;
				SET
					_DataOd = IF(_Is_Archiwum, DATE(_Param_A), CURRENT_DATE() - INTERVAL 1 YEAR),
					_DataDo = IF(_Is_Archiwum, DATE(_Param_B), CURRENT_DATE() + INTERVAL 1 MONTH)
				;
				set @A = 'aaa';
				SET _SQLText_WHERE = "
					ninw.Deleted = 0
					AND
					ninw.Rodzaj = 39
					AND
					#Zakladka#
					AND ninw.Datawystaw BETWEEN '#_DataOd#' AND '#_DataDo#'
				"
				;
				set @_SQLText_WHERE1 = _SQLText_WHERE;
				SET _SQLText_WHERE = REPLACE(_SQLText_WHERE, '#_DataOd#', _DataOd);
				SET _SQLText_WHERE = REPLACE(_SQLText_WHERE, '#_DataDo#', _DataDo);
				
				SET _SQLText_WHERE = REPLACE(_SQLText_WHERE, '#Zakladka#', 
					IF(_Is_Archiwum, 
						'ninw.Tymczasowa = 0', 
						IF(_Is_Do_Zatw, 
							'ninw.Tymczasowa = 1 AND ninw.Status = 1',
							'ninw.Tymczasowa = 1 AND ninw.Status = 0'
						)
					)
				);
					
				
				set @_SQLText_WHERE2 = _SQLText_WHERE;
				
				IF _MODE = 'WWW.Inwent.SELECT.Lista' THEN

					SET _SQLText = "
					SELECT
						ninw.GUID,
						ninw.Rodzaj,
						ninw.Rodzaj_typ,
						ninw.Datawplywu,
						ninw.Status,
						ninw.Tymczasowa,
						-- bylo ot.Opis,
						CONCAT(ot.Opis, ' ', IFNULL(ninw.NrdokMag, ''), ' (', ninw.Idn,')') AS Opis,
						-- ninw.DoMagazynu,
						GREATEST(ninw.ZMagazynu, ninw.DoMagazynu) AS DoMagazynu,		--	!!!!!!!!!!!!! Jak Wroci Grzes to dac tu normalnie magazyny
						m.Opis AS Magazyn,
						ninw.IlePoz
						-- , (SELECT COUNT(*) FROM oppo WHERE idnoper = ninw.GUID) AS IlePozycji 
						, COUNT(p.GUID) AS IlePozycji
						, SUM(p.Spakowano > 0) AS IleZinwentaryzowano
						, ROUND(100*SUM(p.Spakowano > 0)/COUNT(p.GUID), 2) AS IleZinwentaryzowanoProc
						, (MAX(IFNULL(p.exported, 0)) = 0) AS IS_Editable	--	zapytaj Grzesia czy i jak wykorzysyuje to pole IS_Editable (www i skanery)
					FROM `opng` ninw 
					INNER JOIN operdoc_typy ot ON ot.Rodzaj = ninw.Rodzaj AND ot.typ = ninw.Rodzaj_typ
					LEFT JOIN `Magazyny` m ON m.IdnMagazynu = GREATEST(ninw.ZMagazynu, ninw.DoMagazynu)
					LEFT JOIN `oppo` p ON p.IdnOper = ninw.GUID AND p.transza_zamow = 0
					WHERE
						#WHERE#
					GROUP BY ninw.GUID
					ORDER BY ninw.Datawystaw, ninw.Idn
					;
					"
					;
					
				ELSEIF _MODE = 'WWW.Inwent.SELECT.Lista.AGG' THEN
					SET _SQLText = "
					SELECT
						COUNT(*) AS Ile
					FROM `opng` ninw 
					INNER JOIN operdoc_typy ot ON ot.Rodzaj = ninw.Rodzaj AND ot.typ = ninw.Rodzaj_typ
					LEFT JOIN `Magazyny` m ON m.IdnMagazynu = ninw.ZMagazynu -- ninw.DoMagazynu
					WHERE
						#WHERE#
					;
					"
					;
				END IF;
				
				SET _SQLText = REPLACE(_SQLText, '#WHERE#', _SQLText_WHERE);
				-- SET _SQLText = REPLACE(_SQLText, '#_IdnNg#', QUOTE(_IdnNg));
				-- SET _SQLText = REPLACE(_SQLText, '#LEFT JOIN `planprodng` n ON n.GUID = pp.IdnNg#', '');
				SET @_SQLText = _SQLText;
				CALL _ExecuteCmd(_SQLText, @Error);
			END IF;
				
		END IF;
	
	
	IF _MODE LIKE 'Inwentaryzacja.REC.%' THEN
	/* *************************************************************************************************************************************************************
		Nowa inwentaryzacja
		CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.REC.New.2.0', '', 'IdnOper', PodRodzaj, 0, 'Magazyn', '_DataWplywu_DO', 'User', 'WHERE');	
		dodawanie pozycji
		
		CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.REC.New.2.0.Insert.to.oppo_m', '', '_IdnOper', _IdnTowr, 0, 'Magazyn', '_DataWplywu_DO', 'User', 'WHERE');	
		
		CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.REC.New', '', 'IdnOper', PodRodzaj, 0, 'Magazyn', '_DataWplywu_DO', 'User', 'WHERE');	
		CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.REC.New', '', _IdnOper, _rodzaj_typ, 0, _ZMagazynu, _DataWplywu_DO, _UserGUID, _SQLText_WHERE);	
		_IdnOper	IdnOper
		_IdnTowr	Podrodzaj
		_Param_A	Magazyn
		_Param_B	_DataWplywu_DO
		_Param_C	_UserGUID
		_Param_D	_SQLText_WHERE
		
		Usuwanie nowej, tymczasowej inwentaryzacji
		CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.REC.DELETE', '', 'IdnOper', '', 0, '', '', 'User', '');	
		
		Zamykanie inwentaryzacji - więcej nie będziemy wprowadzać danych
		dodtaje status = 1
		CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.REC.END', '', 'IdnOper', '', 0, '', '', '', '');	
		_IdnOper		IdnOper
		
		
		Nazwa _MODE jest durna ale zostaje bo jest wjuz w portalu
		Jest to Zatwierdzanie inwentaryzacji OSTATECZNE I ODTYMCZASOWIENIE
		Ten mode jest w portalu wołany wraz z poprzedzającym ja modem _MODE = 'Inwentaryzacja.REC.END'
		CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.REC.Zamknij', '', 'IdnOper', '', 0, '', '', 'User', '');	
		_IdnOper	IdnOper
		_Param_C	_UserGUID
	**************************************************************************************************************************************************************/
		SET @.M.MSG := 'OK', @.M.ERR := FALSE;

		IF _MODE = 'Inwentaryzacja.REC.New.2.0.Insert.to.oppo_m' THEN
			SET _SQLText_WHERE = CONCAT_WS(' AND ', 'TRUE', NULLIF(_Param_D, ''));	--	WHERE wejsciowe - gdy brak to pozostaje "TRUE"
			SELECT 
				n.DataWplywu,
				n.ZMagazynu, n.DoMagazynu
			INTO
				_DataWplywu_DO,
				_ZMagazynu, _DoMagazynu
			FROM `opng_m` n
			WHERE
				n.GUID = _IdnOper
			;
			
			IF EXISTS(SELECT p.IdnTowr FROM `oppo_m` p WHERE p.IdnOper = _IdnOper AND p.IdnTowr = _IdnTowr) THEN
				LEAVE S_C_HT_Inwentaryzacja_Tools;
			END IF;
		--	Magazy do where	
			SET _SQLText_WHERE = CONCAT_WS(' AND ', _SQLText_WHERE, 'o.magazyn = #magazyn# ');
		--	Towar (o ile jest np. dodawanie towaru ad hoc) do where	
			SET _SQLText_WHERE = CONCAT_WS(' AND ', _SQLText_WHERE, CONCAT('o.idntowr = ', CONCAT('"', NULLIF(_IdnTowr, ''), '"')));
			
			IF(@session.globals.Owner = 'IZOHAN') THEN
				SET _SQLText_WHERE = CONCAT_WS(' AND ', _SQLText_WHERE, '(t.promocja_status != 2)');
				-- SET _SQLText_WHERE = CONCAT(_SQLText_WHERE, ' AND (t.promocja_status != 2)');
			END IF; 
			
			SET _SQLText_WHERE = REPLACE(_SQLText_WHERE, ' #magazyn#', GREATEST(_ZMagazynu, _DoMagazynu));
			SET @_DoMagazynu2 = _ZMagazynu, @_SQLText_WHERE = _SQLText_WHERE;
			
			
		--	najpierw dane wej.
			SET
				@Init_Inwentaryzacja.DataWplywu_DO = DATE(_DataWplywu_DO),
				@Init_Inwentaryzacja.DataWplywu_OD = IFNULL(
					(
					SELECT DATE(MAX(DataWplywu)) AS DataWplywu FROM `oppo` WHERE Rodzaj = 51 
					), '1967-04-17'
				),
				@.Uwzgledniaj.IN_NrSeryjny = IF(@session.globals.Owner = 'DOS', TRUE, FALSE)
			;
			-- SET @.Uwzgledniaj.IN_NrSeryjny = IF(@session.globals.Owner = 'DOS', TRUE, FALSE);
			DROP TEMPORARY TABLE IF EXISTS `t_Init_Inwentaryzacja`;
		--	Kreuj ttable	
			SET _SQLText = "
			CREATE TEMPORARY TABLE `t_Init_Inwentaryzacja`
				SELECT 
					#_IdnOper# AS IdnOper,
					o.idntowr, 
					-- bylo IF(m.wybor_dostawy > 0, IF(o.przychod, p.GUID, p.GUID_Dostawy), '') AS IN_GUID_Dostawy,
					IF(@session.globals.Owner = 'IZOHAN', 
						IF(m.wybor_dostawy > 0, 
							IF(o.przychod AND p.GUID_Dostawy = '', 
								'', 
								-- p.GUID_Dostawy
								IF(
								IFNULL((SELECT zap.Rodzaj FROM `zmpo` zap WHERE zap.GUID = p.GUID_dostawy), IF(EXISTS(SELECT kp.GUID FROM `oppo` kp WHERE kp.GUID = p.GUID_dostawy), 73, 0)) = 73, 
									p.GUID_dostawy,
									''
								)
							), 
							''
						) ,
						IF(m.wybor_dostawy > 0, IF(o.przychod, p.GUID, p.GUID_Dostawy), '')
					) AS IN_GUID_Dostawy,
					IF(@.Uwzgledniaj.IN_NrSeryjny, IFNULL(p.NrSeryjny, ''), '') AS IN_NrSeryjny,
					SUM(o.ilosc) AS ilosc, 
					IFNULL(t.cenazkpnet, 0) AS cena_zakupu, 
					IFNULL(t.cenaewid, 0) AS cenaewid,
					t.nazwa AS nazwa, 
					t.symbol AS symbol 
				FROM `oppo_mag` o 
				INNER JOIN `TowrNg` t ON t.guid = o.idntowr 
				INNER JOIN `oppo` p ON p.GUID = o.GUID
				INNER JOIN `Magazyny` m ON m.IdnMagazynu = o.magazyn
				LEFT JOIN `zmpo` zp ON zp.GUID = p.GUID_Dostawy
				WHERE 
					o.datawplywu BETWEEN #DataWplywu_OD# AND #DataWplywu_DO#
					AND o.tymczasowa = 0
					AND #WHERE#
				GROUP BY o.idntowr, IN_GUID_Dostawy, IN_NrSeryjny
			;
			"
			;
			SET @SQLText = _SQLText;
			SET @ADSQLText = @SQLText;
			SET _SQLText = REPLACE(_SQLText, '#_IdnOper#', QUOTE(_IdnOper));
			SET _SQLText = REPLACE(_SQLText, '#DataWplywu_OD#', QUOTE(DATE(@Init_Inwentaryzacja.DataWplywu_OD)));
			SET _SQLText = REPLACE(_SQLText, '#DataWplywu_DO#', QUOTE(DATE(@Init_Inwentaryzacja.DataWplywu_DO)));

			-- SET _SQLText = REPLACE(_SQLText, '#WHERE#', IF(_SQLText_WHERE != '', _SQLText_WHERE, 'TRUE'));
			SET _SQLText = REPLACE(_SQLText, '#WHERE#', _SQLText_WHERE);
			SET @SQLText = _SQLText;
			SET @InwentSQLText = @SQLText;
			-- select @SQLText;
			CALL _ExecuteCmd(_SQLText, @Error);
			-- select * from `t_Init_Inwentaryzacja`;
		--	Wstaw do `oppo_e`	
			INSERT IGNORE INTO `oppo_m`
			(GUID, IdnOper, IdnTowr, GUID_Dostawy, NrSeryjny, exported, Ilosc, iloscbylo, iloscjest, cenanet, towrnazwa, towrsymb)
				SELECT 	
					-- CONCAT('INW', MD5(CONCAT(t.IdnOper, t.IdnTowr, t.IN_GUID_Dostawy, t.IN_NrSeryjny))) AS GUID,
					_Get_GUID_xxx('INW.p.GUID', t.IdnOper, t.IdnTowr, t.IN_GUID_Dostawy, t.IN_NrSeryjny, '', '') AS GUID,
					t.IdnOper,
					t.IdnTowr,
					t.IN_GUID_Dostawy AS GUID_Dostawy,
					t.IN_NrSeryjny AS NrSeryjny,
					IF(n.Rodzaj_typ = 0, 
					--	Pełna od sciany do sciany
						1, 
					--	Lista inwent.
						IF(@_MODE.2.0, 
							--	dlaczego??? 1, 
							IF(@session.globals.Owner = 'WEGA', 
								0, 	-- dla WEGI i ... 
								1	-- było tak .. ale po co?
							),
							0
						)
					) AS exported,
					0 AS ilosc,
					t.ilosc AS iloscbylo, 
					t.ilosc AS iloscjest,
					IF(IFNULL(@session.HT.IR.PrzypisywacCenyEwidDoINWENT, FALSE),
						t.cenaewid,
						t.cena_zakupu 
					) AS cenanet,
					t.nazwa AS towrnazwa, 
					-- ze wzgledu na trigger towrsymb musi byc pusty
					-- t.symbol AS towrsymb
					'' AS towrsymb
				FROM `t_Init_Inwentaryzacja` t
				INNER JOIN `opng_m` n ON n.GUID = _IdnOper
				;
			-- DROP TEMPORARY TABLE IF EXISTS `t_Init_Inwentaryzacja`;
			
			
			UPDATE `oppo_m` pinw
			SET
				pinw.DataWplywu = _DataWplywu_DO,
				pinw.transza_zamow = 
					IF(pinw.Rodzaj_typ != 0,
						IF(@session.globals.Owner = 'IZOHAN', 
							1, 	--	1 oznacza że pozycja nie bierze udzialu w inwentaryzacji (domyslnie wszystkie sa wykluczone dla inwentaryzacji z lista 
							0
						),
						0	--	0 oznacza ze pozycja bierze udzial w inwentaruzacji - dla pełanej (od sciany do sciany) wszystkie sa wlaczone
					)
			WHERE
				pinw.IdnOper = _IdnOper
			;
			
			CALL C_HT_OPZM('PO<-POZYCJE_CENYRABAT', '', 'OP', 'M', _IdnOper, '', '', '', '', '', @Params);
			
			CALL C_HT_OPZM('PO.POST', '', 'OP', 'M', _IdnOper, '', '', '', '', '', @Params);
			CALL C_HT_OPZM('NG.POST', '', 'OP', 'M', _IdnOper, '', '', '', '', '', @Params);
		END IF;
		
		IF _MODE = 'Inwentaryzacja.REC.New.2.0' THEN
			SET
				_rodzaj_typ = _IdnTowr,
				_ZMagazynu = _Param_A,
				_DoMagazynu = _Param_A,
				_DataWplywu_DO = DATE(IFNULL(NULLIF(_Param_B, ''), CURRENT_DATE())),
				_UserGUID = _Param_C,
				_SQLText_WHERE = IF(IFNULL(_Param_D, '') = '', 'TRUE', _Param_D),
				@_KontrGUID = '',
				@_Tymczasowa = 1,
				@_OsobaGUID = '',
				@_AreaGUID = ''
			;
			SET _IdnOper = IFNULL(NULLIF(_IdnOper, ''), _Get_GUID_xxx('INW.n.GUID', _ZMagazynu, '', '', '', '', ''));
			SET @_Last_IdnOper = _IdnOper;
			SET
				@Params = 
				CONCAT_WS('&', 
					'Rodzaj=39', 
					CONCAT('Rodzaj_typ=', _Rodzaj_typ),
					'AutoNum=1', 
					-- CONCAT('KontrGUID=', mp.KontrGUID), 
					-- CONCAT('datawplywu=', _DataWplywu_DO), 
					CONCAT('zmagazynu=', _ZMagazynu),
					CONCAT('domagazynu=', _DoMagazynu), 
					CONCAT('Tymczasowa=', @_Tymczasowa), 
					'&')
			;
			CALL C_HT_OPZM('INIT.NEW', '', 'OP', 'M', _IdnOper, '', '', '', '', '', @Params);
			CALL C_HT_OPZM('Start', '', 'OP', 'M', _IdnOper, '', '', '', '', '', @Params);
			
			
		--	tak na wszelki wypadek	
			UPDATE `opng_m` n
			SET
				n.Status = 0,
				n.DataWplywu = _DataWplywu_DO
			WHERE
				n.GUID = _IdnOper
			;
			
		--	Nowe wywolanie
			CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.REC.New.2.0.Insert.to.oppo_m', '', _IdnOper, '', 0, '', '', '', _Param_D);	


			CALL C_HT_OPZM('Apply', '', 'OP', 'M', _IdnOper, '', '', '', '', '', @Params);
			-- CALL C_HT_OPZM('Clear', '', 'OP', 'M', _IdnOper, '', '', '', '', '', @Params);
			
			LEAVE S_C_HT_Inwentaryzacja_Tools;
			
			
			
		END IF;
		
		IF _MODE = 'Inwentaryzacja.REC.New' THEN
			IF @_MODE.2.0 THEN
				CALL C_HT_Inwentaryzacja_Tools(CONCAT(_MODE, '.2.0'), _GUID, _IdnOper, _IdnTowr, _Ilosc, _Param_A, _Param_B, _Param_C, _Param_D);	
				LEAVE S_C_HT_Inwentaryzacja_Tools;
			END IF;
			
			
			
				
			SET
				_rodzaj_typ = _IdnTowr,
				_ZMagazynu = _Param_A,
				_DoMagazynu = _Param_A,
				_DataWplywu_DO = DATE(_Param_B),
				_UserGUID = _Param_C,
				_SQLText_WHERE = IF(IFNULL(_Param_D, '') = '', 'TRUE', _Param_D),
				@_KontrGUID = '',
				@_Tymczasowa = 1,
				@_OsobaGUID = '',
				@_AreaGUID = ''
			;
			CALL _Session_Refresh_Variables('', '', '');
			SET _IdnOper = IF(IFNULL(_IdnOper, '') = '', UUID(), _IdnOper);
set @_SQLText_WHERE2 = _SQLText_WHERE;			
SET @_ZMagazynu = _ZMagazynu, @_DoMagazynu1 = _DoMagazynu;
			/*
			juz nie bo _Param_A wsyawiamy do _ZMagazynu oraz _DoMagazynu
			IF(@session.globals.Owner = 'IZOHAN') THEN
				SET _ZMagazynu = _DoMagazynu;
				SET _DoMagazynu = 0;
			END IF;
			*/
			IF IFNULL(_UserGUID, '') = '' THEN 
				SET _UserGUID = @session.Registration.UserGUID;
			END IF;
			set @_IdnOper = _IdnOper;
			CALL Opng_E_init('INSERT', _IdnOper, _UserGUID, '1', '');	-- _Param_A jest tu != '' aby nie wywoływać selecta wewn. innej proc. _ng_e_rec_init			
			CALL Opng_E_init_set('', _IdnOper, 39, _rodzaj_typ, '', 3, @_KontrGUID, _ZMagazynu, _DoMagazynu, @_Tymczasowa, 0, @_OsobaGUID, @_AreaGUID, '', 0, '', '', '');
			CALL Opng_E_Run('ALL', _IdnOper, '', '', '');
			/**/
			UPDATE `opng_e` n
			SET
				n.Tymczasowa = @_Tymczasowa
				-- n.zmagazynu = _ZMagazynu,
				-- n.domagazynu = _DoMagazynu
				-- , n.zmagazynu = (@.x5 := n.zmagazynu)
			WHERE
				n.GUID = _IdnOper
			;

			/**/
			SET _SQLText_WHERE = CONCAT(_SQLText_WHERE, ' AND o.magazyn = #magazyn# ');
			IF(@session.globals.Owner = 'IZOHAN') THEN
				SET _SQLText_WHERE = CONCAT(_SQLText_WHERE, ' AND (t.promocja_status != 2)');
			
			END IF; 
			SET _SQLText_WHERE = REPLACE(_SQLText_WHERE, ' #magazyn#', GREATEST(_ZMagazynu, _DoMagazynu));
			SET @_DoMagazynu2 = _ZMagazynu, @_SQLText_WHERE = _SQLText_WHERE;
			CALL oppo_E_Let_Insert('Init.GroupBy.Inwentaryzacja', '', _IdnOper, '',  0, 0, '', '', _DataWplywu_DO, _SQLText_WHERE);
			
		--	tak na wszelki wypadek	
			UPDATE `opng_e` n
			SET
				n.Status = 0,
				n.DataWplywu = _DataWplywu_DO
			WHERE
				n.GUID = _IdnOper
			;
			UPDATE `oppo_e` pinw
			SET
				pinw.DataWplywu = _DataWplywu_DO,
				pinw.transza_zamow = 
					IF(pinw.Rodzaj_typ != 0,
						IF(@session.globals.Owner = 'IZOHAN', 
							1, 	--	1 oznacza że pozycja nie bierze udzialu w inwentaryzacji (domyslnie wszystkie sa wykluczone dla inwentaryzacji z lista 
							0
						),
						0	--	0 oznacza ze pozycja bierze udzial w inwentaruzacji - dla pełanej (od sciany do sciany) wszystkie sa wlaczone
					)
			WHERE
				pinw.IdnOper = _IdnOper
			;
			
			CALL opng_E_Let('Post', _IdnOper, '', '');
			CALL opng_E_Let('ApplyAndClear', _IdnOper, '', '');
	set @P = '1';
		END IF;
		
		IF _MODE IN ('Inwentaryzacja.REC.DELETE', 'Inwentaryzacja.REC.DELETE.2.0') THEN
		/* *************************************************************************************************************************************************************
			Usuwanie nowej, tymczasowej inwentaryzacji
		**************************************************************************************************************************************************************/
			CALL _Session_Refresh_Variables('', '', '');
		--	rekordy skanowanych kodów partii `oppo_id_partii`
			DELETE ip FROM `opng` n, `oppo` p, `oppo_id_partii` ip
			WHERE
				n.GUID = _IdnOper
				AND n.tymczasowa != 0
				AND p.IdnOper = n.GUID 
				AND ip.GUID = p.GUID
			;
		--	rekordy `oppo_mag`
			DELETE om FROM `opng` n, `oppo` p, `oppo_mag` om
			WHERE
				n.GUID = _IdnOper
				AND n.tymczasowa != 0
				AND p.IdnOper = n.GUID 
				AND om.GUID = p.GUID
			;
		--	rekordy pozycji inw. `oppo`
			DELETE p FROM `opng` n, `oppo` p
			WHERE
				n.GUID = _IdnOper
				AND n.tymczasowa != 0
				AND p.IdnOper = n.GUID
			;
		--	rekordy vat-owe `opng_vat`
			DELETE v FROM `opng` n, `opng_vat` v
			WHERE
				n.GUID = _IdnOper
				AND n.tymczasowa != 0
				AND v.IdnOper = n.GUID
			;
		--	do kosza `opng`
			UPDATE `opng` n
			SET
				n.deleted = 1,
				n.Status = 0
			WHERE
				n.GUID = _IdnOper
				AND n.tymczasowa != 0
			;
			IF _MODE = 'Inwentaryzacja.REC.DELETE.2.0' THEN
			--	Ckear swiata M
				CALL C_HT_OPZM('Clear', '', 'OP', 'M', _IdnOper, '', '', '', '', '', '');
			END IF;
		END IF;
		
		IF _MODE IN ('Inwentaryzacja.REC.END.2.0', 'Inwentaryzacja.REC.CLOSE.2.0') THEN
		/* *************************************************************************************************************************************************************
			Zamykanie inwentaryzacji - więcej nie będziemy wprowadzać danych
			dodtaje status = 1
			CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.REC.CLOSE.2.0', '', 'IdnOper', '', 0, 'select', '', '', '');	
			UWAGA dla 
			'Inwentaryzacja.REC.CLOSE.2.0'
			dodaj odtymczasowienie
		**************************************************************************************************************************************************************/
			CALL _Session_Refresh_Variables('', '', '');
			CALL C_HT_OPZM('INIT.EDIT', '', 'OP', 'M', _IdnOper, '', '', '', '', '' , '');
			CALL C_HT_OPZM('START', '', 'OP', 'M', _IdnOper, '', '', '', '' ,'', '');
		--	usun te ktore nie byly przeznaczone do inwentaryzacji	
			DELETE FROM `oppo_m` WHERE transza_zamow != 0 AND IdnOper = _IdnOper;
			
			UPDATE `oppo_m` p
			SET
				p.iloscjest = 
					-- IF(@session.globals.Owner = 'IZOHAN',    JEJ (28 XII 2017) dlaczego -> dopisuje DOSa a potem musimy z Rafalem znalezc przyczyne 
					IF(@session.globals.Owner IN ('IZOHAN', 'DOS'), 
						p.Spakowano, 
						p.Spakowano	-- było!!!! p.iloscjest
				),
				p.exported = 
					IF(p.Rodzaj_typ = 0,
						1,	--	 pełna (od sciany do sciany) spios z natury 
						IF(@session.globals.Owner IN ('WEGA'), 
							1,
							p.exported
						)
					)
			WHERE
				p.IdnOper = _IdnOper
				AND
				p.transza_zamow = 0
			;
			CALL C_HT_OPZM('PO.POST', '', 'OP', 'M', _IdnOper, '', '', '', '' ,'', '');
			UPDATE `opng_m` n
			SET
				n.Status = 1
			WHERE
				n.GUID = _IdnOper
			;
			CALL C_HT_OPZM('NG.POST', '', 'OP', 'M', _IdnOper, '', '', '', '' ,'', '');

			CALL C_HT_OPZM('APPLY', '', 'OP', 'M', _IdnOper, '', '', '', '' ,'', '');
			CALL C_HT_OPZM('END', '', 'OP', 'M', _IdnOper, '', '', '', '' ,'', '');
			
			-- DO _sys_locks_do('UNLOCK', _IdnOper, 'opng_m', 'EDYCJA', @SYSTEM.Client.Session.GUID, '', '', '');
			-- DELETE FROM `_lock_inf` WHERE RecID = _IdnOper AND TableName = 'opng';
			IF _Param_A = 'select' THEN
				SELECT 
					@.M.MSG AS MSG, @.M.ERR AS ERR
				;
			END IF;
		END IF;

		IF _MODE IN ('Inwentaryzacja.REC.COMMIT.2.0') THEN
		/* *************************************************************************************************************************************************************
			Jest to Zatwierdzanie inwentaryzacji OSTATECZNE I ODTYMCZASOWIENIE
			Ten mode jest w portalu wołany wraz z poprzedzającym ja modem _MODE = 'Inwentaryzacja.REC.END'
		**************************************************************************************************************************************************************/
			-- CALL C_HT_TE_Proc('Set.Tymczasowa', '0', 'ZM', _IdnNg, '', '', '', '', '', @_Param_E := 'Clear_Star_Numbers=1');	-- odtymczasowienie
			--	Na razie wolam po staremu bo... nie mam czasu
			CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.REC.Zamknij', '', _IdnOper, '', 0, '', '', _UserGUID, '');	
		END IF;
		
		
		IF _MODE IN ('Inwentaryzacja.REC.OPEN.2.0') THEN
		/* *************************************************************************************************************************************************************
			Zamykanie inwentaryzacji - więcej nie będziemy wprowadzać danych
			dodtaje status = 1
			CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.REC.OPEN.2.0', '', 'IdnOper', '', 0, 'select', '', '', '');	
		**************************************************************************************************************************************************************/
			UPDATE `opng` n
			SET
				n.Status = 0
			WHERE
				n.GUID = _IdnOper
				AND
				n.Tymczasowa = 1
			;
			SET @RC = ROW_COUNT();
			SET @.M.ERR := (@RC <= 0);
			IF @.M.ERR THEN SET @.M.MSG = 'Inwentaryzacja nie może byc juz ponownie otwarta do edycji'; END IF;
			IF _Param_A = 'select' THEN
				SELECT 
					@.M.MSG AS MSG, @.M.ERR AS ERR
				;
			END IF;
		END IF;
		
		IF _MODE IN ('Inwentaryzacja.REC.RESET.2.0') THEN
		/* *************************************************************************************************************************************************************
			Dla nie zatwierdzonej inwentaryzacji ustawienie ponownie stanu pocz. czyli Exported = 0 i Spakowano = 0
			CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.REC.RESET.2.0', '', 'IdnOper', '', 0, 'select', '', '', '');	
		**************************************************************************************************************************************************************/
			UPDATE `oppo` p
			SET
				p.Spakowano = 0,
				p.Exported = 0
			WHERE
				p.IdnOper = _IdnOper
				AND p.transza_zamow = 0
			;
			SET @RC = ROW_COUNT();
			
			UPDATE `opng` n
			SET
				n.Status = 0
			WHERE
				n.GUID = _IdnOper
				AND
				n.Tymczasowa = 1
			;
			SET @.M.ERR := (@RC <= 0);
			IF @.M.ERR THEN SET @.M.MSG = 'Brak pozycji do zresetowania.'; END IF;
			IF _Param_A = 'select' THEN
				SELECT 
					@.M.MSG AS MSG, @.M.ERR AS ERR
				;
			END IF;
		END IF;
		
		
		IF _MODE = 'Inwentaryzacja.REC.END' THEN
		/* *************************************************************************************************************************************************************
			Zamykanie inwentaryzacji - więcej nie będziemy wprowadzać danych
			dodtaje status = 1
		**************************************************************************************************************************************************************/
			CALL _Session_Refresh_Variables('', '', '');
			IF @_MODE.2.0 THEN
				CALL C_HT_Inwentaryzacja_Tools(CONCAT(_MODE, '.2.0'), _GUID, _IdnOper, _IdnTowr, _Ilosc, _Param_A, _Param_B, _Param_C, _Param_D);	
				LEAVE S_C_HT_Inwentaryzacja_Tools;
			END IF;
			
			
			/*
				
			CALL Opng_E_Let('Clear', _IdnOper, '', '');
			CALL Opng_E_init('EDIT', _IdnOper, @session.Registration.UserGUID, '', '');
			CALL Opng_E_Run('ALL', _IdnOper, '', '', '');
		--	usun te ktore nie byly przeznaczone do inwentaryzacji	
			DELETE FROM `oppo_e` WHERE transza_zamow != 0 AND IdnOper = _IdnOper;
			
			UPDATE `oppo_e` p
			SET
				p.iloscjest = 
					-- IF(@session.globals.Owner = 'IZOHAN',    JEJ (28 XII 2017) dlaczego -> dopisuje DOSa a potem musimy z Rafalem znalezc przyczyne 
					IF(@session.globals.Owner IN ('IZOHAN', 'DOS'), 
						p.Spakowano, 
						p.iloscjest
				),
				p.exported = 
					IF(p.Rodzaj_typ = 0,
						1,	--	 pełna (od sciany do sciany) spios z natury 
						IF(@session.globals.Owner = 'IZOHAN', 
							1,
							p.exported
						)
					)
			WHERE
				p.IdnOper = _IdnOper
				AND
				transza_zamow = 0
			;
			CALL opng_E_Let('Post', _IdnOper, '', '');
			CALL opng_E_Let('ApplyAndClear', _IdnOper, '', '');
			
			UPDATE `opng` n
			SET
				n.Status = 1
			WHERE
				n.GUID = _IdnOper
			;
			DELETE FROM `_lock_inf` WHERE RecID = _IdnOper AND TableName = 'opng';
			*/
		END IF;
		
		IF _MODE = 'Inwentaryzacja.REC.Zamknij' THEN
		/* *************************************************************************************************************************************************************
			Nazwa _MODE jest durna ale zostaje bo jest wjuz w portalu
			Jest to Zatwierdzanie inwentaryzacji OSTATECZNE I ODTYMCZASOWIENIE
			Ten mode jest w portalu wołany wraz z poprzedzającym ja modem _MODE = 'Inwentaryzacja.REC.END'
		**************************************************************************************************************************************************************/
			SET
				_UserGUID = _Param_C
			;
			IF IFNULL(_UserGUID, '') = '' THEN 
				SET _UserGUID = @session.Registration.UserGUID;
			END IF;
			
			CALL _Session_Refresh_Variables('', '', '');
			CALL Opng_E_Let('Clear', _IdnOper, '', '');
			CALL Opng_E_init('EDIT', _IdnOper, _UserGUID, '', '');
			CALL Opng_E_Run('ALL', _IdnOper, '', '', '');
			
			
			set @_IdnOper2 = _IdnOper;
			
			UPDATE `oppo_e` p
			SET
				p.iloscjest = p.Spakowano,
				p.Update_status = 'CALC_INW'
			WHERE
				p.IdnOper = _IdnOper
				AND IF(@session.globals.Owner = 'IZOHAN', TRUE, p.exported)
			;
			-- CALL opng_E_Let('Apply', _IdnOper, '', '');
			CALL opng_E_Let('ApplyAndClear', _IdnOper, '', '1');
		--	A teraz sekwencja odtymczasowienia	
			CALL opng_E_Tymczasowa_Set('0', _IdnOper, '', '');		
		--	A teraz sekwencja odtymczasowienia	
			-- CALL opng_E_Let('SetTymczasowa', _IdnOper, 0, '');
			-- CALL opng_E_Let('ApplyTymczasowa', _IdnOper, '', '');
			DELETE FROM `_lock_inf` WHERE RecID = _IdnOper AND TableName = 'opng';
		END IF;
		
	END IF;

			IF _MODE LIKE 'Inwentaryzacja.rozbieznosci.%' THEN
				IF _MODE = 'Inwentaryzacja.rozbieznosci.SELECT.N' THEN
				/* *************************************************************************************************************************************************************
					CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.rozbieznosci.SELECT.N', '', _IdnOper, '', 0, "", '', '', '');  -- pobierz arkusz rozbierznosci
					CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.rozbieznosci.SELECT.N', '', _IdnOper, '', 0, "1", '', '', '');  -- pobierz arkusz rozbierznosci roznice
					_IdnOper		IdnOper
					_Param_A	<> '' to tylko roznice
					_IdnTowr	WARIANT!!! gdy <> '' to zwraca tylko 1 linie
				**************************************************************************************************************************************************************/
					SET
						_IdnTowr = IFNULL(_IdnTowr, ''),
						_Only_Diff = (_Param_A != '')
					;
					CALL _Session_Refresh_Variables('', '', '');
					SELECT
						pinw.GUID, 
						pinw.IdnOper, 
						pinw.Rodzaj,
						ninw.Rodzaj_typ,
						CONCAT(ot.Opis, ' ', IFNULL(ninw.NrdokMag, ''), ' (', ninw.Idn,')') AS Opis,
						ninw.DoMagazynu,
						ninw.zmagazynu,
						m.Opis AS Magazyn,
						pinw.IdnTowr, 
						pinw.TowrSymb, 
						--	bylo pinw.TowrNazwa, 
						CONCAT(
							pinw.TowrNazwa,
							IFNULL((SELECT CONCAT(' (Kod partii: ', zp.idn, ')') FROM `zmpo` zp WHERE zp.GUID = pinw.GUID_Dostawy), '')
						) AS TowrNazwa, 
						J.nazwa AS JednostkaStr,
						COUNT(*) AS Ile_Poz,
						SUM(pinw.IloscBylo) AS IloscBylo,
						SUM(pinw.IloscJest) AS IloscJest,
						SUM(ROUND(pinw.IloscJest - pinw.iloscbylo, 4)) AS Ilosc,
						SUM(pinw.IloscJest <> pinw.iloscbylo) AS Ile_Niezgodnych,	-- powinno byc 0
						IF(SUM(pinw.IloscJest <> pinw.iloscbylo) = 0,
							IF(COUNT(*) > 0, 
								'Wszystkie zgodne',
								'OK'
							),
							CONCAT('Niezgodnych: ', SUM(pinw.IloscJest <> pinw.iloscbylo), ' z ', COUNT(*))
						) AS Info,
						-- pinw.Ilosc, 
						SUM(pinw.IloscDo) AS IloscDo
					FROM `opng` ninw 
					INNER JOIN operdoc_typy ot ON ot.Rodzaj = ninw.Rodzaj AND ot.typ = ninw.Rodzaj_typ
					INNER JOIN `oppo` pinw ON pinw.IdnOper = ninw.GUID
					LEFT JOIN `Magazyny` m ON m.IdnMagazynu = ninw.ZMagazynu
					LEFT JOIN `Jednostki` J on J.idn = pinw.Jednostka
					WHERE
						ninw.GUID = _IdnOper
						-- AND IF(_Only_Diff, pinw.Spakowano != pinw.iloscbylo, TRUE)
						AND 
						IF(@session.globals.Owner = 'IZOHAN', 
							TRUE,
							pinw.exported
						)
						AND IF(_IdnTowr <> '', pinw.IdnTowr = _IdnTowr, TRUE)
					GROUP BY pinw.IdnTowr	
					HAVING IF(_Only_Diff, Ile_Niezgodnych > 0, TRUE)
					;					
				END IF;
				
				IF _MODE = 'Inwentaryzacja.rozbieznosci.SELECT.P' THEN
				/* *************************************************************************************************************************************************************
					CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.rozbieznosci.SELECT.P', '', _IdnOper, '_IdnTowr', 0, "", '', '', '');  -- pobierz arkusz rozbierznosci
					_IdnOper	
					_IdnTowr	
					CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.rozbieznosci.MODIFY.P', 'GUID', _IdnOper, '', 123, "", '', '', '');  -- Edycja 1 pozycji
				**************************************************************************************************************************************************************/
					UPDATE `oppo` p
					SET	
						p.IloscJest = p.spakowano
					WHERE 
						p.IdnOper = _IdnOper
					;
					SELECT 
						p.GUID,
						p.GUID_dostawy,
						p.IdnTowr, 
						p.TowrSymb, 
						
						IFNULL( 
							(SELECT zn.nrzamw FROM oppo d, zmpo zp, zmng zn WHERE zp.GUID = d.GUIDzm AND zn.GUID = zp.IdnNg AND d.guid=p.GUID_Dostawy AND d.guid=p.GUID_Dostawy),
							(SELECT zn.nrzamw FROM zmpo zp, zmng zn WHERE zp.GUID = p.GUID_dostawy AND zn.GUID = zp.IdnNg) 
						) AS nrZlecenia,
						IFNULL( 
							(SELECT _varSTR(zp.idn) FROM oppo d, zmpo zp, zmng zn WHERE zp.GUID = d.GUIDzm AND zn.GUID = zp.IdnNg AND d.guid=p.GUID_Dostawy AND d.guid=p.GUID_Dostawy AND zp.idntowr=p.idntowr),
							(SELECT _varSTR(zp.idn) FROM zmpo zp, zmng zn WHERE zp.GUID = p.GUID_dostawy AND zn.GUID = zp.IdnNg AND zp.idntowr=p.idntowr)
						) AS kod_partii,
						p.spakowano AS iloscjest_popraw,
						p.iloscbylo,
						p.spakowano AS iloscjest, -- p.iloscjest,
						p.spakowano
					FROM `oppo` p 
					WHERE 
						p.IdnOper = _IdnOper
						AND
						p.IdnTowr = _IdnTowr
					;
				
				END IF;
				
				IF _MODE = 'Inwentaryzacja.rozbieznosci.MODIFY.P' THEN
				/* *************************************************************************************************************************************************************
					CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.rozbieznosci.MODIFY.P', 'GUID', _IdnOper, '', 123, "", '', '', '');  -- Edycja 1 pozycji
				**************************************************************************************************************************************************************/
					UPDATE `oppo` p
					SET	
						p.spakowano = _Ilosc,
						p.IloscJest = _Ilosc
					WHERE 
						p.GUID = _GUID
					;
				
				END IF;
			END IF;		-- IF _MODE = 'Inwentaryzacja.rozbieznosci.SELECT.N' THEN

	
				IF _MODE = 'Inwentaryzacja.oppo.Insert' THEN
				/* *************************************************************************************************************************************************************
					CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.oppo.Insert', _GUID, _IdnOper, _IdnTowr, 0, _Param_A, _Param_B, _Param_C, _Param_D);  -- dodawanie pozycji
				**************************************************************************************************************************************************************/
					-- dodawanie pozycji
					INSERT IGNORE INTO `oppo`
					(GUID, IdnOper, IdnTowr, Ilosc)
					VALUES
					(_GUID, _IdnOper, _IdnTowr, 0)
					;
				--	Klasyczny UPDATE z 	`opng` i `TowrNg` t
					SET @aDoIt = @session.HT.IR.Wymus_przepisywanie_katcol_do_poz;
					UPDATE `oppo` p, `opng` n, `TowrNg` t
					SET
						p.Tag = -1,
						p.IdnOper_e = n.GUID,
						p.Tymczasowa = n.Tymczasowa,
						p.kontridn = n.kontridn,
						p.rodzaj_typ = n.rodzaj_typ,
						p.rodzaj = n.rodzaj,
						p.datawystaw = n.datawystaw,
						p.datasprzed = n.datasprzed,
						p.datawplywu = n.datawplywu,
						p.Ilosc = IFNULL(p.Ilosc, 1),
						p.rabat = IFNULL(n.kontrrabat, 0),
						p.idncennik = n.kontrklasacenowa,
						-- ?? p.cenanet = IFNULL(p.cenanet, 0),

						p.kurs = n.kurs,
						p.ZMagazynu = n.ZMagazynu,
						p.DoMagazynu = n.DoMagazynu,
						p.Calc_Ver = n.Calc_Ver,
						
						p.TypSymbolow = IF(n.rodzaj = 73, 0, IFNULL(@tr.oppo_e.TypSymbolow, 0)), 	-- 	CZmZP = 73;      { Zamówienie - zlecenie produkcyjne }
						p.kat0 = IF(n.KatCol0 != -1 AND @aDoIt, n.KatCol0, p.kat0),
						p.kat1 = IF(n.KatCol1 != -1 AND @aDoIt, n.KatCol1, p.kat1),
						p.kat2 = IF(n.KatCol2 != -1 AND @aDoIt, n.KatCol2, p.kat2),
						p.kat3 = IF(n.KatCol3 != -1 AND @aDoIt, n.KatCol3, p.kat3),
						p.kat4 = IF(n.KatCol4 != -1 AND @aDoIt, n.KatCol4, p.kat4),
					--	Towar	
						p.TowrSymb = t.Symbol, 
						p.TowrNazwa = t.Nazwa, 
						p.IdnVat = IFNULL(IF((t.VatPrevYear > 0) AND (@session.vat.edityear <= t.VatPrevYear), t.VatPrevId, t.Vat), 0),
						p.Jednostka = t.Jednostka,
						p.Usluga = t.Usluga,
						p.ilewopakowaniu = t.ilewopakowaniu,
						p.kat5 = t.katcol0,
						p.kat6 = t.katcol1,
						p.kat7 = t.katcol2,
						p.kat8 = t.katcol3,
						p.kat9 = t.katcol4,
						p.cena_minimalna = t.cena_minimalna,
						p.opakowanie_zwrotne = t.opakowanie_zwrotne,
						p.info = t.info,
						p.info2 = t.info2,
						p.info3 = t.info3,
						p.info4 = t.info4,
						p.oplata_produktowa = t.oplata_produktowa,
						p.min_ord_quant = t.min_ord_quant,
						p.CzasOczekiwania = t.CzasOczekiwania,
						p.waga_jedn = t.waga,
						p.pkwiu = t.pkwiu,
						p.termin_waznosci = DATE_ADD(CURRENT_DATE(), INTERVAL t.dni_waznosci DAY),
						p.CenaNet = IF(p.Rodzaj IN (@ht.CInwn, @ht.CInNW, @ht.CInND), t.CenaZkpNet, p.CenaNet)
						
					WHERE
						p.GUID = _GUID
						AND
						n.GUID = p.IdnOper
						AND
						n.fvrudowz = 0
						AND
						t.GUID = p.IdnTowr
					;	
				END IF;		-- IF _MODE = 'Inwentaryzacja.oppo.Insert' THEN

				IF _MODE LIKE 'Inwentaryzacja.oppo.Search.%' THEN
				/* *************************************************************************************************************************************************************
				
				**************************************************************************************************************************************************************/
					SET 
						_GUID_dostawy = _Param_A,
						_NrSeryjny = _Param_B
					;
					IF _MODE = 'Inwentaryzacja.oppo.Search.GUID_dostawy' THEN
						SELECT
							IFNULL((
								SELECT 
									p.GUID 
								FROM `oppo` p 
								WHERE 
									p.IdnOper = _IdnOper
									AND p.IdnTowr = _IdnTowr
									AND p.GUID_dostawy = _GUID_dostawy	--	moze byc pusty guid dostawy
							),
							'') AS GUID
						INTO
							@.Inwentaryzacja.oppo.Search._oppo_GUID
						;
						
					END IF;
					IF _MODE = 'Inwentaryzacja.oppo.Search.NrSeryjny' THEN
						SELECT
							IFNULL((
								SELECT 
									p.GUID 
								FROM `oppo` p 
								WHERE 
									p.IdnOper = _IdnOper
									AND p.IdnTowr = _IdnTowr
									AND p.NrSeryjny = _NrSeryjny	--	moze byc pusty NrSeryjny
									AND p.GUID_dostawy = _GUID_dostawy	--	moze byc pusty guid dostawy
							),
							'') AS GUID
						INTO
							@.Inwentaryzacja.oppo.Search._oppo_GUID
						;
						
					END IF;
				END IF;

				
		IF _MODE LIKE 'Inwentaryzacja.oppo.Select.For.NrSeryjny' THEN
		/* *************************************************************************************************************************************************************
			IF _MODE = 'Inwentaryzacja.oppo.Update.By.Scan' THEN
			CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.oppo.Select.For.NrSeryjny', '', _IdnOper, _IdnTowr, 0, '', _NrSeryjny, '', '', '');  -- dodawanie pozycji
		**************************************************************************************************************************************************************/
			SET
				_NrSeryjny = _Param_B
			;
			DROP TEMPORARY TABLE IF EXISTS `t_inwentaryzacja_E_Towr_NrSer_Dost`;
			CREATE TEMPORARY TABLE `t_inwentaryzacja_E_Towr_NrSer_Dost`
			SELECT 
				p.GUID, p.IdnOper, p.IdnTowr, p.GUID_dostawy, p.NrSeryjny, p.TowrSymb, CONCAT(ndost.NrDokMag, ' (', ndost.DataWystaw, ')') AS Opis, 
				p.Exported AS Czy_Modyfikowano, p.IloscJest AS Ile_Jest, p.Spakowano AS Ile_Dotychczas, 0*p.Ilosc AS Ile_Add 
			FROM oppo p 
			LEFT JOIN oppo pdost ON pdost.GUID = p.GUID_dostawy
			LEFT JOIN opng ndost ON ndost.GUID = pdost.IdnOper
			WHERE 
				p.IdnOper = _IdnOper
				AND 
				p.IdnTowr = _IdnTowr
				AND 
				p.NrSeryjny = _NrSeryjny  
			ORDER BY Opis
			;
			SET @_ROW_COUNT = ROW_COUNT();
			IF @_ROW_COUNT = 0 THEN
				INSERT INTO `t_inwentaryzacja_E_Towr_NrSer_Dost`
				SET
					GUID = '', 
					IdnOper = _IdnOper, 
					IdnTowr = _IdnTowr,
					TowrSymb = IFNULL((SELECT t.Symbol FROM `TowrNg` t WHERE t.GUID = _IdnTowr), ''),
					NrSeryjny = _NrSeryjny,
					Opis = 'Dostawa nieznana',
					Czy_Modyfikowano = 0,
					Ile_Jest = 0,
					Ile_Dotychczas = 0,
					Ile_Add = 0 
				;
			END IF;
			SELECT t.* FROM `t_inwentaryzacja_E_Towr_NrSer_Dost` t;
			-- DROP TEMPORARY TABLE IF EXISTS `t_inwentaryzacja_E_Towr_NrSer_Dost`;
		END IF;
				
		IF _MODE LIKE 'Inwentaryzacja.oppo.Update.By.%' THEN
		/* *************************************************************************************************************************************************************
			IF _MODE = 'Inwentaryzacja.oppo.Update.By.Scan' THEN
			CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.oppo.Update.By.Scan', _GUID, _IdnOper, _IdnTowr, _Ile, _GUID_dostawy, '', _Jedn_Idx, '');  -- dodawanie pozycji
			CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.oppo.Update.By.NrSeryjny', _GUID, _IdnOper, _IdnTowr, _Ile, _GUID_dostawy, _NrSeryjny, _Jedn_Idx, '');  -- dodawanie pozycji
		**************************************************************************************************************************************************************/
			SET
				_oppo_GUID = _GUID,
				_Ile = _Ilosc,
				-- _Scan_IDN = _Param_A,
				_Jedn_Idx = _VarINT(_Param_C),	--	0 podst, 1 zbiorcza, ...
				_GUID_dostawy = _Param_A,
				@.Scan.GUID_dostawy_wymagany = (IFNULL(_Param_D, '') != '')
			;
			IF _MODE = 'Inwentaryzacja.oppo.Update.By.Scan' THEN
				SET
					_GUID_dostawy = IFNULL(_Param_A, '')
				;
				CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.oppo.Search.GUID_dostawy', _GUID, _IdnOper, _IdnTowr, _Ilosc, _GUID_dostawy, '', '', '');  -- szukaj pozycji po Dostawie
			ELSEIF _MODE = 'Inwentaryzacja.oppo.Update.By.NrSeryjny' THEN
				SET
					_GUID_dostawy = IFNULL(_Param_A, ''),
					_NrSeryjny = IFNULL(_Param_B, '')
				;
				CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.oppo.Search.NrSeryjny', _GUID, _IdnOper, _IdnTowr, _Ilosc, _GUID_dostawy, _NrSeryjny, '', '');  -- szukaj pozycji po Dostawie i po Nr seryjnym
			END IF;
			SET _oppo_GUID = @.Inwentaryzacja.oppo.Search._oppo_GUID;
			
			IF _oppo_GUID = '' THEN
			--	NIE MA TAKIEJ POZYCJI
			--	Dodaj ja!!!
			--	Ale zanim to nastapi to gdy mamy nr seryjny to poszukaj GUID_dostawy (bedzie potrzeby do Md5 GUIDa) czyli Guid z przychodu dla takiej serii 
			--	ten GUID bedzie teraz jako _GUID_dostawy - bierz limit 1 bo moze byc kila PW lub PZ
				IF _MODE = 'Inwentaryzacja.oppo.Update.By.NrSeryjny' THEN
					SELECT
						IFNULL((
							SELECT
								p.GUID
							FROM `oppo` p, `operdoc` od
							WHERE
								p.IdnTowr = _IdnTowr
								AND p.NrSeryjny = _NrSeryjny
								AND p.Rodzaj = od.Rodzaj
								AND od.MagTyp = 0	-- interesuja mnie tylko przychodowe oppo
							ORDER BY p.Idn DESC	--	i tylko jeden pocxawszy od najnowszych 
							LIMIT 1
						),
						'') AS GUID
					INTO
						_GUID_dostawy
					;
				END IF;
				CALL _Session_Refresh_Variables('', '', '');
				SET _oppo_GUID =
					CONCAT('INW', MD5(CONCAT(_IdnOper, _IdnTowr, _GUID_dostawy, IF(_MODE = 'Inwentaryzacja.oppo.Update.By.Scan', '', _NrSeryjny))))
				;
			--	Dodawanie pozycji
				CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.oppo.Insert', _oppo_GUID, _IdnOper, _IdnTowr, 0, _Param_A, _Param_B, _Param_C, _Param_D);  -- dodawanie pozycji
			--	Teraz uzupelnij GUID_dostawy i ewent. NrSeryjny
				UPDATE `oppo` p
				SET
					p.GUID_dostawy = _GUID_dostawy,
					p.NrSeryjny = IF(_MODE = 'Inwentaryzacja.oppo.Update.By.Scan', p.NrSeryjny, _NrSeryjny)
				WHERE
					p.GUID = _oppo_GUID
				;
			END IF;
			
			UPDATE `oppo` p, `opng` n, `TowrNg` t
			SET
				p.Spakowano = 
					p.Spakowano + 
					IF(_Jedn_Idx != 0 AND t.opakowanie_zbiorcze_d != 0, 
						t.opakowanie_zbiorcze_d * _Ile,
						_Ile
					),
				-- p.GUID_dostawy = _GUID_dostawy,
				-- p.NrSeryjny = _NrSeryjny,
			--	exported - gdy <> 0 oznacza że juz bylismy w tej pozycji - nawet gdy bedzie ilosc 0 ale exported <> 0 oznacza że tyle stwierdzono
			--	uwaga w trybie pełnym bez listy (od ściany do ściany) zawsze mamy exported = 1 czyli zawwsze zatwierdzamy 
				p.exported = 
					IF(@session.globals.Owner = 'IZOHAN', 
						IF(p.Rodzaj_typ != 0, -- dawnie _MODE LIKE '%.z.lista',
							p.exported,
							1	--	bo tutaj czyli w trybie pełnym bez listy od ściany do ściany zawsze zatwierdzamy (tryb pełny to Rodzaj_typ = 0 a tryb z lista Rodzaj_typ <> 0)
						),
						1
					),
				p.iloscbylo = IFNULL(p.iloscbylo, 0),
				p.iloscjest = IFNULL(p.iloscjest, 0)
			WHERE
				p.GUID = _oppo_GUID
				AND
				n.GUID = p.IdnOper
				AND
				t.GUID = p.IdnTowr
			;
			--	pinw.transza_zamow = 0 oznacza ze wlaczylismy (dopuscilismy) te poz. do inwentaryzowania UWAGA!!! pelna inw. 
			--	ma wszystkie pozycje domyslnie dopuszczone ale je tez mozna wylaczyc!
			--	Dlatego skoro wlasnie zeskanowalem jakis towar to towar ten: - albo jest dopuszczony (z listy) albo - jest to towar z inw. pelnej !!! 
			--	Moze jednak byc tak ze towar z jednym GUIDEM_Dostawy (np. pustym) zostal dopuszczony) a pojawil się właśnie z innym!!!
			--	Dlatego muszę inne pozycje z tym samym towarem ktore potencjalnie sa niedopuszczone - dpouscic!!! tzw. dopuszczenie rodzeństwa :)
			UPDATE `oppo` p
			SET
				pinw.transza_zamow = 0	--	dopusc do inw.
			WHERE
				p.IdnOper = _IdnOper
				AND p.IdnTowr = _IdnTowr
			;
		END IF;		-- IF _MODE LIKE 'Inwentaryzacja.oppo.Update.By.%' THEN

		IF _MODE LIKE 'Inwentaryzacja.oppo.Reset%' THEN
		/* *************************************************************************************************************************************************************
			CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.oppo.Reset', _GUID, _IdnOper, '', 0, _GUID_dostawy, , _NrSeryjny, '', '');  -- przywracanie stanu wstepnego pozycji
			CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.oppo.Reset.for.NrSeryjny', '', _IdnOper, _IdnTowr, 0, '', , _NrSeryjny, '', '');  -- przywracanie stanu wstepnego pozycji
		**************************************************************************************************************************************************************/
			SET
				_oppo_GUID = _GUID,
				_GUID_dostawy = IFNULL(_Param_A, ''),
				_NrSeryjny = IFNULL(_Param_B, '')
			;
			IF _MODE = 'Inwentaryzacja.oppo.Reset.for.NrSeryjny' THEN
			--	update dla grupy rekordow
				UPDATE `oppo` p
				SET
					p.Spakowano = 0,
					p.exported = 0
				WHERE
					p.IdnOper = _IdnOper
					AND p.IdnTowr = _IdnTowr
					AND p.NrSeryjny = _NrSeryjny	
					-- NO AND p.GUID_dostawy = _GUID_dostawy	
				;
				UPDATE `opng` n
				SET
					n.Status = 0
				WHERE
					n.GUID = _IdnOper
				;
			ELSE
			--	normalny update dla pojedynczego rekordy
					--	NIE WIEM po co bo TAK naprawde nie wstawiamy do `oppo_id_partii`
						DELETE FROM `oppo_id_partii` 
						WHERE
							GUID = _oppo_GUID
						;
				UPDATE `oppo` p
				SET
					p.Spakowano = 
					(SELECT SUM(Ilosc) FROM `oppo_id_partii` pp WHERE pp.GUID = p.GUID),	--	TAK naprawde nie wstawiamy do `oppo_id_partii` zatem i tak bedzie ZERO
					p.exported = 0
				WHERE
					p.GUID = _oppo_GUID
				;
				UPDATE `opng` n
				SET
					n.Status = 0
				WHERE
					n.GUID = _IdnOper
				;
			END IF;
		END IF;		-- IF _MODE LIKE 'Inwentaryzacja.oppo.Update.By.%' THEN
		
		IF _MODE LIKE 'Inwentaryzacja.oppo.Accept.iloscjest%' THEN
		/* *************************************************************************************************************************************************************
			CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.oppo.Accept.iloscjest', _GUID, _IdnOper, '', 0, '', '', '', '');  -- ustawianie ilosci Jest
			CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.oppo.Accept.iloscjest.for.NrSeryjny', '', _IdnOper, _IdnTowr, 0, '', , _NrSeryjny, '', '');  -- ustawianie ilosci Jest
			CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.oppo.Accept.iloscjest.for.ALL', '', _IdnOper, '', 0, '', '', '', '', '');  -- ustawianie ilosci Jest
		**************************************************************************************************************************************************************/
			SET
				_oppo_GUID = _GUID,
				_GUID_dostawy = IFNULL(_Param_A, ''),
				_NrSeryjny = IFNULL(_Param_B, '')
			;
			IF _MODE = 'Inwentaryzacja.oppo.Accept.iloscjest.for.NrSeryjny' THEN
			--	update dla grupy rekordow
				UPDATE `oppo` p
				SET
					p.Spakowano = p.iloscjest,
					p.exported = 1
				WHERE
					p.IdnOper = _IdnOper
					AND p.IdnTowr = _IdnTowr
					AND p.NrSeryjny = _NrSeryjny	
					-- NO AND p.GUID_dostawy = _GUID_dostawy	
				;
			ELSEIF _MODE = 'Inwentaryzacja.oppo.Accept.iloscjest.for.ALL' THEN
			--	normalny update dla pojedynczego rekordy
				UPDATE `oppo` p
				SET
					p.Spakowano = p.iloscjest,
					p.exported = 1
				WHERE
					p.IdnOper = _IdnOper
				;
			ELSE
			--	normalny update dla pojedynczego rekordy
				UPDATE `oppo` p
				SET
					p.Spakowano = p.iloscjest,
					p.exported = 1
				WHERE
					p.GUID = _oppo_GUID
				;
			END IF;
		END IF;		-- IF _MODE LIKE 'Inwentaryzacja.oppo.Update.By.%' THEN
		
		IF _MODE LIKE 'Inwentaryzacja.oppo.Zeruj%' THEN
		/* *************************************************************************************************************************************************************
			CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.oppo.Zeruj', _GUID, _IdnOper, '', 0, '', '', '', '');  -- zerowanie (brak na stanie)
			CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.oppo.Zeruj.for.NrSeryjny', '', _IdnOper, _IdnTowr, 0, '', , _NrSeryjny, '', '');  -- zerowanie (brak na stanie)
		**************************************************************************************************************************************************************/
			SET
				_oppo_GUID = _GUID,
				_GUID_dostawy = IFNULL(_Param_A, ''),
				_NrSeryjny = IFNULL(_Param_B, '')
			;
			IF _MODE = 'Inwentaryzacja.oppo.Zeruj.for.NrSeryjny' THEN
			--	update dla grupy rekordow
				UPDATE `oppo` p
				SET
					p.Spakowano = 0,
					p.exported = 1
				WHERE
					p.IdnOper = _IdnOper
					AND p.IdnTowr = _IdnTowr
					AND p.NrSeryjny = _NrSeryjny	
					-- NO AND p.GUID_dostawy = _GUID_dostawy	
				;
			ELSE
			--	normalny update dla pojedynczego rekordy
				UPDATE `oppo` p
				SET
					p.Spakowano = 0,
					p.exported = 1
				WHERE
					p.GUID = _oppo_GUID
				;
			END IF;
		END IF;		-- IF _MODE LIKE 'Inwentaryzacja.oppo.Update.By.%' THEN
		
		IF _MODE LIKE 'Inwentaryzacja.oppo.Zatwierdza%' THEN
		/* *************************************************************************************************************************************************************
			CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.oppo.Zatwierdza', _GUID, _IdnOper, '', 0, '', '', '', '');  -- ustawianie ilosci Bylo
		**************************************************************************************************************************************************************/
			SET
				_oppo_GUID = _GUID
			;
			UPDATE `oppo` p
			SET
				p.exported = 1
			WHERE
				p.GUID = _oppo_GUID
			;
		END IF;		-- IF _MODE LIKE 'Inwentaryzacja.oppo.Update.By.%' THEN
		
		IF _MODE LIKE 'Inwentaryzacja.for.Tag%' THEN
		/* *************************************************************************************************************************************************************
			CALL Inwentaryzacja.for.Tag tworzy inwentaryzację dla zanzaczonych magazynów  tworzone z HT dlatego odrazu zatwierdzane
			C_HT_Inwentaryzacja_Tools('Inwentaryzacja.for.Tag', '', '', '', '', 'MAGAZYN', '_DataWplywu_DO', 'User', 'WHERE');
		**************************************************************************************************************************************************************/
		
		CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.REC.New.2.0', '', '', 0, 0, _Param_A, _Param_B, _Param_C, _Param_D); 
		SET _IdnOper=@_Last_IdnOper;
		CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.oppo.Accept.iloscjest', '', _IdnOper, '', 0, '', '', '', '');
		CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.REC.END.2.0', '', _IdnOper, '', 0, '', '', '', '');
		
		IF @session.globals.Owner = 'HYDROMEGA' THEN
			SET @ilepoz=(SELECT COUNT(*) FROM oppo WHERE  idnoper=_IdnOper);
			SET @nrdok=(
                SELECT 
                    CONCAT(
                        LPAD(Nr+1,4,0),'_',LPAD(_Param_A,4,0),'_',
                        IF(Podrodzaj=10,'M',
                        IF(Podrodzaj=11,'P',
                        IF(Podrodzaj=12,'W',
                        IF(Podrodzaj=14,'MB',
                        'I')))),
                        IF(@ilepoz=0,'x','')) 
                FROM erp_obj_counters 
                WHERE ResGUID=MD5(_Param_D)
                );
			UPDATE opng n SET n.nrdokmag=IFNULL(@nrdok,''),n.info2=CONCAT("Zbiorcze tworzenie inwentaryzacji, magazyn ", _Param_A,  ", nadzień ",_Param_B,", dane filtra: ", _Param_D) WHERE guid=_IdnOper;
			UPDATE erp_obj_counters SET Nr=Nr+1 WHERE ResGUID=MD5(_Param_D);
		END IF;
		
		CALL C_HT_TE_Proc('Set.Tymczasowa', '0', 'OP', _IdnOper, '', '', '', '', '', '&Clear_Star_Numbers=1&');
		
	--	CALL C_HT_Inwentaryzacja_Tools('Inwentaryzacja.REC.OPEN.2.0', '', _IdnOper, '', 0, '', '', '', '');	
		
		UPDATE oppo SET calc_ver=0 WHERE idnoper=_IdnOper;
		UPDATE opng n SET n.calc_ver=0,n.status=0 WHERE guid=_IdnOper;
	-- ponizsze zeby dobrze okreslalo strone w calcver=0  w exe po roku  nie szukam 	w Inwentaryzacja.REC.New.2.0 RG
	
		UPDATE opng n SET n.zmagazynu=n.domagazynu  WHERE n.guid=_IdnOper AND calc_ver=0;
		UPDATE opng n SET n.domagazynu=0  WHERE n.guid=_IdnOper AND calc_ver=0;
		
		SELECT CONCAT("Stworzono inwentaryzację, magazyn ", _Param_A,  ", nadzień ",_Param_B,", dane filtra: ", _Param_D) AS MSG;
		
		END IF;		-- IF _MODE LIKE 'Inwentaryzacja.oppo.Update.By.%' THEN
		
END$$

DROP PROCEDURE IF EXISTS `C_HT_Magazyny`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `C_HT_Magazyny`(
	IN _MODE VARCHAR(250),
	IN _Key VARCHAR(38),
	IN _Param_A VARCHAR(50),	
	IN _Param_B VARCHAR(50),	
	IN _Param_C VARCHAR(50),	
	IN _Param_D TEXT
)
S_C_HT_Magazyny: BEGIN 
	/*
	dokończ to wykorz. counter zmiana - polaczenie zmian w IRegu uprawnien itd
	IF @.User.Magazyny.alocaltime IS NOT NULL THEN
--	Juz byl odczyt czyli @_Setting_Variables.alocaltime jest czas ost. odswiezenia to..
		SELECT MAX(alocaltime) FROM `uprawnienia` INTO @uprawnienia.alocaltime;
	--	... pobierz czas ost. zmiany `uprawnienia`
		IF (@uprawnienia.alocaltime < @.User.Magazyny.alocaltime) THEN
			LEAVE S_Setting_Variables;
		END IF;
	END IF;
	*/
	IF _MODE IN ('User.Magazyny.INIT') THEN
		IF @.User.Magazyny.alocaltime IS NOT NULL THEN
			IF @.User.Magazyny.alocaltime > (NOW() - INTERVAL 1 MINUTE) THEN
				LEAVE S_C_HT_Magazyny;
			END IF;
		END IF;
		SET _Key = NULLIF(@SYSTEM.Client.Session.log_USER_GUID, '');
		IF _Key IS NULL THEN
			CALL _sessions_APP('SET.VAR', @SYSTEM.Client.Session.GUID, '', '', '', '', '');
			SET _Key = @SYSTEM.Client.Session.log_USER_GUID;
		END IF;
		CALL C_HT_Magazyny('User.Magazyny.INIT.FOR', _Key, '', '', '', '');  	-- tabela dla uzutkownia = @UserGUID
		DROP TEMPORARY TABLE IF EXISTS `vt_user_magazyny`;
		CREATE TEMPORARY TABLE `vt_user_magazyny`
			SELECT tm.* FROM `t_user_magazyny` tm
		;
		SET @.User.Magazyny.alocaltime = NOW();
	END IF;

	IF _MODE IN ('User.Magazyny.INIT.FOR') THEN
	/* *************************************************************************************************************************************************************
		Przygotowanie tabeli tymcz. z magazynami uzytkownika
		CALL C_HT_Magazyny('User.Magazyny.INIT', '', '', '', '', '');  	-- tabela dla zalogowanego
		CALL C_HT_Magazyny('User.Magazyny.INIT.FOR', @UserGUID, '', '', '', '');  	-- tabela dla uzutkownia = @UserGUID
	**************************************************************************************************************************************************************/
		SET _Key = NULLIF(_Key, '');
		SET @.UM = NULLIF(_Key, '');
		
		DROP TEMPORARY TABLE IF EXISTS `t_user_grupy`;
		CREATE TEMPORARY TABLE `t_user_grupy` (
			`GrupaGUID` VARCHAR(38) NOT NULL DEFAULT '',
			`IsUser` BOOLEAN DEFAULT FALSE,
			PRIMARY KEY `GrupaGUID`(`GrupaGUID`)
		)
		;
		-- CREATE TEMPORARY TABLE `t_user_grupy`
		TRUNCATE `t_user_grupy`;
		INSERT IGNORE INTO `t_user_grupy`
			SELECT
				go.GrupaGUID, go.GrupaGUID = @.UM AS IsUser
			FROM `grupy_osob` go
			WHERE
				go.OsobaGUID = @.UM
		;
		--	SELECT * FROM `t_user_grupy`;
	--	Ogólny Rozchod, przychod usera	...
	--	'magazyny|rozchod'	...
		SELECT
			IFNULL(
				(
				SELECT
					MAX(u.Poziom) AS Poziom
				FROM `uprawnienia` u
				WHERE
					u.Miejsce = 'magazyny|rozchod'
					AND u.OsobaGUID = @.UM
				),
				(
				SELECT
					MAX(u.Poziom) AS Poziom
				FROM `uprawnienia` u, `t_user_grupy` tg 
				WHERE
					u.Miejsce = 'magazyny|rozchod'
					AND tg.grupaGUID = u.OsobaGUID
				)
			) AS Poziom
		INTO @.UM.Rozchod
		;
	--	'magazyny|przychod'	...
		SELECT
			IFNULL(
				(
				SELECT
					MAX(u.Poziom) AS Poziom
				FROM `uprawnienia` u
				WHERE
					u.Miejsce = 'magazyny|przychod'
					AND u.OsobaGUID = @.UM
				),
				(
				SELECT
					MAX(u.Poziom) AS Poziom
				FROM `uprawnienia` u, `t_user_grupy` tg 
				WHERE
					u.Miejsce = 'magazyny|przychod'
					AND tg.grupaGUID = u.OsobaGUID
				)
			) AS Poziom
		INTO @.UM.Przychod
		;
	--	`t_user_mag_upr_r_p`
		DROP TEMPORARY TABLE IF EXISTS `t_user_mag_upr_r_p`;
		-- show create table `t_user_mag_upr_r_p`;
		CREATE TEMPORARY TABLE `t_user_mag_upr_r_p` (
			`Miejsce` VARCHAR(50) NOT NULL DEFAULT '',
			`OsobaGUID` VARCHAR(38) NOT NULL DEFAULT '',
			`UserGUID` VARCHAR(38) NOT NULL DEFAULT '',
			`IsUserUpr` BOOLEAN DEFAULT FALSE,
			`Poziom` INT(11) NOT NULL DEFAULT '0',
			PRIMARY KEY `MO`(`Miejsce`, `OsobaGUID`),
			KEY `Poziom`(`Poziom`),
			KEY `IsUserUpr`(`IsUserUpr`)
		)
		;
		-- CREATE TEMPORARY TABLE `t_user_grupy`
		TRUNCATE `t_user_mag_upr_r_p`;
		INSERT IGNORE INTO `t_user_mag_upr_r_p`
		SELECT
			u.Miejsce, u.OsobaGUID, @.UM AS UserGUID, u.OsobaGUID = @.UM AS IsUserUpr, u.Poziom
			-- u.*
		FROM `uprawnienia` u, `t_user_grupy` tg 
		WHERE
			u.Miejsce LIKE 'magazyny|%|%chod'
			AND tg.grupaGUID = u.OsobaGUID
		;
					--	SELECT u.* FROM `t_user_mag_upr_r_p` u;
	--	t_user_magazyny
		IF @session.HT.IR.uprawnienia_magazynow_wg_grup IS NULL THEN
			CALL _IReg_Get_2('', 'uprawnienia_magazynow_wg_grup', 0, 'INTEGER', @session.HT.IR.uprawnienia_magazynow_wg_grup, 2, '@session.HT.IR.');
		END IF;
		DROP TEMPORARY TABLE IF EXISTS `t_user_magazyny`;
		CREATE TEMPORARY TABLE `t_user_magazyny`
		SELECT
			m.*,
			ud_r.Miejsce AS Miejsce_r,
			_VarInt(@.UM.Rozchod) AS u_r_default,
			_VarInt(u_mr.Poziom) AS u_r,
			_VarInt(NULL) AS upr_roz,
			ud_p.Miejsce AS Miejsce_p,
			_VarInt(@.UM.Przychod) AS u_p_default,
			_VarInt(u_mp.Poziom) AS u_p,
			_VarInt(NULL) AS upr_prz,
			ua.OsobaGUID AS UserGUID
		FROM
		(
			SELECT
				m.*,
				IF(@session.HT.IR.uprawnienia_magazynow_wg_grup, m.Grupa, m.IdnMagazynu) AS IdnForUpr
			FROM `Magazyny` m
		) m
		INNER JOIN `_user_accounts` ua ON ua.OsobaGUID = @.UM -- _Key
		LEFT JOIN `uprawnienia_dict` ud_r ON ud_r.Miejsce = CONCAT_WS('', 'magazyny|', m.IdnForUpr,'|rozchod')
		LEFT JOIN `uprawnienia_dict` ud_p ON ud_p.Miejsce = CONCAT_WS('', 'magazyny|', m.IdnForUpr,'|przychod')
		LEFT JOIN `uprawnienia` u_mr ON u_mr.Miejsce = ud_r.Miejsce AND u_mr.osobaguid = ua.OsobaGUID
		LEFT JOIN `uprawnienia` u_mp ON u_mp.Miejsce = ud_p.Miejsce AND u_mp.osobaguid = ua.OsobaGUID
		;
	--	rozchod wg grup gdy wg usera jest 0
					--	UPDATE `t_user_magazyny` tm SET tm.u_r = NULL;
		UPDATE `t_user_magazyny` tm
		SET
			tm.u_r = 
			IFNULL(tm.u_r,
				(
				SELECT
					MAX(u.Poziom) AS Poziom
				FROM `t_user_mag_upr_r_p` u
				WHERE
					u.Miejsce = tm.Miejsce_r 
				)
			)	-- , tm.u_r_default = @.UM.Rozchod -- @.UM.Przychod
		WHERE
			TRUE
		;
	--	przychod
					--	UPDATE `t_user_magazyny` tm SET tm.u_p = NULL;
		UPDATE `t_user_magazyny` tm
		SET
			tm.u_p = 
			IFNULL(tm.u_p,
				(
				SELECT
					MAX(u.Poziom) AS Poziom
				FROM `t_user_mag_upr_r_p` u
				WHERE
					u.Miejsce = tm.Miejsce_p 
				)
			)	-- , tm.u_r_default = @.UM.Rozchod -- @.UM.Przychod
		WHERE
			TRUE
		;
		UPDATE `t_user_magazyny` tm
		SET
			tm.upr_roz = GREATEST(IFNULL(tm.u_r, 0), IFNULL(tm.u_r_default, 0)),
			tm.upr_prz = GREATEST(IFNULL(tm.u_p, 0), IFNULL(tm.u_p_default, 0))
		;
		IF _Param_D LIKE '%select%' THEN
			SELECT 
				tm.upr_roz, tm.u_r, tm.u_r_default, 
				tm.upr_prz, tm.u_p, tm.u_p_default, 
				tm.* 
			FROM `t_user_magazyny` tm
			;
		END IF;
		
	END IF;
	
	IF _MODE IN ('User.Magazyny.INIT.FOR.old') THEN
	/* *************************************************************************************************************************************************************
		Przygotowanie tabeli tymcz. z magazynami uzytkownika
		CALL C_HT_Magazyny('User.Magazyny.INIT', '', '', '', '', '');  	-- tabela dla zalogowanego
		CALL C_HT_Magazyny('User.Magazyny.INIT.FOR', @UserGUID, '', '', '', '');  	-- tabela dla uzutkownia = @UserGUID
	**************************************************************************************************************************************************************/
		SET _Key = NULLIF(_Key, '');
		IF @session.HT.IR.uprawnienia_magazynow_wg_grup IS NULL THEN
			CALL _IReg_Get_2('', 'uprawnienia_magazynow_wg_grup', 0, 'INTEGER', @session.HT.IR.uprawnienia_magazynow_wg_grup, 2, '@session.HT.IR.');
		END IF;
		SET @.UM = NULLIF(_Key, '');
		DROP TEMPORARY TABLE IF EXISTS `t_user_magazyny`;
		CREATE TEMPORARY TABLE `t_user_magazyny`
		SELECT
			m.*,
			ud_r.Miejsce AS Miejsce_r,
			_VarInt(u_r.Poziom) AS u_r_default,
			_VarInt(u_mr.Poziom) AS u_r,
			_VarInt(NULL) AS upr_roz,
			ud_p.Miejsce AS Miejsce_p,
			_VarInt(u_p.Poziom) AS u_p_default,
			_VarInt(u_mp.Poziom) AS u_p,
			_VarInt(NULL) AS upr_prz,
			ua.OsobaGUID AS UserGUID
		FROM
		(
			SELECT
				m.*,
				IF(@session.HT.IR.uprawnienia_magazynow_wg_grup, m.Grupa, m.IdnMagazynu) AS IdnForUpr
			FROM `Magazyny` m
		) m
		INNER JOIN `_user_accounts` ua ON ua.OsobaGUID = @.UM -- _Key
		LEFT JOIN `uprawnienia_dict` ud_r ON ud_r.Miejsce = CONCAT_WS('', 'magazyny|', m.IdnForUpr,'|rozchod')
		LEFT JOIN `uprawnienia_dict` ud_p ON ud_p.Miejsce = CONCAT_WS('', 'magazyny|', m.IdnForUpr,'|przychod')
		LEFT JOIN `uprawnienia` u_r ON u_r.Miejsce = 'magazyny|rozchod' AND u_r.osobaguid = ua.OsobaGUID
		LEFT JOIN `uprawnienia` u_p ON u_p.Miejsce = 'magazyny|przychod' AND u_p.osobaguid = ua.OsobaGUID
		LEFT JOIN `uprawnienia` u_mr ON u_mr.Miejsce = ud_r.Miejsce AND u_mr.osobaguid = ua.OsobaGUID
		LEFT JOIN `uprawnienia` u_mp ON u_mp.Miejsce = ud_p.Miejsce AND u_mp.osobaguid = ua.OsobaGUID
		;
		--	rozchod wg grup gdy wg usera jest 0
		UPDATE `t_user_magazyny` tm
		SET
			tm.u_r = 
			IFNULL(tm.u_r,
				(
				SELECT
					MAX(u.Poziom) AS Poziom
				FROM `uprawnienia` u, `grupy_osob` go 
				WHERE
					u.Miejsce = tm.Miejsce_r 
					AND go.grupaGUID = u.OsobaGUID
					AND go.osobaguid = tm.UserGUID
				)
			),
			tm.u_r_default = 
				IFNULL(tm.u_r_default,
				(
				SELECT
					MAX(u.Poziom) AS Poziom
				FROM `uprawnienia` u, `grupy_osob` go 
				WHERE
					u.Miejsce = 'magazyny|rozchod'
					AND go.grupaGUID = u.OsobaGUID
					AND go.osobaguid = tm.UserGUID
				)
			)
		WHERE
			TRUE
		;
		--	przychod
		UPDATE `t_user_magazyny` tm
		SET
			tm.u_p = 
			IFNULL(tm.u_p,
				(
				SELECT
					MAX(u.Poziom) AS Poziom
				FROM `uprawnienia` u, `grupy_osob` go 
				WHERE
					u.Miejsce = tm.Miejsce_p 
					AND go.grupaGUID = u.OsobaGUID
					AND go.osobaguid = tm.UserGUID
				)
			),
			tm.u_p_default = 
				IFNULL(tm.u_p_default ,
				(
				SELECT
					MAX(u.Poziom) AS Poziom
				FROM `uprawnienia` u, `grupy_osob` go 
				WHERE
					u.Miejsce = 'magazyny|przychod'
					AND go.grupaGUID = u.OsobaGUID
					AND go.osobaguid = tm.UserGUID
				)
			)
		WHERE
			TRUE
		;
		UPDATE `t_user_magazyny` tm
		SET
			tm.upr_roz = GREATEST(IFNULL(tm.u_r, 0), IFNULL(tm.u_r_default, 0)),
			tm.upr_prz = GREATEST(IFNULL(tm.u_p, 0), IFNULL(tm.u_p_default, 0))
		;
		IF _Param_D LIKE '%select%' THEN
			SELECT 
				tm.upr_roz, tm.u_r, tm.u_r_default, 
				tm.upr_prz, tm.u_p, tm.u_p_default, 
				tm.* 
			FROM `t_user_magazyny` tm
			;
		END IF;
		
	END IF;
END$$


DELIMITER ;

/*
$Log$
*/

/*
====================================================================================================================================================================================
	NOTATNIK
====================================================================================================================================================================================
xx
	
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
*/
