 /*!40101 SET NAMES utf8 */;

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` VIEW `v_cwd` AS
SELECT
	cwd.*,
	IFNULL(NULLIF(cwd.TxtOnDone, ''),
		CONCAT('zmiana na: "', cwd.Descr_Status, '"')
	) AS OpTxtDone,
	IFNULL(NULLIF(cwd.TxtOnUndone, ''),
		CONCAT(_VarStr('cofnięto decyzję ("'), cwd.Descr_Status, '")')
	) AS OpTxtUndone
	
FROM `crm_workflow_def` cwd
$$
DELIMITER ;

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` VIEW `v_cwdu` AS
	SELECT
		cwdu.Podrodzaj, cwdu.uType, 
		IFNULL(cwdu.uAs, cwdu0.uAs) AS uAs, 
		IFNULL(cwdu.uAsDw, cwdu0.uAsDw) AS uAsDw, 
		cwdu.Poziom,
		cwdu.uGUID,
		cwdu.notification, cwdu.Def, cwdu.Deleted
	FROM `crm_workflow_def_users` cwdu
	INNER JOIN `crm_workflow_def_users` cwdu0 ON cwdu0.Podrodzaj = -1 AND cwdu0.uType = cwdu.uType
	WHERE 
		cwdu.Podrodzaj >= 0
