 /*****************************************************
REWIZJE
******************************************************
$Log: ht_zmng_wyjazdy.sql,v $
Revision 1.156  2025/03/31 06:29:31  jmam
$send$ Dodanie obsługi IsOferta

Revision 1.155  2024/07/08 06:00:24  jmam
Po popr. konfliktu

Revision 1.154  2024/04/03 06:38:29  rafalg
?

Revision 1.153  2024/01/25 15:24:18  rafalg
ugrpguid z magazynu akwizytora

Revision 1.152  2023/11/28 08:45:58  rafalg
planowanie

Revision 1.151  2023/11/23 12:20:07  rafalg
Przeniesienie ponownego przeliczania poziom wyzej.
grupa MPGK=ALL

Revision 1.150  2023/11/20 11:06:01  rafalg
no message

Revision 1.149  2023/10/06 11:53:21  rafalg
mpgk podwojne zawolanie needupdate

Revision 1.148  2023/10/06 11:33:34  rafalg
mpgk podwojne zawolanie needupdate

Revision 1.147  2023/09/29 07:55:53  jmam
$SEND$ błędny alis przy KontrGUID

Revision 1.146  2023/09/27 08:09:26  rafalg
zmiany dla MPGK

Revision 1.145  2023/09/26 11:56:20  rafalg
zmiany dla MPGK

Revision 1.144  2023/09/20 05:27:06  rafalg
literowka
$SEND$

Revision 1.143  2023/09/19 10:53:49  rafalg
zmiany dla MPGK
$SEND$

Revision 1.142  2023/09/19 08:04:02  jmam
$SEND$ primary mag usunąłem z warunku

Revision 1.141  2023/09/07 06:21:35  jmam
$SEND$ zgrywanie 5 IX

Revision 1.140  2023/08/30 11:10:20  jmam
2.0.planowanie.zamowien.Build.ZM ...

Revision 1.139  2023/08/17 11:35:22  rafalg
kolejna zmiana mpgk

Revision 1.138  2023/08/17 09:06:38  rafalg
zmiana dla mpgk

Revision 1.137  2023/07/28 14:25:00  jmam
dodanie MODa 2.0.planowanie.zamowien.Build.ZM ...

Revision 1.136  2023/06/28 08:58:37  rafalg
mpgk

Revision 1.135  2023/06/12 12:17:58  apro
święto

Revision 1.134  2023/05/10 11:20:38  rafalg
Przeniesienie sql z exe + zmiany dla MPGK

Revision 1.133  2020/09/09 11:37:55  rafalg
klonowanie punktu startowego w wyjazdach

Revision 1.132  2020/07/15 06:35:24  rafalg
nadanie grupy uprawnionych do zamowien z dyspozytora

Revision 1.131  2020/07/01 10:36:14  rafalg
Wylaczenie promocji

Revision 1.130  2019/12/03 06:16:45  rafalg
Zmiany dla KR

Revision 1.129  2019/09/03 07:25:47  rafalg
Zmiany planowanie

Revision 1.128  2019/08/21 12:05:55  rafalg
wycinanie kontrahentow z aktywnymi zamowieniami

Revision 1.127  2019/06/12 07:57:18  slon
$SEND$
[CRM: 49808]

Revision 1.126  2018/11/29 13:26:17  jmam
$SEND$

Revision 1.125  2018/09/03 10:47:02  slon
$SEND$

Revision 1.124  2018/09/03 10:45:16  slon
$SEND$

Revision 1.123  2018/09/03 10:36:40  slon
$SEND$

Revision 1.122  2018/09/03 10:34:43  slon
$SEND$
[CRM:49629]

Revision 1.121  2017/02/24 11:53:07  slon
$SEND$
dodanie pola do dyspozytora uwagi_kontrah

Revision 1.120  2016/12/19 09:40:55  slon
$SEND$
[crm:44502]

Revision 1.119  2016/10/17 13:14:15  rafalg
Zablokowanie moziwosi dodania (przez kreator) do wyjazdu zamknieego zamowienia

Revision 1.118  2016/07/19 09:33:49  apro
zmiana warunkow pokazywania logu crm w dyspozytorze

Revision 1.117  2016/06/01 09:37:52  apro
$SEND$
zmiana zawartosci pola komentarzy CRM

Revision 1.116  2016/05/25 09:18:03  apro
$SEND$

Revision 1.115  2016/05/09 11:43:33  slon
Dodanie kolumny CRM_komentarz dla CDG
$SEND$

Revision 1.114  2016/02/10 14:13:18  jmam
$SEND$ Poprawka na wpis do crm_usr_links

Revision 1.113  2015/11/17 09:01:20  slon
no message

Revision 1.112  2015/10/05 11:00:34  jmam
Pola jako MSG $SEND$

Revision 1.111  2015/10/05 10:59:30  jmam
Pola jako MSG $SEND$

Revision 1.110  2015/08/12 12:31:56  slon
no message

Revision 1.109  2015/08/07 11:50:51  slon
bez platnikaGUID

Revision 1.108  2015/05/25 06:22:16  apro
przeniesienie modow *ROUTE* do cdg_geo

Revision 1.107  2015/04/01 07:15:22  slon
no message

Revision 1.106  2015/03/19 08:04:42  jmam
no message

Revision 1.105  2015/03/09 09:05:47  slon
no message

Revision 1.104  2015/03/05 10:07:59  jmam
no message

Revision 1.103  2015/02/05 12:08:11  jmam
no message

Revision 1.102  2015/02/03 11:43:43  apro
rozszerzenie GET_ROUTE_HEADER

*/

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 - moze byc pusty
			_Param_C	Kierowca - moze byc 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 
		CALL _sessions_APP('SET.VAR', @SYSTEM.Client.Session.GUID, '', '', '', '', '');
		SET @session.CurrOsobaGUID = @session.CheckLogonUser;
		IF IFNULL(@session.CurrOsobaGUID, '') = '' THEN 
			Select 'Wychodze - nieokreslona zmienna @session.CurrOsobaGUID' AS Msg;
			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';

	
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'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';



