 DELIMITER $$

CREATE OR REPLACE DEFINER=`root`@`localhost` VIEW `v_towrng_instancje` AS
	SELECT
		i.*,
		CONCAT(t.Symbol, '/', t.Nazwa) AS SymbolNazwa,
		--	CONCAT(t.nazwa, IF(LOCATE(i.Opis, t.nazwa) = 0, CONCAT(', ', i.Opis), '')) AS nazwa,
		/*
		CONCAT_WS(', ',
			i.Opis,
			IF(LOCATE(i.Opis, t.Nazwa) > 0 OR LOCATE(t.Nazwa, i.Opis) > 0, NULL, t.Nazwa)
		) AS nazwa, 
		*/
		IF(IFNULL(i.Opis, '') <> '',
			CONCAT_WS(', ',
				i.Opis,
				IF(LOCATE(i.Opis, t.Nazwa) > 0 OR LOCATE(t.Nazwa, i.Opis) > 0, NULL, t.Nazwa)
			),
			CONCAT_WS('/', t.Symbol, t.Nazwa) 
		) AS Nazwa,
		t.Symbol,
		IF(i.is_multi_instancje = 0, i.opis, t.Nazwa) AS Opis2,
		-- IF(t.Symbol != t.Nazwa, CONCAT(t.Symbol, '/', t.Nazwa), t.Nazwa) AS SymbolNazwa,
		_VarStr_NotNull(CONCAT(o.Nazwisko, ' ', o.Imiona)) AS osoba_przypisana,
		IFNULL(IF(i.status_biblioteczny <= 0, '', CONCAT(o2.Nazwisko, ' ', o2.Imiona)), '') AS `osoba_uzytk_Nazwisko_Imiona`,
		_ConcatStr(n.Symbol, IF(n.Symbol = n.Nazwa, '', n.Nazwa), ' - ') AS AreaSymbolNazwa,
		_VarInt(IF(i.serwis_data IS NOT NULL, TIMESTAMPDIFF(DAY, NOW(), i.serwis_data), 0)) AS Dni_do_serwisu,
		_VarInt((IF(i.serwis_data IS NOT NULL, TIMESTAMPDIFF(DAY, NOW(), i.serwis_data), 0) < i.serwis_alert_dni)) AS IsAlert,
		-- _VarInt(IF(i.deadline IS NOT NULL, TIMESTAMPDIFF(DAY, NOW(), i.deadline), NULL)) AS Dni_do_likwidacji,
		_VarInt(TIMESTAMPDIFF(DAY, CURRENT_DATE(), DATE(i.deadline))) AS Dni_do_likwidacji,
		_VarInt(IFNULL(TIMESTAMPDIFF(DAY, CURRENT_DATE(), DATE(i.deadline)), 9999) < 2) AS IsAlert_deadline,
		mag.Path AS Mag_Lokalizacja,		
		-- CONCAT(_rnd2(`i`.`wymiar_x`), ' x ', _rnd2(`i`.`wymiar_y`), ' x ', _rnd2(`i`.`wymiar_z`)) AS wymiar_xyz,	
	    CONCAT(_varINT(`i`.`wymiar_x`), ' x ', _varINT(`i`.`wymiar_y`), ' x ', _varINT(`i`.`wymiar_z`)) AS wymiar_xyz,	
		t.dataprodukcji,
		t.st_rodzaj,
		t.st_numer_faktury, t.st_datanabycia,
		t.dostawcaGUID
		
	FROM `towrng_instancje` i
	INNER JOIN `TowrNg` t ON t.GUID = i.IdnTowr
	LEFT JOIN `osoby` o ON o.GUID = i.osobaGUID_przypisana
	LEFT JOIN `osoby` o2 ON o2.GUID = i.OsobaGUID
	LEFT JOIN `erp_area_nodes` n ON n.GUID = i.AreaGUID
	LEFT JOIN `erp_area_nodes` mag ON mag.GUID = IF(IFNULL(i.mag_areaGUID, '') = '', t.mag_areaGUID, i.mag_areaGUID)
	;	