$$
DELIMITER ;

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` VIEW `v_crm_workflow_n` AS
	SELECT 
		cwn.*,
		TIMESTAMPDIFF(MINUTE, D1, D2)/60 AS duration,
		(CONCAT_WS(' ' , oOwner.Imie1, oOwner.Nazwisko)) AS nOwner,
		(CONCAT_WS(' ' , oCreator.Imie1, oCreator.Nazwisko)) AS nCreator,
		ad.Idn AS Rodzaj_Absencji,
		ad.Kod_ABS,
		IFNULL(ad.okres_typ, 'D') AS okres_typ,
		cr.nazwa AS wfName,	-- nazwa wniosku/sprawy
		cr.Undo_After_End_Active_By,
		wd.Descr_status
		-- c.Status_IsArchiwum AS IsArchiwum,
--	c.duration AS duration, 
	--	IFNULL(c.status2, 0) AS godz_absencji_fixed,	-- UWAGA c.status2 dla absencji jako godz_absencji_fixed
		FROM `crm_workflow_n` cwn
		LEFT JOIN `crm_rodzaje` cr ON cr.rodzaj = cwn.rodzaj AND cr.podrodzaj = cwn.podrodzaj
		LEFT JOIN `absencje_dict` ad ON ad.Wniosek_rodzaj = cwn.Rodzaj AND ad.Wniosek_podrodzaj = cwn.Podrodzaj
		LEFT JOIN `osoby` oOwner ON oOwner.GUID = cwn.uOwner
		LEFT JOIN `osoby` oCreator ON oCreator.GUID = cwn.uCreator
			LEFT JOIN `crm_workflow_def` wd ON wd.Def = cwn.Def AND wd.Status = cwn.cwStatus
		WHERE 
			TRUE
$$
DELIMITER ;

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` VIEW `v_crm_workflow_n_coms2` AS
		SELECT
			c.IDN,
			cwn.GUID,
			cwn.Rodzaj, cwn.Podrodzaj,
			cwn.Rodzaj_Absencji AS Typ,
			cwn.CreateAt AS `Data`,
			/*	uwaga komentarz w Temacie jest w triggerze i musze się zdecydowac 
				a) wywalama z triggera czy stąd!!! Na razie zostaje b)
			CONCAT_WS(' - ', cwn.Temat, NULLIF(cwn.ExtDescr, '')) AS Temat,
			*/
			cwn.Temat,
			cwn.Opis,
			cwn.D1 AS StartTime, cwn.D2 AS EndTime, cwn.Duration AS Duration,
					--	c.Duration,
			cwn.crmStatus AS `status`,
					--	c.status,
		--	zapytaj Darka czy uzywa takiego pola poniżej ??? - i wywalic !!!!			
			(IFNULL(cwn.tAbs, -1) BETWEEN 0 AND 480) AS status2,
					--	c.status2,	--	@.abs.godz_absencji_fixed
			cwn.cwStatus AS confirm_status, 
					--	c.confirm_status,
			cwn.IsEnding AS confirm_status_Is_Ending,
					--	wd2.Is_Ending AS confirm_status_Is_Ending,
			cwn.IsCancel AS confirm_status_Is_Cancel,
					--	wd2.Is_Ending = 2 AS confirm_status_Is_Cancel,
			(cwn.IsEnding != 2 AND cwn.crmStatus > 1) AS Enable_ExtRec,
					--	(wd2.Is_Ending != 2 AND c.status > 1) AS Enable_ExtRec,
		--	???? PO CO????	
			wd.param1 AS confirm_status_Param1,
			cwn.IsArchiwum AS Status_IsArchiwum,
				/*	
					(
						(c.STATUS IN (3, 4, 8, 11, 13, 14)) 
						AND (NOW() > c.Data)
					) AS Status_IsArchiwum,
				*/
			wd.Descr_status,
					--	wd2.Descr_status,
					

			st.statusName AS Status_Info,
					--	st2.statusName AS Status_Info,
			st.Terminated AS Status_Is_Ending,
					--	st2.Terminated AS Status_Is_Ending,
			cwn.uCreator AS Creator_GUID,
					--	culc.Osoba AS Creator_GUID,
			cwn.nCreator AS Creator_Kto,
					--	CONCAT_WS(' ', ocr.Imie1, ocr.Nazwisko) AS Creator_Kto,
			cwn.uOwner AS Owner_GUID,
					--	culo.Osoba AS Owner_GUID,
			cwn.nOwner AS Owner_Kto,
					--	CONCAT_WS(' ', oow.Imie1, oow.Nazwisko) AS Owner_Kto,
			cwn.wfName AS typ_nazwa,
					--	cr.nazwa AS typ_nazwa,
		--	zapytaj Darka czy uzywa takiego pola poniżej ??? - i dodac pole AreaGUID do `crm_workflow_n` !!!!			
					c.AreaGUID,
			-- ???????????? cwn.NrWewn,
		--	zapytaj Darka czy uzywa takiego pola poniżej ??? - i dodac pole NrWewn do `crm_workflow_n` !!!!			
					c.NrWewn,
		--	zapytaj Darka czy uzywa takiego pola poniżej ??? - i wywalic !!!!			
			CONCAT(d.Symbol, ' ', d.Nazwa) AS Oddzial_Str,
			cwn.Rodzaj_Absencji AS Absencja_Rodzaj,
					--	ad.Idn AS Absencja_Rodzaj,
			cwn.IsAbsencja AS IS_Absencja,
					--	IFNULL(ad.Idn, 0) > 0 AS IS_Absencja,
			
			cwn.Kod_ABS,
					--	ad.Kod_ABS,
			cwn.Alg_Typ AS Wniosek_Typ,
					--	cr.Alg_Typ AS Wniosek_Typ,
			cwn.okres_typ,
					--	IFNULL(ad.okres_typ, 'D') AS okres_typ, 	-- gdy nie absencja to na razie uznaj że "D" czyli dniowa
		--	do 19 XII było ...	
		--	cr.Def_confirm_statuses,
		--	od 19 XII jest ...	
			cwn.Def AS Def_confirm_statuses,
					--	IFNULL(c.Def_confirm_statuses, cr.Def_confirm_statuses) AS Def_confirm_statuses,
			cwn.Undo_After_End_Active_By,
					--	cr.Undo_After_End_Active_By,
			cwn.Deadline,
					--	c.DeadLine,
			cwn.ExtDescr AS www_tag_text,	--	zapytaj Darka czy uzywa takiego pola ??? - i zmienic na ExtDescr!!!!
					--	c.www_tag_text,
		--	zapytaj Darka czy uzywa takiego pola poniżej ??? - i wywalic !!!!			
			c.Template_Osoba,
            cwn.IsEnding
		-- FROM `crm_commisions` c
		FROM `v_crm_workflow_n` cwn
		INNER JOIN `crm_commisions` c ON c.GUID = cwn.GUID
				--	LEFT JOIN `crm_rodzaje` cr ON cr.rodzaj = cwn.rodzaj AND cr.podrodzaj = cwn.podrodzaj
		LEFT JOIN `status` st ON st.statusID = cwn.crmStatus
				-- LEFT JOIN `status` st2 ON st2.statusID = c.status
	--	do 19 XII było ...	
	--	LEFT JOIN `crm_workflow_def` wd ON wd.Def = cr.Def_confirm_statuses AND wd.Status = c.confirm_status
	--	od 19 XII jest ...	
		LEFT JOIN `crm_workflow_def` wd ON wd.Def = cwn.Def AND wd.Status = cwn.cwStatus
				--	LEFT JOIN `crm_workflow_def` wd2 ON wd2.Def = IFNULL(c.Def_confirm_statuses, cr.Def_confirm_statuses) AND wd2.Status = c.confirm_status
		LEFT JOIN `erp_division_schema` d ON d.GUID = c.AreaGUID
				--	LEFT JOIN `absencje_dict` ad ON ad.Wniosek_rodzaj = c.Rodzaj AND ad.Wniosek_podrodzaj = c.Podrodzaj
		
				--	LEFT JOIN `crm_usr_links` culc ON culc.commisionGUID = c.GUID AND culc.Poziom = 0
				--	LEFT JOIN `osoby` ocr ON ocr.GUID = culc.Osoba
				--	LEFT JOIN `crm_usr_links` culo ON  culo.commisionGUID = c.GUID AND culo.Poziom = 2
				--	LEFT JOIN `osoby` oow ON oow.GUID = culc.Osoba
		-- inner join c.confirm_status
		WHERE
			TRUE