/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'SELECT_KONTRAH_INFO_POZ'
		Zwraca informacje o ostatnich zamowieniach/sprzedazy dla kontrahenta 
		Parametry
			_GUID	GUID kontrahenta
		CALL ht_zmng_wyjazdy('SELECT_KONTRAH_INFO_POZ', GUID, '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = 'SELECT_KONTRAH_INFO_POZ' THEN
	
	IF @session.globals.Owner IN ('MPGK') THEN
		 SELECT 
			zn.datawystaw, zn.datawplywu, zp.terminrealizacji, zn.nrzamw, 
			zp.towrsymb, zp.ilosc, zp.zrealizowano, zp.iloscdo, powod.ParamExtra AS powod_niezrealizowania_str, 
			ong.nrdokfin, ong.nrdokmag, ong.datasprzed, zn.uwagi 
			FROM zmpo zp 
				LEFT JOIN zmng zn ON zn.guid =zp.idnng 
				LEFT JOIN oppo op ON zp.guid = op.GUIDzm 
				LEFT JOIN opng ong ON ong.guid =op.idnoper 
				LEFT JOIN slowniki_pierwotne powod ON powod.Value = zn.powod_niezrealizowania AND powod.slownik_GUID = 'ZM_POWODY_NIEREALIZ'  
			WHERE 
				zn.kontrguid = _GUID 
          
			UNION 
          
		SELECT 
			NULL AS datawystaw, NULL AS datawplywu, NULL AS terminrealizacji, 'bez zamowienia' AS nrzamw, 
			op.towrsymb, 0 AS ilosc, op.ilosc AS zrealizowano, 0 AS iloscdo, 'bez zamowienia' AS powod_niezrealizowania_str, 
			ong.nrdokfin, ong.nrdokmag, ong.datasprzed, '' AS uwagi 
			FROM opng ong 
				LEFT JOIN oppo op ON ong.guid =op.idnoper 
			WHERE  op.GUIDzm ='' AND 
			ong.kontrguid = _GUID  
			AND ong.rodzaj IN (0,1,2)       
		ORDER BY IFNULL(terminrealizacji,datasprzed) DESC LIMIT 9 ;
	ELSE
		SELECT 
			zn.datawystaw, zn.datawplywu, zp.terminrealizacji, zn.nrzamw, 
			zp.towrsymb, zp.ilosc, zp.zrealizowano, zp.iloscdo, powod.ParamExtra AS powod_niezrealizowania_str, 
			ong.nrdokfin, ong.nrdokmag, ong.datasprzed, zn.uwagi 
			FROM zmpo zp 
				LEFT JOIN zmng zn ON zn.guid =zp.idnng 
				LEFT JOIN oppo op ON zp.guid = op.GUIDzm 
				LEFT JOIN opng ong ON ong.guid =op.idnoper 
				LEFT JOIN slowniki_pierwotne powod ON powod.Value = zn.powod_niezrealizowania AND powod.slownik_GUID = 'ZM_POWODY_NIEREALIZ'  
			WHERE 
				zn.kontrguid = _GUID 
		ORDER BY terminrealizacji DESC LIMIT 9 ;
	END IF;	
	
	END IF;	
	
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'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;
	

-- ownerGUID	
		DROP TEMPORARY TABLE IF EXISTS `t_zmng_wyjazdy`;
	IF @session.globals.Owner IN ('TRANSBUD') THEN
		CREATE TEMPORARY TABLE `t_zmng_wyjazdy`
			SELECT 
				z.GUID,
				z.Status,
				_VarInt(0) AS Checked,
				if(z.numer_na_trasie_zm=0, k.numer_na_trasie, z.numer_na_trasie_zm) as numer_na_trasie, 
				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, 
					--	Dla TRANSBUDU czy maja to pole???	k.uwagi as uwagi_kontrah,
				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
				, '' as Dostarczono,
				k.treenode, z.status_powiadomien,
				_VarStr('') AS CRM_komentarz				
			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'
			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 (
				(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	
		;	
	ELSE -- reszta po staremu
		CREATE TEMPORARY TABLE `t_zmng_wyjazdy`
			SELECT 
				z.GUID,
				z.Status,
				_VarInt(0) AS Checked,
				if(z.numer_na_trasie_zm=0, k.numer_na_trasie, z.numer_na_trasie_zm) as 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, 
				k.uwagi as uwagi_kontrah,
-- test				CONCAT(IF(z.status_powiadomien>0,ifnull(z.info1,''),''),z.Uwagi) as 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,
				k.treenode, z.status_powiadomien,			
				_VarStr('') AS CRM_komentarz,				
				(SELECT kc.valuex  FROM v_kkn3 kc WHERE kc.klucz = z.katcol3 and kc.rok IN (0, @session.FK.AktRokObrach)) as statusKlienta				 				
				, r.Dzial
				
			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.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) uzgodnienie BL 2022-09-28
				AND ((p.ilosc - p.zrealizowano > 0) OR (z.status_powiadomien IN (14,15,16) and z.terminrealizacji >= CURRENT_DATE)) -- nie pokazywać na wczorajsze i wcześniej
				AND NOT (z.ilepoz=0 AND z.info1 LIKE "%SCALONE%")
				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	
		;		
		
		ALTER TABLE t_zmng_wyjazdy ADD INDEX kontrguid(kontrguid);

		DROP TEMPORARY TABLE IF EXISTS crm_komentarze ;
		CREATE TEMPORARY TABLE crm_komentarze 
			SELECT
			IFNULL(l.modify_date,c.starttime) as czas,
			CONCAT(LEFT(IFNULL(l.modify_date,c.starttime),16), ' ',
			IFNULL(CONCAT(o.imie1,' ',o.nazwisko),'-brak komentujacego-'), ' ',
			IFNULL(l.jest,'-brak komentarzy-')) AS komentarz,
			ul.kontrguid 
			FROM crm_commisions c
				INNER JOIN crm_usr_links ul ON c.guid=ul.commisionguid AND ul.poziom=4
					LEFT JOIN crm_log l ON c.guid=l.commissionguid AND l.zmiana_dotyczy IN (/* "CREATE",*/"ADD_COMMENT","TIME_SHEET") 
					LEFT JOIN osoby o ON o.guid=l.osobaguid
			WHERE 
				 c.status=1 AND ul.kontrguid in (select distinct kontrGUID from t_zmng_wyjazdy) 
				 AND EXISTS (SELECT idn FROM crm_usr_links dw WHERE c.guid=dw.commisionguid AND dw.poziom=2 AND dw.osoba like "__kier")
				 AND IFNULL(l.modify_date,c.starttime) > current_date - interval 3 month
			;   
			ALTER TABLE crm_komentarze ADD INDEX kontrguid(kontrguid);
			
			UPDATE t_zmng_wyjazdy t  SET t.CRM_komentarz = (select GROUP_CONCAT(c.komentarz) from crm_komentarze c where t.kontrguid=c.kontrguid Order by czas desc limit 3);
			
			
			-- UPDATE t_zmng_wyjazdy t, crm_komentarze c SET t.CRM_komentarz = c.komentarze WHERE  t.kontrguid=c.kontrguid; 	    	    
			DROP TEMPORARY TABLE IF EXISTS crm_komentarze ;
	END IF;


		--	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'

	IF _MODE = 'SELECT_ZMPO_DAY.EXT' 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;
	

-- ownerGUID	
		DROP TEMPORARY TABLE IF EXISTS `t_zmng_wyjazdy`;
	IF @session.globals.Owner IN ('TRANSBUD') THEN
		CREATE TEMPORARY TABLE `t_zmng_wyjazdy`
			SELECT 
				z.GUID,
				z.Status,
				_VarInt(0) AS Checked,
				if(z.numer_na_trasie_zm=0, k.numer_na_trasie, z.numer_na_trasie_zm) as numer_na_trasie, 
				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
				, '' as Dostarczono,
				k.treenode, z.status_powiadomien,
				_VarStr('') AS CRM_komentarz				
			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'
			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 (
				(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	
		;	
	ELSE -- reszta po staremu
		CREATE TEMPORARY TABLE `t_zmng_wyjazdy`
			SELECT 
				z.GUID,
				z.Status,
				_VarInt(0) AS Checked,
				if(z.numer_na_trasie_zm=0, k.numer_na_trasie, z.numer_na_trasie_zm) as 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, 
				k.uwagi as uwagi_kontrah,
-- test				CONCAT(IF(z.status_powiadomien>0,ifnull(z.info1,''),''),z.Uwagi) as 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,
				k.treenode, z.status_powiadomien,			
				_VarStr('') AS CRM_komentarz,				
				(SELECT kc.valuex  FROM v_kkn3 kc WHERE kc.klucz = z.katcol3 and kc.rok IN (0, @session.FK.AktRokObrach)) as statusKlienta				 				
				, r.Dzial
				
			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.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) uzgodnienie BL 2022-09-28
				AND ((p.ilosc - p.zrealizowano > 0) OR (z.status_powiadomien IN (14,15,16) and z.terminrealizacji >= CURRENT_DATE)) -- nie pokazywać na wczorajsze i wcześniej
				AND NOT (z.ilepoz=0 AND z.info1 LIKE "%SCALONE%")
				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	
		;		
		
		ALTER TABLE t_zmng_wyjazdy ADD INDEX kontrguid(kontrguid);

		DROP TEMPORARY TABLE IF EXISTS crm_komentarze ;
		CREATE TEMPORARY TABLE crm_komentarze 
			SELECT
			IFNULL(l.modify_date,c.starttime) as czas,
			CONCAT(LEFT(IFNULL(l.modify_date,c.starttime),16), ' ',
			IFNULL(CONCAT(o.imie1,' ',o.nazwisko),'-brak komentujacego-'), ' ',
			IFNULL(l.jest,'-brak komentarzy-')) AS komentarz,
			ul.kontrguid 
			FROM crm_commisions c
				INNER JOIN crm_usr_links ul ON c.guid=ul.commisionguid AND ul.poziom=4
					LEFT JOIN crm_log l ON c.guid=l.commissionguid AND l.zmiana_dotyczy IN (/* "CREATE",*/"ADD_COMMENT","TIME_SHEET") 
					LEFT JOIN osoby o ON o.guid=l.osobaguid
			WHERE 
				 c.status=1 AND ul.kontrguid in (select distinct kontrGUID from t_zmng_wyjazdy) 
				 AND EXISTS (SELECT idn FROM crm_usr_links dw WHERE c.guid=dw.commisionguid AND dw.poziom=2 AND dw.osoba like "__kier")
				 AND IFNULL(l.modify_date,c.starttime) > current_date - interval 3 month
			;   
			ALTER TABLE crm_komentarze ADD INDEX kontrguid(kontrguid);
			
			UPDATE t_zmng_wyjazdy t  SET t.CRM_komentarz = (select GROUP_CONCAT(c.komentarz) from crm_komentarze c where t.kontrguid=c.kontrguid Order by czas desc limit 3);
			
			
			-- UPDATE t_zmng_wyjazdy t, crm_komentarze c SET t.CRM_komentarz = c.komentarze WHERE  t.kontrguid=c.kontrguid; 	    	    
			DROP TEMPORARY TABLE IF EXISTS crm_komentarze ;
	END IF;


		--	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,
			(SELECT GROUP_CONCAT(CONCAT(r.point,':',e.symbol) ORDER BY r.point) FROM erp_area_nodes e, geo_int_adr_link a, geo_route r WHERE e.guid=a.objguid AND a.guid=r.adr_link AND r.wyjazdguid=w.guid) as PunktStartEnd
		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_ZMNG_UPDATE_UWAGI'
		Modyfikuje uwagi dla zaznaczonych zamówień
		Parametry
			_GUID		GUID wyjazdu
		CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_INIT_BY_WYJAZD', GUID, '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

	IF _MODE = 'CHANGE_WYJAZDY_ZMNG_UPDATE_UWAGI' THEN
		UPDATE zmng z, t_zmng_wyjazdy_links t SET z.uwagi= _PARAM_A WHERE z.guid=t.zmngGUID;
		SELECT 	CONCAT('Liczba zamowien z dopisanymi uwagami: ',COUNT(zmngGUID)) AS msg FROM t_zmng_wyjazdy_links;
	END IF;	

/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'CHANGE_WYJAZDY_ZMNG_UPDATE_CENY'
		Aktualizuje ceny  w zaznaczonych zamowieniach na podstawie aktualnych cen w ofertach kontrahenta
		Uwaga - tylko te niezrealizowane i nie podłączone do wyjazdu
			_GUID		GUID wyjazdu
		CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_INIT_BY_WYJAZD', GUID, '', '', '', '');		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

	IF _MODE = 'CHANGE_WYJAZDY_ZMNG_UPDATE_CENY' THEN
		--	SELECT 	'Funkcja w trakcie przygotowania' AS msg ;
		--	Petla edycji zam. z tabeli t_zmng_wyjazdy_links
		SET @.ZAM.Ceny.RC = (SELECT COUNT(*) FROM `t_zmng_wyjazdy_links`);
		IF @.ZAM.Ceny.RC = 0 THEN
			SELECT 'Brak zaznaczonych zamówień' AS msg;
			LEAVE SPROC;
		END IF;
		SET @.loop.CC := 0, @.loop._zmngGUIDs = NULL;
		BEGIN
				DECLARE _done BOOL DEFAULT FALSE;
				DECLARE _zmngGUID VARCHAR(38) DEFAULT NULL;				--	ID rekordu zmng

				DECLARE c_zmng_wyjazdy_links CURSOR FOR			
					SELECT  
						tn.zmngGUID
					FROM `t_zmng_wyjazdy_links` tn
				;		
				DECLARE CONTINUE HANDLER FOR NOT FOUND SET _done = TRUE;
				DECLARE EXIT HANDLER FOR SQLEXCEPTION 
				BEGIN
					CALL _Report_Error(NULL, 'Exec', CONCAT_WS(': ', 'Pętla c_zmng_wyjazdy_links', _zmngGUID, @_watch), '', '');
					GET DIAGNOSTICS CONDITION 1
						@h.p1 = RETURNED_SQLSTATE, @h.p2 = MESSAGE_TEXT
					;
					SET @ROW_Curr = @ROW_Curr - 1;
					-- SET done_err = TRUE;
				END;
			OPEN c_zmng_wyjazdy_links;	
				loopO: LOOP
--	INSERT INTO `opti_msg_info_error` SET MSG = CONCAT_WS(': ', 'Next Fetch, poprz.', _zmngGUID), TYPE = 'WATCH';
				FETCH c_zmng_wyjazdy_links INTO _zmngGUID;
				IF _done THEN
					LEAVE loopO;
				ELSE
					SET @.loop.CC := @.loop.CC + 1, @.loop._zmngGUIDs = CONCAT_WS(',', @.loop._zmngGUIDs, _zmngGUID);
					CALL ht_zmng_wyjazdy('CHANGE_WYJAZDY_ZMNG_UPDATE_CENY_zmng', _zmngGUID, '', '', '', '') ;
				END IF; 	
			END LOOP;
			CLOSE c_zmng_wyjazdy_links;
		END;
		
		
	END IF;	

	IF _MODE = 'CHANGE_WYJAZDY_ZMNG_UPDATE_CENY_zmng' THEN
	--	w _GUID jest guid zmng
		SET @_IdnNg = _GUID;
		-- CALL C_HT_OPZM('recreate.`TE_xxxx`', '', 'ZM', 'TE', '', '' ,'', '', '', '' ,'');
		CALL C_HT_OPZM('INIT.EDIT', '', 'ZM', 'TE', @_IdnNg, '', '', '', '', '' , @Params);
		CALL C_HT_OPZM('START', '', 'ZM', 'TE', @_IdnNg, '', '', '', '' ,'', '');
		UPDATE `TE_zmpo` p
		SET
			p.ExtFlags = _ExtFlags('ADD.Text', p.ExtFlags, '(<-Ceny)', '', '')
		WHERE
			p.IdnNg = @_IdnNg
		;
		CALL C_HT_OPZM('TE.PO.POST', '', 'ZM', 'TE', @_IdnNg, '', '', '', '', '', '');
		CALL C_HT_xxNgPo_DO('PO.CALC_LP', 'ZM', 'n:TE;p:TE', @_IdnNg, '', '', '', IF(@session.globals.Owner = 'KONKOL', '2', ''), '', '');
	--	nalicz ceny ale ... Tylko_nowe_i_Wymuszone czyli majace IDN = 0 lub ExtFlags zawierajace %(<-Ceny)%
		CALL C_HT_OPZM('TE.xxpo<-POZYCJE_CENYRABAT', '', 'ZM', 'TE', @_IdnNg, '', '', '', '', '', 'Tylko_nowe_i_Wymuszone');
		CALL C_HT_OPZM('TE.PO.POST', '', 'ZM', 'TE', @_IdnNg, '', '', '', '', '', '');
		CALL C_HT_OPZM('TE.NG.POST', '', 'ZM', 'TE', @_IdnNg, '', '', '', '', '', '');
		
		-- select @_MODE.X, @_MODE.X LIKE 'TE.xxpo.POST%', @.My.WORLD, @cds;
		CALL C_HT_OPZM('APPLY', '', 'ZM', 'TE', @_IdnNg, '', '', '', '', '', '');
		CALL C_HT_OPZM('END', '', 'ZM', 'TE', @_IdnNg, '', '', '', '', '', '');
		
	END IF;	
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'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
				-- bylo do 21-01-2016 DO crm_Insert_crm_usr_links(_GUID, _Param_A, 2, 0);
				CALL crm_usr_links_INSERT('', _GUID, '', _Param_A, 2, 0, NULL, NULL, '', '');
			--	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.idn, 
					z.rodzaj, 
					z.zrealizowane, 
					z.datawystaw, 
					z.datawplywu, 
					z.grupaoper, 
					z.symboper, 
					z.idn_kontrah, 
					z.kontrsymbol, 
					z.netto, 
					z.sposobplatn, 
					z.uwagi, 
					z.zamawiajacy, 
					z.useridn, 
					z.nrzamw, 
					z.zamwpermn, 
					z.rezerwacja, 
					z.idnmagazyn, 
					z.nrzamwkontr, 
					z.terminrealizacji, 
					z.GUID, 
					z.klasacenowa, 
					z.rabat, 
					z.waluta, 
					z.kurs, 
					z.status, 
					z.lockflag, 
					z.kontrGUID, 
					z.localtime, 
					z.remotetime, 
					z.ilepoz, 
					z.ilepozzreal, 
					z.lockGUID, 
					z.nettowal, 
					z.MagazynWys, 
					z.tymczasowa, 
					z.spedycja, 
					z.akwizytorGUID, 
					z.rodzaj2, 
					z.deleted, 
					z.idnuser, 
					z.katcol0, 
					z.katcol1, 
					z.katcol2, 
					z.katcol3, 
					z.katcol4, 
					z.warunki_dostawy, 
					z.waga, 
					z.wydzial, 
					z.permanentne_cykl, 
					z.analityka, 
					z.wersja, 
					z.lang_id, 
					z.przeliczenie_B_N, 
					z.ugrpguid, 
					z.DataZakonczUmowy, 
					z.idn_tab_kurs, 
					z.osobaGUID, 
					z.warunki_dostawy_2, 
					z.rodzaj_typ, 
					z.zlecenieGUID, 
					z.ogk_GUID, 
					z.dataplatnosci, 
					z.info1, 
					z.info2, 
					z.waga_brutto, 
					z.transza_zamow, 
					z.wyjazdGUID, 
					z.numer_na_trasie_zm, 
					z.czasrealizacji, 
					z.powod_niezrealizowania, 
					z.createdfrom_GUID, 
					z.info3, 
					z.info4, 
					z.brutto, 
					z.BruttoWal, 
					z.terminrealizacji_plan, 
					z.RodzajDowodu, 
					z.info5, 
					z.info6, 
					z.areaGUID, 
					z.Calc_Ver, 
					z.status_obieg, 
					z.Create_At, 
					z.status_powiadomien,
					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';


	/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'UPDATE_ZMNG_FOR_WYJAZD'
	   Ostatni call wolany przez exe mod wylaczony w 2010 roku, przywracam tylko z nadaniem grupy uprawnionych 	
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
	IF _MODE = 'UPDATE_ZMNG_FOR_WYJAZD' THEN
	
		UPDATE `zmng` z, kontrah k
		SET z.ugrpguid = k.ugrpguid
		WHERE z.kontrguid=k.guid AND z.GUID = _GUID;
	
	END IF;	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'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
						;	
						
						INSERT IGNORE INTO `geo_route`
							(ID, wyjazdGUID, `Point`, adr_link, next_time,lp, adr_descr,longitude,latitude,uwagi)
							SELECT 
								CONCAT('W:',UUID()), _tmpGUID, `Point`, adr_link, next_time,lp, adr_descr,longitude,latitude,uwagi
							FROM
								`geo_route`
							WHERE 
								wyjazdGUID = _localGUID AND `Point`='Start'
						;	
						
						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`
		--	15 II 2024	CALL _modify_ht_kontrah_info('need.update', '', '', '', '', '');			
		CALL ht_kontrah_info_UPD('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', 
			`kolor` varchar(38) DEFAULT 'black' COMMENT 'kolor', 
			`IdnMagazyn` int(11) DEFAULT 0,
			`MagazynWys` int(11) DEFAULT 0,
			`Msg` VARCHAR(500),
			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,
			`ost_sprzedaz` DATE,
            `IsOferta` BOOLEAN DEFAULT FALSE,
			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;
		SET @Oddzial = (SELECT ugrpguid FROM osoby WHERE guid= @session.CurrOsobaGUID);	
		
		IF @Oddzial = 'KR' THEN
		
		
		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, IdnMagazyn, MagazynWys
			)
			SELECT
				K.GUID, K.areaGUID AS GUID_rewir, 1 AS Checked,
				K.Nazwa, K.Symbol,
				ki.zam_prev_date,
				ki.zam_interval,
				IF(@planowanie.zamowien.Krotkoterminowi AND ki.zam_next_date<= (SELECT MAX(terminrealizacji) FROM zmng z WHERE K.GUID=z.kontrguid), 
				(SELECT MAX(terminrealizacji) FROM zmng z WHERE K.GUID=z.kontrguid)+ INTERVAL  ki.zam_interval DAY,
				ki.zam_next_date)AS TerminRealizacji,
				IF(@planowanie.zamowien.Krotkoterminowi AND ki.zam_next_date<= (SELECT MAX(terminrealizacji) FROM zmng z WHERE K.GUID=z.kontrguid), 
				(SELECT MAX(terminrealizacji) FROM zmng z WHERE K.GUID=z.kontrguid)+ INTERVAL  ki.zam_interval DAY,
				ki.zam_next_date) AS Terminrealizacji_plan,
				_var_DateToYW(ki.zam_next_date) AS Nast_Week,
				IF(@planowanie.zamowien.Krotkoterminowi AND ki.zam_next_date<= (SELECT MAX(terminrealizacji) FROM zmng z WHERE K.GUID=z.kontrguid),   
				(@planowanie.zamowien.TerminRealizacji = (SELECT MAX(terminrealizacji) FROM zmng z WHERE K.GUID=z.kontrguid)+ INTERVAL  ki.zam_interval DAY) ,
				(@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,
				IF(K.ugrpguid IN ('RZ_H1','RZ_H2'),'RZ',K.ugrpguid),
				K.magazyn_akwizytora AS IdnMagazyn,
				K.magazyn_akwizytora AS MagazynWys
			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
				 IF(@planowanie.zamowien.Krotkoterminowi,  
				(_var_DateToYW(ki.zam_next_date) = _var_DateToYW(@planowanie.zamowien.TerminRealizacji) OR _var_DateToYW(ki.zam_next_date)+1 = _var_DateToYW(@planowanie.zamowien.TerminRealizacji)),
				_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;
			
			ELSE
			
		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, IdnMagazyn, MagazynWys
			)
			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,
				IF(K.ugrpguid IN ('RZ_H1','RZ_H2'),'RZ',K.ugrpguid),
				K.magazyn_akwizytora AS IdnMagazyn,
				K.magazyn_akwizytora AS MagazynWys
			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
		;	
		
		
		END IF;
		
		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 IF(@Oddzial = 'KR',@planowanie.zamowien.Krotkoterminowi=0,1=1) 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;
		
		
	
		
		IF @planowanie.zamowien.Krotkoterminowi=0 and @session.globals.Owner  in ('CDG') THEN
			UPDATE `t_plan_wyjazdy_kontrah` t, zmng z 
			SET
				t.Checked = 0
			WHERE
				z.KontrGUId = t.GUID AND
				z.terminrealizacji_plan BETWEEN CURRENT_DATE AND   _Param_A  AND
				z.Status = 0;	
		END IF;
		
		
		DELETE FROM `t_plan_wyjazdy_kontrah` 
		WHERE
			NOT Checked
		;	
		
		UPDATE `t_plan_wyjazdy_kontrah` t, `erp_area_nodes` loc
		SET
			t.AdresDostawy = IF(IFNULL(loc.Adres, '')='', t.AdresDostawy,  loc.Adres)
--			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) )
		;
		
		UPDATE `t_plan_wyjazdy_kontrah` t
		SET
			kolor = 'red'
		WHERE
			t.iloscZam = 0
		;
		UPDATE `t_plan_wyjazdy_kontrah` t
		SET
			kolor = 
				IF(_varINT_NOTNULL((SELECT COUNT(*) FROM `temp_srednie12m` ts WHERE ts.KontrGUID = t.GUID) ) = 0,
					'blue',
					'red'
				)
		WHERE
			kolor = 'red'
		;
		
		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
		TRUNCATE `t_plan_wyjazdy_zmng_zmpo`;
		/*
		I. CZ. Ci ktorzy ost. brali
		To s? pozycje		
		select * from temp_srednie3m;
		idntowr,kontrguid,avg_ilosc (w sztukach butli)		
		*/
		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, ost_sprzedaz)
			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) AS Ilosc,
				t.waga AS towrwaga,
				t.waga * CEIL(s3.avg_Ilosc) AS towrwagasuma,
				K.TerminRealizacji AS TerminRealizacji,
				K.Terminrealizacji_plan AS Terminrealizacji_plan,
				ifnull(ko.opis_dzialalnosci,'') AS Uwagi,
				s3.ost_sprzedaz
			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
			LEFT JOIN `kontrah` ko on K.GUID=ko.guid
			WHERE
				K.Checked
				AND
				K.IloscZam > 0
				AND 
				s3.idntowr <> 'PROMOCJA'
			ORDER BY s3.KontrGUID	
		;
		IF @session.globals.Owner IN ('CDG','MPGK') THEN
			/*
			II. CZ. Ci ktorzy ostatni raz brali dawniej ni 3 miesiace
			To s? pozycje		
			select * from temp_srednie12m;
			idntowr,kontrguid,avg_ilosc (w sztukach butli)		
			*/
			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, ost_sprzedaz)
				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) AS Ilosc,
					t.waga AS towrwaga,
					t.waga * CEIL(s3.avg_Ilosc) AS towrwagasuma,
					K.TerminRealizacji AS TerminRealizacji,
					K.Terminrealizacji_plan AS Terminrealizacji_plan,
					ifnull(ko.opis_dzialalnosci,'') AS Uwagi,
					s3.ost_sprzedaz
				FROM `t_plan_wyjazdy_kontrah` K
				INNER JOIN `temp_srednie12m` s3 ON s3.KontrGUID = K.GUID
				INNER JOIN `TowrNg` t ON t.GUID = s3.IdnTowr
				LEFT JOIN `kontrah` ko on K.GUID=ko.guid
				WHERE
					K.Checked
					AND
					K.IloscZam = 0
					AND 
					s3.idntowr <> 'PROMOCJA'
				ORDER BY s3.KontrGUID	
			;
			
			/*
			III. CZ. Ci ktorzy sa po raz pierwszy
			Dajemy im MIX11 1 szt.
			select * from temp_srednie12m;
			idntowr,kontrguid,avg_ilosc (w sztukach butli)		
			*/
			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, ost_sprzedaz)
				SELECT 
					NewGUID() AS GUID_zmng,
					NewGUID() AS GUID_zmpo,
					K.GUID_rewir AS GUID_rewir,
					'' AS WyjazdGUID,
					K.GUID AS KOntrGUID,
					t.GUID AS IdnTowr, 
					t.Symbol AS towrsymb,
					t.Nazwa AS towrnazwa,
					1 AS Ilosc, -- CEIL(s3.avg_Ilosc) AS Ilosc,
					t.waga AS towrwaga,
					t.waga * 1 AS towrwagasuma, -- t.waga * CEIL(s3.avg_Ilosc) AS towrwagasuma,
					K.TerminRealizacji AS TerminRealizacji,
					K.Terminrealizacji_plan AS Terminrealizacji_plan,
					ifnull(ko.opis_dzialalnosci,'') AS Uwagi,
					DATE(CURRENT_DATE()) AS ost_sprzedaz -- s3.ost_sprzedaz
				FROM `t_plan_wyjazdy_kontrah` K
				LEFT JOIN `temp_srednie12m` s3 ON s3.KontrGUID = K.GUID
				LEFT JOIN `TowrNg` t ON t.GUID = IF(@session.globals.Owner='MPGK','IM_2e013df360604abeadadcbce1dc1f3fc','MIX11') -- s3.IdnTowr
				LEFT JOIN `kontrah` ko on K.GUID=ko.guid
				WHERE
					K.Checked
					AND s3.KontrGUID IS NULL
					AND
					K.IloscZam = 0
					-- AND (K.GUID IN (SELECT p.KontrGUID FROM `t_plan_wyjazdy_zmng_zmpo`  p))
				ORDER BY KontrGUID
			;
		END IF;
    --  dodaj inf. o ofertach
		UPDATE `t_plan_wyjazdy_zmng_zmpo` z, `oferty` ofy
		SET
			z.IsOferta = 1
		WHERE
			z.KontrGUID = ofy.KontrGUID
            AND z.idntowr = ofy.idntowr
		;	
    --  dla MPGK - usuć te nie mających towary w ofertach 
        IF @session.globals.Owner IN ('MPGK') THEN
            DELETE z FROM `t_plan_wyjazdy_zmng_zmpo` z
            WHERE
                IsOferta = 0
            ;
        END IF;
		/*
		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';
	
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	Budowanie zamówień z dyspozytora ...
		'2.0.planowanie.zamowien.Build.ZM'	to pętla wołajaca ...
			'2.0.planowanie.zamowien.Build.ZM.1.Rec'
	CALL ht_zmng_wyjazdy('2.0.planowanie.zamowien.Build.ZM', '', '', '', '', '');	
		dla _Param_D '%select%' zwracam statusy
		CALL ht_zmng_wyjazdy('2.0.planowanie.zamowien.Build.ZM.1.Rec', 'GUID zm', '', '', '', '');	
		
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE LIKE '2.0.planowanie.zamowien.Build.ZM%' THEN
	/*	Petla budowania zamówień	*/
		IF _MODE = '2.0.planowanie.zamowien.Build.ZM' THEN
			CALL C_HT_OPZM('recreate.`TE_xxxx`', '', 'ZM', 'TE', '', '' ,'', '', '', '' ,'');
						/*	Dla testów	*/
							DROP TEMPORARY TABLE IF EXISTS `test_TE_zmng`;
							CREATE TEMPORARY TABLE `test_TE_zmng` LIKE `TE_zmng`;
							DROP TEMPORARY TABLE IF EXISTS `test_TE_zmpo`;
							CREATE TEMPORARY TABLE `test_TE_zmpo` LIKE `TE_zmpo`;
		CALL C_HT_Magazyny('User.Magazyny.INIT', '', '', '', '', '');  	-- tabela dla zalogowanego
		DROP TEMPORARY TABLE IF EXISTS `tfin_plan_wyjazdy_zmng_zmpo`;
		CREATE TEMPORARY TABLE `tfin_plan_wyjazdy_zmng_zmpo`
			SELECT 
				z.*, 
				K.numer_na_trasie,
				K.Nazwa AS KontrNazwa, K.Symbol AS KontrSymb, 
				rew.Nazwa AS Rewir_Nazwa, K.ugrpguid, K.iloscZam, K.kolor, T.kasafiskalnanazwa,
				K.IdnMagazyn, 
				K.MagazynWys,
				_VarInt(0) AS Mag_Check,
				_VarInt(-1) AS MagazynWys_OK,
				(
					SELECT 
						tm.IdnMagazynu
					FROM `vt_user_magazyny` tm
					WHERE
						tm.upr_roz > 0 -- jmam AND tm.primarymag <> 0 
						AND IF(K.ugrpguid IN ('RZ_H1','RZ_H2'),LEFT(K.ugrpguid,2),K.ugrpguid) IN (tm.ugrpguid, 'ALL','MPGK')
						/*
						and 
						(
						tm.ugrpguid = K.ugrpguid
						-- OR
						-- tm.ugrpguid = 'ALL'
						)
						*/
					LIMIT 1
				) AS IdnM,
				_VarINT(-1) AS Inf_Err,
				K.Msg AS Inf_Msg
			FROM `t_plan_wyjazdy_zmng_zmpo` z 
			INNER JOIN `t_plan_wyjazdy_kontrah` K ON K.GUID = z.KontrGUID
			LEFT JOIN `TowrNg` T ON T.GUID = z.IdnTowr
			LEFT JOIN `erp_area_nodes` rew ON rew.GUID = K.GUID_rewir AND rew.deleted = 0
			WHERE
				z.Checked
			;
			UPDATE `tfin_plan_wyjazdy_zmng_zmpo` tz
			SET
				tz.Mag_Check = 
					IF(tz.MagazynWys <> 0, tz.MagazynWys, IFNULL(tz.IdnM, 0))
			;
			UPDATE `tfin_plan_wyjazdy_zmng_zmpo` tz, `vt_user_magazyny` tm
			SET
				tz.MagazynWys_OK = 
					IF(tm.upr_roz > 0, -- jmam AND tm.primarymag <> 0,
						tm.IdnMagazynu,
						0
					)
			WHERE
				tm.IdnMagazynu = tz.Mag_Check
				-- tm.IdnMagazynu = IF(tz.MagazynWys <> 0, tz.MagazynWys, IFNULL(tz.IdnM, 0))
				-- tm.upr_roz > 0 AND tm.primarymag <> 0 
				-- AND K.ugrpguid IN (tm.ugrpguid, 'ALL')
			;
			UPDATE `tfin_plan_wyjazdy_zmng_zmpo` tz
			LEFT JOIN `Magazyny` m ON m.IdnMagazynu = tz.Mag_Check
			SET
				tz.Inf_Err = TRUE,
				tz.Inf_Msg = CONCAT_WS('',
					_VarStr(
					IF(tz.MagazynWys_OK < 0,
						'Nie można określić magazynu wysyłkowego!! ',
						'Nie masz dostępu do tego magazynu wysyłkowego - '
					)),
					'magazyn: ', _VarStr(IFNULL(m.IdnMagazynu, '???')), '(', _VarStr(IFNULL(m.Opis, '???')), ')',
					' zam. kontrahenta: "', tz.KontrSymb, '"',
					' na dzień: ', _VarStr(tz.TerminRealizacji),
					', towar "', tz.towrsymb, '"',
					', ilość: ', _VarStr(tz.ilosc),
					', waga zam.: ', _VarStr(tz.towrwagasuma),
					NULL
				),
				tz.kolor = 'clRed'
			WHERE
				tz.MagazynWys_OK <= 0
				-- tm.upr_roz > 0 AND tm.primarymag <> 0 
				-- AND K.ugrpguid IN (tm.ugrpguid, 'ALL')
			;
			BEGIN
				DECLARE _curr_IdnNg VARCHAR(38);
				DECLARE _error BOOL DEFAULT FALSE;
				DECLARE done BOOL DEFAULT FALSE;
				DECLARE c_plan_build_ZM CURSOR FOR
					SELECT 	
						tn.GUID_zmng AS IdnNg
					FROM `tfin_plan_wyjazdy_zmng_zmpo` tn
					WHERE
						tn.Inf_Err = -1
						/*	Dla testów	limit .. */
							-- LIMIT 20
				;
				DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
				OPEN c_plan_build_ZM;
				Loop_m_c_plan_build_ZM: LOOP
					FETCH c_plan_build_ZM INTO 
						_curr_IdnNg
					;
					IF done THEN
						LEAVE Loop_m_c_plan_build_ZM;
					END IF;
				--	Wykonaj 
					CALL ht_zmng_wyjazdy('2.0.planowanie.zamowien.Build.ZM.1.Rec', _curr_IdnNg, '', '', '', '');	
				END LOOP;
				CLOSE c_plan_build_ZM;
				
			END;					
			IF _Param_D LIKE '%select%' THEN
				SELECT 
					tz.Inf_Err,
					tz.Inf_Msg
				FROM `tfin_plan_wyjazdy_zmng_zmpo` tz
				;
					
			END IF;
		END IF;
	/*	Budowanie 1 zamówienia	*/
		IF _MODE = '2.0.planowanie.zamowien.Build.ZM.1.Rec' THEN
		--	w _GUID mamy GUID tworzonego zamówienia
		SET @.xx.Err = 0;
		BEGIN	/* BEGIN do DECLARE CONTINUE HANDLER */
			DECLARE CONTINUE HANDLER FOR SQLEXCEPTION	
			BEGIN
				CALL _Report_Error(NULL, 'Exec', _MODE, '', '');
				CALL _Report_Error(NULL, 'Exec', CONCAT_WS('', 'CALL ht_zmng_wyjazdy(', _MODE, '...)'), '', '');
				SET @.xx.Err = 1;
			END;
		--	Tworzenie zamowienia	
			SELECT
				CONCAT_WS('&',
					CONCAT('Rodzaj=', 27),
					CONCAT('AutoNum=', '1'),
					CONCAT('KontrGUID=', (@.tz.KontrGUID := tz.KontrGUID)),
					CONCAT('MagazynWys=', tz.MagazynWys_OK),
					CONCAT('IdnMagazyn=', tz.MagazynWys_OK),
					CONCAT('TerminRealizacji=', _VarStr(tz.TerminRealizacji)),
					IF(@session.globals.Owner IN ('CDG', 'MPGK'),
						CONCAT('calc_ver=', '0'),	-- dodaj ownera na razie dla mpgk
						NULL
					),
					NULL		
				)
			INTO @Params
			FROM `tfin_plan_wyjazdy_zmng_zmpo` tz
			WHERE
				tz.GUID_Zmng = _GUID
			;
			CALL C_HT_OPZM('INIT.NEW', '', 'ZM', 'TE', _GUID, '', '', '', '', '' , @Params);
			CALL C_HT_OPZM('START', '', 'ZM', 'TE', _GUID, '', '', '', '' ,'', @Params);
				UPDATE `TE_zmng` n, `tfin_plan_wyjazdy_zmng_zmpo` tz
				SET
					n.Deleted = 0,	--	bo moze ktos to usunął ale tylko do kosza
					n.TerminRealizacji = tz.TerminRealizacji,
					n.terminrealizacji_plan = IF(@session.globals.Owner IN ('MPGK'),tz.TerminRealizacji,tz.terminrealizacji_plan),

					n.numer_na_trasie_zm=tz.numer_na_trasie,
					--	n.KontrGUID = tz.KontrGUID,
					--	n.IdnMagazyn = n.MagazynWys,
							-- n.transza_sped = tn.transza_sped,
							-- n.WyjazdGUID = tn.WyjazdGUID,
					n.Uwagi =  tz.Uwagi
				WHERE
					tz.GUID_Zmng = _GUID
					;
			
			/*
				.....
				na podstawie	
				 t_plan_wyjazdy_zmng_zmpo i   t_plan_wyjazdy_kontrah
				...
				tu to TYLKO przykład wklejany z innego miejsca ...
			--	Nagłowek coś tam ...
					nie wiem gdzie zapisac tn.GUID_rewir ????
				UPDATE `TE_zmng` n, `t_plan_wyjazdy_zmng_zmpo` tn
				SET
					n.Deleted = 0,	--	bo moze ktos to usunął ale tylko do kosza
					n.TerminRealizacji = tn.TerminRealizacji,
					n.terminrealizacji_plan = tn.terminrealizacji_plan,
					n.KontrGUID = tn.KontrGUID,
					n.IdnMagazyn = n.MagazynWys,
					-- n.transza_sped = tn.transza_sped,
					-- n.WyjazdGUID = tn.WyjazdGUID,
					n.Uwagi = CONCAT_WS(' / ', n.Uwagi, tn.Uwagi)
				WHERE
					tn.GUID_zmng = _GUID
					AND n.GUID = tn.GUID
				;
			*/
			--	Pozycje z `t_plan_wyjazdy_zmng_zmpo` ...	
				INSERT IGNORE INTO `TE_zmpo`
				(GUID, IdnNg, IdnTowr, Ilosc, waga, komentarz)
				SELECT
					tp.GUID_zmpo AS GUID, tp.GUID_zmng AS IdnNg, tp.IdnTowr,
					tp.Ilosc, 
					tp.towrwagasuma AS waga,
					-- tp.COMMENT AS komentarz
					NULL AS komentarz
				FROM `t_plan_wyjazdy_zmng_zmpo` tp 
				WHERE
					tp.GUID_zmng = _GUID
					AND tp.Ilosc > 0
				;
						/*	Dla testów	
							IF _GUID = '25f13298-3da2-11ee-bc72-525400eb203e*' OR @.tz.KontrGUID = 'IM_cd474f6341aeffd65f93084d0dae3453' THEN
							
								UPDATE `TE_zmpo` t
								set t.Ala = 123
								;
							END IF;
						*/
				
				CALL C_HT_OPZM('TE.xxng<-DEFAULT', '', 'ZM', 'TE', _GUID, '', '', '', '' ,'', '');
				CALL C_HT_OPZM('TE.NG.POST', '', 'ZM', 'TE', _GUID, '', '', '', '' ,'', '');
				
			CALL C_HT_OPZM('TE.PO.POST', '', 'ZM', 'TE', _GUID, '', '', '', '', '', '');
			CALL C_HT_xxNgPo_DO('PO.CALC_LP', 'ZM', 'n:TE;p:TE', _GUID, '', '', '', IF(@session.globals.Owner = 'KONKOL', '2', ''), '', '');
		--	nalicz ceny ale ... Tylko_nowe_i_Wymuszone czyli majace IDN = 0 lub ExtFlags zawierające %(<-Ceny)%
			CALL C_HT_OPZM('TE.xxpo<-POZYCJE_CENYRABAT', '', 'ZM', 'TE', _GUID, '', '', '', '', '', 'Tylko_nowe_i_Wymuszone');
			CALL C_HT_OPZM('TE.NG.POST', '', 'ZM', 'TE', _GUID, '', '', '', '', '', '');
			


		/*	dla testów zakomentować */
		--	Apply
			CALL C_HT_OPZM('APPLY', '', 'ZM', 'TE', _GUID, '', '', '', '', '', '');
			CALL C_HT_OPZM('END', '', 'ZM', 'TE', _GUID, '', '', '', '', '', '');


			UPDATE `zmng` n
				SET
					n.Uwagi =  '',
					n.ugrpguid = (SELECT m.ugrpguid from Magazyny m where m.IdnMagazynu=n.MagazynWys)
				WHERE
					n.guid=_GUID
					;


		/* test */
						/*	Dla testów	
							CALL C_HT_OPZM('TE.NG.POST', '', 'ZM', 'TE', _GUID, '', '', '', '', '', '');
							insert ignore into `test_TE_zmng` select * from `TE_zmng` WHERE GUID = _GUID;
							insert ignore into `test_TE_zmpo` select * from `TE_zmpo` WHERE IdnNg = _GUID;
						*/
			IF @.xx.Err = 0 THEN
				UPDATE `tfin_plan_wyjazdy_zmng_zmpo` tz
				SET
					tz.Inf_Err = FALSE,
					tz.Inf_Msg = CONCAT_WS('',
						'Stworzono zamówienie dla',
						' kontrahenta: "', tz.KontrSymb, '"',
						' na dzień: ', _VarStr(tz.TerminRealizacji),
						', towar "', tz.towrsymb, '"',
						', ilość: ', _VarStr(tz.ilosc),
						', waga zam.: ', _VarStr(tz.towrwagasuma),
						NULL
					),
					tz.kolor = 'clBlack'
				WHERE
					tz.GUID_zmng = _GUID
				;
				IF @session.globals.Owner IN ('MPGK') THEN
					UPDATE `ht_kontrah_info` k,`tfin_plan_wyjazdy_zmng_zmpo` tz
					SET  k.NeedUpdate=1 WHERE k.KontrGUID=tz.KontrGUID and tz.GUID_zmng = _GUID;
				END IF;
			ELSE
				UPDATE `tfin_plan_wyjazdy_zmng_zmpo` tz
				SET
					tz.Inf_Err = -1,
					tz.Inf_Msg = CONCAT_WS('',
						'Zamówienie nie zostało stworzone,',
						' kontrahent: "', tz.KontrSymb, '"',
						' na dzień: ', _VarStr(tz.TerminRealizacji),
						', towar "', tz.towrsymb, '"',
						', ilość: ', _VarStr(tz.ilosc),
						', waga zam.: ', _VarStr(tz.towrwagasuma),
						NULL
					),
					tz.kolor = 'clRed'
				WHERE
					tz.GUID_zmng = _GUID
					AND tz.Inf_Err = -1
				;

			END IF;

		
			SET @.xx.Err = 0;
		
					
		END;	/* koniec BEGIN do DECLARE CONTINUE HANDLER */

	
		END IF;
		
	END IF;	--	IF _MODE = '2.0.planowanie.zamowien.Build.ZM' 
	
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'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`
			--	15 II 2024	CALL _modify_ht_kontrah_info('need.update', '', '', '', '', '');		
			CALL ht_kontrah_info_UPD('need.update', '', '', '', '', '');
		
			DROP TEMPORARY TABLE IF EXISTS `t_ht_kontrah_info_A`;
			IF @session.globals.Owner IN ('MPGK') THEN

				DROP TEMPORARY TABLE IF EXISTS t_ht_kontrah_info_prev;
				CREATE TEMPORARY TABLE `t_ht_kontrah_info_prev`
					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) or 
						ZLast.Status = 0
						AND _var_DateToYW(ki.zam_next_date) < _var_DateToYW(CURRENT_DATE()))
						-- 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)
				;	
				DROP TEMPORARY TABLE IF EXISTS  t_wymus_przeliczenie;
				CREATE TEMPORARY TABLE t_wymus_przeliczenie		
					SELECT t.*,MAX(n.terminrealizacji) AS real_zam  FROM t_ht_kontrah_info_prev t , zmng n 
					WHERE t.kontrguid=n.kontrguid AND n.rodzaj=27
					GROUP BY t.kontrguid HAVING Last_TerminRealizacji<=real_zam;
		
				UPDATE ht_kontrah_info k,t_wymus_przeliczenie t SET k.needupdate=1
				WHERE k.kontrguid=t.kontrguid;
				DROP TEMPORARY TABLE IF EXISTS  t_wymus_przeliczenie; 
				DROP TEMPORARY TABLE IF EXISTS t_ht_kontrah_info_prev;
				--	15 II 2024		CALL _modify_ht_kontrah_info('need.update', '', '', '', '', '');
				CALL ht_kontrah_info_UPD('need.update', '', '', '', '', '');
			--	apro (RG) dodał ...
				DROP TEMPORARY TABLE   IF EXISTS t_ost_trans;
				CREATE TEMPORARY TABLE t_ost_trans
				SELECT ki.kontrguid,ki.zam_next_date,ki.zam_interval,
					DATE((SELECT MAX(p.DataSprzed) 
				FROM `opng` n, `oppo` p 
				WHERE 
					n.KontrGUID = ki.KontrGUID 
					AND n.Rodzaj IN (0,1,2,10) 
					AND p.IdnOper = n.GUID
					AND p.Usluga = 0
						)) AS Ostatnia_transakcja FROM 	ht_kontrah_info ki WHERE zam_interval>0
				HAVING Ostatnia_transakcja >= zam_next_date;
						
				UPDATE ht_kontrah_info ki, t_ost_trans t SET ki.zam_next_date= DATE_ADD(t.Ostatnia_transakcja, INTERVAL ki.zam_interval DAY)
				WHERE ki.kontrguid=t.kontrguid; 
			--	end apro (RG) dodał ...
			END if;
		
			IF _Param_A = '' THEN
			--	NIEOBS?U?ENI
			/*
				20 II 2024 - mail od p.Monika Porębska
				Ale jak widać sprzedaż została zrealizowana i ten klient nie powinien być w kontrahentach nieobsłużonych.
				Niektórzy kontrahenci mają oferty na różne gazy ale nie zawsze wymieniają wszystkie więc jak usunę  
				jeden a drugi jest wymieniony to nie powinien znajdować się w nieobsłużonych.
				ZATEM...
				jeśli choć jedno zamówienie tego dnai było zrealizowane to nawet jeśli jakieś inne było zamknięte to 
				nie traktujemy klienta jako nieobsłużonego!!
				Stąd ten IF dla MPGK...
			*/
				IF @session.globals.Owner IN ('MPGK') THEN
				--	MPGK
				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,
						-- (select MIN(z.Status) from `zmng` z use key (TerminRealizacji) where z.KontrGUID = ki.KontrGUID and z.TerminRealizacji = ZLast.TerminRealizacji) as MinStatus
						IFNULL(
							(ki.oper_last_date >= ki.zam_prev_date), 
							EXISTS(
								SELECT n.IDN FROM `opng` n 
								WHERE n.KontrGUID = ki.KontrGUID AND n.DataWystaw >= ki.zam_prev_date AND n.Rodzaj IN (0, 1, 10)
							)
						) AS IsObslOP,
						EXISTS(SELECT z.Status FROM `zmng` z USE KEY (TerminRealizacji) WHERE z.KontrGUID = ki.KontrGUID AND z.TerminRealizacji = ZLast.TerminRealizacji AND z.Status = 2) AS IsObsl
					FROM `kontrah` k
					INNER JOIN `grupy_osob` go ON go.grupaGUID=k.ugrpGUID AND go.osobaGUID=@session.CurrOsobaGUID
					INNER JOIN `ht_kontrah_info` ki ON k.GUID = ki.KontrGUID AND k.deleted = 0
					LEFT JOIN `zmng` ZLast ON ZLast.GUID = ki.zam_last_guid
					LEFT JOIN `Magazyny` m ON m.IdnMagazynu=k.magazyn_akwizytora
					WHERE
						ZLast.Status IN (4, 8)
						AND _var_DateToYW(ki.zam_next_date) >= _var_DateToYW(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)
						AND IF(magazyn_akwizytora>0,((SELECT COUNT(*) FROM grupy_osob grp2 WHERE grp2.grupaGUID=m.ugrpguid AND grp2.osobaGUID=@session.CurrOsobaGUID) > 0),TRUE)
					-- HAVING NOT IsObsl
					HAVING NOT IsObslOP
				;	
				ELSE
				--	CDG, ...
				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
					LEFT JOIN `Magazyny` m ON m.IdnMagazynu=k.magazyn_akwizytora
					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)
						AND IF(magazyn_akwizytora>0,((SELECT COUNT(*) FROM grupy_osob grp2 WHERE grp2.grupaGUID=m.ugrpguid AND grp2.osobaGUID=@session.CurrOsobaGUID) > 0),TRUE)

				;	
				END IF;
			ELSE
			--	PRZETERMINOWANI
				IF @session.globals.Owner IN ('MPGK') THEN
				--	MPGK
				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
					LEFT JOIN `Magazyny` m ON m.IdnMagazynu=k.magazyn_akwizytora
					WHERE
						-- (ZLast.Status & 8) = 0
						--	ZLast.Status = 0
						ZLast.Status IN (0, 2, 4, 8)
						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)
						AND IF(magazyn_akwizytora>0,((SELECT COUNT(*) FROM grupy_osob grp2 WHERE grp2.grupaGUID=m.ugrpguid AND grp2.osobaGUID=@session.CurrOsobaGUID) > 0),TRUE)
				;	
				ELSE
				--	CDG, ...
				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
					LEFT JOIN `Magazyny` m ON m.IdnMagazynu=k.magazyn_akwizytora
					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)
						AND IF(magazyn_akwizytora>0,((SELECT COUNT(*) FROM grupy_osob grp2 WHERE grp2.grupaGUID=m.ugrpguid AND grp2.osobaGUID=@session.CurrOsobaGUID) > 0),TRUE)
				;	
				END IF;
			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((
						-- bylo SELECT MAX(DataSprzed) FROM `opng` n WHERE n.KontrGUID = ki.KontrGUID AND n.Rodzaj IN (0,1,2,10)
						SELECT 
							MAX(p.DataSprzed) 
						FROM `opng` n, `oppo` p 
						WHERE 
							n.KontrGUID = ki.KontrGUID 
							AND n.Rodzaj IN (0,1,2,10) 
							AND p.IdnOper = n.GUID
							AND p.Usluga = 0
					)) 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
				/*	9 IV 2024
					dla MPGK + PRZETERMINOWANI - nie wykonuj HAVING ... 
					było ...
					HAVING Ostatnia_transakcja <= Last_TerminRealizacji
				*/
				HAVING
					IF(@session.globals.Owner IN ('MPGK') AND _Param_A <> '',
						TRUE,
						Ostatnia_transakcja <= Last_TerminRealizacji
					)
				--	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)
			;	
				
			IF NOT IFNULL(@session.Delfinek, FALSE) THEN
				DROP TEMPORARY TABLE IF EXISTS `t_ht_kontrah_info_A`;
			END IF;
			
			/* 2015-03-09 niedzialalo loc.Adres przesal byc null tylko stal sie pusty i kasowal wszystkie adresy.
			UPDATE `t_ht_kontrah_info` t, `erp_area_nodes` loc
			SET
				t.AdresDostawy = IFNULL(loc.Adres, t.AdresDostawy)
			WHERE
				loc.GUID = t.LokalizacjaGUID
			;
			
			*/
			UPDATE `t_ht_kontrah_info` t, `erp_area_nodes` loc
			SET
				t.AdresDostawy = IF(IFNULL(loc.Adres, '')='', t.AdresDostawy,  loc.Adres)
			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`
		--	15 II 2024	CALL _modify_ht_kontrah_info('need.update', '', '', '', '', '');		
		CALL ht_kontrah_info_UPD('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 AND
			z.ilepoz <> z.ilepozzreal -- bez tego pod??cza? do wyjazdu zamkni?te zamowienia
		;
		
	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)
;	


CALL _Session_Refresh_Variables('', '', '');
SET @Gjmam = 'cf23fedf8f020ff365c0e164a6251d76';
SET @session.CurrOsobaGUID = @Gjmam;
	
*/