$$

CREATE OR REPLACE DEFINER=`root`@`localhost` VIEW `v_instancje` AS
	SELECT
		-- i.*,
		ti.status_biblioteczny, ti.substatus_biblioteczny,
		ti.idn, ti.guid, ti.idntowr, ti.kod_kreskowy, 
		ti.Opis2 AS Opis,
		ti.SymbolNazwa,
		ti.Symbol,
		ti.Nazwa,
		ti.dataprodukcji,
		_VarInt(IF(ti.is_multi_instancje = 0, ti.STATUS, -2)) AS STATUS,
		-- _VarStr(IF(ti.is_multi_instancje = 0, ti.osobaGUID, '')) AS 
		ti.osobaGUID, 
		ti.osoba_uzytk_Nazwisko_Imiona AS osoba, 
			ti.osoba_przypisana AS osoba_przypisana, -- _przypisana
		ti.AreaSymbolNazwa,
		ti.Mag_Lokalizacja,
			ti.Dni_do_serwisu,
			ti.IsAlert,
		
		ti.nr_seryjny,
		ti.uwagi,
			ti.serwis_data,
			ti.serwis_cykl_dni,
			ti.serwis_alert_dni,
			ti.Ilosc_wydana,
		ti.printed,
		ti.areaGUID,
		ti.datagwarancji, ti.nrinwentarz, ti.nrinwentarzobcy, ti.miejsce, ti.divisionGUID, ti.status_info, 
		ti.datawystaw, data_inw_klient, data_inw_my, ti.st_datanabycia,
		ti.magazyn, ti.show_alert, ti.alert_desc, 
		ti.is_multi_instancje,
		ti.Last_Op_IDN,
		sb.Descr AS Status_Bibl,
		sr.Nazwa AS rodzaj_srtrw,
		ti.st_rodzaj,
		ti.st_numer_faktury,
		ti.dostawcaGUID,
		`ti`.`wymiar_x`	AS `wymiar_x`,	  `ti`.`wymiar_y` AS `wymiar_y`,	  `ti`.`wymiar_z` AS `wymiar_z`,
		`ti`.`wymiar_xyz` AS `wymiar_xyz`,	
		ti.serwis_alert_blokuj,
		ti.deadline,
		ti.IsAlert_deadline,
		IFNULL(CONCAT(dost.Symbol, ' - ', dost.Nazwa), '') AS Dostawca_Str,
		
			_VarStr(
				-- IF(IFNULL(ti.Dni_do_likwidacji, 9999) < 7,
				IF(ti.IsAlert_deadline,
					CONCAT(IF(ti.Dni_do_likwidacji > 0, 'Do likwidacji pozostało: ', 'Jest już po terminie likwidacji: '), _varSTR_1_N_Liczebnikowo(ABS(ti.Dni_do_likwidacji), 'dzień', 'dni')),
					IF(ti.IsAlert AND ti.Status != -2, 
						CONCAT(IF(ti.Dni_do_serwisu > 0, 'Do przeglądu pozostało: ', 'Jest już po terminie: '), _varSTR_1_N_Liczebnikowo(ABS(ti.Dni_do_serwisu), 'dzień', 'dni')), 
						IF(ti.Status = -2, 
							'        W serwisie', 
							''
						)
					)
				)
			) AS IsAlertMsg
		
		/*
 		,(SELECT IFNULL(vhc.ID,'')  FROM hr_cards vhc WHERE IFNULL(vhc.OsobaGUID ,'') <> '' AND vhc.OsobaGUID = ti.OsobaGUID AND LENGTH(vhc.ID) < 6 ORDER BY LENGTH(vhc.ID) LIMIT 1) AS nr_przepustki
		,(
		SELECT 
			-- bylo GROUP_CONCAT(DISTINCT(c.content)) 
			GROUP_CONCAT(DISTINCT(l.Customcontent))
		FROM `erp_descr_links` l, `erp_descr_content` c 
		WHERE 
			l.linkGUID = ti.GUID AND 
			l.descrGUID = c.GUID 
			AND c.category = 'SERVICE'
		) AS komunikaty
		*/
	FROM `v_towrng_instancje` ti
	LEFT JOIN `kontrah` dost ON dost.GUID = ti.dostawcaGUID
	LEFT JOIN `st_rodzaje` sr ON sr.Idn = ti.st_rodzaj
	LEFT JOIN `erp_statusy_biblioteczne` sb ON sb.Status = ti.status_biblioteczny AND sb.SubStatus = ti.substatus_biblioteczny 
	WHERE
		TRUE
		-- AND ti.is_multi_instancje = 0
	;	

$$

CREATE OR REPLACE DEFINER=`root`@`localhost` VIEW `v_instancje1` AS  -- nieuzywany
	SELECT
		-- i.*,
		ti.status_biblioteczny, ti.substatus_biblioteczny,
		ti.idn, ti.guid, ti.idntowr, ti.kod_kreskowy, 
		IF(ti.is_multi_instancje = 0, ti.opis, t.Nazwa) AS Opis,
		IF(t.Symbol != t.Nazwa, CONCAT(t.Symbol, '/', t.Nazwa), t.Nazwa) AS SymbolNazwa,
		t.Symbol,
		t.Nazwa,
		t.dataprodukcji,
		_VarInt(IF(ti.is_multi_instancje = 0, ti.STATUS, -2)) AS STATUS,
		_VarStr(IF(ti.is_multi_instancje = 0, ti.osobaGUID, '')) AS osobaGUID, -- _przypisana
		_VarStr_NotNull(IF(ti.status_biblioteczny <= 0, '', CONCAT(o.Nazwisko, ' ', o.Imiona))) AS osoba, 
			_VarStr_NotNull(CONCAT(oprz.Nazwisko, ' ', oprz.Imiona)) AS osoba_przypisana, -- _przypisana
		_ConcatStr(n.Symbol, IF(n.Symbol = n.Nazwa, '', n.Nazwa), ' - ') AS AreaSymbolNazwa,
			mag.Path AS Mag_Lokalizacja,
			_VarInt(IF(ti.serwis_data IS NOT NULL, TIMESTAMPDIFF(DAY, NOW(), ti.serwis_data), 0)) AS Dni_do_serwisu,
			_VarInt((IF(ti.serwis_data IS NOT NULL, TIMESTAMPDIFF(DAY, NOW(), ti.serwis_data), 0) < ti.serwis_alert_dni)) AS IsAlert,
		
		ti.nr_seryjny,
		ti.uwagi,
			ti.serwis_data,
			ti.serwis_cykl_dni,
			ti.serwis_alert_dni,
			ti.Ilosc_wydana,
		ti.printed,
		ti.areaGUID,
		ti.datagwarancji, ti.nrinwentarz, ti.nrinwentarzobcy, ti.miejsce, ti.divisionGUID, ti.status_info, 
		ti.datawystaw, data_inw_klient, data_inw_my,
		ti.magazyn, ti.show_alert, ti.alert_desc, 
		ti.is_multi_instancje,
		ti.Last_Op_IDN,
		sb.Descr AS Status_Bibl,
		t.st_rodzaj,
		sr.Nazwa AS rodzaj_srtrw,
		t.st_numer_faktury,
		t.dostawcaGUID,
		IFNULL(CONCAT(dost.Symbol, ' - ', dost.Nazwa), '') AS Dostawca_Str,
		(SELECT IFNULL(vhc.ID,'')  FROM hr_cards vhc WHERE IFNULL(vhc.OsobaGUID ,'') <> '' AND vhc.OsobaGUID = ti.OsobaGUID AND LENGTH(vhc.ID) < 6 ORDER BY LENGTH(vhc.ID) LIMIT 1) AS nr_przepustki,
		(
		SELECT 
			-- bylo GROUP_CONCAT(DISTINCT(c.content)) 
			GROUP_CONCAT(DISTINCT(l.Customcontent))
		FROM `erp_descr_links` l, `erp_descr_content` c 
		WHERE 
			l.linkGUID = ti.GUID AND 
			l.descrGUID = c.GUID 
			AND c.category = 'SERVICE'
		) AS komunikaty
	FROM `towrng_instancje` ti
	INNER JOIN `TowrNg` t ON t.GUID = ti.IdnTowr AND t.Deleted = 0
	LEFT JOIN `kontrah` dost ON dost.GUID = t.dostawcaGUID
	LEFT JOIN `osoby` o ON o.GUID = ti.OsobaGUID  -- wypoz
		LEFT JOIN `osoby` oprz ON oprz.GUID = ti.osobaGUID_przypisana  -- _przypisana
	LEFT JOIN `erp_area_nodes` n ON n.GUID = ti.AreaGUID
		LEFT JOIN `erp_area_nodes` mag ON mag.GUID = IF(IFNULL(ti.mag_areaGUID, '') = '', t.mag_areaGUID, ti.mag_areaGUID)
	LEFT JOIN `st_rodzaje` sr ON sr.Idn = t.st_rodzaj
	LEFT JOIN `erp_statusy_biblioteczne` sb ON sb.Status = ti.status_biblioteczny AND sb.SubStatus = ti.substatus_biblioteczny 
	WHERE
		ti.is_multi_instancje = 0
	;	

$$

CREATE OR REPLACE DEFINER=`root`@`localhost` VIEW `v_instancje_e` AS
	SELECT
		-- i.*,
		ti.status_biblioteczny, ti.substatus_biblioteczny,
		ti.idn, ti.guid, ti.idntowr, ti.kod_kreskowy, 
		ti.Opis,
		-- CONCAT(t.Symbol, '/', t.Nazwa) AS SymbolNazwa,
		CONCAT(IFNULL(ti.nrinwentarz, ''), ' - ', t.Symbol, '/', t.Nazwa) AS SymbolNazwa,
		t.Symbol, t.Nazwa, t.sww, t.st_klasyfikacja,
		t.dataprodukcji,
		t.st_rodzaj, t.st_sprzedany AS st_status, stat.nazwa AS st_status_str,
		_VarInt(IF(ti.is_multi_instancje = 0, ti.STATUS, -2)) AS STATUS,
		_VarStr(IF(ti.is_multi_instancje = 0, ti.osobaGUID, '')) AS osobaGUID, -- wypozyczajaca
		_VarStr_NotNull(IF(ti.status_biblioteczny <= 0, '', CONCAT(o.Nazwisko, ' ', o.Imiona))) AS osoba, -- wypozyczajaca
		_VarStr(IF(ti.is_multi_instancje = 0, ti.osobaGUID_przypisana, '')) AS osobaGUID_przypisana, -- _przypisana
		_VarStr_NotNull(CONCAT(op.Nazwisko, ' ', op.Imiona)) AS osoba_przypisana, -- _przypisana
		_ConcatStr(n.Symbol, IF(n.Symbol = n.Nazwa, '', n.Nazwa), ' - ') AS AreaSymbolNazwa,
		ti.nr_seryjny,
		ti.uwagi,
		ti.printed,
		ti.areaGUID,
		ti.datagwarancji, ti.nrinwentarz, ti.nrinwentarzobcy, ti.miejsce, ti.divisionGUID, ti.status_info, 
		ti.serwis_data, ti.datawystaw, ti.data_inw_klient, ti.data_inw_my,
		ti.magazyn, ti.show_alert, ti.alert_desc, 
		ti.is_multi_instancje,
		ti.Last_Op_IDN,
		sb.Descr AS Status_Bibl,		
		sr.Nazwa AS rodzaj_srtrw,
		t.st_numer_faktury, t.st_datanabycia,
		t.dostawcaGUID,
		`ti`.`wymiar_x`		     AS `wymiar_x`,	
		`ti`.`wymiar_y`		     AS `wymiar_y`,	
		`ti`.`wymiar_z`		     AS `wymiar_z`,	
		CONCAT(_varINT(`ti`.`wymiar_x`), ' x ', _varINT(`ti`.`wymiar_y`), ' x ', _varINT(`ti`.`wymiar_z`)) AS wymiar_xyz,
		IFNULL(ti.data_inw_my, "2000-01-01") > "2000-01-01" AS zinwent,
		IFNULL(CONCAT(dost.Symbol, ' - ', dost.Nazwa), '') AS Dostawca_Str
	FROM `towrng_instancje` ti
	INNER JOIN `TowrNg` t ON t.GUID = ti.IdnTowr AND t.Deleted = 0
	LEFT JOIN `kontrah` dost ON dost.GUID = t.dostawcaGUID
	LEFT JOIN `osoby` o ON o.GUID = ti.OsobaGUID  -- wypozyczajaca
	LEFT JOIN `osoby` op ON op.GUID = ti.osobaGUID_przypisana  -- _przypisana
	LEFT JOIN `erp_area_nodes` n ON n.GUID = ti.AreaGUID
	LEFT JOIN `st_rodzaje` sr ON sr.Idn = t.st_rodzaj
	LEFT JOIN `st_status` stat ON stat.Idn = t.st_sprzedany
	LEFT JOIN `erp_statusy_biblioteczne` sb ON sb.Status = ti.status_biblioteczny AND sb.SubStatus = ti.substatus_biblioteczny 
	WHERE
		ti.is_multi_instancje = 0
	;	

$$

CREATE OR REPLACE DEFINER=`root`@`localhost` VIEW `v_op_instancje` AS
	SELECT
		--	oi.*,
		oi.idn,
		oi.ID,
		oi.idnoper,
		oi.guid_oppo,
		oi.rodzaj,
		oi.rodzaj_typ,
		oi.guid_instancji,
		oi.ilosc,
		oi.osobaGUID,
		oi.areaGUID,
		oi.dataoper,
		oi.deleted,
		oi.Prev_Op_GUID,
		oi.ID_Session,
		oi.E_status,
		oi.Update_status,
		oi.alocaltime,
		oi.ExtInf,
		--	_ConcatStr(an.Symbol, IF(an.Symbol = an.Nazwa, '', an.Nazwa), ' - ') AS AreaSymbolNazwa,
		CONCAT_WS(' - ', an.Symbol, IF(an.Symbol = an.Nazwa, NULL, an.Nazwa)) AS AreaSymbolNazwa,
		CONCAT_WS(' ', o.Nazwisko, o.Imiona) AS Osoba,
		CONCAT_WS(' - ', od.Nazwa, od.Opis) AS Operacja,
		CONCAT_WS(' - ', 
			IFNULL(NULLIF(stanow.stanowisko, ''), NULLIF(o.stanowisko, '')),
			NULLIF(
			CONCAT_WS(', ', 
				NULLIF(d.opis, ''),	--	dziala
				NULLIF(d.symbol, ''),
				NULLIF(o.nazwa_dzialu, '')
			), '')
		) AS StanowiskoInfo,
		'' AS Brygada	--	takie dane jak nr brygady czy nazwisko mistrza.
	FROM `op_instancje` oi
	LEFT JOIN `osoby` o ON o.GUID = oi.OsobaGUID
	LEFT JOIN `erp_area_nodes` an ON an.GUID = oi.AreaGUID
	LEFT JOIN `operdoc_typy` od ON od.Rodzaj = oi.Rodzaj AND od.typ = oi.Rodzaj_typ
	
	LEFT JOIN `Pracownicy` p ON p.GUID = o.GUID
	LEFT JOIN `stanowiska` stanow ON stanow.GUID = p.stanowisko
	LEFT JOIN `dzialy` d ON o.dzial = d.idn
	;
$$

CREATE OR REPLACE DEFINER=`root`@`localhost` VIEW `v_op_instancje_det` AS
	SELECT
		oid.*,
		oi.DataOper,
		oi.Rodzaj, oi.Rodzaj_typ, 
		CONCAT(od.Nazwa, ' - ', od.Opis) AS Operacja,
		oi.IdnOper,
		oi.guid_oppo,
		-- ti.idn, ti.guid, ti.idntowr, ti.kod_kreskowy, 
		_VarStr_NotNull(CONCAT(o.Nazwisko, ' ', o.Imiona)) AS Osoba, -- _przypisana
		_ConcatStr(n.Symbol, IF(n.Symbol = n.Nazwa, '', n.Nazwa), ' - ') AS AreaSymbolNazwa
	FROM `op_instancje_det` oid
	INNER JOIN `op_instancje` oi ON oi.ID = oid.Id_Ng
	LEFT JOIN `osoby` o ON o.GUID = oid.OsobaGUID  -- _przypisana
	LEFT JOIN `erp_area_nodes` n ON n.GUID = oid.AreaGUID
	LEFT JOIN `operdoc_typy` od ON od.Rodzaj = oi.Rodzaj AND od.typ = oi.Rodzaj_typ
	;

$$

CREATE OR REPLACE DEFINER=`root`@`localhost` VIEW `v_op_instancje_det_full` AS
		SELECT
		oid.IDN,
		oi.DataOper,
		oi.Rodzaj, oi.Rodzaj_typ, 
		CONCAT(od.Nazwa, ' - ', od.Opis) AS Operacja,
		ID_ng, 
		oi.IdnOper,
		oi.guid_oppo,
		oid.status_before, oid.status_after, oid.substatus_before, oid.substatus_after, oid.guid_instancji, oid.is_Multi_instancje, oid.ilosc, oid.osobaGUID, oid.areaGUID, oid.Prev_Op_GUID, oid.alocaltime,
		ti.status_biblioteczny, 
		-- ti.idn, ti.guid, ti.idntowr, ti.kod_kreskowy, 
		IF(ti.is_multi_instancje = 0, ti.opis, t.Nazwa) AS Opis,
		_VarStr_NotNull(CONCAT(o.Nazwisko, ' ', o.Imiona)) AS Osoba, -- _przypisana
		_ConcatStr(n.Symbol, IF(n.Symbol = n.Nazwa, '', n.Nazwa), ' - ') AS AreaSymbolNazwa,
		ti.nr_seryjny,
		ti.uwagi,
		ti.datagwarancji, ti.nrinwentarz, ti.nrinwentarzobcy, ti.miejsce, ti.divisionGUID, ti.status_info, ti.serwis_data,
		ti.magazyn, ti.datawystaw, ti.show_alert, ti.alert_desc, 
		t.st_rodzaj,
		sr.Nazwa AS rodzaj_srtrw,
		(SELECT IFNULL(vhc.ID,'')  FROM hr_cards vhc WHERE IFNULL(vhc.OsobaGUID ,'') <> '' AND vhc.OsobaGUID = ti.OsobaGUID AND LENGTH(vhc.ID) < 6 ORDER BY LENGTH(vhc.ID) LIMIT 1) AS nr_przepustki
	FROM `op_instancje_det` oid
	INNER JOIN `op_instancje` oi ON oi.ID = oid.Id_Ng
	INNER JOIN `towrng_instancje` ti ON ti.GUID = oid.guid_instancji
	INNER JOIN `TowrNg` t ON t.GUID = ti.IdnTowr AND t.Deleted = 0
	LEFT JOIN `osoby` o ON o.GUID = oid.OsobaGUID  -- _przypisana
	LEFT JOIN `erp_area_nodes` n ON n.GUID = oid.AreaGUID
	LEFT JOIN `operdoc_typy` od ON od.Rodzaj = oi.Rodzaj AND od.typ = oi.Rodzaj_typ
	LEFT JOIN `st_rodzaje` sr ON sr.Idn = t.st_rodzaj
	WHERE
		TRUE
	;	


$$

CREATE OR REPLACE DEFINER=`root`@`localhost` VIEW `v_instancji_statusy` AS
	SELECT
		s.Slownik_GUID, s.Value, s.MasterKey AS Status_Biblioteczny, s.DisplayValue
	FROM `slowniki_pierwotne` s
	WHERE
		Slownik_GUID = 'INSTANCJE_STATUSY'
	ORDER BY s.Value	
	;
$$

DELIMITER ;

/*
$Log$
*/