$$
DELIMITER ;

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` VIEW `v_crm_workflow_n_coms` AS
		SELECT
			cwn.GUID,
			cwn.Rodzaj, cwn.Podrodzaj,
			cwn.Rodzaj_Absencji AS typ,
					--	c.typ,
			cwn.CreateAt AS `Data`,
					--	c.Data,
			CONCAT_WS(' - ', cwn.Temat, NULLIF(cwn.ExtDescr, '')) AS Temat,
					--	c.Temat,
			cwn.Opis,
					--	c.Opis,
			cwn.D1 AS StartTime, cwn.D2 AS EndTime, cwn.Duration AS Duration,
					--	c.Duration,
			cwn.crmStatus AS `status`,
					--	c.status,
								--	cwn.Duration AS Duration, c.Duration, cwn.tAbs,
		--	zapytaj Darka czy uzywa takiego pola poniżej ??? - i wywalic !!!!			
			(IFNULL(cwn.tAbs, -1) BETWEEN 0 AND 480) AS status2,
					--	c.status2,	--	@.abs.godz_absencji_fixed
			cwn.cwStatus AS confirm_status, 
					--	c.confirm_status,
			cwn.IsEnding AS confirm_status_Is_Ending,
					--	wd2.Is_Ending AS confirm_status_Is_Ending,
			cwn.IsCancel AS confirm_status_Is_Cancel,
					--	wd2.Is_Ending = 2 AS confirm_status_Is_Cancel,
			(cwn.IsEnding != 2 AND cwn.crmStatus > 1) AS Enable_ExtRec,
					--	(wd2.Is_Ending != 2 AND c.status > 1) AS Enable_ExtRec,
		--	???? PO CO????	
			wd.param1 AS confirm_status_Param1,
			cwn.IsArchiwum AS Status_IsArchiwum,
				/*	
					(
						(c.STATUS IN (3, 4, 8, 11, 13, 14)) 
						AND (NOW() > c.Data)
					) AS Status_IsArchiwum,
				*/
			wd.Descr_status,
					--	wd2.Descr_status,
			st.statusName AS Status_Info,
					--	st2.statusName AS Status_Info,
			st.Terminated AS Status_Is_Ending,
					--	st2.Terminated AS Status_Is_Ending,
			cwn.uCreator AS Creator_GUID,
					--	culc.Osoba AS Creator_GUID,
			cwn.nCreator AS Creator_Kto,
					--	CONCAT_WS(' ', ocr.Imie1, ocr.Nazwisko) AS Creator_Kto,
			cwn.uOwner AS Owner_GUID,
					--	culo.Osoba AS Owner_GUID,
			cwn.nOwner AS Owner_Kto,
					--	CONCAT_WS(' ', oow.Imie1, oow.Nazwisko) AS Owner_Kto,
			cwn.wfName AS typ_nazwa,
					--	cr.nazwa AS typ_nazwa,
		--	zapytaj Darka czy uzywa takiego pola poniżej ??? - i dodac pole AreaGUID do `crm_workflow_n` !!!!			
					c.AreaGUID,
			-- ???????????? cwn.NrWewn,
		--	zapytaj Darka czy uzywa takiego pola poniżej ??? - i dodac pole NrWewn do `crm_workflow_n` !!!!			
					c.NrWewn,
		--	zapytaj Darka czy uzywa takiego pola poniżej ??? - i wywalic !!!!			
			CONCAT(d.Symbol, ' ', d.Nazwa) AS Oddzial_Str,
			cwn.Rodzaj_Absencji AS Absencja_Rodzaj,
					--	ad.Idn AS Absencja_Rodzaj,
			cwn.IsAbsencja AS IS_Absencja,
					--	IFNULL(ad.Idn, 0) > 0 AS IS_Absencja,
			cwn.Alg_Typ AS Wniosek_Typ,
					--	cr.Alg_Typ AS Wniosek_Typ,
			cwn.okres_typ,
					--	IFNULL(ad.okres_typ, 'D') AS okres_typ, 	-- gdy nie absencja to na razie uznaj że "D" czyli dniowa
			cwn.Def AS Def_confirm_statuses,
					--	IFNULL(c.Def_confirm_statuses, cr.Def_confirm_statuses) AS Def_confirm_statuses,
			cwn.DeadLine
				--	c.DeadLine
		FROM `v_crm_workflow_n` cwn
		INNER JOIN `crm_commisions` c ON c.GUID = cwn.GUID
				--	LEFT JOIN `crm_rodzaje` cr ON cr.rodzaj = c.rodzaj AND cr.podrodzaj = c.podrodzaj
		LEFT JOIN `status` st ON st.statusID = cwn.crmStatus
				-- LEFT JOIN `status` st2 ON st2.statusID = c.status
		LEFT JOIN `crm_workflow_def` wd ON wd.Def = cwn.Def AND wd.Status = cwn.cwStatus
				--	LEFT JOIN `crm_workflow_def` wd2 ON wd2.Def = IFNULL(c.Def_confirm_statuses, cr.Def_confirm_statuses) AND wd2.Status = c.confirm_status
		LEFT JOIN `erp_division_schema` d ON d.GUID = c.AreaGUID
				--	LEFT JOIN `absencje_dict` ad ON ad.Wniosek_rodzaj = c.Rodzaj AND ad.Wniosek_podrodzaj = c.Podrodzaj
		WHERE
			TRUE
$$
DELIMITER ;

/*
$Log: v_crm_workflow_n.sql,v $
Revision 1.2  2024/05/15 06:01:07  jmam
SQL zmiana V 2024 $SEND$

Revision 1.1  2024/04/27 09:13:43  jmam
Inicjacja WORK.FLOW.Ver = 2024.04 $SEND$

*/
