Просмотр исходного кода

FixCrmProcesInitIdx: Add view for table to user

Piotr Labudda 10 лет назад
Родитель
Сommit
ad8ee56274
1 измененных файлов с 52 добавлено и 3 удалено
  1. 52 3
      SE/se-lib/Route/FixCrmProcesInitIdx.php

+ 52 - 3
SE/se-lib/Route/FixCrmProcesInitIdx.php

@@ -487,7 +487,8 @@ SQL;
 			--		, z.*, wsk.*
 				from `CRM_LISTA_ZASOBOW` z
 					join `CRM_LISTA_ZASOBOW` zp on(zp.`ID`=z.`PARENT_ID` and zp.`TYPE`='TABELA' and zp.`A_STATUS` in('WAITING','NORMAL'))
-					join `CRM_WSKAZNIK` wsk on(wsk.`ID_ZASOB`=z.`ID`)
+					join `CRM_WSKAZNIK` wsk on(wsk.`ID_ZASOB`=z.`ID` and wsk.`A_STATUS` in('WAITING','NORMAL'))
+					join `CRM_PROCES` p on(p.`ID`=wsk.`ID_PROCES` and p.`A_STATUS` in('WAITING','NORMAL'))
 				where z.`TYPE`='KOMORKA'
 					and z.`A_STATUS` in('WAITING','NORMAL')
 SQL;
@@ -496,7 +497,54 @@ SQL;
 				FROM  `CRM_PROCES_idx_USER_to_PROCES_VIEW` up
 					join `CRM_PROCES_idx_TABLE_TO_PROCES_VIEW` tp on(tp.`ID_PROCES`=up.`ID_PROCES`)
 				WHERE  `ADM_ACCOUNT` LIKE  '{$userLogin}'
+
+		-- id steps for table 'TEST_PERMS'
+				select tpv.`ID_PROCES`
+					from `CRM_PROCES_idx_TABLE_TO_PROCES_VIEW` tpv
+					where tpv.`TABLE_NAME`='TEST_PERMS'
+					group by tpv.`ID_PROCES`
+		-- id steps for user 'plabudda' for table 'TEST_PERMS'
+			select upv.*
+			from
+				(select tpv.`ID_PROCES`
+					from `CRM_PROCES_idx_TABLE_TO_PROCES_VIEW` tpv
+					where tpv.`TABLE_NAME`='TEST_PERMS'
+					group by tpv.`ID_PROCES`) as tpvg
+			--	join `CRM_PROCES_idx_GROUP_to_PROCES` igp on(.`ID_PROCES`=tpvg.`ID_PROCES`)
+				join `CRM_PROCES_idx_USER_to_PROCES_VIEW` upv on(upv.`ID_PROCES`=tpvg.`ID_PROCES`)
+			where upv.`ADM_ACCOUNT`='plabudda'
 		*/
+		$sqlList_BUG = <<<SQL
+			-- BUG  #1349 - View's SELECT contains a subquery in the FROM clause
+			CREATE VIEW `CRM_PROCES_idx_TABLE_TO_USER_VIEW` AS
+			select tpvg.`ID_PROCES`, tpvg.`TABLE_NAME`
+				, upv.`ADM_ACCOUNT`
+				, upv.`EMPLOYEE_TYPE`
+				, upv.`A_STATUS`
+			from
+				(select tpv.`ID_PROCES`, tpv.`TABLE_NAME`
+					from `CRM_PROCES_idx_TABLE_TO_PROCES_VIEW` tpv
+					group by tpv.`TABLE_NAME`, tpv.`ID_PROCES`) as tpvg
+				join `CRM_PROCES_idx_USER_to_PROCES_VIEW` upv on(upv.`ID_PROCES`=tpvg.`ID_PROCES`)
+SQL;
+		$sqlList['RemoveViewTableToProcesGrouped'] = "DROP VIEW IF EXISTS `CRM_PROCES_idx_TABLE_TO_PROCES_GROUPED_VIEW`";
+		$sqlList['InstallViewTableToProcesGrouped'] = <<<SQL
+			CREATE VIEW `CRM_PROCES_idx_TABLE_TO_PROCES_GROUPED_VIEW` AS
+			select tpv.`ID_TABLE`, tpv.`TABLE_NAME`, tpv.`ID_PROCES`
+				from `CRM_PROCES_idx_TABLE_TO_PROCES_VIEW` tpv
+				group by tpv.`ID_TABLE`, tpv.`ID_PROCES`
+SQL;
+		$sqlList['RemoveViewTableToUser'] = "DROP VIEW IF EXISTS `CRM_PROCES_idx_TABLE_TO_USER_VIEW`";
+		//  #1349 - View's SELECT contains a subquery in the FROM clause
+		$sqlList['InstallViewTableToUser'] = <<<SQL
+			CREATE VIEW `CRM_PROCES_idx_TABLE_TO_USER_VIEW` AS
+			select tpgv.`ID_TABLE`, tpgv.`TABLE_NAME`, tpgv.`ID_PROCES`
+				, upv.`ADM_ACCOUNT`
+				, upv.`EMPLOYEE_TYPE`
+				, upv.`A_STATUS`
+			from `CRM_PROCES_idx_TABLE_TO_PROCES_GROUPED_VIEW` as tpgv
+				join `CRM_PROCES_idx_USER_to_PROCES_VIEW` upv on(upv.`ID_PROCES`=tpgv.`ID_PROCES`)
+SQL;
 		$sqlList['RemoveProcedure'] = "DROP PROCEDURE if exists `update_proces_init_idx_rec`";
 		// throws errors:
 		//  #1146 - Table '{DATABASE_NAME}.P5-MSG:Route_FixCrmProcesInitIdx:ERROR: Already executed' doesn't exist
@@ -571,7 +619,7 @@ BEGIN
 -- select 'GOTO_AND_RETURN...';
 		insert ignore into `CRM_PROCES_idx` (`ID_PROCES`,`TYPE`,`PARENT_ID`,`idx_PROCES_INIT_ID`,`idx_PROCES_WITH_GROUPS_ID`)
 			select g.`ID`, 'GOTO_AND_RETURN' as `TYPE`, p.`ID` as PARENT_ID, g.`ID` as idx_PROCES_INIT_ID
-				, pi.`idx_PROCES_WITH_GROUPS_ID`
+				, IF(gi.`idx_PROCES_WITH_GROUPS_ID` is null, pi.`idx_PROCES_WITH_GROUPS_ID`, gi.`idx_PROCES_WITH_GROUPS_ID`) as `idx_PROCES_WITH_GROUPS_ID`
 			from `CRM_PROCES` p
 				join `CRM_PROCES_idx` pi on(pi.`ID_PROCES`=p.`ID`)
 				join `CRM_PROCES` g on(g.`ID`=p.`IF_TRUE_GOTO`
@@ -580,8 +628,9 @@ BEGIN
 						and p.`IF_TRUE_GOTO_FLAG`='GOTO_AND_RETURN'
 						and p.`IF_TRUE_GOTO`>0
 					)
+				join `CRM_PROCES_idx` gi on(gi.`ID_PROCES`=g.`ID`)
 			where p.`A_STATUS` in('NORMAL','WAITING')
-				and 0=(select IF(i.`idx_PROCES_WITH_GROUPS_ID` is null, 0, -1) from `CRM_PROCES_idx` i where i.`ID_PROCES`=g.`ID`)
+--				and 0=(select IF(i.`idx_PROCES_WITH_GROUPS_ID` is null, 0, -1) from `CRM_PROCES_idx` i where i.`ID_PROCES`=g.`ID`)
 		;
 
 		update `CRM_PROCES_idx`