DELIMITER $$

DROP PROCEDURE IF EXISTS `ht_zmng_wyjazdy`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `ht_zmng_wyjazdy`(
	IN _MODE VARCHAR(250),
	IN _GUID VARCHAR(38),
	IN _Param_A VARCHAR(255),	
	IN _Param_B VARCHAR(255),	
	IN _Param_C VARCHAR(255),	
	IN _Param_D VARCHAR(255)	
)
SPROC: BEGIN
	/*
	_MODE

	------------------------------------------------------------------------------------------------------------------------------------------------------------
	'INIT'
		Inicjowanie
		Parametrow brak
		CALL ht_zmng_wyjazdy('INIT', '', '', '', '', '');		
		
	------------------------------------------------------------------------------------------------------------------------------------------------------------
	'SELECT_KONTRAH_INFO'
		Zwraca informacje o kontrahencie
		Parametry
			_GUID	GUID kontrahenta
		CALL ht_zmng_wyjazdy('SELECT_KONTRAH_INFO', GUID, '', '', '', '');		
		
	------------------------------------------------------------------------------------------------------------------------------------------------------------
	'SELECT_ZMPO_DAY'
		Przegladarka zamowien na dzien
		Parametry
			_GUID		GUID zamowienia, gdy <> '' to tylko ten guid bierzemy pod uwagę
			_Param_A	Dzien realizacji - WYMAGANY
			_Param_B	Wyjazd - może być pusty
			_Param_C	Kierowca - może być pusty
			_Param_D	Gdy <> ''  to ostatnie 7 dni
		CALL ht_zmng_wyjazdy('SELECT_ZMPO_DAY', '', '2010-03-02', '', '', '');		
		CALL ht_zmng_wyjazdy('SELECT_ZMPO_DAY', '', '', '', '', '1');				--	ostatnie 7 dni
		
	------------------------------------------------------------------------------------------------------------------------------------------------------------
	'SELECT_ZMNG_WYJAZD_INFO'
		Przegladarka zamowien na dzien
		Parametry
			_GUID		GUID zamówienia
		CALL ht_zmng_wyjazdy('SELECT_ZMNG_WYJAZD_INFO', GUID, '', '', '', '');		
		
	------------------------------------------------------------------------------------------------------------------------------------------------------------
	'SELECT_WYJAZDY_FOR_DAY'
		Przegladarka zamowien na dzien
		Parametry
			_Param_A	Dzien wyjazdu - WYMAGANY
			_Param_B	Dzien realizacji
			_Param_C	AreaGUID
		CALL ht_zmng_wyjazdy('SELECT_WYJAZDY_FOR_DAY', '', '2010-03-02', '2010-03-02', '', '');		
		
	------------------------------------------------------------------------------------------------------------------------------------------------------------
	'NIE_UZYWAC_UPDATE_ZMNG_FOR_WYJAZD'
		Ustawia magazyn wysylkowy zamowienia według dopisanego wyjazdu
		Parametry
			_GUID		GUID zamówienia
		CALL ht_zmng_wyjazdy('NIE_UZYWAC_UPDATE_ZMNG_FOR_WYJAZD', GUID, '', '', '', '');		
	
	------------------------------------------------------------------------------------------------------------------------------------------------------------

	'ROZLICZ_SELECT'
		Zwraca zawartość zestawy Master/Detal:	
			A - lista kontrahentów z polem `KPAkwizytora`	
			B - pozycje zmówień tego kontrahenta
			C - zwraca zestaw z jednym polem `IdnNg` czyli GUID-y zamowien wyjazdu
		Parametry
			_GUID		GUID wyjazdu
			_Param_A	A - lista kontrahentów z polem `KPAkwizytora`	B - pozycje zmówień tego kontrahenta
		CALL ht_zmng_wyjazdy('ROZLICZ_SELECT', _GUID, 'A', '', '', '');		-- naglowek (kontrahent)
		CALL ht_zmng_wyjazdy('ROZLICZ_SELECT', _GUID, 'B', '', '', '');		-- pozycje zm. kontrahenta
		CALL ht_zmng_wyjazdy('ROZLICZ_SELECT', '', 'C', '', '', '');		-- GUID-y zamowien
		CALL ht_zmng_wyjazdy('ROZLICZ_SELECT', '', 'D', '', '', '');		-- BRAKI towarów
		
	------------------------------------------------------------------------------------------------------------------------------------------------------------
	'KLONOWANIE_WYJAZDOW_NA_DZIEN.init'
	'KLONOWANIE_WYJAZDOW_NA_DZIEN.insert'
	'KLONOWANIE_WYJAZDOW_NA_DZIEN.create'
		Klonuje wyjazdy z widoku na podany dzien
		Parametry
			_GUID		GUID zamówienia
			_Param_A	Dzien wyjazdu 
		CALL ht_zmng_wyjazdy('KLONOWANIE_WYJAZDOW_NA_DZIEN', GUID, _Param_A, '', '', '');		
	
	------------------------------------------------------------------------------------------------------------------------------------------------------------
	'USUN_WYJAZD.check'
	'USUN_WYJAZD.delete'
		Usuwanie wyjazdu
		Parametry
			_GUID		GUID wyjazdu		
		CALL ht_zmng_wyjazdy('USUN_WYJAZD.check', GUID, '', '', '', '');		
		CALL ht_zmng_wyjazdy('USUN_WYJAZD.delete', GUID, '', '', '', '');		
	
	------------------------------------------------------------------------------------------------------------------------------------------------------------
	*/
	
	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, _DepotGUID 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 C_RED INTEGER DEFAULT 255;
	DECLARE C_VIOLET INTEGER DEFAULT 16711935; -- 14556072
	DECLARE C_NAVY INTEGER DEFAULT 16711680;	--	8388608;

	
	SET @Watch.Inf = 'NULL';
	--	@session.CurrugrpGUID
	IF IFNULL(@session.CurrOsobaGUID, '') = '' THEN 
		SET @session.CurrOsobaGUID = @session.CheckLogonUser;
		IF IFNULL(@session.CurrOsobaGUID, '') = '' THEN 
			Select 'Wychodze - nieokreslona zmienna @session.CurrOsobaGUID';
			LEAVE SPROC;	--	wychodze bo nie mam nic do zapisywania
		
		END IF;	
	END IF;

	SET @Watch.Inf = 'Za @session.CurrugrpGUID';
	-- SET _ErrNo = 0;
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'INIT'
		Inicjowanie
		Parametrow brak
		CALL ht_zmng_wyjazdy('INIT', '', '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'INIT' THEN
		SET @Param = '';
	END IF;	--	IF _MODE = 'INIT'
	

		SET @Watch.Inf = 'za IF _MODE = "INIT" THEN';


/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'UPDATE_ROUTE_ORDER_INDEX'
		Aktualizuje kolejność na trasie w zamówieniach
		Parametry
			_GUID	GUID wyjazdu (trasy)
		CALL ht_zmng_wyjazdy('UPDATE_ROUTE_ORDER_INDEX', GUID, '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'UPDATE_ROUTE_ORDER_INDEX' THEN
	
	  UPDATE 
		zmng z, t_SELECT_ROUTE_POINTS r
	  SET
		z.numer_na_trasie_zm = r.numer_na_trasie
	  WHERE z.GUID = r.zm_guid AND ((r.startPoint = 0) AND (r.endPoint = 0) )	;   
		
	END IF;	--	IF _MODE = 'UPDATE_ROUTE_ORDER_INDEX'	
		
		
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'GET_ROUTE_HEADER'
		Zwraca nagłówek trasy
		Parametry
			_GUID	GUID wyjazdu (trasy)
		CALL ht_zmng_wyjazdy('GET_ROUTE_HEADER', GUID, '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'GET_ROUTE_HEADER' THEN
	
	SELECT	
	  CONCAT(DATE_FORMAT(w.data, '%Y-%m-%d'), 'T', DATE_FORMAT(w.data, '%H:%i:%s')) AS data, 
      -- REPLACE(nrrej, ' ', '') AS nrrej, 
	  IFNULL(a.valuex, w.nrrej) AS nrrej, 
	  w.GUID 
      FROM v_wyjazdy w 
	  LEFT JOIN  katcols a  ON w.katcol0 = a.klucz AND a.typ = 7 AND a.colnr = 1 
	  WHERE w.GUID = _GUID;
		
	END IF;	--	IF _MODE = 'GET_ROUTE_HEADER'	
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'SELECT_ROUTE_POINTS'
		Zwraca poszczegolne punkty na danej trasie
		Parametry
			_GUID	GUID wyjazdu (trasy)
		CALL ht_zmng_wyjazdy('SELECT_ROUTE_POINTS', GUID, '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'SELECT_ROUTE_POINTS' THEN
		DROP TEMPORARY TABLE IF EXISTS `t_SELECT_ROUTE_POINTS`;
		CREATE TEMPORARY TABLE `t_SELECT_ROUTE_POINTS`
			SELECT -- adr.adres,  adr.*, 
				adr.Idcountry, adr.wojewodztwo, adr.miejscowosc, adr.KodPocztowy, adr.ulica, adr.NrPos, 
				IFNULL(adr.Longitude, 0.0000000000000) AS Longitude, IFNULL(adr.Latitude, 0.0000000000000) AS Latitude,
				k.nazwa AS kontrah_nazwa, ean.symbol, 
				z.guid AS zm_guid, z.kontrguid,
				IF(z.numer_na_trasie_zm > 0, z.numer_na_trasie_zm, k.numer_na_trasie) AS numer_na_trasie,   -- bedzie uaktualnione przez optymalizację dokonaną przez SV
				adr.guid AS adr_guid, k.platnikguid, z.kontrsymbol,
				0 AS startPoint, 0 AS endPoint	
			FROM zmng z 
			JOIN kontrah k ON z.kontrguid = k.guid
			LEFT JOIN erp_area_nodes ean ON k.guid = ean.KontrGUID  
			INNER JOIN v_geo_int_adr_link adr ON adr.objGUID = ean.guid AND adr.objTable = 'erp_area_nodes' AND adr.geo_int_miejsca_ID != ''
			WHERE 
				ean.type = 'LOC' 
				AND 
				z.wyjazdGUID = _GUID
			GROUP BY zm_guid
		;    
		ALTER TABLE `t_SELECT_ROUTE_POINTS` ADD PRIMARY KEY zm_guid (zm_guid);
				
		INSERT IGNORE INTO `t_SELECT_ROUTE_POINTS`
			SELECT -- adr.adres,  adr.*, 
				'PL' AS Idcountry, 
				'' AS wojewodztwo, 
				adr.c_Miejsce AS miejscowosc, 
				adr.c_Kod, adr.c_ulica, adr.c_Numery, 
				0.0 AS Longitude, 0.0 AS Latitude,  -- jak to wyliczyc ?
				k.nazwa AS kontrah_nazwa, ean.symbol, 
				z.guid AS zm_guid, z.kontrguid,
				IF(z.numer_na_trasie_zm > 0, z.numer_na_trasie_zm, k.numer_na_trasie) AS numer_na_trasie,   -- bedzie uaktualnione przez optymalizację dokonaną przez SV
				adr.aIDN AS adr_guid, k.platnikguid, z.kontrsymbol,
				0 AS startPoint, 0 AS endPoint					
			FROM zmng z 
			JOIN kontrah k ON z.kontrguid = k.guid
			LEFT JOIN erp_area_nodes ean ON k.guid = ean.KontrGUID  
			INNER JOIN `ta_cdg_adresy` adr ON adr.GUID = k.guid
			WHERE 
				ean.type = 'LOC' 
				AND 
				z.wyjazdGUID = _GUID
			GROUP BY zm_guid
		;    
		
		-- określamy lokalizację oddziału, skąd wyjeżdża i dokąd wraca kierowca: 
		-- v_wyjazdy.areaguid -> erp_area_nodes.guid (rewir) 
		-- erp_area_nodes.parentguid (rewir) -> erp_area_nodes.guid (oddzial DEPOT)
		
		SET _DepotGUID = '';
		SELECT dep.guid  -- , dep.symbol
		FROM erp_area_nodes dep, erp_area_nodes rew, v_wyjazdy vw
		WHERE rew.parentguid = dep.guid AND vw.areaguid = rew.guid AND vw.GUID = _GUID
		INTO _DepotGUID;
		
		SET @route.DepotGUID =  _DepotGUID;

		-- wstawiamy dane adresowe oddzialu jako punkt startowy i koncowy
		INSERT  INTO `t_SELECT_ROUTE_POINTS`  -- IGNORE
		SELECT 
		  adr.IdCountry, adr.wojewodztwo, adr.miejscowosc, adr.KodPocztowy, 
		  adr.ulica, adr.NrPos, 
		  -- adr.Longitude, adr.Latitude,
		  IFNULL(adr.Longitude, 0.0000000000000) AS Longitude, IFNULL(adr.Latitude, 0.0000000000000) AS Latitude,
		  'CDG' AS kontrah_nazwa,  -- kontrahenta chyba tu nie wstawiamy, bo to jest punkt wyjazdowy (ewentualnie wstawić nazwe wlasna CDG)
		  ean.symbol, '1' AS zm_guid, 'CDG' AS kontrguid, 
		  0 AS numer_na_trasie,
		  adr.GUID AS adr_guid, 'CDG' AS platnikguid, 'CDG' AS kontrsymbol,
			--		  platnikguid, kontrguid - CDG ?
		  1 AS startPoint, 0 AS endPoint			  		  
		  FROM `erp_area_nodes` ean
		  LEFT JOIN `v_geo_int_adr_link` adr ON adr.ObjGUID = ean.GUID AND adr.objTable = 'erp_area_nodes'
		-- FROM 
		--	v_geo_int_adr_link adr -- ON adr.objGUID = n.guid AND 
		WHERE 
			adr.objTable = 'erp_area_nodes'	AND	adr.objguid = _DepotGUID;
			
		INSERT  INTO `t_SELECT_ROUTE_POINTS`  -- IGNORE
		SELECT 
		  adr.IdCountry, adr.wojewodztwo, adr.miejscowosc, adr.KodPocztowy, 
		  adr.ulica, adr.NrPos, 
		  -- adr.Longitude, adr.Latitude,
		  IFNULL(adr.Longitude, 0.0000000000000) AS Longitude, IFNULL(adr.Latitude, 0.0000000000000) AS Latitude,
		  'CDG' AS kontrah_nazwa,  -- kontrahenta chyba tu nie wstawiamy, bo to jest punkt wyjazdowy (ewentualnie wstawić nazwe wlasna CDG)
		  ean.symbol, '0' AS zm_guid, 'CDG' AS kontrguid, 
		  0 AS numer_na_trasie,
		  adr.GUID AS adr_guid, 'CDG' AS platnikguid, 'CDG' AS kontrsymbol,		  
			--		  platnikguid, kontrguid - CDG ?
		  0 AS startPoint, 1 AS endPoint			  		  
		  FROM `erp_area_nodes` ean
		  LEFT JOIN `v_geo_int_adr_link` adr ON adr.ObjGUID = ean.GUID AND adr.objTable = 'erp_area_nodes'
		-- FROM 
		--	v_geo_int_adr_link adr -- ON adr.objGUID = n.guid AND 
		WHERE 
			adr.objTable = 'erp_area_nodes'	AND	adr.objguid = _DepotGUID;	

		-- koniec wstawiania danych adresowych oddzialu jako punktu startowego i koncowego

		/* to zostaje zaremowane i bedzie podstawiane do CDS.CommandText, dzieki czemu bedzie mozna wykonac
		  ApplyUpdates (potrzebna do tego jest tabela źródłowa, nie moze to byc CALL)
		select * from `t_SELECT_ROUTE_POINTS`;
		*/
	END IF;	--	IF _MODE = 'SELECT_ROUTE_POINTS'
	
SET @Watch.Inf = 'za SELECT_ROUTE_POINTS';
	
	
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'SELECT_KONTRAH_INFO'
		Zwraca informacje o kontrahencie
		Parametry
			_GUID	GUID kontrahenta
		CALL ht_zmng_wyjazdy('SELECT_KONTRAH_INFO', GUID, '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'SELECT_KONTRAH_INFO' THEN
		SELECT
			k.Symbol, k.Nazwa, k.NIP, 
			if(CONCAT(IFNULL(k.W_ulica,''),IFNULL(k.W_NazwaMiasta, '')) = '',
				CONCAT(k.ulica, ', ', k.zipcode, ' ', IFNULL(ms.NazwaMiasta, k.NazwaMiasta)), 
				CONCAT(k.W_ulica, ', ', k.W_zipcode, ' ', IFNULL(k.W_NazwaMiasta, ''))
			) As Adres,
			-- _VarStr_NotNull(r.Nazwa) As Rewir_Nazwa,
			GROUP_CONCAT(IF(kk.typ_medium IN (0,2), kk.Adres, NULL) SEPARATOR ', ') As Telefony,
			GROUP_CONCAT(IF(kk.typ_medium IN (1), kk.Adres, NULL) SEPARATOR ', ') As Faksy,
			GROUP_CONCAT(IF(kk.typ_medium IN (3), kk.Adres, NULL) SEPARATOR ', ') As Maile
		FROM `kontrah` k
		LEFT JOIN `Miasta` ms ON ms.IDN = k.miastoidn
		LEFT JOIN `kontakty` kk ON kk.KontrGUID = k.GUID AND IFNULL(kk.OsobaGUID, '') = '' AND kk.typ_medium in (0,1,2,3)
		-- LEFT JOIN `erp_area_nodes` r ON r.GUID = k.AreaGUID
		WHERE
			k.GUID = _GUID
		GROUP BY k.GUID	
		;
		
	END IF;	--	IF _MODE = 'SELECT_KONTRAH_INFO'
	
SET @Watch.Inf = 'za SELECT_KONTRAH_INFO';
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'PREPARE_WYJAZDY_PLATNICY_STATUS'
		Przegladarka zamowien na dzien
		Parametry
			_Param_A	0	przygotuj	1	wylicz
		CALL ht_zmng_wyjazdy('PREPARE_WYJAZDY_PLATNICY_STATUS', '', '0', '', '', '');		
		CALL ht_zmng_wyjazdy('PREPARE_WYJAZDY_PLATNICY_STATUS', '', '1', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'PREPARE_WYJAZDY_PLATNICY_STATUS' THEN
		IF _Param_A = '0' THEN
			DROP TEMPORARY TABLE IF EXISTS `t_wyjazdy_platnicy`;
			CREATE TEMPORARY TABLE `t_wyjazdy_platnicy`(
				PlatnikGUID VARCHAR(38) NOT NULL,
				Current_Status INT(11) DEFAULT 0, 
				FirstNonPayDate DATE,
				CPozostaloFaktoring DOUBLE DEFAULT 0, 
				CPozostaloKredyt DOUBLE DEFAULT 0, 
				Max_Dni INT(11),
				PrzekroczonyLimitDni INT(11),
				Info_Zalega  INT(11),
				Info_PrzekroczonyLimitDni INT(11),
				Info_DniDoTerminuRealizacji INT(11),
				ColorState  INT(11),
				TerminRealizacji DATE NOT NULL,
				KEY UNIQUE_KEY (PlatnikGUID, TerminRealizacji)
			);
		ELSE
			UPDATE	`t_wyjazdy_platnicy` twp, `ht_platnik_pay_info` ppi
			SET
				twp.Current_Status = ppi.Current_Status,
				twp.FirstNonPayDate = ppi.FirstNonPayDate,
				twp.CPozostaloFaktoring = ppi.CPozostaloFaktoring,
				twp.CPozostaloKredyt = ppi.CPozostaloKredyt,
				twp.Max_Dni = ppi.Max_Dni,
				twp.PrzekroczonyLimitDni = ppi.PrzekroczonyLimitDni,
				
				twp.Info_Zalega = IF(ppi.CPozostaloKredyt > 0, 1, 0),
				twp.Info_PrzekroczonyLimitDni = IF(ppi.PrzekroczonyLimitDni > 0, 1, 0),
				twp.Info_DniDoTerminuRealizacji = _VarInt_NotNull(IF(ppi.CPozostaloKredyt > 0, TO_DAYS(twp.TerminRealizacji)-TO_DAYS(1*ppi.FirstNonPayDate), 0))
			WHERE
				twp.PlatnikGUID = ppi.PlatnikGUID
			;
			UPDATE	`t_wyjazdy_platnicy` twp, `ht_platnik_pay_info` ppi
			SET
				twp.ColorState = _VarInt_NotNull(IF(twp.Info_Zalega = 0, 
					0,	--	czarny
					IF(twp.FirstNonPayDate < CURRENT_DATE,
						IF(twp.PrzekroczonyLimitDni > 0,
							C_RED,	--	czerwony
							C_NAVY 	--	granatowy
						),	
						IF(twp.Info_DniDoTerminuRealizacji > 0,
							C_VIOLET ,	--	fioletowy
							0	--	czarny
						)	
					)	
				))	
			WHERE
				twp.PlatnikGUID = ppi.PlatnikGUID
			;
		END IF;	
	END IF;	--	IF _MODE = 'PREPARE_WYJAZDY_PLATNICY_STATUS'

SET @Watch.Inf = 'za PREPARE_WYJAZDY_PLATNICY_STATUS';
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'SELECT_DAY'	NIE UŻYWAMY
		Przegladarka zamowien na dzien
		Parametry
			_GUID		GUID zamowienia, gdy <> '' to tylko ten guid bierzemy pod uwagę
			_Param_A	Dzien realizacji - WYMAGANY
			_Param_B	Wyjazd - może być pusty
			_Param_C	Kierowca - może być pusty
		CALL ht_zmng_wyjazdy('SELECT_DAY', '', '2010-03-02', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'SELECT_DAY' THEN	--	NIE UŻYWAMY
		SET _GUID = IFNULL(_GUID, '');
		
		SET _TerminRealizacji = DATE(IF(IFNULL(_Param_A, '') = '', CURRENT_DATE(), _Param_A));
		SET _TerminRealizacji_Start = _TerminRealizacji;
		SET _TerminRealizacji_End = DATE_ADD(_TerminRealizacji, INTERVAL 1 DAY);
		SET _Param_B = IFNULL(_Param_B, '');
		SET _Param_C = IFNULL(_Param_C, '');
		
		DROP TEMPORARY TABLE IF EXISTS `t_zmng_wyjazdy`;
		CREATE TEMPORARY TABLE `t_zmng_wyjazdy`
			SELECT 
				z.GUID,
				_VarInt(0) AS Checked,
				z.WyjazdGUID,
				IFNULL(w.NrWewn, '?') AS NrWewn, 
				w.Temat, 
				w.StartTime AS StartTime, w.EndTime AS EndTime, w.DeadLine AS DeadLine,
				w.AreaGUID AS AreaGUID,
				IFNULL(r.Nazwa, '<bez wyjazdu>') AS Rewir_Nazwa,
				k.platnikGUID,
				_VarStr_NotNull(IFNULL((SELECT osoba FROM `crm_usr_links` WHERE commisionGUID = z.WyjazdGUID AND poziom = 2 LIMIT 1), '')) AS OsobaGUID,
				
				_VarInt(COUNT(p.IDN)) AS IlePozycji,
				z.rodzaj, z.zrealizowane, z.nrzamw, z.datawystaw, z.kontrGUID, 
				z.idnmagazyn, z.MagazynWys,
				z.KontrSymbol, k.Nazwa AS KontrNazwa,	
				z.`localtime` AS OstatniaZmiana, 
				z.ilepoz, z.ilepozzreal, z.akwizytorGUID, z.rodzaj2, z.netto,
				mg1.Opis As Magazyn_Nazwa, mg2.Opis As MagazynWys_Nazwa,
				z.TerminRealizacji
				/*
				ppi.Current_Status, ppi.FirstNonPayDate, ppi.Max_Dni, ppi.PrzekroczonyLimitDni,
				IF(ppi.CPozostaloKredyt > 0, 1, 0) AS Info_Zalega,
				IF(ppi.PrzekroczonyLimitDni > 0, 1, 0) AS Info_PrzekroczonyLimitDni,
				_VarInt(IF(ppi.CPozostaloKredyt > 0, TO_DAYS(z.TerminRealizacji)-TO_DAYS(1*ppi.FirstNonPayDate), 0)) AS Info_DniDoTerminuRealizacji
				*/
			FROM `zmng` z
			LEFT JOIN `zmpo` p ON p.IdnNG = z.GUID
			LEFT JOIN `crm_commisions` w ON w.GUID = z.WyjazdGUID
			LEFT JOIN `erp_area_nodes` r ON r.GUID = w.AreaGUID
			LEFT JOIN `kontrah` k ON k.GUID = z.KontrGUID
			LEFT JOIN `ht_platnik_pay_info` ppi ON ppi.PlatnikGUID = k.platnikGUID
			LEFT JOIN `Magazyny` mg1 ON mg1.IdnMagazynu = z.idnmagazyn
			LEFT JOIN `Magazyny` mg2 ON mg2.IdnMagazynu = z.MagazynWys
			WHERE
				z.deleted = 0
				AND IF(_GUID != '', 
					z.GUID = _GUID,
					z.TerminRealizacji >= _TerminRealizacji_Start
					AND z.TerminRealizacji <= _TerminRealizacji_End
					AND IF(_Param_B = '', TRUE,  z.WyjazdGUID = _Param_B)
					--	AND IF(_Param_C = '', TRUE,  z.WyjazdGUID = _Param_C)
				)	
			GROUP BY z.GUID	
		;	
		CALL ht_zmng_wyjazdy('PREPARE_WYJAZDY_PLATNICY_STATUS', '', '0', '', '', '');		
		INSERT IGNORE INTO `t_wyjazdy_platnicy`
			(PlatnikGUID, TerminRealizacji)
			SELECT
				DISTINCT platnikGUID, TerminRealizacji
			FROM `t_zmng_wyjazdy`	
			WHERE
				_VarStr_NotNull(platnikGUID) != ''  AND TerminRealizacji IS NOT NULL
		;
		CALL ht_zmng_wyjazdy('PREPARE_WYJAZDY_PLATNICY_STATUS', '', '1', '', '', '');		
		SELECT 
			t.*, 
			_ConcatStr(o.Nazwisko, o.Imiona, ' ') As Kierowca_NazwiskoImie,
			twp.ColorState
		FROM `t_zmng_wyjazdy` t
		LEFT JOIN `osoby` o ON o.GUID  = t.OsobaGUID
		LEFT JOIN `t_wyjazdy_platnicy` twp ON twp.platnikGUID = t.platnikGUID
		;
	END IF;	--	IF _MODE = 'SELECT_DAY'		NIE UŻYWAMY
	
SET @Watch.Inf = 'za SELECT_DAY';
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'SELECT_ZMPO_DAY'
		Przegladarka zamowien na dzien
		Parametry
			_GUID		GUID zamowienia, gdy <> '' to tylko ten guid bierzemy pod uwagę
			_Param_A	Dzien realizacji - WYMAGANY
			_Param_B	Wyjazd - może być pusty
			_Param_C	Kierowca - może być pusty
			_Param_D	Gdy <> ''  to ostatnie 7 dni
		CALL ht_zmng_wyjazdy('SELECT_ZMPO_DAY', '', '2010-03-02', '', '', '');		
		CALL ht_zmng_wyjazdy('SELECT_ZMPO_DAY', '', '', '', '', '1');				--	ostatnie 7 dni
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'SELECT_ZMPO_DAY' THEN
		SET _GUID = IFNULL(_GUID, '');
		SET _Param_B = IFNULL(_Param_B, '');
		SET _Param_C = IFNULL(_Param_C, '');
		SET _Param_D = IFNULL(_Param_D, '');
		
		IF _Param_D = '' THEN
			SET _TerminRealizacji = DATE(IF(IFNULL(_Param_A, '') = '', CURRENT_DATE(), _Param_A));
			SET _TerminRealizacji_Start = _TerminRealizacji;
			SET _TerminRealizacji_End = DATE_ADD(_TerminRealizacji, INTERVAL 1 DAY);
		ELSE
		--	Oznacza ze ogladamy ostatnie 7 dni (tylko niezrealizowane)
			SET _TerminRealizacji_Start = CURRENT_DATE;
			SET _TerminRealizacji_Start = DATE_ADD(_TerminRealizacji_Start, INTERVAL -7 DAY);
			SET _TerminRealizacji_End = DATE_ADD(_TerminRealizacji_Start, INTERVAL 7 DAY);
		END IF;

		SET @_TerminRealizacji_Start = _TerminRealizacji_Start;
		SET @_TerminRealizacji_End = _TerminRealizacji_End;
		
		DROP TEMPORARY TABLE IF EXISTS `t_zmng_wyjazdy`;
		CREATE TEMPORARY TABLE `t_zmng_wyjazdy`
			SELECT 
				z.GUID,
				z.Status,
				_VarInt(0) AS Checked,
				k.numer_na_trasie, 
			-- [crm:21336]	CONCAT(k.Nazwa, ', ', k.ulica, ', ', k.zipcode, ' ', k.NazwaMiasta) As Kontrahent_i_Adres,
			-- [crm:21336]	CONCAT(k.ulica, ', ', k.zipcode, ' ', k.NazwaMiasta) As Kontrahent_Adres,
				if(CONCAT(IFNULL(k.W_ulica,''),IFNULL(k.W_NazwaMiasta, '')) = '',
					CONCAT(k.Nazwa, ', ',k.ulica, ', ', k.zipcode, ' ', k.NazwaMiasta), 
					CONCAT(k.Nazwa, ', ',k.W_ulica, ', ', k.W_zipcode, ' ', IFNULL(k.W_NazwaMiasta, ''))
				) As Kontrahent_i_Adres,
			
			
				CASE 
					WHEN EXISTS (SELECT geo.guid FROM geo_int_adr_link geo INNER JOIN erp_area_nodes ean2 ON ean2.guid=geo.objGUID WHERE ean2.kontrGUID=z.KontrGUID) 
					THEN (SELECT geo.adres FROM geo_int_adr_link geo INNER JOIN erp_area_nodes ean2 ON ean2.guid=geo.objGUID WHERE ean2.kontrGUID=z.KontrGUID LIMIT 1)
				ELSE 
					if(CONCAT(IFNULL(k.W_ulica,''),IFNULL(k.W_NazwaMiasta, '')) = '',
					CONCAT(k.ulica, ', ', k.zipcode, ' ', k.NazwaMiasta), 
					CONCAT(k.W_ulica, ', ', k.W_zipcode, ' ', IFNULL(k.W_NazwaMiasta, ''))
					)				
				END 
					As Kontrahent_Adres,		

			
				_varDATETIME(CONCAT(z.terminrealizacji, ' ', IFNULL(z.czasrealizacji, '00:00'))) AS termin_czas_realizacji,
				z.TerminRealizacji, z.czasrealizacji,
				z.WyjazdGUID,
				z.powod_niezrealizowania,
				powod.DisplayValue AS powod_niezrealizowania_str,
				IFNULL(w.NrWewn, '?') AS NrWewn, 
				IFNULL(w.Temat, '<bez wyjazdu>') AS Temat,
				w.StartTime AS StartTime, w.EndTime AS EndTime, w.DeadLine AS DeadLine,
				w.AreaGUID AS AreaGUID,
				IFNULL(r.Nazwa, 
				(   SELECT `rew`.`Nazwa`  
				    FROM (`erp_area_nodes` `rew`  LEFT JOIN `erp_division_schema` `d` ON ((`d`.`GUID` = `rew`.`Dzial`)))
					WHERE (`rew`.`Type` = 'REWIR') and `rew`.`GUID` = `k`.`areaGUID`  GROUP BY `rew`.`GUID`)
				) AS Rewir_Nazwa,
				k.AreaGUID AS Kontrah_AreaGUID,
				IFNULL(r2.Nazwa, '<bez wyjazdu>') AS Kontrah_Rewir_Nazwa,
				k.platnikGUID,
				
				_VarStr_NotNull(IFNULL((SELECT osoba FROM `crm_usr_links` WHERE commisionGUID = z.WyjazdGUID AND poziom = 2 LIMIT 1), '')) AS OsobaGUID,
				
				z.rodzaj, z.zrealizowane, z.nrzamw, z.datawystaw, z.kontrGUID, 
				z.idnmagazyn, z.MagazynWys,
				z.KontrSymbol, k.Nazwa AS KontrNazwa,	
				z.`localtime` AS OstatniaZmiana, 
				z.ilepoz, z.ilepozzreal, z.akwizytorGUID, z.rodzaj2, z.netto,
				mg1.Opis As Magazyn_Nazwa, mg2.Opis As MagazynWys_Nazwa,
				z.Uwagi, 
				IF(k.katcol1 = 21 and k.katcol2 = 2, 3, IF(k.katcol1 = 21, 2, IF(k.katcol2 = 2, 1, 0))) as klient_kluczowy, -- 3 - bredowy i kluczowy, 2 - tylko bredowy, 1 - tylko kluczowy
				_VarDouble(0) As KwotaKP, 
				_VarDouble(0) As KwotaDzierzawa, 
				p.IdnTowr, p.towrsymb, p.towrnazwa, p.ilosc, p.cenanet, p.cenabrt, p.wartbrt,
				((select count(*) from grupy_osob grp where grp.grupaGUID=k.ugrpGUID and grp.osobaGUID=@session.CurrOsobaGUID) = 0) AS KontrUgrpGUIDIsNotValid
				, ifnull(DroidNg.alocaltime, '') as Dostarczono
				/*
				ppi.Current_Status, ppi.FirstNonPayDate, ppi.Max_Dni, ppi.PrzekroczonyLimitDni,
				IF(ppi.CPozostaloKredyt > 0, 1, 0) AS Info_Zalega,
				IF(ppi.PrzekroczonyLimitDni > 0, 1, 0) AS Info_PrzekroczonyLimitDni,
				_VarInt(IF(ppi.CPozostaloKredyt > 0, TO_DAYS(z.TerminRealizacji)-TO_DAYS(1*ppi.FirstNonPayDate), 0)) AS Info_DniDoTerminuRealizacji
				*/
			FROM `zmng` z
			LEFT JOIN `zmpo` p ON p.IdnNG = z.GUID
			LEFT JOIN `crm_commisions` w ON w.GUID = z.WyjazdGUID
			LEFT JOIN `erp_area_nodes` r ON r.GUID = w.AreaGUID
			LEFT JOIN `kontrah` k ON k.GUID = z.KontrGUID
			LEFT JOIN `ht_platnik_pay_info` ppi ON ppi.PlatnikGUID = k.platnikGUID
			LEFT JOIN `erp_area_nodes` r2 ON r2.GUID = k.AreaGUID
			LEFT JOIN `Magazyny` mg1 ON mg1.IdnMagazynu = z.idnmagazyn
			LEFT JOIN `Magazyny` mg2 ON mg2.IdnMagazynu = z.MagazynWys
			LEFT JOIN `slowniki_pierwotne` powod ON powod.Value = z.powod_niezrealizowania AND powod.slownik_GUID = 'ZM_POWODY_NIEREALIZ'
--			LEFT JOIN `droid_zmng` DroidNg ON DroidNg.zmngguid = CONCAT('GD',MD5(CONCAT(z.kontrguid, z.WyjazdGUID))) 
			LEFT JOIN `droid_zmng` DroidNg ON DroidNg.kontrguid = z.kontrguid AND DroidNg.wyjazd = z.WyjazdGUID
			WHERE
				z.deleted = 0
				AND (select count(*) from grupy_osob grp where grp.grupaGUID=z.ugrpGUID and grp.osobaGUID=@session.CurrOsobaGUID)>0
				AND (p.ilosc - p.zrealizowano > 0)
				/*
				AND IF(_GUID != '', 
					z.GUID = _GUID,
					
					z.TerminRealizacji >= _TerminRealizacji_Start
					AND z.TerminRealizacji < _TerminRealizacji_End
					AND IF(_Param_B = '', TRUE,  z.WyjazdGUID = _Param_B)
					--	AND IF(_Param_C = '', TRUE,  z.WyjazdGUID = _Param_C)
				)	
				*/
				AND (
				(z.TerminRealizacji >= _TerminRealizacji_Start AND z.TerminRealizacji < _TerminRealizacji_End AND (_Param_B = '' OR z.WyjazdGUID = _Param_B)) 
				
				 OR z.GUID = _GUID)
			GROUP BY p.GUID	
		;	
		--	ugrpguid	@session.CheckLogonUser 
		CALL ht_zmng_wyjazdy('PREPARE_WYJAZDY_PLATNICY_STATUS', '', '0', '', '', '');		
		INSERT IGNORE INTO `t_wyjazdy_platnicy`
			(PlatnikGUID, TerminRealizacji)
			SELECT
				DISTINCT platnikGUID, IF(_Param_D = '', TerminRealizacji, CURRENT_DATE)
			FROM `t_zmng_wyjazdy`	
			WHERE
				_VarStr_NotNull(platnikGUID) != ''  AND TerminRealizacji IS NOT NULL
		;
		CALL ht_zmng_wyjazdy('PREPARE_WYJAZDY_PLATNICY_STATUS', '', '1', '', '', '');		
		
		SELECT 
			t.*, 
			_ConcatStr(o.Nazwisko, o.Imiona, ' ') As Kierowca_NazwiskoImie,
			twp.ColorState
		FROM `t_zmng_wyjazdy` t
		LEFT JOIN `osoby` o ON o.GUID  = t.OsobaGUID
		LEFT JOIN `t_wyjazdy_platnicy` twp ON twp.platnikGUID = t.platnikGUID
		;
	END IF;	--	IF _MODE = 'SELECT_ZMPO_DAY'
	
SET @Watch.Inf = 'za SELECT_ZMPO_DAY';
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'SELECT_ZMNG_WYJAZD_INFO'
		Przegladarka zamowien na dzien
		Parametry
			_GUID		GUID zamówienia
		CALL ht_zmng_wyjazdy('SELECT_ZMNG_WYJAZD_INFO', GUID, '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'SELECT_ZMNG_WYJAZD_INFO' THEN
		CALL ht_zmng_wyjazdy('SELECT_DAY', _GUID, '', '', '', '');		
	END IF;	--	IF _MODE = 'SELECT_ZMNG_WYJAZD_INFO'
	
SET @Watch.Inf = 'za SELECT_ZMNG_WYJAZD_INFO';
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'SELECT_WYJAZDY_FOR_DAY'
		Przegladarka zamowien na dzien
		Parametry
			_Param_A	Dzien wyjazdu - WYMAGANY
			_Param_B	Dzien realizacji
			_Param_C	AreaGUID
		CALL ht_zmng_wyjazdy('SELECT_WYJAZDY_FOR_DAY', '', '2010-03-02', '2010-03-02', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'SELECT_WYJAZDY_FOR_DAY' THEN
		SET NAMES 'cp1250';
		SET _Param_A = DATE(IF(IFNULL(_Param_A, '') = '', CURRENT_DATE(), _Param_A));
		SET _Param_B = DATE(IF(IFNULL(_Param_B, '') = '', CURRENT_DATE(), _Param_B));
		SET _Param_C = IFNULL(_Param_C, '');
		
		DROP TEMPORARY TABLE IF EXISTS `t_wyjazdy_day`;
		CREATE TEMPORARY TABLE `t_wyjazdy_day`
			SELECT 
				w.GUID,
				w.NrWewn, w.Temat,
				w.StartTime AS StartTime, w.EndTime AS EndTime, w.DeadLine AS DeadLine,
				w.AreaGUID AS AreaGUID,
				_VarStr_NotNull(IFNULL(r.Nazwa, '?')) As Rewir_Nazwa,
				_VarStr_NotNull(IFNULL((SELECT osoba FROM `crm_usr_links` WHERE commisionGUID = w.GUID AND poziom = 2 LIMIT 1), '')) AS OsobaGUID,
				(SELECT CONCAT(kc.valuex,' ',kc.descr) AS nrRej  FROM katcols kc WHERE kc.typ = 7 AND kc.colnr = 1 AND kc.klucz = w.katcol0) as nrRej,
				w.status
			FROM `crm_commisions` w
			LEFT JOIN `erp_area_nodes` r ON r.GUID = w.AreaGUID
			LEFT JOIN `erp_division_schema` d ON d.GUID = r.Dzial
			WHERE
				w.Rodzaj = 5 
				AND (select count(*) from grupy_osob grp where grp.grupaGUID=d.GUID and grp.osobaGUID=@session.CurrOsobaGUID)>0
				AND w.PodRodzaj = 1
				AND DATE(w.StartTime) = _Param_A 
				AND if(_Param_C = '', true, r.Dzial =_Param_C)
			GROUP BY w.GUID	
		;
		SELECT 
			w.*, 
			_ConcatStr(o.Nazwisko, o.Imiona, ' ') AS Kierowca_NazwiskoImie,
			IF(DATE(w.StartTime) = _Param_B, CONCAT(DATE(w.StartTime), ' = termin realizacji'), CONCAT('UWAGA! Inny termin realizacji (', DATE(w.StartTime), ')')) AS UwagaTerminuRealizacji, 
			IF(w.AreaGUID = _Param_C, CONCAT(' Trasy: ', w.Rewir_Nazwa), 'Pozostałe trasy') AS Grupa,
			_VarInt(w.AreaGUID != _Param_C) AS DifferentAreaGuid,
			_VarStr_NotNull(akw.GUID) AS AkwizytorGUID,
			_VarStr_NotNull(akw.Nazwa) AS AkwizytorNazwa,
			_VarInt_NotNull(mg.IdnMagazynu) AS IdnMagazyn_Samochod,
			_VarStr_NotNull(mg.Opis) AS Magazyn_Samochod
		FROM `t_wyjazdy_day` w
		LEFT JOIN `osoby` o ON o.GUID  = w.OsobaGUID
		LEFT JOIN `hr_kontrah_links` hl ON hl.OsobaGUID = w.OsobaGUID AND hl.Kontekst LIKE '%(AKW)%'
		LEFT JOIN `kontrah` akw ON akw.GUID = hl.KontrGUID
		LEFT JOIN `Magazyny` mg ON mg.IdnMagazynu = akw.magazyn_akwizytora
		;
	END IF;	--	IF _MODE = 'SELECT_WYJAZDY_FOR_DAY'
	
SET @Watch.Inf = 'za SELECT_WYJAZDY_FOR_DAY';
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'CHANGE_WYJAZDY_INIT'
		Czysci `t_zmng_wyjazdy_links`
		Parametrów brak
		CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_INIT', '', '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'CHANGE_WYJAZDY_INIT' THEN
		DROP TEMPORARY TABLE IF EXISTS `t_zmng_wyjazdy_links`;
		CREATE TEMPORARY TABLE IF NOT EXISTS `t_zmng_wyjazdy_links`(
			`zmngGUID` VARCHAR(38),
			`wyjazdGUID` VARCHAR(38),
			`magazynwys` INT(11) DEFAULT 0,
			`magazyn_akwizytora` INT(11) DEFAULT 0,
			`Status` INT(11) DEFAULT 0,
			`OsobaGUID` VARCHAR(38),
			`akwizytorGUID` VARCHAR(38),		
			KEY zmngGUID(zmngGUID),
			KEY wyjazdGUID(wyjazdGUID)
		)
		;
		DELETE FROM `t_zmng_wyjazdy_links`;
	END IF;	--	IF _MODE = 'CHANGE_WYJAZDY_INIT'
	
SET @Watch.Inf = 'za CHANGE_WYJAZDY_INIT';
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'CHANGE_WYJAZDY_INIT_BY_WYJAZD'
		Ustawia magazyn wysylkowy zamowienia według dopisanego wyjazdu
		Parametry
			_GUID		GUID wyjazdu
		CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_INIT_BY_WYJAZD', GUID, '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'CHANGE_WYJAZDY_INIT_BY_WYJAZD' THEN
		INSERT INTO `t_zmng_wyjazdy_links`
			SELECT
				z.GUID,
				w.GUID,
				z.magazynwys,
				0,
				0,
				_VarStr_NotNull(IFNULL((SELECT osoba FROM `crm_usr_links` WHERE commisionGUID = w.GUID AND poziom = 2 LIMIT 1), '')) AS OsobaGUID,
				''
			FROM `crm_commisions` w
			INNER JOIN `zmng` z ON z.WyjazdGUID = w.GUID
			WHERE
				w.GUID = _GUID
		;
		/*
		UPDATE `t_zmng_wyjazdy_links` w
		SET
			w.OsobaGUID = _VarStr_NotNull(IFNULL((SELECT osoba FROM `crm_usr_links` WHERE commisionGUID = w.GUID AND poziom = 2 LIMIT 1), ''))
		;
		
		UPDATE `t_zmng_wyjazdy_links` w, `hr_kontrah_links` hl, `kontrah` akw
		SET
			w.magazyn_akwizytora = akw.magazyn_akwizytora
		WHERE
			hl.OsobaGUID = w.OsobaGUID
			AND akw.GUID = hl.KontrGUID
		;
		*/	
	END IF;	--	IF _MODE = 'CHANGE_WYJAZDY_INIT_BY_WYJAZD'
	
SET @Watch.Inf = 'za CHANGE_WYJAZDY_INIT_BY_WYJAZD';
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'CHANGE_WYJAZDY_INSERT_ZMNG'
		Wstawia kolejne zamowienie
		Parametry
			_GUID		GUID zamowienia
		CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_INSERT_ZMNG', GUID, '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'CHANGE_WYJAZDY_INSERT_ZMNG' THEN
		INSERT INTO `t_zmng_wyjazdy_links`
			SELECT
				z.GUID,
				w.GUID,
				z.magazynwys,
				0,
				0,
				'',
				''
			FROM `zmng` z 
			LEFT JOIN `crm_commisions` w ON z.WyjazdGUID = w.GUID
			WHERE
				z.GUID = _GUID
		;
	END IF;	--	IF _MODE = 'CHANGE_WYJAZDY_INSERT_ZMNG'
	
SET @Watch.Inf = 'za CHANGE_WYJAZDY_INSERT_ZMNG';
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'CHANGE_WYJAZDY_UPDATE_ZMNG'
		Ustawia magazyn wysylkowy zamowienia według dopisanego wyjazdu
		Parametry
			_GUID		GDY GUID <> '' to jest to GUID wyjazdu
		CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_UPDATE_ZMNG', GUID, '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'CHANGE_WYJAZDY_UPDATE_ZMNG' THEN 
		SET _GUID = IFNULL(_GUID, '');
		IF _GUID != '' THEN
			UPDATE `t_zmng_wyjazdy_links` w
			SET
				w.WyjazdGUID = _GUID
			;
			UPDATE `t_zmng_wyjazdy_links` w
			SET
				w.OsobaGUID = _VarStr_NotNull(IFNULL((SELECT osoba FROM `crm_usr_links` WHERE commisionGUID = w.wyjazdGUID AND poziom = 2 LIMIT 1), ''))
			;
		
		ELSE
			UPDATE `zmng` z, `t_zmng_wyjazdy_links` w
			SET
				z.WyjazdGUID = '',
				-- z.MagazynWys = 0,
				z.akwizytorGUID = ''
			WHERE
				z.GUID = w.zmngGUID
			;
			LEAVE SPROC;	--	wychodze bo nie mam nic do zapisywania
		END IF;
		
		UPDATE `t_zmng_wyjazdy_links` w, `hr_kontrah_links` hl, `kontrah` akw
		SET
			w.magazyn_akwizytora = akw.magazyn_akwizytora,
			w.akwizytorGUID = akw.GUID
		WHERE
			hl.OsobaGUID = w.OsobaGUID
			AND hl.Kontekst LIKE '%(AKW)%'
			AND akw.GUID = hl.KontrGUID
		;
		--	Na koniec update `zmng` wg najswiezszych ustawien wyjazdow
		UPDATE `zmng` z, `t_zmng_wyjazdy_links` w
		SET
			z.WyjazdGUID = w.WyjazdGUID,
			z.AkwizytorGUID = w.AkwizytorGUID -- ,
			--	z.MagazynWys = w.magazyn_akwizytora -- nie zmieniamy magazynu - nowa koncepcja - magazyn pochodzi nie od kierowcy a od klienta
		WHERE
			z.GUID = w.zmngGUID
		;
		/*
		UPDATE `zmng` z 
		set  
			z.akwizytorguid=
				(select hl.kontrguid from crm_commisions c, crm_usr_links l,hr_kontrah_links hl where c.guid=z.wyjazdguid and c.guid=l.commisionguid and hl.osobaguid=l.osoba) 
		where 
			z.wyjazdguid<>''
		;
		*/
		UPDATE `t_zmng_wyjazdy_links` w, `zmng` z, `zmpo` p , `opng` n, `oppo` o
		SET
			n.WyjazdGUID = w.WyjazdGUID,
			n.AkwizytorGUID = w.AkwizytorGUID 
		--	n.wyjazdguid = z.wyjazdguid,
		--	n.akwizytorguid = z.akwizytorguid 
		WHERE
			z.GUID = w.zmngGUID AND		--	temp	->	zamowienie
			z.guid=p.idnng AND				--	zamowienie	-> poz.zmpo
			o.guidzm=p.guid AND 			--	poz.zmpo.	->	poz. oppo
			n.guid=o.idnoper				--	poz. oppo	->	dokument
		;
		
		DROP TEMPORARY TABLE IF EXISTS `t_zmng_wyjazdy_links_2`;
		CREATE TEMPORARY TABLE IF NOT EXISTS `t_zmng_wyjazdy_links_2`
			SELECT DISTINCT w.wyjazdGUID AS wyjazdGUID, w.AkwizytorGUID AS AkwizytorGUID FROM `t_zmng_wyjazdy_links` w
		;	
		UPDATE `t_zmng_wyjazdy_links_2` w, `opng` n
		SET
			n.AkwizytorGUID = w.AkwizytorGUID 
		WHERE
			w.wyjazdGUID = n.WyjazdGUID
		;
		DROP TEMPORARY TABLE IF EXISTS `t_zmng_wyjazdy_links_2`;
	END IF;	--	IF _MODE = 'CHANGE_WYJAZDY_UPDATE_ZMNG'
	
SET @Watch.Inf = 'za CHANGE_WYJAZDY_UPDATE_ZMNG';
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'CHANGE_WYJAZDY_CHANGE_KIEROWCA'
		Sprawdza w `crm_usr_links` czy istnieje trójka wyjazd x kierowca x poziom = 2 
		Parametry
			_GUID		GUID wyjazdu
			_Param_A	GUID Osoby - kierowcy w CDS-ie pole 'KierowcaGUID'
		CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_CHANGE_KIEROWCA', GUID, KierowcaGUID, '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'CHANGE_WYJAZDY_CHANGE_KIEROWCA' THEN
		SET _Param_A = IFNULL(_Param_A, '');
	--	inicjalnie podstaw pusty ciąg dm kierowcy
		SET @KierowcaGUID = '';
		IF _Param_A != '' THEN
		--	Jest okreslony kierowca zatem szuja czy jest linkowni
			SELECT
				cul.osoba
			INTO
				@KierowcaGUID		--	@KierowcaGUID potem porownam
			FROM `crm_usr_links` cul	
			WHERE
				cul.commisionGUID = _GUID
				AND cul.osoba = _Param_A
				AND cul.Poziom = 2
			;	
		END IF;
		/*
			Gdy @KierowcaGUID != '' to oznacza że @KierowcaGUID = _Param_A CZYLI nic już nie muszę robić - BRA ZMIAN
			Gdy @KierowcaGUID = '' to może oznaczac że _Param_A = '' lub nie ma rekordu lub jest ale z inny, kierowcą
		*/
		SET @KierowcaGUID = IFNULL(@KierowcaGUID, '');
		IF @KierowcaGUID = '' THEN
			/*
			Oznacza, że :
				A.	jest rekord na poziomie = 2 ale ma innego kierowce (inny GUID) czyli nastąpuje właśnie zmiana kierowcy 
				LUB
				B.	nie ma wogóle żadnego rekordu na poziomie = 2 - czyli nie było przypisanego kerowcy
				C.	_Param_A = '' czyli zmieniam kierowcę na pusteko (Nieokreślonego)
			Konkluzja:	
				1.	W każdym przypadku (A B C) usuwam wszystko z poziomu 2 i 
				2.	Gdy _Param_A <> '' wstawiam nowy rekord
				2.	Gdy _Param_A <> '' Popraw zamówienia dla wyjazdu _GUID	
			*/	
		--	Usuń
			DELETE FROM `crm_usr_links`
			WHERE
				commisionGUID = _GUID
				AND Poziom = 2
			;	
			IF _Param_A != '' THEN
			--	Wstaw kierowcę _Param_A
				DO crm_Insert_crm_usr_links(_GUID, _Param_A, 2, 0);
			--	Popraw zamówienia dla wyjazdu _GUID	
				CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_INIT', '', '', '', '', '');		
				CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_INIT_BY_WYJAZD', _GUID, '', '', '', '');	--	GUID wyjazdu
				CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_UPDATE_ZMNG', _GUID, '', '', '', '');			--	GUID wyjazdu ZBĘDNY !!!!!!!!!!
			END IF;
		END IF;
		
	--	Teraz z innej beczki dla _GUID sprawdz pole `Temt` i gdy jest puste uzupelnij
		SET @KierowcaGUID = '';
		SELECT 
			cul.osoba,
			_ConcatStr(o.Nazwisko, o.Imiona, ' ') AS Kierowca_NazwiskoImie
		INTO
			@KierowcaGUID, @Kierowca_NazwiskoImie
		FROM `crm_usr_links` cul
		LEFT JOIN `osoby` o ON o.GUID = cul.osoba
		WHERE 
			cul.commisionGUID = _GUID AND cul.poziom = 2 
		LIMIT 1
		;	
		SET @KierowcaGUID = IFNULL(@KierowcaGUID, '');
		UPDATE `crm_commisions` c, `erp_area_nodes` r 
		SET
			c.Temat = IF(IFNULL(c.Temat, '') = '',
				CONCAT(Date(c.StartTime), ' -> ', _VarStr_NotNull(IFNULL(r.Nazwa, '?')), 
					IF(@KierowcaGUID = '', '', CONCAT(' : ', @Kierowca_NazwiskoImie))
				),	
				c.Temat
			)	
		WHERE
			c.GUID = _GUID
			AND r.GUID = c.AreaGUID
		;	
	END IF;	--	IF _MODE = 'CHANGE_WYJAZDY_CHANGE_KIEROWCA'
	
SET @Watch.Inf = 'za CHANGE_WYJAZDY_CHANGE_KIEROWCA';
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'ROZLICZ_SELECT'
		Zwraca zawartość zestawy Master/Detal:	
			A - lista kontrahentów z polem `KPAkwizytora`	
			B - pozycje zmówień tego kontrahenta
			C - zwraca zestaw z jednym polem `IdnNg` czyli GUID-y zamowien wyjazdu
		Parametry
			_GUID		GUID wyjazdu
			_Param_A	A - lista kontrahentów z polem `KPAkwizytora`	B - pozycje zmówień tego kontrahenta
		CALL ht_zmng_wyjazdy('ROZLICZ_SELECT', _GUID, 'A', '', '', '');		-- naglowek (kontrahent)
		CALL ht_zmng_wyjazdy('ROZLICZ_SELECT', _GUID, 'B', '', '', '');		-- pozycje zm. kontrahenta
		CALL ht_zmng_wyjazdy('ROZLICZ_SELECT', '', 'C', '', '', '');		-- GUID-y zamowien
		CALL ht_zmng_wyjazdy('ROZLICZ_SELECT', '', 'D', '', '', '');		-- BRAKI towarów
		CALL ht_zmng_wyjazdy('ROZLICZ_SELECT', '', 'T', '', '', '');		-- Pogrupowane towary z iloscia
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'ROZLICZ_SELECT' THEN
		SET _Param_A = IFNULL(_Param_A, 'A');
		SET @_Param_A = _Param_A;
		IF _Param_A = 'A' THEN 
			DROP TEMPORARY TABLE IF EXISTS `t_rozlicz_ng`;
			CREATE TEMPORARY TABLE `t_rozlicz_ng`
				SELECT 
					--	z.KontrGUID,
					--	z.GUID,
					--	z.wyjazdGUID,
					--	z.TerminRealizacji,					
					z.*,
					k.rodzaj2 as RodzajDokZKontrah,
					CONCAT(k.Symbol, ', ', k.ulica, ', ', k.zipcode, ' ', k.NazwaMiasta) As KontrahentSymbol_i_Adres,
					CONCAT(k.ulica, ', ', k.zipcode, ' ', k.NazwaMiasta) As Kontrahent_Adres,
					k.Nazwa As KontrahentNazwa,
					k.platnikGUID,
					k.Blokujsprzedaz, 

					-- _VarDouble(0.0) AS KPAkwizytora,
					SUM(p.wartbrt) AS wartbrt,
					SUM(IF(pl.Rodzaj = 0, p.wartbrt, 0)) AS KPAkwizytora,
					COUNT(z.GUID) AS IleZamowien,
					COUNT(p.GUID) AS IlePozycji,
					ppi.Current_Status, ppi.FirstNonPayDate, ppi.Max_Dni, ppi.PrzekroczonyLimitDni,
					IF(ppi.CPozostaloKredyt > 0, 1, 0) AS Info_Zalega,
					IF(ppi.PrzekroczonyLimitDni > 0, 1, 0) AS Info_PrzekroczonyLimitDni,
					_VarInt(IF(ppi.CPozostaloKredyt > 0, TO_DAYS(z.TerminRealizacji)-TO_DAYS(1*ppi.FirstNonPayDate), 0)) AS Info_DniDoTerminuRealizacji,
					(select SUM(ckwota) from opng o where (o.rodzaj = 20) and o.KontrGUID = z.KontrGUID and o.WyjazdGUID = _GUID and o.deleted = 0) AS WystawKP,
					k.numer_na_trasie
				FROM `zmng` z
				LEFT JOIN `zmpo` p ON p.IdnNg = z.GUID
				LEFT JOIN `kontrah` k ON k.GUID = z.KontrGUID
				LEFT JOIN `ht_platnik_pay_info` ppi ON ppi.PlatnikGUID = k.platnikGUID
				LEFT JOIN `platnosc` pl ON pl.IDN = z.sposobplatn
				WHERE
					z.WyjazdGUID = _GUID
					AND (select count(*) from grupy_osob grp where grp.grupaGUID=z.ugrpGUID and grp.osobaGUID=@session.CurrOsobaGUID)>0	-- dla zamowienia
					AND (select count(*) from grupy_osob grp where grp.grupaGUID=k.ugrpGUID and grp.osobaGUID=@session.CurrOsobaGUID)>0	-- dla kontrahenta
					AND (p.ilosc - p.zrealizowano > 0.0001)
					
				GROUP BY z.KontrGUID	
			;
			
			CALL ht_zmng_wyjazdy('PREPARE_WYJAZDY_PLATNICY_STATUS', '', '0', '', '', '');		
			INSERT IGNORE INTO `t_wyjazdy_platnicy`
				(PlatnikGUID, TerminRealizacji)
				SELECT
					DISTINCT platnikGUID, TerminRealizacji
				FROM `t_rozlicz_ng`	
				WHERE
					_VarStr_NotNull(platnikGUID) != ''  AND TerminRealizacji IS NOT NULL
			;
			CALL ht_zmng_wyjazdy('PREPARE_WYJAZDY_PLATNICY_STATUS', '', '1', '', '', '');		
		--	UWAGA w `t_rozlicz_ng` mamy wszystkie kolumny z zmng (powyżej z.*). 
		--		Kolumnę `powod_niezrealizowania` ustawiamy na "1" gdy w `t_wyjazdy_platnicy` kolumna ColorState = C_RED
			UPDATE `t_rozlicz_ng` t, `t_wyjazdy_platnicy` twp
			SET
				t.powod_niezrealizowania = IF(ColorState = C_RED, 1, IF(t.Blokujsprzedaz>0, 1, t.powod_niezrealizowania))
			WHERE
				twp.platnikGUID = t.platnikGUID
			;
			SELECT 
				t.*, 
				twp.ColorState
			FROM `t_rozlicz_ng` t
			LEFT JOIN `t_wyjazdy_platnicy` twp ON twp.platnikGUID = t.platnikGUID
			;
		END IF;
		
		IF _Param_A = 'B' THEN 
			DROP TEMPORARY TABLE IF EXISTS `t_rozlicz_po`;
			CREATE TEMPORARY TABLE `t_rozlicz_po`
				SELECT 
					z.KontrGUID,
					-- k.rodzaj2 as RodzajDokZKontrah,
					z.rodzaj2 as RodzajDokZKontrah,
					p.GUID, 
					p.IdnNg,
					p.IdnTowr, z.Nrzamw, p.towrsymb, p.towrnazwa, p.ilosc AS Ilosc_Bylo, p.ilosc, p.cenanet, p.cenabrt, 
					p.wartbrt, p.rabat, p.kurs, p.rodzaj, p.idnvat, p.Rodzaj_Przeliczenia, 
					p.idnmagazyn, p.MagazynWys, 
					MD5(CONCAT(z.KontrGUID, p.idnmagazyn, p.MagazynWys)) AS ID_MM,
					z.datawystaw
				FROM `zmng` z
				LEFT JOIN `zmpo` p ON p.IdnNg = z.GUID
				LEFT JOIN `kontrah` k ON k.GUID = z.KontrGUID
				WHERE
					z.WyjazdGUID = _GUID
					AND (select count(*) from grupy_osob grp where grp.grupaGUID=z.ugrpGUID and grp.osobaGUID=@session.CurrOsobaGUID)>0	-- dla zamowienia
					AND (select count(*) from grupy_osob grp where grp.grupaGUID=k.ugrpGUID and grp.osobaGUID=@session.CurrOsobaGUID)>0	-- dla kontrahenta
					AND (p.ilosc - p.zrealizowano > 0)
			;
			DROP TEMPORARY TABLE IF EXISTS `t_rozlicz_id_mm`;
			CREATE TEMPORARY TABLE `t_rozlicz_id_mm`
				SELECT 
					tp.KontrGUID,
					tp.ID_MM,
					tp.IdnNg
				FROM `t_rozlicz_po` tp	
				GROUP BY tp.ID_MM
			;		
			SELECT * FROM `t_rozlicz_po` ORDER BY KontrGUID;
		END IF;
		
		IF _Param_A = 'C' THEN 
			SELECT 
				z.IdnNg
			FROM `t_rozlicz_po` z
			GROUP BY z.IdnNg
			;
		END IF;
		
		IF _Param_A = 'D' THEN 
		--	BRAKI towarów
			DROP TEMPORARY TABLE IF EXISTS `t_check_braki_mm`;
			CREATE TEMPORARY TABLE `t_check_braki_mm`
				SELECT 
					p.IdnTowr,
					p.idnmagazyn,
					p.towrsymb, 
					p.towrnazwa,
					-- IFNULL(T.ilosc,0) AS W_Magazynie, 
					_VarDouble(SUM((p.Ilosc - p.zrealizowano))) AS DoRealizacji, 
					_VarInt(MAX(IFNULL(p.reserve, 0))) AS Reserve,
					_VarDouble(IFNULL(T.ilosc,0)) AS W_Magazynie,
					_VarDouble(IFNULL(T.zarezerwowano, 0)) AS Zarezerwowano
				FROM `t_rozlicz_po` tp 
				INNER JOIN `zmpo` p ON p.GUID = tp.GUID
				LEFT JOIN `TowrPo` T ON  (p.idntowr = T.idntowr)and(p.idnmagazyn = T.magazyn) 
				WHERE
					p.usluga = 0
				GROUP BY Idntowr, IdnMagazyn
			;
			
			SELECT 
				mm.Idntowr,
				mm.IdnMagazyn,
				CONCAT(mm.towrsymb, ' - ', mm.towrnazwa) AS Towar,
				m.Opis AS Magazyn,
				_VarDouble(W_Magazynie) AS W_Magazynie, 
				_VarDouble(mm.W_Magazynie - mm.Zarezerwowano*mm.Reserve) AS Dostepne,
				_VarDouble(mm.DoRealizacji) AS DoRealizacji,
				_VarDouble(mm.W_Magazynie - mm.Zarezerwowano*mm.Reserve - mm.DoRealizacji) AS Braki
			FROM `t_check_braki_mm` mm
			LEFT JOIN `Magazyny` m ON m.IdnMagazynu = mm.idnmagazyn
			GROUP BY Idntowr, IdnMagazyn
			HAVING Braki < 0
			;
		
		END IF;
		
		IF _Param_A = 'T' THEN 
		-- Pogrupowane towary z iloscia
			SELECT 
				p.towrsymb, p.towrnazwa, SUM(p.Ilosc) AS Ilosc, _VarInt(SUM(1)) AS Ile_Zam
			FROM `t_rozlicz_po` p 
			GROUP BY p.IdnTowr
			ORDER BY p.towrsymb, p.towrnazwa
			;
		END IF;
		
	END IF;	--	IF _MODE = 'ROZLICZ_SELECT'

SET @Watch.Inf = 'za ROZLICZ_SELECT_FOR_MM';
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'ROZLICZ_SELECT_FOR_MM'
		Zwraca zawartość zestawy Master/Detal:	
			A - lista kontrahentów z polem `KPAkwizytora`	
			B - pozycje zmówień tego kontrahenta
			C - zwraca zestaw z jednym polem `IdnNg` czyli GUID-y zamowien wyjazdu
		Parametry
			_GUID		GUID kontrahenta lub ID_MM
			_Param_A	A - lista kontrahentów z polem `KPAkwizytora`	B - pozycje zmówień tego kontrahenta
		CALL ht_zmng_wyjazdy('ROZLICZ_SELECT_FOR_MM', _GUID, 'A', '', '', '');		-- naglowki mm-ek dla _GUID kontrahenta
		CALL ht_zmng_wyjazdy('ROZLICZ_SELECT_FOR_MM', _GUID, 'B', '', '', '');		-- pozycje zamowien/mm dla _GUID = ID_MM
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'ROZLICZ_SELECT_FOR_MM' THEN
		SET _Param_A = IFNULL(_Param_A, 'A');
		IF _Param_A = 'A' THEN 
			DROP TEMPORARY TABLE IF EXISTS `t_rozlicz_ng_mm`;
			CREATE TEMPORARY TABLE `t_rozlicz_ng_mm` 
			-- INSERT IGNORE INTO `t_rozlicz_ng_mm`
				SELECT 
					mm.ID_MM,
					-- 'S' as RodzajDowodu,
					z.*
				FROM `t_rozlicz_id_mm` mm, `zmng` z, `zmpo` p
				WHERE
					mm.KontrGUID = _GUID
					AND mm.IdnNg = z.GUID
					AND p.IdnNg = z.GUID
					AND (p.ilosc - p.zrealizowano > 0)
			;
			UPDATE `t_rozlicz_ng_mm` SET RodzajDowodu = 'S';
			SELECT * FROM `t_rozlicz_ng_mm`;
			
		END IF;
		IF _Param_A = 'B' THEN 
			DROP TEMPORARY TABLE IF EXISTS `t_rozlicz_po_mm`;
			CREATE TEMPORARY TABLE `t_rozlicz_po_mm`
				SELECT 
					p.*
					-- begin slon
					, IFNULL(T.ilosc,0) As W_Magazynie, 
					IFNULL(T.zarezerwowano, 0) as zarezerwowano, 
					(p.Ilosc - p.zrealizowano) as DoRealizacji, 
					(p.Ilosc - p.zrealizowano) as DoRealizacjiOld, 
					(IFNULL(T.Ilosc, 0) - IFNULL(T.zarezerwowano,0)*(1-p.reserve)) as Dostepne,
					p.info as infozm, 
					left(concat_ws('' '',p.towrnazwa, p.uwagi, p.info),255) as OpisUwagiInfo, 
					_VarStr_NotNull('' '') as przelicznik, 
					_varDOUBLE(0) as ilosc_tymczasowych 				
					-- end slon 										
				-- FROM `t_rozlicz_id_mm` mm, `zmpo` p
				FROM `t_rozlicz_po` mm, `zmpo` p
				LEFT JOIN TowrPo T ON  (p.idntowr = T.idntowr)and(p.idnmagazyn = T.magazyn) 

				-- LEFT JOIN `zmpo` p ON p.IdnNg = mm.IdnNg
				WHERE
					mm.ID_MM = _GUID
				-- JMAM	AND p.IdnNg = mm.IdnNg
					AND p.guid = mm.guid
					AND (p.Ilosc - p.zrealizowano) > 0 -- [crm:21335]
			;
			SELECT * FROM `t_rozlicz_po_mm`;
		END IF;
	END IF;	--	IF _MODE = 'ROZLICZ_SELECT_FOR_MM'

SET @Watch.Inf = 'za ROZLICZ_SELECT_FOR_MM';
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'NIE_UZYWAC_UPDATE_ZMNG_FOR_WYJAZD'
		Ustawia magazyn wysylkowy zamowienia według dopisanego wyjazdu
		Parametry
			_GUID		GUID zamówienia
		CALL ht_zmng_wyjazdy('NIE_UZYWAC_UPDATE_ZMNG_FOR_WYJAZD', GUID, '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'NIE_UZYWAC_UPDATE_ZMNG_FOR_WYJAZD' THEN
		SET @magazyn_akwizytora = 0;
		SET @WyjazdGUID = '';
		SELECT
			z.WyjazdGUID 
		INTO 
			@WyjazdGUID
		FROM `zmng` z
		WHERE
			z.GUID = _GUID
		;
		SET @WyjazdGUID = IFNULL(@WyjazdGUID, '');
		IF @WyjazdGUID != '' THEN
			SET @OsobaGUID = '';
			SELECT
				_VarStr_NotNull(IFNULL((SELECT osoba FROM `crm_usr_links` WHERE commisionGUID = w.GUID AND poziom = 2 LIMIT 1), '')) AS OsobaGUID
			INTO
				@OsobaGUID
			FROM `crm_commisions` w
			WHERE
				w.GUID = @WyjazdGUID
			;
			SET @OsobaGUID = IFNULL(@OsobaGUID, '');
			IF @OsobaGUID != '' THEN
				SELECT
					akw.magazyn_akwizytora	
				INTO 
					@magazyn_akwizytora
				FROM `osoby` o
				LEFT JOIN `hr_kontrah_links` hl ON hl.OsobaGUID = o.GUID AND hl.Kontekst LIKE '%(AKW)%'
				LEFT JOIN `kontrah` akw ON akw.GUID = hl.KontrGUID
				LEFT JOIN `Magazyny` mg ON mg.IdnMagazynu = akw.magazyn_akwizytora
				WHERE
					o.GUID  = @OsobaGUID
				;	
				SET @magazyn_akwizytora = IFNULL(@magazyn_akwizytora, 0);
			END IF;
		END IF;
		--	zmien magazynwys
		UPDATE `zmng` z
		SET
			z.MagazynWys = @magazyn_akwizytora
		WHERE
			z.GUID = _GUID
		;
	END IF;	--	IF _MODE = 'NIE_UZYWAC_UPDATE_ZMNG_FOR_WYJAZD'

SET @Watch.Inf = 'za NIE_UZYWAC_UPDATE_ZMNG_FOR_WYJAZD';
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'KLONOWANIE_WYJAZDOW_NA_DZIEN.%'
		Klonuje wyjazdy z widoku na podany dzien
		
	'KLONOWANIE_WYJAZDOW_NA_DZIEN.init'
		Tworzenie tabeli tymczasowej do przechowywania informacji o pozycjach do sklonowania
		Parametry
			Nie maja znaczenia
		CALL ht_zmng_wyjazdy('KLONOWANIE_WYJAZDOW_NA_DZIEN.init', '', '', '', '', '');		
			
	'KLONOWANIE_WYJAZDOW_NA_DZIEN.insert'
		Wprowadzanie danych do tabeli tymczasowej
		W miejscu tym sprawdzam czy na ta date nie jest juz przypisany jakis wyjazd 
		narazie zawieszam kontrole
		Parametry
			_GUID		GUID wyjazdu do sklonowania
		CALL ht_zmng_wyjazdy('KLONOWANIE_WYJAZDOW_NA_DZIEN.insert', _GUID, '', '', '', '');		
	
	'KLONOWANIE_WYJAZDOW_NA_DZIEN.create'
		Klonuje wyjazdy z widoku na podany dzien
		Parametry
			_GUID		GUID zamówienia
			_Param_A	Dzien na ktory ma byc sklonowany wyjazd
		CALL ht_zmng_wyjazdy('KLONOWANIE_WYJAZDOW_NA_DZIEN.create', GUID, _Param_A, '', '', '');		

------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
		
	IF _MODE = 'KLONOWANIE_WYJAZDOW_NA_DZIEN.init' THEN
		DROP TEMPORARY TABLE IF EXISTS `t_wyjazdy_na_inny_day`;	
		CREATE TEMPORARY TABLE `t_wyjazdy_na_inny_day`(	
			guid VARCHAR(38) NOT NULL,
			KEY UNIQUE_KEY (guid)
		);			
		    
	END IF;	--	IF _MODE = 'KLONOWANIE_WYJAZDOW_NA_DZIEN.init'

SET @Watch.Inf = 'za KLONOWANIE_WYJAZDOW_NA_DZIEN.init';
	

	IF _MODE = 'KLONOWANIE_WYJAZDOW_NA_DZIEN.insert' THEN
		INSERT IGNORE INTO `t_wyjazdy_na_inny_day`
				(guid)
			VALUES	
				(_GUID)
			;				
	END IF;	--	IF _MODE = 'KLONOWANIE_WYJAZDOW_NA_DZIEN.insert'

SET @Watch.Inf = 'za KLONOWANIE_WYJAZDOW_NA_DZIEN.insert';
	
	IF _MODE = 'KLONOWANIE_WYJAZDOW_NA_DZIEN.create' THEN
		SET _Param_A = DATE(IF(IFNULL(_Param_A, '') = '', CURRENT_DATE(), _Param_A));	
		SET @Record_count = 0;
		BEGIN
			DECLARE _localGUID VARCHAR(38);
			DECLARE _tmpGUID VARCHAR(38);
			DECLARE _done BOOL DEFAULT FALSE;
			DECLARE _c_proc CURSOR FOR
				SELECT 
					guid
				FROM `t_wyjazdy_na_inny_day`
				;
			DECLARE CONTINUE HANDLER FOR NOT FOUND SET _done = TRUE;
			OPEN _c_proc;
				loop1: LOOP
					FETCH _c_proc INTO
						_localGUID;
					IF _done THEN
						LEAVE loop1;
					ELSE
						SET _tmpGUID = NewGUID();
						INSERT IGNORE INTO `crm_commisions`
							(guid, nrWewn, StartTime, endtime, areaGUID, status, 
							opis, rodzaj, temat, podrodzaj, pr_typ_zmiany,
							katcol0,katcol1,katcol2,katcol3,katcol4
							)
							SELECT 
								_tmpGUID, nrWewn, _Param_A, endtime, areaGUID, status, 
								opis, rodzaj, temat, podrodzaj, pr_typ_zmiany,
								katcol0,katcol1,katcol2,katcol3,katcol4
							FROM
								`crm_commisions`
							WHERE 
								guid = _localGUID
						;				
						
						INSERT IGNORE INTO `crm_usr_links`
							(commisionGUID, typ, osoba, KontrGUID, poziom, stan, Alert, 
							alertAt, kiedy_dodano, alert_tryb, w_terminarzu, stawka_h, wydajnosc
							)
							SELECT 
								_tmpGUID,  typ, osoba, KontrGUID, poziom, stan, Alert, 
								alertAt, kiedy_dodano, alert_tryb, w_terminarzu, stawka_h, wydajnosc
							FROM
								`crm_usr_links`
							WHERE 
								commisionGUID = _localGUID
						;	
						
						SET @Record_count = @Record_count + 1;
						
					END IF;
				END LOOP;
			CLOSE _c_proc;
		END;			
		
		SELECT @Record_count AS record_count; 
		
	END IF;	--	IF _MODE = 'KLONOWANIE_WYJAZDOW_NA_DZIEN.create'

SET @Watch.Inf = 'za KLONOWANIE_WYJAZDOW_NA_DZIEN.create';
	
	IF _MODE = 'KLONOWANIE_WYJAZDOW_NA_DZIEN.check_exist' THEN
		SELECT 
			count(*) as aCount
		FROM `crm_commisions` w
		LEFT JOIN `erp_area_nodes` r ON r.GUID = w.AreaGUID
		LEFT JOIN `erp_division_schema` d ON d.GUID = r.Dzial
		WHERE
			w.Rodzaj = 5 
			AND (select count(*) from grupy_osob grp where grp.grupaGUID=d.GUID and grp.osobaGUID=@session.CurrOsobaGUID)>0
			AND w.PodRodzaj = 1
			AND DATE(w.StartTime) = _Param_A 
		;
	END IF;	--	IF _MODE = 'KLONOWANIE_WYJAZDOW_NA_DZIEN.check_exist'
	
SET @Watch.Inf = 'za KLONOWANIE_WYJAZDOW_NA_DZIEN.check_exist';
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'USUN_WYJAZD.%'
		Klonuje wyjazdy z widoku na podany dzien
		
	'USUN_WYJAZD.check'
		Sprawdza czy mozna usunac dany wyjazd ( moze jest juz podczepiony )
		Parametry
			_GUID		GUID wyjazd do sprawdzenia
		CALL ht_zmng_wyjazdy('USUN_WYJAZD.check', _GUID, '', '', '', '');		
			
	'USUN_WYJAZD.delete'
		Usuwa wyjazd sprzatajac po sobie
		Parametry
			_GUID		GUID wyjazd usuniecia
		CALL ht_zmng_wyjazdy('KLONOWANIE_WYJAZDOW_NA_DZIEN.insert', _GUID, '', '', '', '');		
	

------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'USUN_WYJAZD.check' THEN
		SELECT 
			count(*) as istnieje
		FROM `zmng` z
		WHERE
			z.WyjazdGUID = _GUID 
		;
	END IF;	--	IF _MODE = 'USUN_WYJAZD.check'

SET @Watch.Inf = 'za USUN_WYJAZD.check';
	
	IF _MODE = 'USUN_WYJAZD.delete' THEN
		DELETE FROM `crm_commisions` where GUID = _GUID;
		DELETE FROM `crm_usr_links` where commisionGUID = _GUID;
	END IF;	--	IF _MODE = 'USUN_WYJAZD.delete'

SET @Watch.Inf = 'za USUN_WYJAZD.delete';
	

	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
PLANOWANIE ZAMOWIEN I WYJAZDÓW

1. Założenia

a) Kreator na podstawie danych z teczki kontrahentów (interwał wizyt i ost. daty sprzedaży) buduje zamówienia i wyjazdy.
b) Parametrem wejściowym jest określony tydzień (lub zakres dni). System sam szuka kontrahentów dla których termin następnej wizyty (transakcji) wypada w podanym zakresie dat.
c) Cały zestaw jest grupowany wg rewirów w wyjazdy.
d) System nie uwzględnia (ignoruje) klientów dla których w podanym okresie istnieją zamówienia.
e) Efektem finalnym będą stworzone wyjazdy i serie zamówień (po jednym dla każdego z klientów).  
f) Pozycje zamówień są tworzone na podstawie wcześniejszych uśrednionych transakcji.

2. Działanie kreatora

Wstęp (1 zakładka kreatora lub filtr):
- Podanie zakresu dni (tydzień)
- Filtracja tras (nie obowiązkowa) 

Lista klientów (1 lub 2 zakładka kreatora):
- lista z możliwością zaznaczania klientów (domyślnie wszyscy zaznaczeni)

Wyjazdy (2 lub 3 zakładka kreatora):
- tabela wyjazdów z 
  - podpozycjami klientów i 
    - pozycjami towarów (dla danego klienta) - pozycje te będą sumowane w kolumnie ilość, a sama kolumna będzie edycyjna (możliwość zmiany ilości butli)
- na poziomie klientów (zamówień) będzie można (CheckBox) odhaczyć zamówienie co będzie skutkowało tym, że owo zamówienie nie będzie kreowane.

Kreowanie wyjazdów i zamówień będzie się odbywać po zatwierdzeniu tej zakładki kreatora.

SET @Gjmam = 'cf23fedf8f020ff365c0e164a6251d76';
SET @session.CurrOsobaGUID = @Gjmam;
SET @session.CurrOsobaGUID = 'IM_57';
SET @session.CurrOsobaGUID = 'IM_119';
SET @_Param_A = '2011-03-13';

CALL ht_zmng_wyjazdy('planowanie.zamowien.init', '', @_Param_A, '', 'SO', '');		
SELECT * FROM `t_plan_wyjazdy_kontrah` t;
SELECT @_Param_C;
SELECT * FROM `t_plan_wyjazdy_rewiry`;
CALL ht_zmng_wyjazdy('planowanie.zamowien.rewiry.after.apply', '', '', '', '', '');	
			SELECT 
				rew.Nazwa wAS Rewir_Nazwa, 
				K.*,
				d.Nazwa AS Oddzial_Nazwa 
			FROM `t_plan_wyjazdy_kontrah` K 
			LEFT JOIN `erp_area_nodes` rew ON rew.GUID = K.GUID_rewir
			LEFT JOIN `erp_division_schema` d ON d.`GUID` = rew.`Dzial`  
			;

CALL ht_zmng_wyjazdy('planowanie.zamowien.kontrah.after.apply', '', '', '', '', '');	
SELECT 
	z.*, 
	K.Nazwa AS KontrNazwa, K.Symbol AS KontrSymb, 
	rew.Nazwa AS Rewir_Nazwa   
FROM `t_plan_wyjazdy_zmng_zmpo` z
INNER JOIN `t_plan_wyjazdy_kontrah` K ON K.GUID = z.KontrGUID
LEFT JOIN `erp_area_nodes` rew ON rew.GUID = K.GUID_rewir
;

SELECT 
	COUNT(*) AS X, SUM(z.towrwagasuma) AS towrwagasuma,z.* 
FROM `t_plan_wyjazdy_zmng_zmpo` z
-- GROUP BY WyjazdGUID
GROUP BY TerminRealizacji, GUID_Rewir, KontrGUID 
ORDER BY TerminRealizacji
;


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

/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'planowanie.zamowien.init'
		Inicjuje planowanie wyjazdow
		_Param_A	Data od (Filtr)
		_Param_B	MinDni IFNULL(K.dlmagazynu, 0) > @planowanie.zamowien.MinDni AND
		_Param_C	UserGUID
	CALL ht_zmng_wyjazdy('planowanie.zamowien.init', '', '2010-04-01', '', 'SO', '');		
	CALL ht_zmng_wyjazdy('planowanie.zamowien.init', '', '2010-04-01', '', '', '');		
	CALL ht_zmng_wyjazdy('planowanie.zamowien.init', '', '2010-04-01', '1', '', '');		

------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'planowanie.zamowien.init' THEN
		-- update `ht_kontrah_info`
		CALL _modify_ht_kontrah_info('need.update', '', '', '', '', '');			
	
		SET _Param_B = IFNULL(_Param_B, 0);
		
		SET
			@planowanie.zamowien.TerminRealizacji = DATE(IFNULL(_Param_A, '2000-01-01')),
			@planowanie.zamowien.Krotkoterminowi = IF(_Param_B = '', 0, _Param_B)
		;	
		DROP TEMPORARY TABLE IF EXISTS `t_plan_wyjazdy_rewiry`;
		CREATE TEMPORARY TABLE `t_plan_wyjazdy_rewiry` (
			`ID` VARCHAR(38) NOT NULL COMMENT 'ID jako GUID',
			`GUID` VARCHAR(38) NOT NULL COMMENT 'ID rewiru',
			`Nazwa` VARCHAR(150) DEFAULT NULL,
			`Checked` int(11) DEFAULT 1,
			`KontrTerminRealizacji` DATE,
			`TerminRealizacji` DATE,
			`IleRows` INT NOT NULL DEFAULT 0, 
			UNIQUE KEY `ID` (`ID`)
		)
		;
	
		DROP TEMPORARY TABLE IF EXISTS `t_plan_wyjazdy`;
		CREATE TEMPORARY TABLE `t_plan_wyjazdy` 
		(
			`GUID` varchar(38) NOT NULL COMMENT 'ID wyjazdu',
			`GUID_rewir` varchar(38) NOT NULL DEFAULT '' COMMENT 'ID rewiru',
			`DataWyjazdu` DATETIME,
			UNIQUE KEY `GUID` (`GUID`)
		)
		;
			
		DROP TEMPORARY TABLE IF EXISTS `t_plan_wyjazdy_kontrah`;
		CREATE TEMPORARY TABLE `t_plan_wyjazdy_kontrah` 
		(
			`GUID` varchar(38) NOT NULL COMMENT 'ID kontrahenta',
			`GUID_rewir` varchar(38) DEFAULT '' COMMENT 'ID rewiru',
			`GUID_zmng` varchar(38) NOT NULL DEFAULT '' COMMENT 'ID przyszłego zamówienia',
			`Checked` int(11) DEFAULT 1,
			`Nazwa` varchar(150) DEFAULT NULL,
			`Symbol` varchar(150) DEFAULT NULL,
			`Nast_Week` int(11) DEFAULT 0,
			`Terminrealizacji_plan` DATE,
			`TerminRealizacji` DATE,
			`ThisDay` int(11) DEFAULT 1,
			`ost_sprzedaz` DATE,
			`dlmagazynu` int(11) DEFAULT 0,
			`LokalizacjaGUID` varchar(38) DEFAULT '' COMMENT 'ID lokalizacji',
			`AdresDostawy` varchar(200) DEFAULT '' COMMENT 'Adres lokalizacji',
			`numer_na_trasie` int(11) DEFAULT 0,
			`iloscZam` int(11) DEFAULT 0,
			`Rewir_Nazwa` varchar(200) DEFAULT '' COMMENT 'Nazwa rewirui',
			`Oddzial_Nazwa` varchar(200) DEFAULT '' COMMENT 'Nazwa oddzialu', 
			`ugrpguid` varchar(38) DEFAULT 'ALL' COMMENT 'ugrpguid kontrahenta', 
			UNIQUE KEY `GUID` (`GUID`),
			KEY `GUID_rewir` (`GUID_rewir`),
			KEY `GUID_zmng` (`GUID_zmng`)
		)
		;
		DROP TEMPORARY TABLE IF EXISTS `t_plan_wyjazdy_zmng_zmpo`;
		CREATE TEMPORARY TABLE `t_plan_wyjazdy_zmng_zmpo` (
			`GUID_zmng` VARCHAR(38) NOT NULL COMMENT 'ID przyszłego zamówienia',
			`WyjazdGUID` VARCHAR(38) COMMENT 'ID Wyjazdu',
			`GUID_zmpo` VARCHAR(38) NOT NULL COMMENT 'ID pozycji zamówienia',
			`GUID_rewir` varchar(38) DEFAULT '' COMMENT 'ID rewiru',
			`Checked` int(11) DEFAULT 1,
			`KontrGUID` VARCHAR(38) NOT NULL COMMENT 'ID towaru',
			`IdnTowr` VARCHAR(38) NOT NULL COMMENT 'ID towaru',
			`towrsymb` VARCHAR(38) NOT NULL DEFAULT '',
			`towrnazwa` VARCHAR(150) DEFAULT NULL,
			`ilosc` DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
			`towrwaga` DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
			`towrwagasuma` DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
			`TerminRealizacji` DATE,
			`terminrealizacji_plan` DATE,
			`Uwagi` TEXT,
			UNIQUE KEY `GUID_zmng` (`GUID_zmng`),
			UNIQUE KEY `GUID_zmpo` (`GUID_zmpo`)
		)
		;
		
	--	Na razie bierzemy pod uwage tylko _Param_A i _Param_C czyli data bedzie zmieniana na week of year
		SET _Param_C = IFNULL(_Param_C, '');
		SET @_Param_C = _Param_C;
		INSERT IGNORE INTO `t_plan_wyjazdy_kontrah`
			(GUID, GUID_rewir, Checked, Nazwa, Symbol, ost_sprzedaz, dlmagazynu, TerminRealizacji, Terminrealizacji_plan, Nast_Week, ThisDay, LokalizacjaGUID, AdresDostawy, numer_na_trasie, Rewir_Nazwa, Oddzial_Nazwa, ugrpguid)
			SELECT
				K.GUID, K.areaGUID AS GUID_rewir, 1 AS Checked,
				K.Nazwa, K.Symbol,
				ki.zam_prev_date,
				ki.zam_interval,
				ki.zam_next_date AS TerminRealizacji,
				ki.zam_next_date AS Terminrealizacji_plan,
				_var_DateToYW(ki.zam_next_date) AS Nast_Week,
				(@planowanie.zamowien.TerminRealizacji = ki.zam_next_date) AS ThisDay,
				_VarStr((SELECT loc.GUID FROM `erp_area_nodes` loc WHERE loc.KontrGUID = K.GUID LIMIT 1)) AS LokalizacjaGUID,
				_VarStr(CONCAT(K.ulica, ', ', K.NazwaMiasta)) AS AdresDostawy,
				K.numer_na_trasie,
				rew.Nazwa AS Rewir_Nazwa,
				d.Nazwa AS Oddzial_Nazwa,
				K.ugrpguid
			FROM `kontrah` K
			LEFT JOIN `erp_area_nodes` rew ON rew.GUID = K.AreaGUID
			LEFT JOIN `erp_division_schema` d ON d.`GUID` = rew.`Dzial`
			INNER JOIN `ht_kontrah_info` ki ON ki.kontrguid = K.GUID
			WHERE
				K.dlmagazynu IS NOT NULL AND
				K.dlmagazynu != 0 AND
				IF(@planowanie.zamowien.Krotkoterminowi, (ki.zam_interval < 7), (ki.zam_interval >= 7)) AND
				_var_DateToYW(ki.zam_next_date) = _var_DateToYW(@planowanie.zamowien.TerminRealizacji) AND
				K.AreaGUID IS NOT NULL AND
				((SELECT COUNT(*) FROM grupy_osob grp WHERE grp.grupaGUID=K.ugrpGUID AND grp.osobaGUID=@session.CurrOsobaGUID) > 0)
			GROUP BY K.GUID
		;	
		UPDATE `t_plan_wyjazdy_kontrah` t
		SET
			t.Checked = NOT EXISTS(
				SELECT	
					z.GUID
				FROM `zmng` z
				WHERE
					z.KontrGUId = t.GUID AND
					z.terminrealizacji_plan = t.Terminrealizacji_plan AND
					z.Status != 8
				)	
		;
		IF @planowanie.zamowien.Krotkoterminowi THEN
			UPDATE `t_plan_wyjazdy_kontrah` t
			SET
				t.Checked = t.Checked AND t.ThisDay
			;
		
		
		END IF;
		
		DELETE FROM `t_plan_wyjazdy_kontrah` 
		WHERE
			NOT Checked
		;	
		
		UPDATE `t_plan_wyjazdy_kontrah` t, `erp_area_nodes` loc
		SET
			t.AdresDostawy = IFNULL(loc.Adres, t.AdresDostawy)
		WHERE
			loc.GUID = t.LokalizacjaGUID
		;
		UPDATE `t_plan_wyjazdy_kontrah` t
		SET
			t.iloscZam = _varINT_NOTNULL((SELECT COUNT(*) FROM `temp_srednie3m` ts WHERE ts.KontrGUID = t.GUID) )
		;
		
		TRUNCATE `t_plan_wyjazdy_rewiry`;
		INSERT INTO `t_plan_wyjazdy_rewiry`
			(ID, GUID, Nazwa, Checked, KontrTerminRealizacji, TerminRealizacji, IleRows)
			SELECT 
				NewGUID(), rew.GUID, rew.Nazwa, 1, t.TerminRealizacji, t.TerminRealizacji, COUNT(*) AS IleRows
			FROM `t_plan_wyjazdy_kontrah` t
			INNER JOIN `erp_area_nodes` rew ON rew.GUID = t.GUID_rewir
			WHERE
				t.GUID_rewir IS NOT NULL
			GROUP BY rew.GUID, t.TerminRealizacji
			
		;	
		/*
		Teraz mozesz pobrac rewiry:
				SELECT * FROM `t_plan_wyjazdy_rewiry`;
		*/
		
		/*		
		DROP TEMPORARY TABLE IF EXISTS `t_plan_wyjazdy_zmng`;
		CREATE TEMPORARY TABLE `t_plan_wyjazdy_kontrah` (
			`GUID` varchar(38) NOT NULL COMMENT 'ID przyszłego zamówienia',
			`KontrGUID` varchar(38) NOT NULL COMMENT 'ID towaru',
			`Checked` int(11) DEFAULT 1,
			`ilosc` double(16,4) NOT NULL DEFAULT '0.0000',
			`Uwagi` TEXT,
			UNIQUE KEY `GUID` (`GUID`),
			KEY `KontrGUID` (`KontrGUID`)
		)
		;

		DROP TEMPORARY TABLE IF EXISTS `t_plan_wyjazdy_zmpo`;
		CREATE TEMPORARY TABLE `t_plan_wyjazdy_kontrah` (
			`GUID` varchar(38) NOT NULL COMMENT 'ID pozycji zamówienia',
			`GUID_zmng` varchar(38) NOT NULL COMMENT 'ID przyszłego zamówienia',
			`IdnTowr` varchar(38) NOT NULL COMMENT 'ID towaru',
			`towrsymb` varchar(38) NOT NULL DEFAULT '',
			`towrnazwa` varchar(150) DEFAULT NULL,
			`ilosc` double(16,4) NOT NULL DEFAULT '0.0000',
			`Uwagi` TEXT,
			UNIQUE KEY `GUID` (`GUID`),
			KEY `GUID_zmng` (`GUID_zmng`)
		)
		;
		*/
	END IF;	--	IF _MODE = 'planowanie.zamowien.init'
	
SET @Watch.Inf = 'za planowanie.zamowien.init';
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'planowanie.zamowien.rewiry.after.apply'
		Po zapisie rewirów (zaznaczanie)
	CALL ht_zmng_wyjazdy('planowanie.zamowien.rewiry.after.apply', '', '', '', '', '');	

------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'planowanie.zamowien.rewiry.after.apply' THEN
		UPDATE `t_plan_wyjazdy_kontrah` t, `t_plan_wyjazdy_rewiry` r
		SET
			t.Checked = r.Checked,
			t.TerminRealizacji = r.TerminRealizacji
		WHERE
			t.GUID_rewir = r.GUID AND
			t.TerminRealizacji = r.KontrTerminRealizacji
		;	
		/*
		Teraz mozesz pobrac kontrahentow:
		
			SELECT 
				rew.Nazwa AS Rewir_Nazwa, 
				K.*,
				d.Nazwa AS Oddzial_Nazwa 
			FROM `t_plan_wyjazdy_kontrah` K 
			LEFT JOIN `erp_area_nodes` rew ON rew.GUID = K.GUID_rewir
			LEFT JOIN `erp_division_schema` d ON d.`GUID` = rew.`Dzial`  
			;
		
		*/
	END IF;	--	IF _MODE = 'planowanie.zamowien.rewiry.after.apply'

SET @Watch.Inf = 'za planowanie.zamowien.rewiry.after.apply';
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'planowanie.zamowien.kontrah.after.apply'
		Po zapisie kontrahenta - przygotowanie tabel tymczasowych `t_plan_wyjazdy_zmng` i `t_plan_wyjazdy_zmpo`
	CALL ht_zmng_wyjazdy('planowanie.zamowien.kontrah.after.apply', '', '', '', '', '');	

------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'planowanie.zamowien.kontrah.after.apply' THEN
		/*
		To są pozycje		
		select * from temp_srednie3m
		;
		idntowr,kontrguid,avg_ilosc (w sztukach butli)		
		*/
		TRUNCATE `t_plan_wyjazdy_zmng_zmpo`;
		INSERT IGNORE INTO `t_plan_wyjazdy_zmng_zmpo` 
			(GUID_zmng, GUID_zmpo, GUID_rewir, WyjazdGUID, KontrGUID, IdnTowr, towrsymb, towrnazwa, ilosc, towrwaga, towrwagasuma, TerminRealizacji, Terminrealizacji_plan, Uwagi)
			SELECT 
				NewGUID() AS GUID_zmng,
				NewGUID() AS GUID_zmpo,
				K.GUID_rewir AS GUID_rewir,
				'' AS WyjazdGUID,
				s3.KontrGUID,
				s3.IdnTowr, 
				t.Symbol AS towrsymb,
				t.Nazwa AS towrnazwa,
				CEIL(s3.avg_Ilosc),
				t.waga AS towrwaga,
				t.waga * CEIL(s3.avg_Ilosc) AS towrwagasuma,
				K.TerminRealizacji AS TerminRealizacji,
				K.Terminrealizacji_plan AS Terminrealizacji_plan,
				'' AS Uwagi
			FROM `t_plan_wyjazdy_kontrah` K
			INNER JOIN `temp_srednie3m` s3 ON s3.KontrGUID = K.GUID
			INNER JOIN `TowrNg` t ON t.GUID = s3.IdnTowr
			WHERE
				K.Checked
			ORDER BY s3.KontrGUID	
		;
		/*
		Potem 
			SELECT 
				z.*, 
				K.Nazwa AS KontrNazwa, K.Symbol AS KontrSymb, 
				rew.Nazwa AS Rewir_Nazwa   
			FROM `t_plan_wyjazdy_zmng_zmpo` z
			INNER JOIN `t_plan_wyjazdy_kontrah` K ON K.GUID = z.KontrGUID
			LEFT JOIN `erp_area_nodes` rew ON rew.GUID = K.GUID_rewir
			;
		
		*/
		TRUNCATE `t_plan_wyjazdy`;
		INSERT INTO `t_plan_wyjazdy` 
			(GUID, GUID_rewir, DataWyjazdu)
			SELECT
				NewGUID(), K.GUID_rewir, CURRENT_DATE()
			FROM `t_plan_wyjazdy_kontrah` K
			GROUP BY K.GUID_rewir
		;	
		
		UPDATE `t_plan_wyjazdy_zmng_zmpo` z, `t_plan_wyjazdy` w
		SET
			z.WyjazdGUID = w.GUID
		WHERE
			z.GUID_rewir = w.GUID_rewir
		;	
	END IF;	--	IF _MODE = 'planowanie.zamowien.kontrah.after.apply'

SET @Watch.Inf = 'za planowanie.zamowien.kontrah.after.apply';
	
	
	
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'planowanie.zamowien.maruderzy.%'
	'planowanie.zamowien.maruderzy.createtemp'
		przygotowanie `t_ht_kontrah_info`
	'planowanie.zamowien.maruderzy.after.apply'
		po apply `t_ht_kontrah_info` zrob update `ht_kontrah_info`
			_Param_A	'' maruderzy(niebsłużeni)
						<> ''  przeterminowani
	CALL ht_zmng_wyjazdy('planowanie.zamowien.maruderzy.createtemp', '', '', '', '', '');	
	CALL ht_zmng_wyjazdy('planowanie.zamowien.maruderzy.after.apply', '', '', '', '', '');	
	CALL ht_zmng_wyjazdy('planowanie.zamowien.maruderzy.clear', '', '', '', '', '');	
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE LIKE 'planowanie.zamowien.maruderzy.%' THEN
		SET _Param_A = IFNULL(_Param_A, '');
		IF _MODE = 'planowanie.zamowien.maruderzy.createtemp' THEN
		
		-- update `ht_kontrah_info`
			CALL _modify_ht_kontrah_info('need.update', '', '', '', '', '');		
		
			DROP TEMPORARY TABLE IF EXISTS `t_ht_kontrah_info_A`;
			IF _Param_A = '' THEN
			--	NIEOBSŁUŻENI
				CREATE TEMPORARY TABLE `t_ht_kontrah_info_A`
					SELECT
						ki.KontrGUID,
						-- ZLast.Status,
						ZLast.terminrealizacji_plan AS Last_TerminRealizacji,
						-- CURRENT_DATE() AS Last_TerminRealizacji,
						ki.zam_last_guid AS Last_ZamGUID
					FROM `ht_kontrah_info` ki
					INNER JOIN `kontrah` k ON k.GUID = ki.KontrGUID AND k.deleted = 0
					LEFT JOIN `zmng` ZLast ON ZLast.GUID = ki.zam_last_guid
					WHERE
						ZLast.Status IN (4, 8)
						-- ki.zam_next_date < CURRENT_DATE()
						AND ki.zam_interval > 0
						AND ((SELECT COUNT(*) FROM grupy_osob grp WHERE grp.grupaGUID=k.ugrpGUID AND grp.osobaGUID=@session.CurrOsobaGUID) > 0)
				;	
			ELSE
			--	PRZETERMINOWANI
				CREATE TEMPORARY TABLE `t_ht_kontrah_info_A`
					SELECT
						ki.KontrGUID,
						-- ZLast.Status,
						ZLast.terminrealizacji_plan AS Last_TerminRealizacji,
						-- CURRENT_DATE() AS Last_TerminRealizacji,
						ki.zam_last_guid AS Last_ZamGUID
					FROM `ht_kontrah_info` ki
					INNER JOIN `kontrah` k ON k.GUID = ki.KontrGUID AND k.deleted = 0
					LEFT JOIN `zmng` ZLast ON ZLast.GUID = ki.zam_last_guid
					WHERE
						-- (ZLast.Status & 8) = 0
						ZLast.Status = 0
						AND _var_DateToYW(ki.zam_next_date) < _var_DateToYW(CURRENT_DATE())
						-- AND ki.zam_next_date < DATE_ADD(CURRENT_DATE(), INTERVAL - ki.zam_interval DAY)
						-- AND ki.zam_next_date < CURRENT_DATE()
						AND ki.zam_interval > 0 
						AND ((SELECT COUNT(*) FROM grupy_osob grp WHERE grp.grupaGUID=k.ugrpGUID AND grp.osobaGUID=@session.CurrOsobaGUID) > 0)
				;	
				
			END IF;
			ALTER TABLE `t_ht_kontrah_info_A`
				ADD UNIQUE KontrGUID(KontrGUID)
			;	
			/*
			UPDATE `t_ht_kontrah_info_A`	tki
			SET
				tki.Last_TerminRealizacji = 
				(
					SELECT 
						MAX(z.TerminRealizacji)
					FROM `zmng` z
					WHERE
						z.KontrGUID = tki.KontrGUID 
						AND z.Rodzaj IN (27)
				)
			;
			UPDATE `t_ht_kontrah_info_A`	tki
			SET
				tki.Last_ZamGUID = 
				(
					SELECT 
						z.GUID 
					FROM `zmng` z
					WHERE
						z.KontrGUID = tki.KontrGUID 
						AND z.TerminRealizacji = tki.Last_TerminRealizacji
					LIMIT 1
				)
			;
			*/	
		
		
			DROP TEMPORARY TABLE IF EXISTS `t_ht_kontrah_info`;
			CREATE TEMPORARY TABLE `t_ht_kontrah_info`
				SELECT
					ki.*,
					k.Symbol, k.Nazwa,
					rew.Nazwa AS Rewir_Nazwa,
					-- _VarStr((SELECT valuex FROM katcols WHERE colnr = 4 AND typ = 0 AND nieaktywna = 0 AND klucz = k.katcol3)) AS Status,
					_VarStr((SELECT valuex FROM v_kkn3 WHERE rok IN (0, @session.FK.AktRokObrach) AND nieaktywna = 0 AND klucz = k.katcol3)) AS Status,
					kiA.Last_TerminRealizacji,
					kiA.Last_ZamGUID,
					z.powod_niezrealizowania,
					powod.DisplayValue AS powod_niezrealizowania_str,
					_VarStr((SELECT loc.GUID FROM `erp_area_nodes` loc WHERE loc.KontrGUID = kiA.KontrGUID LIMIT 1)) AS LokalizacjaGUID,
					_VarStr(CONCAT(k.ulica, ', ', k.NazwaMiasta)) AS AdresDostawy,
					k.numer_na_trasie,
					DATE((
						SELECT MAX(DataSprzed) FROM `opng` n WHERE n.KontrGUID = ki.KontrGUID AND n.Rodzaj IN (0,1,2,10)
					))AS Ostatnia_transakcja
					-- IFNULL(GROUP_CONCAT(loc.Adres), CONCAT(k.ulica, ', ', k.NazwaMiasta)) AS AdresDostawy
				FROM `t_ht_kontrah_info_A` kiA	
				INNER JOIN `ht_kontrah_info` ki ON ki.KontrGUID = kiA.KontrGUID
				INNER JOIN `kontrah` k ON k.GUID = ki.KontrGUID AND k.deleted = 0
				LEFT JOIN `erp_area_nodes` rew ON rew.GUID = k.AreaGUID
				-- LEFT JOIN `erp_area_nodes` loc ON loc.KontrGUID = k.GUID
				LEFT JOIN `zmng` z ON z.GUID = kiA.Last_ZamGUID
				LEFT JOIN `slowniki_pierwotne` powod ON powod.Value = z.powod_niezrealizowania AND powod.slownik_GUID = 'ZM_POWODY_NIEREALIZ'
				WHERE
					ki.zam_interval > 0
				--	AND ki.zam_next_date < CURRENT_DATE()
					-- AND ((SELECT COUNT(*) FROM grupy_osob grp WHERE grp.grupaGUID=k.ugrpGUID AND grp.osobaGUID=@session.CurrOsobaGUID) > 0)
				-- GROUP BY ki.KontrGUID	
				;	
				ALTER TABLE `t_ht_kontrah_info`
					ADD UNIQUE KontrGUID(KontrGUID)
				;	
				
			DROP TEMPORARY TABLE IF EXISTS `t_ht_kontrah_info_A`;
			
			UPDATE `t_ht_kontrah_info` t, `erp_area_nodes` loc
			SET
				t.AdresDostawy = IFNULL(loc.Adres, t.AdresDostawy)
			WHERE
				loc.GUID = t.LokalizacjaGUID
			;
			/*
			potem
			SELECT * FROM `t_ht_kontrah_info`;
			*/
		END IF;	
	
		IF _MODE = 'planowanie.zamowien.maruderzy.after.apply' THEN
			UPDATE `ht_kontrah_info` ki, `t_ht_kontrah_info` tki
			SET
				ki.zam_next_date = tki.zam_next_date
			WHERE
				ki.KontrGUID = tki.KontrGUID
			;	
		--	DROP TEMPORARY TABLE IF EXISTS `t_ht_kontrah_info`;
		END IF;	
		
		IF _MODE = 'planowanie.zamowien.maruderzy.clear' THEN
			DROP TEMPORARY TABLE IF EXISTS `t_ht_kontrah_info`;
		END IF;	
	END IF;	--	IF _MODE LIKE 'planowanie.zamowien.maruderzy.%' 
	
SET @Watch.Inf = 'za planowanie.zamowien.maruderzy.%';
	
	
	
	
	
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'planowanie.wyjazdow.init'
		Inicjuje planowanie wyjazdow
		_Param_A	Data od (Filtr)
		_Param_C	UserGUID
		_Param_D	<> '' to zawęża tylko do tras z mojego oddziału (osoby @session.CurrOsobaGUID) 
	CALL ht_zmng_wyjazdy('planowanie.wyjazdow.init', '', '2010-04-01', '', 'SO', '');		
	CALL ht_zmng_wyjazdy('planowanie.wyjazdow.init', '', '2010-04-01', '', '', '');		
	
	CALL ht_zmng_wyjazdy('planowanie.wyjazdow.init', '', '2013-02-06', '', 'IM_96', '');		-- pokazuj wszystkie	
	CALL ht_zmng_wyjazdy('planowanie.wyjazdow.init', '', '2013-02-06', '', 'IM_96', '1');		-- pokazuj wszystkie	
	CALL ht_zmng_wyjazdy('planowanie.wyjazdow.init', '', '2013-02-06', '', 'IM_96', '0');		-- pokazuj tylko te z mojego (@session.CurrOsobaGUID) oddziału


------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'planowanie.wyjazdow.init' THEN
		SET _Param_A = IFNULL(_Param_A, '');
		SET _Param_A = IF(_Param_A != '', _Param_A, NOW());
		SET @session.planowanie.wyjazdow.Dzien = Date(_Param_A);
		SET @_Param_A = _Param_A;
		SET @session.planowanie.wyjazdow.AllTrasy = (IFNULL(_Param_D, '') = '') OR (IFNULL(_Param_D, '') = '1'); 
		
	-- update `ht_kontrah_info`
		CALL _modify_ht_kontrah_info('need.update', '', '', '', '', '');		
		
		SELECT 
			rew.GUID AS Rew_GUID, rew.Nazwa, z.TerminRealizacji, _varINT(COUNT(k.Idn)) AS IleKontrah, _varINT(COUNT(z.Idn)) AS IleZam,
			(o.GUID IS NOT NULL) AS Rewir_Wlasny
		FROM `zmng` z
		INNER JOIN `kontrah` k ON k.GUID = z.KontrGUID
		INNER JOIN `erp_area_nodes` rew ON rew.GUID = k.AreaGUID
		LEFT JOIN `osoby` o ON o.GUID = @session.CurrOsobaGUID AND o.UgrpGUID = rew.dzial
		WHERE
			IFNULL(z.WyjazdGUID, '') = '' AND
			z.TerminRealizacji = @session.planowanie.wyjazdow.Dzien
			AND (@session.planowanie.wyjazdow.AllTrasy OR (o.GUID IS NOT NULL))
		GROUP BY rew.GUID
			
		;
	END IF;	--	IF _MODE = 'planowanie.wyjazdow.init'
	
SET @Watch.Inf = 'za planowanie.wyjazdow.init';
	
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'planowanie.wyjazdow.free'
		Robi klar
	CALL ht_zmng_wyjazdy('planowanie.wyjazdow.free', '', '', '', '', '');	

------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'planowanie.wyjazdow.free' THEN
		DROP TEMPORARY TABLE IF EXISTS `t_plan_wyjazdow_wiz`;
	END IF;	--	IF _MODE = 'planowanie.wyjazdow.free'
	
SET @Watch.Inf = 'za planowanie.wyjazdow.free';
	
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'planowanie.wyjazdow.rewir.set'
		Rewir wybrano w Wizardzie tutaj ustawiamy tenże
			_GUID	GUID rewiru (trasy)
	CALL ht_zmng_wyjazdy('planowanie.wyjazdow.rewir.set', @_Rew_GUID, '', '', '', '');	

------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	SET @Watch.Inf = _MODE;
	IF _MODE = 'planowanie.wyjazdow.rewir.set' THEN
		SET @Watch.Inf = CONCAT(@Watch.Inf, '/n', 'Kreuje `t_plan_wyjazdow_wiz`');
		DROP TEMPORARY TABLE IF EXISTS `t_plan_wyjazdow_wiz`;
		CREATE TEMPORARY TABLE `t_plan_wyjazdow_wiz` (
			`GUID_zmng` VARCHAR(38) NOT NULL COMMENT 'ID przyszlego zamowienia',
			`GUID_zmpo` VARCHAR(38) NOT NULL COMMENT 'ID pozycji zamowienia',
			`GUID_rewir` varchar(38) DEFAULT '' COMMENT 'ID rewiru',
			`Rewir_Nazwa` VARCHAR(150) DEFAULT NULL,
			`Checked` int(11) DEFAULT 1,
			`KontrGUID` VARCHAR(38) NOT NULL COMMENT 'ID towaru',
			`KontrSymbol` VARCHAR(50) NOT NULL COMMENT 'symbol kontrahenta',
			`KontrNazwa` VARCHAR(200) NOT NULL COMMENT 'nazwa kontrahenta',
			`IdnTowr` VARCHAR(38) NOT NULL COMMENT 'ID towaru',
			`towrsymb` VARCHAR(38) NOT NULL DEFAULT '',
			`towrnazwa` VARCHAR(150) DEFAULT NULL,
			`ilosc` DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
			`towrwaga` DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
			`towrwagasuma` DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
			`TerminRealizacji` DATE,
			`Uwagi` TEXT,
			`numer_na_trasie` int(11) DEFAULT 1,
			`ugrpguid` VARCHAR(38) NOT NULL COMMENT 'ugrpguid kontrahenta',
			UNIQUE KEY `GUID_zmng` (`GUID_zmng`),
			UNIQUE KEY `GUID_zmpo` (`GUID_zmpo`)
		)
		;
		SET @Watch.Inf = CONCAT(@Watch.Inf, '/n', 'Wstawiam do `t_plan_wyjazdow_wiz`');
		INSERT IGNORE INTO `t_plan_wyjazdow_wiz`
			(GUID_zmng, GUID_zmpo, GUID_rewir, Rewir_Nazwa, KontrGUID, KontrSymbol, KontrNazwa, IdnTowr, towrsymb, towrnazwa, ilosc, towrwaga, towrwagasuma, TerminRealizacji, Uwagi, numer_na_trasie, ugrpguid)
			SELECT 
				z.GUID AS GUID_zmng,
				p.GUID AS GUID_zmpo,
				rew.GUID AS GUID_rewir,
				rew.Nazwa,
				-- '' AS WyjazdGUID,
				z.KontrGUID,
				k.Symbol,
				k.Nazwa,
				p.IdnTowr, 
				t.Symbol AS towrsymb,
				t.Nazwa AS towrnazwa,
				CEIL(p.Ilosc),
				t.waga AS towrwaga,
				t.waga * CEIL(p.Ilosc) AS towrwagasuma,
				z.TerminRealizacji AS TerminRealizacji,
				'' AS Uwagi,
				k.numer_na_trasie,
				k.ugrpguid
			FROM `zmng` z
			INNER JOIN `zmpo` p ON p.IdnNg = z.GUID
			INNER JOIN `TowrNg` t ON t.GUID = p.IdnTowr
			INNER JOIN `kontrah` k ON k.GUID = z.KontrGUID
			INNER JOIN `erp_area_nodes` rew ON rew.GUID = k.AreaGUID
			WHERE
				IFNULL(z.WyjazdGUID, '') = '' AND
				z.TerminRealizacji = @session.planowanie.wyjazdow.Dzien AND
				k.AreaGUID = _GUID
			GROUP BY p.GUID
		;
		-- SELECT * FROM `t_plan_wyjazdow_wiz`;
		
	END IF;	--	IF _MODE = 'planowanie.wyjazdow.rewir.set'
SET @Watch.Inf = CONCAT(@Watch.Inf, '/n', Concat('za planowanie.wyjazdow.rewir.set', ' MODE = ', _MODE, ' rec: ', @Watch.Ile));
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'planowanie.wyjazdow.Check.zam'
		Zazacza i odznacza pozycje potrzebne do  'planowanie.wyjazdow.select.aggfooter'

------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'planowanie.wyjazdow.Check.zam' THEN
		SET _Param_A = IFNULL(_Param_A, '0');
		
		UPDATE t_plan_wyjazdow_wiz SET Checked = _Param_A WHERE `GUID_zmpo` = _GUID
		;
	END IF;

/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'planowanie.wyjazdow.select.aggfooter'
		Pobiera zawartosc grida dolnego panela wizarda (suma towarow i ilośc)
	CALL ht_zmng_wyjazdy('planowanie.wyjazdow.select.aggfooter', '', '', '', '', '');	

------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'planowanie.wyjazdow.select.aggfooter' THEN
		SELECT
			t.towrsymb,
			t.towrnazwa,
			SUM(IF(t.Checked, Ilosc, 0)) AS Ilosc,
			SUM(IF(t.Checked, towrwagasuma, 0)) AS towrwagasuma,
			SUM(Ilosc) AS Ilosc_ALL,
			SUM(towrwagasuma) AS towrwagasuma_ALL
		FROM `t_plan_wyjazdow_wiz` t
		-- WHERE
		-- 	t.Checked
		GROUP BY t.IdnTowr
		ORDER BY t.towrsymb	
		;
	END IF;	--	IF _MODE = 'planowanie.wyjazdow.select.aggfooter'

/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'planowanie.wyjazdow.select.lastwyjazdy'
		Pobiera ostatnie wyjazdy
			_GUID	GUID rewiru (trasy)
			_Param_A	Data wyjazdu jako nowy termin realizacji
	CALL ht_zmng_wyjazdy('planowanie.wyjazdow.select.lastwyjazdy', @_Rew_GUID, 'data', '', '', '');	

------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'planowanie.wyjazdow.select.lastwyjazdy' THEN
		SET _Param_A = IFNULL(_Param_A, '');
		SET _Param_A = IF(_Param_A != '', _Param_A, _VarStr(@session.planowanie.wyjazdow.Dzien));
		SET _Param_A = Date(_Param_A);
		
		(
			SELECT 
				IFNULL(c.GUID, '?') AS WyjazdGUID,
				_VarInt(COUNT(*)) AS IleZam,
				DATE(c.StartTime) AS Dzien,	
				c.Nrwewn,
				c.Temat,
				_VarStr(
				IF(z.ilepozzreal - z.ilepoz = 0, 
					'STRIKE', 
					IF(z.TerminRealizacji = _varDate(_Param_A), 
						'RED', 
						''
					)
				)) AS Font
				-- z.* 
			FROM zmng z 
			INNER JOIN `crm_commisions` c ON c.GUID = z.WyjazdGUID
			INNER JOIN `kontrah` k ON k.GUID = z.KontrGUID
			WHERE 
				k.AreaGUID = _GUID
				AND z.TerminRealizacji < CURRENT_DATE()
			GROUP BY WyjazdGUID
			ORDER BY z.idn DESC LIMIT 10
		)
		UNION	
		(
			SELECT 
				IFNULL(c.GUID, '?') AS WyjazdGUID,
				_VarInt(COUNT(*)) AS IleZam,
				DATE(c.StartTime) AS Dzien,	
				c.Nrwewn,
				c.Temat,
				_VarStr(
				IF(z.ilepozzreal - z.ilepoz = 0, 
					'STRIKE', 
					IF(z.TerminRealizacji = _varDate(_Param_A), 
						'RED', 
						''
					)
				)) AS Font
				-- z.* 
			FROM zmng z 
			INNER JOIN `crm_commisions` c ON c.GUID = z.WyjazdGUID
			INNER JOIN `kontrah` k ON k.GUID = z.KontrGUID
			WHERE 
				k.AreaGUID = _GUID
				AND z.TerminRealizacji >= CURRENT_DATE()
			GROUP BY WyjazdGUID
		)
		ORDER BY Dzien	
		;
		
	END IF;	--	IF _MODE = 'planowanie.wyjazdow.select.lastwyjazdy'
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'planowanie.wyjazdow.set.wyjazd'
		Ustawia wyjazd (_GUID) w zamowieniach ktore sa checked
		_GUID	GUID wyjazdu
		_Param_A	Data wyjazdu jako nowy termin realizacji
	CALL ht_zmng_wyjazdy('planowanie.wyjazdow.set.wyjazd', @_WyjazdGUID, '', '', '', '');	

------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'planowanie.wyjazdow.set.wyjazd' THEN
		SET _Param_A = IFNULL(_Param_A, '');
		SET _Param_A = IF(_Param_A != '', Date(_Param_A), @session.planowanie.wyjazdow.Dzien);
		SET _Param_A = Date(_Param_A);
		SET @_Param_A = @_Param_A;
		
		SET @session.planowanie.wyjazdow.KierowcaGUID = '';
		SET @session.planowanie.wyjazdow.AkwizytorGUID = '';
		
		SELECT 
			cl.osoba 
		INTO	
			@session.planowanie.wyjazdow.KierowcaGUID
		FROM `crm_usr_links` cl
		WHERE 
			cl.commisionGUID = _GUID 
			AND cl.poziom = 2 
		LIMIT 1
		;
		SET @session.planowanie.wyjazdow.KierowcaGUID = IFNULL(@session.planowanie.wyjazdow.KierowcaGUID, '');
		
		IF @session.planowanie.wyjazdow.KierowcaGUID != '' THEN
			SELECT 
				hl.KontrGUID 
			INTO	
				@session.planowanie.wyjazdow.AkwizytorGUID
			FROM `hr_kontrah_links` hl
			WHERE 
				hl.OsobaGUID = @session.planowanie.wyjazdow.KierowcaGUID
				AND hl.Kontekst LIKE '%(AKW)%'
			LIMIT 1
			;
			SET @session.planowanie.wyjazdow.AkwizytorGUID = IFNULL(@session.planowanie.wyjazdow.AkwizytorGUID, '');
		END IF;
		
		
		UPDATE `zmng` z, `t_plan_wyjazdow_wiz` t, `zmpo` p 
		SET
			z.WyjazdGUID = _GUID,
			z.TerminRealizacji = _Param_A,
			p.TerminRealizacji = _Param_A,
			z.AkwizytorGUID = @session.planowanie.wyjazdow.AkwizytorGUID
		WHERE
			t.Checked AND 
			z.GUID = GUID_zmng AND 
			p.IdnNg = z.GUID 
		;
		
	END IF;	--	IF _MODE = 'planowanie.wyjazdow.set.wyjazd'
	


	
END$$

DELIMITER ;

/*
====================================================================================================================================================================================
	NOTATNIK
====================================================================================================================================================================================
	
SET @_GUID = 'INT';
SET @_GUID = 'IM_28866';		

CALL ht_zmng_wyjazdy('SELECT_ZMPO_DAY', '', '2010-03-02', '', '', '');		
CALL ht_zmng_wyjazdy('SELECT_DAY', '', '2010-03-02', '', '', '');		

CALL ht_zmng_wyjazdy('SELECT_ZMNG_WYJAZD_INFO', '{2A65ACEB-3937-423E-9479-A6728F641790}', '', '', '', '');		
CALL ht_zmng_wyjazdy('SELECT_WYJAZDY_FOR_DAY', '', '2010-03-03', '2010-03-02', '', '');		

Zmiana wyjazdu dla 1 zamowienia
	1.	CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_INIT', '', '', '', '', '');		
	2.	CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_INSERT_ZMNG', GUID, '', '', '', '');		//GUID zamowienia
	3.	CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_UPDATE_ZMNG', GUID, '', '', '', '');		//GUID wyjazdu
	
Zmiana wyjazdu dla N (wielu) zamowien
	1.	CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_INIT', '', '', '', '', '');		
	2.	WHILE not EOF
		CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_INSERT_ZMNG', GUID, '', '', '', '');		//GUID zamowienia
	3.	CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_UPDATE_ZMNG', GUID, '', '', '', '');		//GUID wyjazdu
	
Zmiana osoby w rekordzie Wyjazdu (ważne bo osoba=akwizytor -> koniecznosc zmian magazynu etc.)	
	1.	CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_INIT', '', '', '', '', '');		
	2.	CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_INIT_BY_WYJAZD', GUID, '', '', '', '');	//GUID wyjazdu
	3.	CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_UPDATE_ZMNG', 'GUID', '', '', '', '');		//GUID wyjazdu ZBĘDNY !!!!!!!!!!
	
	ALE lepiej zawolac prostszy call
	CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_CHANGE_KIEROWCA', GUID, KierowcaGUID, '', '', '');		
	
SET @KierowcaGUID = '{03855189-39ED-4E6E-ADF8-F02ECE2D8E17}';	--	p.Malinowski Kazimierz

SELECT * FROM `v_crm_wyjazdy`
WHERE
	TRUE
	AND Dzial = 'GDY'
;


CALL ht_zmng_wyjazdy('SELECT_DAY', '', '2010-03-02', '', '', '');		
SET @Exist_t_cenyrabat_info = NULL;
DROP TEMPORARY TABLE IF EXISTS `t_cenyrabat_info`;
SET @KontrGUID = 'IM_1';
SET @IdnTowr = '{77CB0312-EFB8-4436-A13F-9FE66FCA4EAF}';
SET @Rodzaj = 27;
CALL ht_ceny_tool('INIT_CALC_CENA_RABAT', @KontrGUID, @IdnTowr, @Rodzaj, TRUE, '', '', '');		
SELECT * FROM `t_cenyrabat_info`;
CALL ht_ceny_tool('SET_CALC_CENA_RABAT', '', 1, 0, 0.02, NULL, NULL, NULL);		
SELECT * FROM `t_cenyrabat_info`;

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;

		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;

desc zmng '%uwa%';
CALL ht_zmng_wyjazdy('SELECT_ZMPO_DAY', '', '2010-03-02', '', '', '');		


		CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_INIT', '', '', '', '', '');		
		CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_INSERT_ZMNG', '{2A65ACEB-3937-423E-9479-A6728F641790}', '', '', '', '');		
		CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_UPDATE_ZMNG', 'wyj1', '', '', '', '');		

		INSERT INTO `t_zmng_wyjazdy`
			SELECT
				z.GUID,
				w.GUID,
				z.magazynwys,
				0,
				0,
				''
			FROM `zmng` z 
			LEFT JOIN `crm_commisions` w ON z.WyjazdGUID = w.GUID
			WHERE
				z.GUID = '{2A65ACEB-3937-423E-9479-A6728F641790}'
		;
select * FROM `t_zmng_wyjazdy_links`;

desc `crm_usr_links`;

SET @KierowcaGUID = 'x';
SELECT @KierowcaGUID;
		SELECT
			cul.osoba
		INTO
			@KierowcaGUID
		FROM `crm_usr_links` cul	
		WHERE
			cul.commisionGUID = 'wyj1'
			AND cul.osoba = 'x'
			AND cul.Poziom = 2
		;	

SET @KierowcaGUID = '{03855189-39ED-4E6E-ADF8-F02ECE2D8E17}';	--	 p.Malinowski Kazimierz

CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_CHANGE_KIEROWCA', 'wyj1', @KierowcaGUID, '', '', '');		

CALL ht_zmng_wyjazdy('SELECT_WYJAZDY_FOR_DAY', '', '2010-03-02', '2010-03-02', '', '');		
SELECT 
	rew.GUID,
	rew.Symbol, rew.Nazwa, rew.ParentGUID, rew.Dzial, 
	d.Symbol As Oddzial_Symbol, d.Nazwa As Oddzial_Nazwa
FROM `erp_area_nodes` rew
LEFT JOIN `erp_division_schema` d ON d.GUID = rew.Dzial
WHERE
	rew.Type = 'REWIR'
;

SELECT * FROM `v_wyjazdy_rewiry` WHERE Dzial = 'GDY';

SELECT DISTINCT KontrGUID, datawystaw FROM zmng;
WHERE
	TRUE
	AND Dzial = 'GDY'
;

desc kontrah '%area%';
UPDATE kontrah
SET
	AreaGUID = 'SZEM-PRZOD-ZUK'
WHERE
	GUID = '{0F1F6638-BA29-4FB0-9A66-76649FB0B868}'	-- dla akwizytora
	-- GUID IN ('IM_1093','IM_17769','IM_25114'
-- SZEM-PRZOD-ZUK
;		
-- 'IM_1','IM_16020','IM_29058','IM_16481','IM_14455','IM_23','IM_1945','IM_1848','IM_1'
-- 'IM_2126','IM_1994','IM_235','IM_17769','IM_28383','IM_1093','IM_17769','IM_25114'

CALL ht_zmng_wyjazdy('SELECT_ZMPO_DAY', '', '2010-03-02', '', '', '');		


SELECT * FROM `v_wyjazdy_rewiry` WHERE Dzial = 'GDY';
UPDATE `v_wyjazdy_rewiry` SET ParentGUID = 'ALL';
INSERT INTO `v_wyjazdy_rewiry`
(GUID, Type, Symbol, Nazwa, ParentGUID, Dzial)
VALUES
('KKK', 'REWIR', 'sym', 'nzw', 'ALL', 'GDY')
;


SELECT
	k.GUID As AkwizytorGUID,
	o.GUID As OsobaGUID,
	_ConcatStr(o.Nazwisko, o.Imiona, ' ') As Kierowca_NazwiskoImie,
	k.Symbol, k.Nazwa AS AkwizytorNazwa,
	k.magazyn_akwizytora,
	k.AreaGUID,
	_VarStr_NotNull(IFNULL(r.Nazwa, '?')) As Rewir_Nazwa,
	k.magazyn_akwizytora,
	_VarStr_NotNull(mg.Opis) AS Magazyn_akwizytora_Nazwa
	
FROM `kontrah` k
INNER JOIN `hr_kontrah_links` kl ON kl.kontrGUID = k.GUID
INNER JOIN `osoby` o ON o.GUID = kl.osobaGUID
LEFT JOIN `erp_area_nodes` r ON r.GUID = k.AreaGUID
LEFT JOIN `Magazyny` mg ON mg.IdnMagazynu = k.magazyn_akwizytora
WHERE
	k.akwizytor = 1
;	

SELECT * FROM `v_wyjazdy_akwizytorzy`;
desc zmng '%akw%';



SELECT * FROM `v_wyjazdy_rewiry` WHERE Dzial = 'GDY';
SELECT * FROM `v_wyjazdy_akwizytorzy`;

CALL ht_zmng_wyjazdy('ROZLICZ_SELECT', @Wyjazd, 'A', '', '', '');		-- naglowek (kontrahent)
CALL ht_zmng_wyjazdy('ROZLICZ_SELECT', @Wyjazd, 'B', '', '', '');		-- pozycje zm. kontrahenta



SELECT * FROM osoby WHERE idnuser ='jmam';
SET @Gjmam = 'cf23fedf8f020ff365c0e164a6251d76';
SET @session.CurrOsobaGUID = @Gjmam;
desc osoby '%ugr%';
desc zmng '%ugr%';
(select count(*) from grupy_osob grp where grp.grupaGUID=P.ugrpGUID and grp.osobaGUID='%s')>0; 

select * FROM v_wyjazdy_rewiry;
select * FROM v_wyjazdy_akwizytorzy;
select * from erp_area_nodes;
select * from erp_division_schema;
select * from osoby where rodzaj = 0 AND GUID < '{';
select * from grupy_osob WHERE grupaGUID <> 'ALL' AND osobaGUID <> 'ALL' AND grupaGUID<>osobaGUID;
select * from grupy_osob where osobaGUID = 'GDD';


			SELECT 
			d.GUID,
				w.GUID,
				w.NrWewn, w.Temat,
				w.StartTime AS StartTime, w.EndTime AS EndTime, w.DeadLine AS DeadLine,
				w.AreaGUID AS AreaGUID,
				_VarStr_NotNull(IFNULL(r.Nazwa, '?')) As Rewir_Nazwa,
				_VarStr_NotNull(IFNULL((SELECT osoba FROM `crm_usr_links` WHERE commisionGUID = w.GUID AND poziom = 2 LIMIT 1), '')) AS OsobaGUID
			FROM `crm_commisions` w
			LEFT JOIN `erp_area_nodes` r ON r.GUID = w.AreaGUID
			LEFT JOIN `erp_division_schema` d ON d.GUID = r.Dzial
			WHERE
				w.Rodzaj = 5 
				AND (select count(*) from grupy_osob grp where grp.grupaGUID=d.GUID and grp.osobaGUID=@session.CurrOsobaGUID)>0
				AND w.PodRodzaj = 1
				AND DATE(w.StartTime) = '2010-03-08' 
			GROUP BY w.GUID	
		;


select * from information_schema.columns where schema_name = 'int2' and table_name = 'crm_commisions';



CALL ht_zmng_wyjazdy('SELECT_DAY', '', '2010-03-08', '', '', '');		
CALL ht_zmng_wyjazdy('SELECT_ZMPO_DAY', '', '2010-04-19', '', '', '');		
CALL ht_zmng_wyjazdy('SELECT_ZMPO_DAY', '', '', '', '', '1');		
CALL ht_zmng_wyjazdy('SELECT_WYJAZDY_FOR_DAY', '', '2010-03-08', '2010-03-08', '', '');		
CALL ht_zmng_wyjazdy('ROZLICZ_SELECT', '{12BCBF30-451A-4F72-ABD5-890F1208AD2F}', 'A', '', '', '');		
select * FROM
`t_wyjazdy_platnicy`
;
select * FROM
`t_wyjazdy_day`
;
select @_TerminRealizacji_Start,@_TerminRealizacji_End;
		
show KEYS FROM `t_wyjazdy_platnicy`;

desc zmpo;

select * from slowniki_pierwotne where slownik_GUID = 'ZM_POWODY_NIEREALIZ';

show databases like '%snp%' limit 1;

select z.GUID,z.ugrpGUID FROM zmng z, t_zmng_wyjazdy t WHERE t.GUID = z.GUID;

select z.GUID,z.ugrpGUID FROM zmng z WHERE z.GUID IN ('{366AF339-58A9-4FC9-AA9D-68EDBCD92426}', '{BD96B353-6B33-4657-AA7E-9A2B75F6E5A0}');


SET @C_UGRP_SYNC_DIVISION = 1;
CALL _Globals_Get('UGRP_SYNC_DIVISION', @C_UGRP_SYNC_DIVISION, @C_UGRP_SYNC_DIVISION);
SELECT @C_UGRP_SYNC_DIVISION;

SET @G = 'IM_ac7938dc5e794f913ec83092efe83177 ';
CALL ht_rozrach_tools('PAY_INFO_CALC', @G, '', '', '', '');		
CALL ht_rozrach_tools('PAY_INFO_UPDATE', @G, '', '', '', '');	
CALL ht_rozrach_tools('PAY_INFO_UPDATE', 'IM_ac7938dc5e794f913ec83092efe83177', '', '', '', '');
select * from `ht_platnik_pay_info` where PlatnikGUID = 'IM_ac7938dc5e794f913ec83092efe83177 '; -- @G;



Omawiam tu dwa wywołania znanego ci call-a z nowym deskryptorem 'ROZLICZ_SELECT_FOR_MM'.
Na końcu masz przykład do delfinka - koniecznie wywołaj sobie aby sprawdzić poprawność.

        CALL ht_zmng_wyjazdy('ROZLICZ_SELECT_FOR_MM', _GUID, 'A', '', '', '');        -- naglowki zamowien kontrahenta
        CALL ht_zmng_wyjazdy('ROZLICZ_SELECT_FOR_MM', _GUID, 'B', '', '', '');        -- pozycje zamowien kontrahenta

        Parametry
            _GUID        GUID kontrahenta
            _Param_A    A - lista kontrahentów z polem `KPAkwizytora`    B - pozycje zmówień tego kontrahenta

------------------------------------------------------------------------------------------------			
A L G O R Y T M

'A' - masz n- zamówień (najczęściej jedno)
'B' - masz pozycje do tych zamówień
Naglowki są zgrupowane polem `ID_MM` zawierajace - bez powtórzeń - wartości KontrGUID, idnmagazyn, MagazynWys potraktowane MD5() 
Musisz w procedurze wizarda CreateMM(aKontrGUID: String)  (którą stworzysz) wykonać następującą sekwencję:

  cdsForMM_Ng.Close;
  cdsForMM_Ng.CommandText := CALL ht_zmng_wyjazdy('ROZLICZ_SELECT_FOR_MM', aKontrGUID, 'A', '', '', '');       
  cdsForMM_Ng.Open;
  // masz listę naglówków zamówień - uwaga zawiera wszystkie pola z `zmng` + ważne pole `ID_MM`
  while not cdsForMM_Ng.EOF do
    // dla kazdego rekordu pobrac pole ID_MM i wywolac dla niego pobieranie pozycji zamówień
    aID_MM := cdsForMM_Ng.FieldByName('ID_MM').AsString;
    cdsForMM_Po.Close;
    cdsForMM_Po.CommandText := CALL ht_zmng_wyjazdy('ROZLICZ_SELECT_FOR_MM', aID_MM, 'B', '', '', '');       
    cdsForMM_Po.Open;
    ...
    // Tutaj ewentualnie LetEdit i ustaw kontrGUID w cdsForMM_Ng
    ...
	// Teraz buduj MM-kie
    CreateMMDomaxowy(cdsForMM_Ng, cdsForMM_Po);
    ...
    next;
  end;

------------------------------------------------------------------------------------------------			
P R Z Y K Ł A D

Oto przykład wywołań do treningu:
A) ustaw sobie wyjazd (znalazłem idealny)
SET @Wyjazd = '{570F4090-23FC-421F-B063-076CBE20F051}'; -- '{B8C52B84-B978-4E7B-AD55-5E02E09E816A}';

B) wywołaj rozliczenia (przynajmniej 'B' jest konieczna bo te call-e do MM-ki korzystają z temptabli)
CALL ht_zmng_wyjazdy('ROZLICZ_SELECT', @Wyjazd, 'B', '', '', '');       

C) Ustawiam sobie kontrahenta dla którego znalazłem wiele pozycji
SET @KontrGUID = 'IM_000cfddb01812b8ae92a741daa93d779';

D) wołam 'ROZLICZ_SELECT_FOR_MM' z A i B czyli A- nagłówki zamówień
CALL ht_zmng_wyjazdy('ROZLICZ_SELECT_FOR_MM', @KontrGUID, 'A', '', '', '');
E) B pozycje dla każdego ID_MM
SET @ID_MM = 'e28f8ee7cd850a91de4a2d082c5d395b';
CALL ht_zmng_wyjazdy('ROZLICZ_SELECT_FOR_MM', @ID_MM, 'B', '', '', '');
    I tutaj masz przykład nagłówków ('A') i pozycji ('B')


	
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

FROM `kontrah`
WHERE 


SET 
	@Gjmam = 'cf23fedf8f020ff365c0e164a6251d76',
	@session.CurrOsobaGUID = @Gjmam,
	@session.CurrOsobaGUID = 'IM_57',
	@session.CurrOsobaGUID = 'IM_119',
	@_Param_A = '2011-03-13'
;


CALL ht_zmng_wyjazdy('planowanie.zamowien.init', '', @planowanie.zamowien.TerminRealizacji, '', '', '');		
CALL ht_zmng_wyjazdy('planowanie.zamowien.init', '', @planowanie.zamowien.TerminRealizacji, '1', '', '');		
SELECT * FROM `t_plan_wyjazdy_rewiry`;
SELECT * FROM `t_plan_wyjazdy_kontrah`;


alter table ht_platnik_pay_info add column zam_prev_date DATE default null;
alter table ht_platnik_pay_info add column zam_interval INTEGER default 0; 
alter table ht_platnik_pay_info add column zam_next_date DATE default null;


=============================================================================================================================================================================================================

CREATE TABLE `ht_kontrah_info` (
  `KontrGUID` VARCHAR(38) NOT NULL DEFAULT '' COMMENT 'GUID kontrahenta',
  `zam_prev_date` DATE DEFAULT NULL COMMENT 'data ostatniego zamowienia',
  `zam_interval` INT(11) DEFAULT NULL COMMENT 'zamowienie co ile dni jako dl. magazynu',
  `zam_next_date` DATE DEFAULT NULL COMMENT 'data nastepnego zamowienia',
  PRIMARY KEY (`KontrGUID`),
  KEY `zam_next_date` (`zam_next_date`)
) ENGINE=MYISAM DEFAULT CHARSET=cp1250
;

INSERT IGNORE INTO `ht_kontrah_info`
	(KontrGUID)
	SELECT DISTINCT KontrGUID FROM `zmng` WHERE rodzaj = 27
;	
UPDATE `ht_kontrah_info` ki
SET
	ki.zam_interval = (SELECT dlmagazynu FROM `kontrah` WHERE GUID = ki.KontrGUID)
;
UPDATE `ht_kontrah_info` ki
SET
	ki.zam_prev_date = 
	(
		SELECT MAX(n.terminrealizacji_plan) 
		FROM `zmng` n WHERE n.KontrGUID = ki.KontrGUID AND n.Rodzaj IN (27) AND n.ilepozzreal<>0
	)
;	
UPDATE `ht_kontrah_info` ki
SET
	ki.zam_next_date = DATE_ADD(ki.zam_prev_date, INTERVAL ki.zam_interval DAY)
;	


SET @Gjmam = 'cf23fedf8f020ff365c0e164a6251d76';
SET @session.CurrOsobaGUID = @Gjmam;


	
*/



