superedit-DB_PROCEDURES_CREATE.php 67 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175
  1. <?php
  2. // procedury do optymalnegi przyjemnego i szybkiego widoku danych procesow
  3. // bazowe konstruktory twardych struktur danych systemowych
  4. //version @2014-01-22 bindera
  5. //@2014-02-05 ustalono, ze ten plik zostanie rozrzucony po pojedynczych skryptach php, ktore beda wyzwalane przez klase zaprojektowana przez Piotra, ktora
  6. //na podobnej zasadzie co WordPress bedzie czytac tabele z dostepnymi pluginami, gdzie te skryupty beda pozglaszane/lub beda sie zglaszac
  7. if(isset($_SERVER["argv"][1])) {
  8. //wymuszenie argumentu z polecenia (ta zmienna oznaczac ma domene (np. biuro.biall-net.pl )
  9. //php -r"include('/Library/Server/Web/Data/Sites/Default/SE/superedit-SQIX_STRUCTURE_DB_SYNC.php') ;" biuro.biall-net.pl
  10. $_SERVER['SERVER_NAME']=$_SERVER["argv"][1];
  11. $_REQUEST['SYSTEM_PROFILE_STRING_IMPORT_EXPORT']=$_SERVER["argv"][2]; //filtr do importu
  12. $_REQUEST['submit']=true;
  13. define('DS', DIRECTORY_SEPARATOR);
  14. define('APP_PATH_ROOT', dirname(__FILE__));
  15. define('APP_PATH_WWW', dirname(__FILE__));
  16. define('APP_PATH_CONFIG', APP_PATH_ROOT . DS . 'config');
  17. require_once APP_PATH_ROOT . DS . 'se-lib' . DS . 'Lib.php';
  18. Lib::loadClass('V');
  19. Lib::loadClass('Config');
  20. Lib::loadClass('DB');
  21. Lib::loadClass('User');
  22. session_start();
  23. include_once(APP_PATH_CONFIG.'/.config-'.$_SERVER['SERVER_NAME'].'.php');
  24. include('superedit-DEBUG_S.php');
  25. // $PROJ_mount_point=Config::getConfFile('import_db', '') ;
  26. // print_r($PROJ_mount_point);
  27. } else {
  28. if($_SESSION['ADM_ADMIN_LEVEL']<>0) die('niewlasciwy admin level != 0');
  29. if(!isset($_SESSION['ADM_ADMIN_LEVEL'])) die('brak admin level - zle wyzwolenie funkcji');
  30. }
  31. function DB_PROCEDURES_CREATE($DB=null) {
  32. DEBUG_S(-3,"Deklaruje zmienna SQL do wykonania instalacji procedur",null,__FILE__,__FUNCTION__,__LINE__);
  33. $sql['turn_off_database_locking']="SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;";
  34. //! CRM_ZASOBY_BEGIN
  35. $sql['drop_CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path']="drop function if exists CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path";
  36. $sql['create_CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path']="CREATE DEFINER=`root`@`localhost` FUNCTION `CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path`(`delimiter` TEXT, `node` INT) RETURNS text CHARSET latin2
  37. READS SQL DATA
  38. BEGIN
  39. DECLARE _path TEXT;
  40. DECLARE _type CHAR(255);
  41. DECLARE _lvl INT;
  42. DECLARE _cpath TEXT;
  43. DECLARE _id INT;
  44. DECLARE _id_cur INT;
  45. DECLARE EXIT HANDLER FOR NOT FOUND RETURN _path;
  46. SET _id = COALESCE(node, @id);
  47. SET _path = '';
  48. SET _lvl=1;
  49. the_loop: LOOP
  50. SET _lvl =_lvl+1;
  51. IF _lvl>100 THEN
  52. RETURN concat('ERROR',_path);
  53. LEAVE the_loop;
  54. END IF;
  55. SELECT PARENT_ID,`DESC`,ID
  56. INTO _id,_type,_id_cur
  57. FROM CRM_LISTA_ZASOBOW
  58. WHERE id = _id
  59. AND COALESCE(id <> @start_with, TRUE);
  60. SET _path = CONCAT(_type, delimiter, _path);
  61. END LOOP the_loop;
  62. END";
  63. //!_CRM_LISTA_ZASOBOW_tree_UPDATE
  64. $sql['drop__CRM_LISTA_ZASOBOW_tree_UPDATE']="DROP TRIGGER IF EXISTS `_CRM_LISTA_ZASOBOW_tree_UPDATE`";
  65. $sql['create__CRM_LISTA_ZASOBOW_tree_UPDATE']="CREATE DEFINER=`root`@`localhost` TRIGGER `_CRM_LISTA_ZASOBOW_tree_UPDATE` BEFORE UPDATE ON `CRM_LISTA_ZASOBOW` FOR EACH ROW BEGIN
  66. IF NEW.PARENT_ID<>OLD.PARENT_ID or NEW.`DESC`<>OLD.`DESC` THEN
  67. SET NEW.path = CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path('/', NEW.PARENT_ID);
  68. update CRM_WSKAZNIK ik set ik.path_CRM_LISTA_ZASOBOW=CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path('/', NEW.ID) where path_CRM_LISTA_ZASOBOW like concat('%',NEW.ID,'%');
  69. -- update CRM_LISTA_ZASOBOW ik set ik.path=CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path('/', ik.ID) where path like concat('%',OLD.`DESC`,'%') and ik.ID<>OLD.ID;
  70. END IF;
  71. END
  72. ";
  73. //!_CRM_LISTA_ZASOBOW_tree_UPDATE_after
  74. $sql['drop__CRM_LISTA_ZASOBOW_tree_UPDATE_after']="DROP TRIGGER IF EXISTS `_CRM_LISTA_ZASOBOW_tree_UPDATE_after`";
  75. /*$sql['create__CRM_LISTA_ZASOBOW_tree_UPDATE_after']="CREATE DEFINER=`root`@`localhost` TRIGGER `_CRM_LISTA_ZASOBOW_tree_UPDATE_after` AFTER UPDATE ON `CRM_LISTA_ZASOBOW` FOR EACH ROW BEGIN
  76. IF NEW.PARENT_ID<>OLD.PARENT_ID or NEW.`DESC`<>OLD.`DESC` THEN
  77. -- update CRM_LISTA_ZASOBOW ik set ik.path=CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path('/', ik.ID) where path like concat('%',OLD.`DESC`,'%');
  78. update CRM_WSKAZNIK ik set ik.path_CRM_LISTA_ZASOBOW=CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path('/', ik.ID_ZASOB) where path_CRM_LISTA_ZASOBOW like concat('%',OLD.`DESC`,'%');
  79. END IF;
  80. END
  81. ";
  82. */
  83. //!_CRM_LISTA_ZASOBOW_tree_INSERT
  84. $sql['drop__CRM_LISTA_ZASOBOW_tree_INSERT']="DROP TRIGGER IF EXISTS `_CRM_LISTA_ZASOBOW_tree_INSERT`";
  85. $sql['create__CRM_LISTA_ZASOBOW_tree_INSERT']="CREATE DEFINER=`root`@`localhost` TRIGGER `_CRM_LISTA_ZASOBOW_tree_INSERT` BEFORE INSERT ON `CRM_LISTA_ZASOBOW` FOR EACH ROW BEGIN
  86. SET NEW.path = CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path('/', NEW.PARENT_ID);
  87. END
  88. ";
  89. //!_CRM_WSKAZNIK_tree_INSERT
  90. $sql['drop__CRM_WSKAZNIK_tree_INSERT']="DROP TRIGGER IF EXISTS `_CRM_WSKAZNIK_tree_INSERT`";
  91. $sql['create__CRM_WSKAZNIK_tree_INSERT']="CREATE DEFINER=`root`@`localhost` TRIGGER `_CRM_WSKAZNIK_tree_INSERT` BEFORE INSERT ON `CRM_WSKAZNIK` FOR EACH ROW BEGIN
  92. SET NEW.path_CRM_LISTA_ZASOBOW = CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path('/', NEW.ID_ZASOB);
  93. END
  94. ";
  95. //!_CRM_WSKAZNIK_tree_UPDATE
  96. $sql['drop__CRM_WSKAZNIK_tree_UPDATE']="DROP TRIGGER IF EXISTS `_CRM_WSKAZNIK_tree_UPDATE`";
  97. $sql['create__CRM_WSKAZNIK_tree_UPDATE']="CREATE DEFINER=`root`@`localhost` TRIGGER `_CRM_WSKAZNIK_tree_UPDATE` BEFORE UPDATE ON `CRM_WSKAZNIK` FOR EACH ROW BEGIN
  98. IF NEW.ID_ZASOB<>OLD.ID_ZASOB THEN
  99. SET NEW.path_CRM_LISTA_ZASOBOW = CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path('/', NEW.ID_ZASOB);
  100. END IF;
  101. END
  102. ";
  103. //! event do aktualizacji PROJEKTOW - raz dziennie wszystkie przemapowac TODO trigger powinien aktualizowac pozostale powiazane rekordy, ktore zmienily strukture po zmianie struktury projektow
  104. $sql['event_delete_CRM_LISTA_ZASOBOW__CRM_WSKAZNIK_tree']="drop event if exists _CRM_LISTA_ZASOBOW__CRM_WSKAZNIK_tree_event";
  105. $sql['event_create_CRM_LISTA_ZASOBOW__CRM_WSKAZNIK_tree']="CREATE DEFINER=root@localhost EVENT _CRM_LISTA_ZASOBOW__CRM_WSKAZNIK_tree_event
  106. ON SCHEDULE EVERY 1 DAY
  107. STARTS str_to_date( date_format(now(), '%Y%m%d 0500'), '%Y%m%d %H%i' ) + INTERVAL 1 DAY
  108. DO
  109. BEGIN
  110. update CRM_LISTA_ZASOBOW set path=CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path('/',ID);
  111. update CRM_WSKAZNIK set path_CRM_LISTA_ZASOBOW=CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path('/',ID_ZASOB);
  112. END
  113. ";
  114. //! CRM_ZASOBY_END
  115. //!IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path
  116. $sql['drop_IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path']="drop function if exists IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path";
  117. $sql['create_IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path']="CREATE DEFINER=`root`@`localhost` FUNCTION `IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path`(`delimiter` TEXT, `node` INT) RETURNS text CHARSET latin2
  118. READS SQL DATA
  119. BEGIN
  120. DECLARE _path TEXT;
  121. DECLARE _type CHAR(255);
  122. DECLARE _lvl INT;
  123. DECLARE _cpath TEXT;
  124. DECLARE _id INT;
  125. DECLARE _id_cur INT;
  126. DECLARE EXIT HANDLER FOR NOT FOUND RETURN _path;
  127. SET _id = COALESCE(node, @id);
  128. SET _path = _id;
  129. SET _lvl=1;
  130. the_loop: LOOP
  131. SET _lvl =_lvl+1;
  132. IF _lvl>100 THEN
  133. RETURN concat('ERROR',_path);
  134. LEAVE the_loop;
  135. END IF;
  136. SELECT P_ID,M_DIST_TYPE,ID
  137. INTO _id,_type,_id_cur
  138. FROM IN7_MK_BAZA_DYSTRYBUCJI
  139. WHERE id = _id
  140. AND COALESCE(id <> @start_with, TRUE);
  141. SET _path = CONCAT(_id, delimiter, _path);
  142. END LOOP the_loop;
  143. END";
  144. //!_IN7_MK_BAZA_DYSTRYBUCJI_tree_UPDATE
  145. $sql['drop__IN7_MK_BAZA_DYSTRYBUCJI_tree_UPDATE']="DROP TRIGGER IF EXISTS `_IN7_MK_BAZA_DYSTRYBUCJI_tree_UPDATE`";
  146. $sql['create__IN7_MK_BAZA_DYSTRYBUCJI_tree_UPDATE']="CREATE DEFINER=`root`@`localhost` TRIGGER `_IN7_MK_BAZA_DYSTRYBUCJI_tree_UPDATE` BEFORE UPDATE ON `IN7_MK_BAZA_DYSTRYBUCJI` FOR EACH ROW BEGIN
  147. IF NEW.P_ID<>OLD.P_ID THEN
  148. SET NEW.path = IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path('-', NEW.P_ID);
  149. update IN7_DZIENNIK_KORESP ik set ik.path=IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path('-', NEW.ID) where path like concat('%',NEW.ID,'%');
  150. update PROBLEMS ik set ik.ID_PROJET_path=IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path('-', NEW.ID) where ID_PROJET_path like concat('%',NEW.ID,'%');
  151. END IF;
  152. END
  153. ";
  154. //!_IN7_MK_BAZA_DYSTRYBUCJI_tree_INSERT
  155. $sql['drop__IN7_MK_BAZA_DYSTRYBUCJI_tree_INSERT']="DROP TRIGGER IF EXISTS `_IN7_MK_BAZA_DYSTRYBUCJI_tree_INSERT`";
  156. $sql['create__IN7_MK_BAZA_DYSTRYBUCJI_tree_INSERT']="CREATE DEFINER=`root`@`localhost` TRIGGER `_IN7_MK_BAZA_DYSTRYBUCJI_tree_INSERT` BEFORE INSERT ON `IN7_MK_BAZA_DYSTRYBUCJI` FOR EACH ROW BEGIN
  157. SET NEW.path = IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path('-', NEW.P_ID);
  158. END
  159. ";
  160. //!_IN7_DZIENNIK_KORESP_tree_INSERT
  161. $sql['drop__IN7_DZIENNIK_KORESP_tree_INSERT']="DROP TRIGGER IF EXISTS `_IN7_DZIENNIK_KORESP_tree_INSERT`";
  162. $sql['create__IN7_DZIENNIK_KORESP_tree_INSERT']="CREATE DEFINER=`root`@`localhost` TRIGGER `_IN7_DZIENNIK_KORESP_tree_INSERT` BEFORE INSERT ON `IN7_DZIENNIK_KORESP` FOR EACH ROW BEGIN
  163. IF NEW.ID_PROJECT IS NOT NULL THEN
  164. SET NEW.path = IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path('-', NEW.ID_PROJECT);
  165. END IF;
  166. END
  167. ";
  168. //!_IN7_DZIENNIK_KORESP_tree_UPDATE
  169. $sql['drop__IN7_DZIENNIK_KORESP_tree_UPDATE']="DROP TRIGGER IF EXISTS `_IN7_DZIENNIK_KORESP_tree_UPDATE`";
  170. $sql['create__IN7_DZIENNIK_KORESP_tree_UPDATE']="CREATE DEFINER=`root`@`localhost` TRIGGER `_IN7_DZIENNIK_KORESP_tree_UPDATE` BEFORE UPDATE ON `IN7_DZIENNIK_KORESP` FOR EACH ROW BEGIN
  171. IF NEW.ID_PROJECT is null THEN
  172. SET NEW.path = '';
  173. ELSEIF OLD.ID_PROJECT IS NULL or NEW.ID_PROJECT<>OLD.ID_PROJECT THEN
  174. SET NEW.path = IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path('-', NEW.ID_PROJECT);
  175. END IF;
  176. END
  177. ";
  178. //!_PROBLEMS_tree_INSERT
  179. $sql['drop__PROBLEMS_tree_INSERT']="DROP TRIGGER IF EXISTS `_PROBLEMS_tree_INSERT`";
  180. $sql['create__PROBLEMS_tree_INSERT']="CREATE DEFINER=`root`@`localhost` TRIGGER `_PROBLEMS_tree_INSERT` BEFORE INSERT ON `PROBLEMS` FOR EACH ROW BEGIN
  181. IF NEW.ID_PROJECT IS NOT NULL THEN
  182. SET NEW.ID_PROJECT_path = IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path('-', NEW.ID_PROJECT);
  183. END IF;
  184. END
  185. ";
  186. //!_PROBLEMS_tree_UPDATE
  187. $sql['drop__PROBLEMS_tree_UPDATE']="DROP TRIGGER IF EXISTS `_PROBLEMS_tree_UPDATE`";
  188. $sql['create__PROBLEMS_tree_UPDATE']="CREATE DEFINER=`root`@`localhost` TRIGGER `_PROBLEMS_tree_UPDATE` BEFORE UPDATE ON `PROBLEMS` FOR EACH ROW BEGIN
  189. IF NEW.ID_PROJECT is null THEN
  190. SET NEW.ID_PROJECT_path = '';
  191. ELSEIF OLD.ID_PROJECT IS NULL or NEW.ID_PROJECT<>OLD.ID_PROJECT THEN
  192. SET NEW.ID_PROJECT_path = IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path('-', NEW.ID_PROJECT);
  193. END IF;
  194. END
  195. ";
  196. //! event do aktualizacji PROJEKTOW - raz dziennie wszystkie przemapowac TODO trigger powinien aktualizowac pozostale powiazane rekordy, ktore zmienily strukture po zmianie struktury projektow
  197. $sql['event_delete_IN7_MK_BAZA_DYSTRYBUCJI__IN7_DZIENNIK_KORESP_tree']="drop event if exists _IN7_MK_BAZA_DYSTRYBUCJI__IN7_DZIENNIK_KORESP_tree_event";
  198. $sql['event_create_IN7_MK_BAZA_DYSTRYBUCJI__IN7_DZIENNIK_KORESP_tree']="CREATE DEFINER=root@localhost EVENT _IN7_MK_BAZA_DYSTRYBUCJI__IN7_DZIENNIK_KORESP_tree_event
  199. ON SCHEDULE EVERY 1 DAY
  200. STARTS str_to_date( date_format(now(), '%Y%m%d 0500'), '%Y%m%d %H%i' ) + INTERVAL 1 DAY
  201. DO
  202. BEGIN
  203. update IN7_MK_BAZA_DYSTRYBUCJI set path=IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path('-',ID);
  204. update IN7_DZIENNIK_KORESP set path=IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path('-',ID_PROJECT);
  205. END
  206. ";
  207. //!hierarchy_connect_by_parent_eq_prior_id_with_level_and_loop
  208. $sql['drop_hierarchy_connect_by_parent_eq_prior_id_with_level_and_loop']="drop function if exists hierarchy_connect_by_parent_eq_prior_id_with_level_and_loop";
  209. $sql['create_hierarchy_connect_by_parent_eq_prior_id_with_level_and_loop']="CREATE DEFINER=`root`@`localhost` FUNCTION `hierarchy_connect_by_parent_eq_prior_id_with_level_and_loop`(`value` INT, `maxlevel` INT) RETURNS int(11)
  210. READS SQL DATA
  211. BEGIN
  212. DECLARE _id INT;
  213. DECLARE _parent INT;
  214. DECLARE _next INT;
  215. DECLARE _i INT;
  216. DECLARE CONTINUE HANDLER FOR NOT FOUND SET @id = NULL;
  217. SET _parent = @id;
  218. SET _id = -1;
  219. SET _i = 0;
  220. IF @id IS NULL THEN
  221. RETURN NULL;
  222. END IF;
  223. LOOP
  224. SELECT MIN(id)
  225. INTO @id
  226. FROM CRM_PROCES
  227. WHERE PARENT_ID = _parent
  228. AND id > _id
  229. AND id <> @start_with
  230. AND COALESCE(@level < maxlevel, TRUE);
  231. IF @id IS NOT NULL OR _parent = @start_with THEN
  232. SET @level = @level + 1;
  233. RETURN @id;
  234. END IF;
  235. SET @level := @level - 1;
  236. SELECT id, PARENT_ID
  237. INTO _id, _parent
  238. FROM CRM_PROCES
  239. WHERE id = _parent;
  240. SET _i = _i + 1;
  241. END LOOP;
  242. RETURN NULL;
  243. END
  244. ";
  245. $sql['drop_hierarchy_connect_by_iscycle']="drop function if exists hierarchy_connect_by_iscycle";
  246. $sql['create_hierarchy_connect_by_iscycle']="CREATE DEFINER=`root`@`localhost` FUNCTION `hierarchy_connect_by_iscycle`(`node` INT) RETURNS int(11)
  247. READS SQL DATA
  248. BEGIN
  249. DECLARE _id INT;
  250. DECLARE _loop INT;
  251. DECLARE _node INT;
  252. DECLARE EXIT HANDLER FOR NOT FOUND RETURN 0;
  253. SET _id = COALESCE(node, @id);
  254. SET _loop = 0;
  255. SET _node = 0;
  256. LOOP
  257. SELECT PARENT_ID
  258. INTO _id
  259. FROM CRM_PROCES
  260. WHERE id = _id;
  261. IF _id = @start_with THEN
  262. SET _loop := _loop + 1;
  263. END IF;
  264. IF _id = COALESCE(node, @id) THEN
  265. SET _node = _node + 1;
  266. END IF;
  267. IF _loop >= 2 THEN
  268. RETURN _node;
  269. END IF;
  270. END LOOP;
  271. END";
  272. $sql['drop_hierarchy_sys_connect_by_path']="drop function if exists hierarchy_sys_connect_by_path";
  273. $sql['create_hierarchy_sys_connect_by_path']="CREATE DEFINER=`root`@`localhost` FUNCTION `hierarchy_sys_connect_by_path`(`delimiter` TEXT, `node` INT) RETURNS text CHARSET latin2
  274. READS SQL DATA
  275. BEGIN
  276. DECLARE _path TEXT;
  277. DECLARE _type CHAR(255);
  278. DECLARE _cpath TEXT;
  279. DECLARE _id INT;
  280. DECLARE _id_cur INT;
  281. DECLARE EXIT HANDLER FOR NOT FOUND RETURN _path;
  282. SET _id = COALESCE(node, @id);
  283. SET _path = _id;
  284. LOOP
  285. SELECT PARENT_ID,TYPE,ID
  286. INTO _id,_type,_id_cur
  287. FROM CRM_PROCES
  288. WHERE id = _id
  289. AND COALESCE(id <> @start_with, TRUE);
  290. SET _path = CONCAT(_id, delimiter, _path);
  291. END LOOP;
  292. END";
  293. $sql['drop_CRM_PROCES_tree_detect_init']="drop function if exists CRM_PROCES_tree_detect_init";
  294. $sql['create_CRM_PROCES_tree_detect_init']="CREATE DEFINER=`root`@`localhost` FUNCTION `CRM_PROCES_tree_detect_init`(`node` INT) RETURNS text CHARSET latin2
  295. READS SQL DATA
  296. BEGIN
  297. DECLARE _path INT;
  298. DECLARE _type CHAR(255);
  299. DECLARE _cpath TEXT;
  300. DECLARE _id INT;
  301. DECLARE _id_cur INT;
  302. DECLARE EXIT HANDLER FOR NOT FOUND RETURN _path;
  303. SET _id = COALESCE(node, @id);
  304. LOOP
  305. SELECT PARENT_ID,TYPE,ID
  306. INTO _id,_type,_id_cur
  307. FROM CRM_PROCES
  308. WHERE id = _id
  309. AND COALESCE(id <> @start_with, TRUE);
  310. if _type = 'PROCES_INIT' THEN
  311. SET _path = _id_cur;
  312. END IF;
  313. END LOOP;
  314. END";
  315. $sql['drop__CRM_PROCES_STATS_proc_wiev']="drop table if exists _CRM_PROCES_STATS_proc_wiev;";
  316. $sql['create__CRM_PROCES_STATS_proc_wiev']="create table _CRM_PROCES_STATS_proc_wiev
  317. SELECT hi.ID,CRM_PROCES_tree_detect_init(hi.ID) as ID_PROCES_INIT,CONCAT(REPEAT(' ', lvl - 1), hi.id) AS treeitem,
  318. hierarchy_sys_connect_by_path('/', hi.id) AS path,
  319. PARENT_ID, lvl,
  320. CASE
  321. WHEN lvl >= @maxlevel THEN 1
  322. ELSE COALESCE(
  323. (
  324. SELECT 0
  325. FROM CRM_PROCES hl
  326. WHERE hl.PARENT_ID = ho.id
  327. AND hl.id <> @start_with
  328. LIMIT 1
  329. ), 1)
  330. END AS is_leaf,
  331. hierarchy_connect_by_iscycle(hi.id) AS is_cycle
  332. FROM (
  333. SELECT hierarchy_connect_by_parent_eq_prior_id_with_level_and_loop(id, @maxlevel) AS id,
  334. CAST(@level AS SIGNED) AS lvl
  335. FROM (
  336. SELECT @start_with := 0,
  337. @id := @start_with,
  338. @level := 0,
  339. @maxlevel := NULL
  340. ) vars, CRM_PROCES
  341. WHERE @id IS NOT NULL
  342. ) ho
  343. JOIN CRM_PROCES hi
  344. ON hi.id = ho.id ;";
  345. $sql['alter__CRM_PROCES_STATS_proc_wiev_unique_id']="alter table _CRM_PROCES_STATS_proc_wiev add unique(ID)";
  346. $sql['alter__CRM_PROCES_STATS_proc_wiev_modify_path']="alter table _CRM_PROCES_STATS_proc_wiev modify path varchar(255)";
  347. $sql['alter__CRM_PROCES_STATS_proc_wiev_modify_treeitem']="alter table _CRM_PROCES_STATS_proc_wiev modify treeitem varchar(255)";
  348. //!_CRM_PROCES_STATS_proc_wiev_UPDATE
  349. $sql['drop__CRM_PROCES_STATS_proc_wiev_UPDATE']="DROP TRIGGER IF EXISTS `_CRM_PROCES_STATS_proc_wiev_UPDATE`";
  350. $sql['create__CRM_PROCES_STATS_proc_wiev_UPDATE']="CREATE DEFINER=`root`@`localhost` TRIGGER `_CRM_PROCES_STATS_proc_wiev_UPDATE` AFTER UPDATE ON `CRM_PROCES` FOR EACH ROW BEGIN
  351. IF NEW.PARENT_ID<>OLD.PARENT_ID THEN
  352. SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
  353. replace into _CRM_PROCES_STATS_proc_wiev
  354. SELECT hi.ID,CRM_PROCES_tree_detect_init(hi.ID) as ID_PROCES_INIT,CONCAT(REPEAT(' ', lvl - 1), hi.id) AS treeitem,
  355. hierarchy_sys_connect_by_path('/', hi.id) AS path,
  356. PARENT_ID, lvl,
  357. CASE
  358. WHEN lvl >= @maxlevel THEN 1
  359. ELSE COALESCE(
  360. (
  361. SELECT 0
  362. FROM CRM_PROCES hl
  363. WHERE hl.PARENT_ID = ho.id
  364. AND hl.id <> @start_with
  365. LIMIT 1
  366. ), 1)
  367. END AS is_leaf,
  368. hierarchy_connect_by_iscycle(hi.id) AS is_cycle
  369. FROM (
  370. SELECT hierarchy_connect_by_parent_eq_prior_id_with_level_and_loop(id, @maxlevel) AS id,
  371. CAST(@level AS SIGNED) AS lvl
  372. FROM (
  373. SELECT @start_with := 0,
  374. @id := @start_with,
  375. @level := 0,
  376. @maxlevel := 1000
  377. ) vars, CRM_PROCES
  378. WHERE @id IS NOT NULL
  379. ) ho
  380. JOIN CRM_PROCES hi
  381. ON hi.id = ho.id ;
  382. END IF;
  383. END
  384. ";
  385. //!_CRM_PROCES_STATS_proc_wiev_INSERT
  386. $sql['_drop__CRM_PROCES_STATS_proc_wiev_INSERT']="DROP TRIGGER IF EXISTS `_CRM_PROCES_STATS_proc_wiev_INSERT`;";
  387. $sql['create__CRM_PROCES_STATS_proc_wiev_INSERT']="CREATE DEFINER=`root`@`localhost` TRIGGER `_CRM_PROCES_STATS_proc_wiev_INSERT` AFTER INSERT ON `CRM_PROCES` FOR EACH ROW BEGIN
  388. IF NEW.PARENT_ID>0 THEN
  389. SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
  390. replace into _CRM_PROCES_STATS_proc_wiev
  391. SELECT hi.ID,CRM_PROCES_tree_detect_init(hi.ID) as ID_PROCES_INIT,CONCAT(REPEAT(' ', lvl - 1), hi.id) AS treeitem,
  392. hierarchy_sys_connect_by_path('/', hi.id) AS path,
  393. PARENT_ID, lvl,
  394. CASE
  395. WHEN lvl >= @maxlevel THEN 1
  396. ELSE COALESCE(
  397. (
  398. SELECT 0
  399. FROM CRM_PROCES hl
  400. WHERE hl.PARENT_ID = ho.id
  401. AND hl.id <> @start_with
  402. LIMIT 1
  403. ), 1)
  404. END AS is_leaf,
  405. hierarchy_connect_by_iscycle(hi.id) AS is_cycle
  406. FROM (
  407. SELECT hierarchy_connect_by_parent_eq_prior_id_with_level_and_loop(id, @maxlevel) AS id,
  408. CAST(@level AS SIGNED) AS lvl
  409. FROM (
  410. SELECT @start_with := 0,
  411. @id := @start_with,
  412. @level := 0,
  413. @maxlevel := 1000
  414. ) vars, CRM_PROCES
  415. WHERE @id IS NOT NULL
  416. ) ho
  417. JOIN CRM_PROCES hi
  418. ON hi.id = ho.id ;
  419. END IF;
  420. END";
  421. $sql['drop__CRM_PROCES_GOTO_CACHE']="drop table if exists _CRM_PROCES_GOTO_CACHE;";
  422. $sql_tmp['select_CRM_PROCES_GOTO_CACHE']="select t1.ID,t1.ID_PROCES_INIT,t2.IF_TRUE_GOTO , t2.IF_TRUE_GOTO_FLAG, now() as TIMESTAMP
  423. from _CRM_PROCES_STATS_proc_wiev t1
  424. inner join CRM_PROCES as t2 on ( t1.ID=t2.ID and t2.IF_TRUE_GOTO>0 and t2.IF_TRUE_GOTO_FLAG='GOTO_AND_RETURN' )
  425. inner join CRM_PROCES as t3 on ( t2.IF_TRUE_GOTO=t3.ID and t2.IF_TRUE_GOTO>0 and t2.IF_TRUE_GOTO_FLAG='GOTO_AND_RETURN' )
  426. -- TODO@2014-09-04 trzeba rekursywnie podlapac wzajemne powiazania
  427. where t1.ID_PROCES_INIT>0
  428. ";
  429. $sql['create__CRM_PROCES_GOTO_CACHE']="create table _CRM_PROCES_GOTO_CACHE ".$sql_tmp['select_CRM_PROCES_GOTO_CACHE'] ;
  430. $sql['alter__CRM_PROCES_GOTO_CACHE_ID']="alter table _CRM_PROCES_GOTO_CACHE add index(ID)" ;
  431. $sql['alter__CRM_PROCES_GOTO_CACHE_ID_PROCES_INIT_type']="alter table _CRM_PROCES_GOTO_CACHE modify ID_PROCES_INIT int(11)" ;
  432. $sql['alter__CRM_PROCES_GOTO_CACHE_ID_PROCES_INIT']="alter table _CRM_PROCES_GOTO_CACHE add index(ID_PROCES_INIT)" ;
  433. $sql['alter__CRM_PROCES_GOTO_CACHE_IF_TRUE_GOTO']="alter table _CRM_PROCES_GOTO_CACHE add index(IF_TRUE_GOTO)" ;
  434. $sql['event_delete_CRM_PROCES_GOTO_CACHE']="drop event if exists _CRM_PROCES_GOTO_CACHE_event";
  435. $sql['event_create_CRM_PROCES_GOTO_CACHE']="CREATE DEFINER=root@localhost EVENT _CRM_PROCES_GOTO_CACHE_event
  436. ON SCHEDULE EVERY 1 DAY
  437. STARTS str_to_date( date_format(now(), '%Y%m%d 0500'), '%Y%m%d %H%i' ) + INTERVAL 1 DAY
  438. DO
  439. BEGIN
  440. SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
  441. truncate table _CRM_PROCES_INIT_STATS;
  442. replace into _CRM_PROCES_INIT_STATS ".$sql_tmp['select_CRM_PROCES_GOTO_CACHE']." ;
  443. END
  444. ";
  445. $sql['drop__CRM_PROCES_STATS']="drop table if exists _CRM_PROCES_STATS ;";
  446. $sql_tmp['select__CRM_PROCES_STATS']="select t1.ID , t2.ID_PROCES_INIT , count(t1.ID) as CSteps
  447. , (select count(ID) from CRM_IMAGE where REMOTE_TABLE='CRM_PROCES' and REMOTE_ID=t1.ID and A_STATUS!='DELETED' ) as CPics
  448. , (select count(ID) from CRM_PROCES_HIST where ID_USERS2=t1.ID ) as CProcEdits
  449. , (select count(ID) from CRM_WSKAZNIK where ID_PROCES=t1.ID and A_STATUS!='DELETED') as CRes
  450. , (select count(cwh.ID) from CRM_WSKAZNIK_HIST cwh left join CRM_WSKAZNIK as cw on cwh.ID_USERS2=cw.ID where cw.ID_PROCES=t1.ID ) as CResorEdits
  451. , (select count(ctph.ID) from CRM_TESTY_PYTANIA_HIST as ctph left join CRM_TESTY_PYTANIA as ctp on ctp.ID=ctph.ID_USERS2 where ctp.ID_PROCES=t1.ID ) as CQuestEdits
  452. , (select count(ci.ID) from CRM_IMAGE ci left join CRM_WSKAZNIK as cw on ci.REMOTE_ID=cw.ID and ci.REMOTE_TABLE='CRM_WSKAZNIK' where cw.ID_PROCES=t1.ID ) as CResPics
  453. , (select count(ci.ID) from CRM_IMAGE ci left join CRM_WSKAZNIK as cw on ci.REMOTE_ID=cw.ID_ZASOB and ci.REMOTE_TABLE='CRM_LISTA_ZASOBOW' where cw.ID_PROCES=t1.ID ) as CResPicsS
  454. , (select count(ID) from CRM_TESTY_PYTANIA where ID_PROCES=t1.ID ) as CQuest
  455. , (select count(ID) from CRM_TESTY_PYTANIA where ID_PROCES=t1.ID and TEST_TYPE='TEORETYCZNY' ) as CQuestTeor
  456. , (select count(ID) from CRM_TESTY_PYTANIA where ID_PROCES=t1.ID and TEST_TYPE='PRAKTYCZNY' ) as CQuestPract -- pytania praktyczne
  457. , (select count(cto.ID) from CRM_TESTY_ODPOWIEDZI as cto left join CRM_TESTY_PYTANIA as ctp on cto.ID_PYTANIE=ctp.ID where ctp.ID_PROCES=t1.ID ) as CQRes -- udzielono odpowiedzi
  458. , (select count(cto.ID) from CRM_TESTY_ODPOWIEDZI as cto left join CRM_TESTY_PYTANIA as ctp on cto.ID_PYTANIE=ctp.ID where ctp.ID_PROCES=t1.ID and ctp.TEST_TYPE='PRAKTYCZNY' ) as CQPRes -- udzielono odpowiedzi praktycznych
  459. , (select count(cto.ID) from CRM_TESTY_ODPOWIEDZI as cto left join CRM_TESTY_PYTANIA as ctp on cto.ID_PYTANIE=ctp.ID where ctp.ID_PROCES=t1.ID and cto.OCENA<1 ) as CQErrRes -- udzielono slabych odpowiedzi
  460. , (select count(distinct(au.ID)) from ADMIN_USERS as au left join CRM_AUTH_PROFILE as cap on au.ID=cap.REMOTE_ID and
  461. cap.REMOTE_TABLE='ADMIN_USERS' and cap.A_STATUS!='DELETED' left join CRM_WSKAZNIK as cw on cap.ID_ZASOB=cw.ID_ZASOB and cw.A_STATUS!='DELETED' where cw.ID_PROCES=t1.ID and au.A_STATUS='NORMAL' ) as CWorkers -- pracownikow aktualnie wykonujacych proces - blad w strukturach ADMIN_USERS statusy WAITING
  462. -- , (select count(distinct(au.ID)) from ADMIN_USERS as au
  463. -- left join CRM_AUTH_PROFILE as cap on au.ID=cap.REMOTE_ID and cap.REMOTE_TABLE='ADMIN_USERS' and cap.A_STATUS!='DELETED'
  464. -- left join CRM_WSKAZNIK as cw on cap.ID_ZASOB=cw.ID_ZASOB and cw.A_STATUS!='DELETED'
  465. -- left join CRM_TESTY_ODPOWIEDZI as cto on cto.A_RECORD_CREATE_AUTHOR=au.ADM_ACCOUNT
  466. -- left join CRM_TESTY_PYTANIA as ctp on ctp.ID=cto.ID_PYTANIE
  467. -- left join _CRM_PROCES_STATS_proc_wiev as cps on cps.ID=cw.ID_PROCES
  468. -- where cw.ID_PROCES=cps.ID and au.A_STATUS='NORMAL' and ctp.ID_PROCES=t1.ID and cps.ID_PROCES_INIT=t1.ID ) as CQAWorkers -- pracownikow ktorzy maja aktualny proces
  469. , (select count(distinct(cto.ID)) from CRM_TESTY_ODPOWIEDZI as cto left join CRM_TESTY_PYTANIA as ctp on cto.ID_PYTANIE=ctp.ID
  470. left join CRM_WSKAZNIK as cw on cw.ID_PROCES=ctp.ID_PROCES
  471. left join _CRM_PROCES_STATS_proc_wiev as cps on cps.ID=cw.ID_PROCES
  472. left join CRM_WSKAZNIK as cw1 on cw1.ID_PROCES=cps.ID_PROCES_INIT
  473. left join CRM_AUTH_PROFILE as cap on cap.ID_ZASOB=cw1.ID_ZASOB
  474. left join ADMIN_USERS as au on au.ID=cap.REMOTE_ID and cap.REMOTE_TABLE='ADMIN_USERS' and au.A_STATUS='NORMAL'
  475. where cw.ID_PROCES = t1.ID and au.ADM_ACCOUNT=cto.A_RECORD_CREATE_AUTHOR and cto.OCENA>1 and ctp.TEST_TYPE='TEORETYCZNY') as CQTAnsOk -- pracownicy ktorzy sa przyporzadkowani do procesow ile udzielili odpowiedzi
  476. , (select count(distinct(cto.ID)) from CRM_TESTY_ODPOWIEDZI as cto left join CRM_TESTY_PYTANIA as ctp on cto.ID_PYTANIE=ctp.ID
  477. left join CRM_WSKAZNIK as cw on cw.ID_PROCES=ctp.ID_PROCES
  478. left join _CRM_PROCES_STATS_proc_wiev as cps on cps.ID=cw.ID_PROCES
  479. left join CRM_WSKAZNIK as cw1 on cw1.ID_PROCES=cps.ID_PROCES_INIT
  480. left join CRM_AUTH_PROFILE as cap on cap.ID_ZASOB=cw1.ID_ZASOB
  481. left join ADMIN_USERS as au on au.ID=cap.REMOTE_ID and cap.REMOTE_TABLE='ADMIN_USERS' and au.A_STATUS='NORMAL'
  482. where cw.ID_PROCES = t1.ID and au.ADM_ACCOUNT=cto.A_RECORD_CREATE_AUTHOR and cto.OCENA>1 and ctp.TEST_TYPE='PRAKTYCZNY') as CQPWAnsOk -- pracownicy ktorzy sa przyporzadkowani do procesow ile udzielili odpowiedzi
  483. , (select count(distinct(cto.ID)) from CRM_TESTY_ODPOWIEDZI as cto left join CRM_TESTY_PYTANIA as ctp on cto.ID_PYTANIE=ctp.ID
  484. left join CRM_WSKAZNIK as cw on cw.ID_PROCES=ctp.ID_PROCES
  485. left join _CRM_PROCES_STATS_proc_wiev as cps on cps.ID=cw.ID_PROCES
  486. left join CRM_WSKAZNIK as cw1 on cw1.ID_PROCES=cps.ID_PROCES_INIT
  487. left join CRM_AUTH_PROFILE as cap on cap.ID_ZASOB=cw1.ID_ZASOB
  488. left join ADMIN_USERS as au on au.ID=cap.REMOTE_ID and cap.REMOTE_TABLE='ADMIN_USERS'
  489. where cw.ID_PROCES = t1.ID and au.ADM_ACCOUNT=cto.A_RECORD_CREATE_AUTHOR and cto.OCENA>1 and ctp.TEST_TYPE='PRAKTYCZNY') as CQPAnsOk -- pracownicy ktorzy sa przyporzadkowani do procesow ile udzielili odpowiedzi praktycznych
  490. , (select min(A_RECORD_CREATE_DATE) from CRM_WSKAZNIK where ID_PROCES=t1.ID and A_STATUS!='DELETED') as MinResCreDate
  491. , (select max(A_RECORD_UPDATE_DATE) from CRM_WSKAZNIK where ID_PROCES=t1.ID and A_STATUS!='DELETED') as MaxResUpdDate
  492. , (select min(A_RECORD_CREATE_DATE) from CRM_PROCES where ID=t1.ID and A_STATUS!='DELETED') as MinProcCreDate
  493. , (select max(A_RECORD_UPDATE_DATE) from CRM_PROCES where ID=t1.ID and A_STATUS!='DELETED') as MaxProcUpdDate
  494. from
  495. _CRM_PROCES_STATS_proc_wiev as t2 join CRM_PROCES as t1 on t1.ID=t2.ID
  496. -- where t2.ID_PROCES_INIT=994
  497. -- group by t2.ID_PROCES_INIT
  498. group by t1.ID
  499. order by t1.A_RECORD_UPDATE_DATE desc";
  500. $sql['create__CRM_PROCES_STATS']="create table _CRM_PROCES_STATS
  501. ".$sql_tmp['select__CRM_PROCES_STATS'] ;
  502. $sql['alter__CRM_PROCES_STATS_unique_id']="alter table _CRM_PROCES_STATS add unique(ID)";
  503. $sql['drop__CRM_PROCES_INIT_STATS']="drop table if exists _CRM_PROCES_INIT_STATS";
  504. $sql_tmp['select_CRM_PROCES_INIT_STATS']="select t1.ID_PROCES_INIT as ID,left(t2.`DESC`,100) as `DESC`,t3.path, t3.lvl,sum(CSteps) as SCSteps,sum(CPics) as SCPics ,sum(CProcEdits+CResorEdits) as SCPREdits,
  505. sum(CQuestEdits) as SCQuestEdits,sum(CResPics) as SCResPics , sum(CResPicsS) as SCResPicsS,sum(CQuest) as SCQuest,sum(CQuestPract) as SCQuestPract,
  506. sum(CQRes) as SCQRes,sum(CQPRes) as SCQPRes,sum(CQErrRes) as CQErrRes,sum(CWorkers) as SCWorkers,sum(CQTAnsOk) as SCQTAnsOk,sum(CQPWAnsOk) as CQPWAnsOk, sum(CQPAnsOk) as SCQPAnsOk
  507. ,(select count(ID) from CRM_TESTY where ID_PROCES_INIT=t1.ID_PROCES_INIT and TEST_TYPE='TEORETYCZNY') as STestTeor
  508. ,(select count(ID) from CRM_TESTY where ID_PROCES_INIT=t1.ID_PROCES_INIT and TEST_TYPE='PRAKTYCNZY') as STestPrakt
  509. ,(select avg(OCENA) from CRM_TESTY where ID_PROCES_INIT=t1.ID_PROCES_INIT) as AvgMark
  510. ,(select avg(DISCOUNT) from CRM_TESTY where ID_PROCES_INIT=t1.ID_PROCES_INIT) as AvgDiscount
  511. ,min(MinProcCreDate) as MinProcCreDate , max(MaxProcUpdDate) as MaxProcUpdDate
  512. -- todo lista osob ktora powinna zdac test teoretyczny i taka sama praktyczny wyliczana w oparciu o to czy sa testy i ile jest stanowisk
  513. , (
  514. select if ((select sum(CQuestTeor) from _CRM_PROCES_STATS where ID_PROCES_INIT=t1.ID_PROCES_INIT)>0,
  515. concat('brak:',sum(if(ct.ID<1 or ct.ID is null ,1,0)),'/popraw:' ,
  516. sum(if(ct.OCENA > 0 and ct.OCENA<2.5,1,0)) ) ,0) from ADMIN_USERS as au
  517. left join CRM_AUTH_PROFILE as cap on cap.REMOTE_ID=au.ID and cap.REMOTE_TABLE='ADMIN_USERS' and cap.A_STATUS in ('NORMAL','WAITING')
  518. left join CRM_WSKAZNIK as cw on cw.ID_ZASOB=cap.ID_ZASOB
  519. left join CRM_TESTY as ct on ct.ID_PROCES_INIT=cw.ID_PROCES and ct.ID_TESTER=au.ID and ct.TEST_TYPE='TEORETYCZNY'
  520. where au.A_STATUS='NORMAL' and cw.ID_PROCES=t1.ID_PROCES_INIT
  521. ) as CTTWinfo
  522. , (
  523. select if ((select sum(CQuestTeor) from _CRM_PROCES_STATS where ID_PROCES_INIT=t1.ID_PROCES_INIT)>0,
  524. concat('brak:',sum(if(ct.ID<1 or ct.ID is null ,1,0)),'/popraw:' ,
  525. sum(if(ct.OCENA > 0 and ct.OCENA<2.5,1,0)) ) ,0) from ADMIN_USERS as au
  526. left join CRM_AUTH_PROFILE as cap on cap.REMOTE_ID=au.ID and cap.REMOTE_TABLE='ADMIN_USERS' and cap.A_STATUS in ('NORMAL','WAITING')
  527. left join CRM_WSKAZNIK as cw on cw.ID_ZASOB=cap.ID_ZASOB
  528. left join CRM_TESTY as ct on ct.ID_PROCES_INIT=cw.ID_PROCES and ct.ID_TESTER=au.ID and ct.TEST_TYPE='PRAKTYCZNY'
  529. where au.A_STATUS='NORMAL' and cw.ID_PROCES=t1.ID_PROCES_INIT
  530. ) as CTPWinfo
  531. , '' as A_ADM_COMPANY, '' as A_CLASSIFIED
  532. from _CRM_PROCES_STATS as t1
  533. left join CRM_PROCES as t2 on t1.ID_PROCES_INIT=t2.ID
  534. left join _CRM_PROCES_STATS_proc_wiev as t3 on t3.ID=t1.ID_PROCES_INIT
  535. group by t1.ID_PROCES_INIT
  536. ";
  537. $sql['create__CRM_PROCES_INIT_STATS']="create table _CRM_PROCES_INIT_STATS ".$sql_tmp['select_CRM_PROCES_INIT_STATS'];
  538. $sql['alter__CRM_PROCES_INIT_STATS_mod_id']="alter table _CRM_PROCES_INIT_STATS modify ID int(11)";
  539. $sql['alter__CRM_PROCES_INIT_STATS_add_uniq']="alter table _CRM_PROCES_INIT_STATS add unique(ID)";
  540. $sql['alter__CRM_PROCES_INIT_STATS_SCPREdits']="alter table `_CRM_PROCES_INIT_STATS` CHANGE `SCPREdits` `SCPREdits` decimal(42,0)";
  541. $sql['event_delete_CRM_PROCES_INIT_STATS']="drop event if exists _CRM_PROCES_INIT_STATS_event";
  542. $sql['event_create_CRM_PROCES_INIT_STATS']="CREATE DEFINER=root@localhost EVENT _CRM_PROCES_INIT_STATS_event
  543. ON SCHEDULE EVERY 1 DAY
  544. STARTS str_to_date( date_format(now(), '%Y%m%d 0500'), '%Y%m%d %H%i' ) + INTERVAL 1 DAY
  545. DO
  546. BEGIN
  547. SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
  548. replace into _CRM_PROCES_INIT_STATS ".$sql_tmp['select_CRM_PROCES_INIT_STATS']." ;
  549. END
  550. ";
  551. $sql['event_delete_CRM_PROCES_STATS']="drop event if exists _CRM_PROCES_STATS_event";
  552. $sql['event_create_CRM_PROCES_STATS']="CREATE DEFINER=root@localhost EVENT _CRM_PROCES_STATS_event
  553. ON SCHEDULE EVERY 1 DAY
  554. STARTS str_to_date( date_format(now(), '%Y%m%d 0500'), '%Y%m%d %H%i' ) + INTERVAL 1 DAY
  555. DO
  556. BEGIN
  557. SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
  558. replace into _CRM_PROCES_STATS ".$sql_tmp['select__CRM_PROCES_STATS']." ;
  559. END
  560. ";
  561. /*
  562. -- stworzenie tabeli do planowania harmonogramow testow i szkolen
  563. -- proponuje widok!
  564. -- drop table if exists _CRM_PROCES_USER_STATS;
  565. -- create table _CRM_PROCES_USER_STATS
  566. -- DROP VIEW _CRM_PROCES_USER_STATS_wiev;
  567. */
  568. $sql['drop_CRM_LISTA_ZASOBOW_tree_detect_kierownik']="drop function if exists CRM_LISTA_ZASOBOW_tree_detect_kierownik";
  569. $sql['create_CRM_LISTA_ZASOBOW_tree_detect_kierownik']="CREATE DEFINER=`root`@`localhost` FUNCTION `CRM_LISTA_ZASOBOW_tree_detect_kierownik`(`node` INT) RETURNS text CHARSET latin2
  570. READS SQL DATA
  571. BEGIN
  572. DECLARE _path INT;
  573. DECLARE _type CHAR(255);
  574. DECLARE _cpath TEXT;
  575. DECLARE _id INT;
  576. DECLARE _id_cur INT;
  577. DECLARE _group_name CHAR(255);
  578. DECLARE EXIT HANDLER FOR NOT FOUND RETURN _group_name;
  579. SET _id = COALESCE(node, @id);
  580. SELECT NAME from LDAP_GROUPS where ID=node
  581. INTO _group_name;
  582. label1: LOOP
  583. SELECT t1.PARENT_ID,t1.TYPE,t1.ID
  584. INTO _id,_type,_id_cur
  585. FROM CRM_LISTA_ZASOBOW t1
  586. WHERE t1.id = _id
  587. -- AND COALESCE(id <> @start_with, TRUE);
  588. ;
  589. if _type = 'STANOWISKO' and node!=_id_cur THEN
  590. SET _path = _id_cur;
  591. SELECT NAME from LDAP_GROUPS where ID=_id_cur
  592. INTO _group_name;
  593. RETURN _group_name;
  594. LEAVE label1;
  595. END IF;
  596. END LOOP label1;
  597. END";
  598. $sql['replace__CRM_PROCES_USER_STATS_wiev_to_group']="create or replace definer=`root`@`localhost` view _CRM_PROCES_USER_STATS_wiev_to_group as
  599. select concat(au.ID,cw.ID,0) as ID,cps.ID as ID_PROCES , left(cps.`DESC`,50) as `DESC`
  600. ,au.ADM_ACCOUNT
  601. ,cps.path
  602. , 'TEORETYCZNY' as TEST_TYPE,cps.SCQuest , max(ct.OCENA) as OCENA , max(ct.TEST_END) as TEST_END
  603. -- , max(if(ct.TEST_TYPE='TEORETYCZNY',ct.OCENA,NULL)) as OCENA_T
  604. -- , max(if(ct.TEST_TYPE='PRAKTYCZNY',ct.OCENA,NULL)) as OCENA_P
  605. , au.EMPLOYEE_TYPE , au.A_RECORD_CREATE_DATE, au.A_RECORD_UPDATE_DATE , au.L_APPOITMENT_DATE, au.L_APPOITMENT_INFO, au.L_APPOITMENT_USER
  606. from ADMIN_USERS as au
  607. left join CRM_AUTH_PROFILE as cap on cap.REMOTE_ID=au.ID and cap.REMOTE_TABLE='ADMIN_USERS' and cap.A_STATUS in ('NORMAL','WAITING')
  608. left join CRM_WSKAZNIK as cw on cw.ID_ZASOB=cap.ID_ZASOB and cw.A_STATUS in ('NORMAL','WAITING')
  609. left join CRM_TESTY as ct on ct.ID_PROCES_INIT=cw.ID_PROCES and ct.ID_TESTER=au.ID and ct.TEST_TYPE='TEORETYCZNY'
  610. left join _CRM_PROCES_INIT_STATS as cps on cps.ID=cw.ID_PROCES
  611. where au.A_STATUS='NORMAL'
  612. and cps.SCQuest>0
  613. group by au.ID, cps.ID
  614. -- order by ct.OCENA desc
  615. -- limit 10
  616. -- dodatkowe GOTO_AND_RETURN
  617. union
  618. select concat(au.ID,cw.ID,1) as ID,cps.ID as ID_PROCES , left(cps.`DESC`,50) as `DESC`
  619. ,au.ADM_ACCOUNT
  620. ,cps.path
  621. , 'TEORETYCZNY' as TEST_TYPE,cps.SCQuest , max(ct.OCENA) as OCENA , max(ct.TEST_END) as TEST_END
  622. -- , max(if(ct.TEST_TYPE='TEORETYCZNY',ct.OCENA,NULL)) as OCENA_T
  623. -- , max(if(ct.TEST_TYPE='PRAKTYCZNY',ct.OCENA,NULL)) as OCENA_P
  624. , au.EMPLOYEE_TYPE , au.A_RECORD_CREATE_DATE, au.A_RECORD_UPDATE_DATE , au.L_APPOITMENT_DATE, au.L_APPOITMENT_INFO, au.L_APPOITMENT_USER
  625. from ADMIN_USERS as au
  626. left join CRM_AUTH_PROFILE as cap on cap.REMOTE_ID=au.ID and cap.REMOTE_TABLE='ADMIN_USERS' and cap.A_STATUS in ('NORMAL','WAITING')
  627. left join CRM_WSKAZNIK as cw on cw.ID_ZASOB=cap.ID_ZASOB and cw.A_STATUS in ('NORMAL','WAITING')
  628. left join _CRM_PROCES_GOTO_CACHE as cpgc on cpgc.ID_PROCES_INIT=cw.ID_PROCES
  629. left join CRM_TESTY as ct on ct.ID_PROCES_INIT=cpgc.IF_TRUE_GOTO and ct.ID_TESTER=au.ID and ct.TEST_TYPE='TEORETYCZNY'
  630. left join _CRM_PROCES_INIT_STATS as cps on cps.ID=cpgc.IF_TRUE_GOTO
  631. where au.A_STATUS='NORMAL'
  632. and cps.SCQuest>0
  633. group by au.ID, cps.ID
  634. union
  635. select concat(au.ID,cw.ID,2) as ID, cps.ID as ID_PROCES , left(cps.`DESC`,50) as `DESC`
  636. ,au.ADM_ACCOUNT
  637. ,cps.path
  638. , 'PRAKTYCZNY' as TEST_TYPE, cps.SCQuestPract , max(ct.OCENA) as OCENA, max(ct.TEST_END) as TEST_END
  639. , au.EMPLOYEE_TYPE , au.A_RECORD_CREATE_DATE, au.A_RECORD_UPDATE_DATE , au.L_APPOITMENT_DATE, au.L_APPOITMENT_INFO, au.L_APPOITMENT_USER
  640. from ADMIN_USERS as au
  641. left join CRM_AUTH_PROFILE as cap on cap.REMOTE_ID=au.ID and cap.REMOTE_TABLE='ADMIN_USERS' and cap.A_STATUS in ('NORMAL','WAITING')
  642. left join CRM_WSKAZNIK as cw on cw.ID_ZASOB=cap.ID_ZASOB and cw.A_STATUS in ('NORMAL','WAITING')
  643. left join CRM_TESTY as ct on ct.ID_PROCES_INIT=cw.ID_PROCES and ct.ID_TESTER=au.ID and ct.TEST_TYPE='PRAKTYCZNY'
  644. left join _CRM_PROCES_INIT_STATS as cps on cps.ID=cw.ID_PROCES
  645. where au.A_STATUS='NORMAL'
  646. and cps.SCQuestPract>0
  647. group by au.ID,cps.ID
  648. -- dodatkowe GOTO_AND_RETURN
  649. union
  650. select concat(au.ID,cw.ID,3) as ID, cps.ID as ID_PROCES , left(cps.`DESC`,50) as `DESC`
  651. ,au.ADM_ACCOUNT
  652. ,cps.path
  653. , 'PRAKTYCZNY' as TEST_TYPE, cps.SCQuestPract , max(ct.OCENA) as OCENA, max(ct.TEST_END) as TEST_END
  654. , au.EMPLOYEE_TYPE, au.A_RECORD_CREATE_DATE, au.A_RECORD_UPDATE_DATE , au.L_APPOITMENT_DATE, au.L_APPOITMENT_INFO, au.L_APPOITMENT_USER
  655. from ADMIN_USERS as au
  656. left join CRM_AUTH_PROFILE as cap on cap.REMOTE_ID=au.ID and cap.REMOTE_TABLE='ADMIN_USERS' and cap.A_STATUS in ('NORMAL','WAITING')
  657. left join CRM_WSKAZNIK as cw on cw.ID_ZASOB=cap.ID_ZASOB and cw.A_STATUS in ('NORMAL','WAITING')
  658. left join _CRM_PROCES_GOTO_CACHE as cpgc on cpgc.ID_PROCES_INIT=cw.ID_PROCES
  659. left join CRM_TESTY as ct on ct.ID_PROCES_INIT=cpgc.IF_TRUE_GOTO and ct.ID_TESTER=au.ID and ct.TEST_TYPE='PRAKTYCZNY'
  660. left join _CRM_PROCES_INIT_STATS as cps on cps.ID=cpgc.IF_TRUE_GOTO
  661. where au.A_STATUS='NORMAL'
  662. and cps.SCQuestPract>0
  663. group by au.ID,cps.ID
  664. ";
  665. $sql['replace__CRM_PROCES_USER_STATS_wiev']="create or replace definer=`root`@`localhost` view _CRM_PROCES_USER_STATS_wiev as
  666. select ID,ID_PROCES, `DESC`, ADM_ACCOUNT, EMPLOYEE_TYPE,A_RECORD_CREATE_DATE, A_RECORD_UPDATE_DATE ,L_APPOITMENT_DATE,L_APPOITMENT_INFO, L_APPOITMENT_USER, path,TEST_TYPE,SCQuest,OCENA,TEST_END
  667. from _CRM_PROCES_USER_STATS_wiev_to_group
  668. group by ADM_ACCOUNT,ID_PROCES,TEST_TYPE ";
  669. $sql['event_drop_CRM_PROCES_USER_OCENA_OKRES']="drop event if exists CRM_PROCES_USER_OCENA_OKRES_event ";
  670. $sql['event_create_CRM_PROCES_USER_OCENA_OKRES']=" CREATE DEFINER=root@localhost EVENT CRM_PROCES_USER_OCENA_OKRES_event
  671. ON SCHEDULE EVERY 1 DAY
  672. STARTS str_to_date( date_format(now(), '%Y%m%d 0600'), '%Y%m%d %H%i' ) + INTERVAL 1 DAY
  673. DO
  674. BEGIN
  675. SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
  676. insert ignore into CRM_PROCES_USER_OCENA_OKRES (ID,CW_ID,DATE,ID_PROCES,`DESC`,OPIS_ZASOB,L_APPOITMENT_USER,A_CLASSIFIED,A_ADM_COMPANY,FUNCTION)
  677. select '', group_concat(cw.ID) as CW_ID , now() ,cps.ID as ID_PROCES , left(cps.`DESC`,200) as `DESC` , group_concat(cw.`OPIS_ZASOB`) as OPIS_ZASOB
  678. ,au.ADM_ACCOUNT ,CRM_LISTA_ZASOBOW_tree_detect_kierownik(cw.ID_ZASOB),CRM_LISTA_ZASOBOW_tree_detect_kierownik(cw.ID_ZASOB),concat('[',cz.ID,'] ',cz.`DESC`)
  679. from ADMIN_USERS as au
  680. left join CRM_AUTH_PROFILE as cap on cap.REMOTE_ID=au.ID and cap.REMOTE_TABLE='ADMIN_USERS' and cap.A_STATUS in ('NORMAL','WAITING') and cap.SHOW_IN_PERIOD_MARK!='NO'
  681. left join CRM_WSKAZNIK as cw on cw.ID_ZASOB=cap.ID_ZASOB and cw.A_STATUS in ('NORMAL','WAITING')
  682. left join CRM_LISTA_ZASOBOW as cz on cz.ID=cw.ID_ZASOB
  683. -- left join CRM_TESTY as ct on ct.ID_PROCES_INIT=cw.ID_PROCES and ct.ID_TESTER=au.ID and ct.TEST_TYPE='TEORETYCZNY'
  684. left join _CRM_PROCES_INIT_STATS as cps on cps.ID=cw.ID_PROCES
  685. where au.A_STATUS='NORMAL' and cps.ID is not null
  686. -- and cps.SCQuest>0
  687. group by au.ID, cps.ID , cw.ID;
  688. END
  689. ";
  690. $sql['procedure_GRAFIK_PRACY_FILL_DATE_drop']="drop procedure if exists GRAFIK_PRACY_FILL_DATE";
  691. $sql['procedure_GRAFIK_PRACY_FILL_DATE_create']="CREATE PROCEDURE GRAFIK_PRACY_FILL_DATE(start_date DATE, end_date DATE)
  692. BEGIN
  693. DECLARE crt_date DATE;
  694. DECLARE USER TEXT;
  695. DECLARE COUNT_USERS integer;
  696. DECLARE USERS_counter int;
  697. DECLARE ACL_GROUP TEXT;
  698. DECLARE USER_GROUP TEXT;
  699. SET @USERS_counter = 0;
  700. SET USERS_counter = 0;
  701. SET @ACL_GROUP = '';
  702. SET @USER_GROUP = '';
  703. SELECT COUNT(`ID`) into COUNT_USERS FROM ADMIN_USERS WHERE EMPLOYEE_TYPE='Pracownik' and A_STATUS='NORMAL';
  704. WHILE USERS_counter < COUNT_USERS DO
  705. SET crt_date=start_date;
  706. PREPARE stmt FROM \"SELECT ADM_ACCOUNT into @USER from ADMIN_USERS WHERE EMPLOYEE_TYPE='Pracownik' and A_STATUS='NORMAL' limit ?,1;\";
  707. EXECUTE stmt USING @USERS_counter ;
  708. DEALLOCATE PREPARE stmt;
  709. PREPARE stmt FROM \"SELECT DEFAULT_ACL_GROUP into @ACL_GROUP from ADMIN_USERS WHERE EMPLOYEE_TYPE='Pracownik' and A_STATUS='NORMAL' limit ?,1;\";
  710. EXECUTE stmt USING @USERS_counter ;
  711. DEALLOCATE PREPARE stmt;
  712. SELECT GROUP_CONCAT(concat('[',cap.ID_ZASOB,']')) into @USER_GROUP from ADMIN_USERS au
  713. LEFT JOIN CRM_AUTH_PROFILE as cap on cap.REMOTE_ID=au.ID and cap.REMOTE_TABLE='ADMIN_USERS' and cap.A_STATUS in ('NORMAL','WAITING')
  714. WHERE au.ADM_ACCOUNT=@USER ;
  715. WHILE crt_date < end_date DO
  716. INSERT ignore INTO GRAFIK_PRACY (`L_APPOITMENT_USER`,`DATE`,`WEEK`,`DAY_OF_WEEK`,`A_CLASSIFIED`,`A_ADM_COMPANY`,`USER_GROUPS`) VALUES(@USER , crt_date,date_format(crt_date,'%v'),date_format(crt_date,'%W'), @ACL_GROUP,@ACL_GROUP, @USER_GROUP );
  717. SET crt_date = ADDDATE(crt_date, INTERVAL 1 DAY);
  718. END WHILE;
  719. SET USERS_counter = USERS_counter +1;
  720. SET @USERS_counter = @USERS_counter +1;
  721. END WHILE;
  722. END";
  723. $sql['event_delete_GRAFIK_PRACY_FILL_DATE']="drop event if exists GRAFIK_PRACY_FILL_DATE_event";
  724. $sql['event_create_GRAFIK_PRACY_FILL_DATE']="CREATE DEFINER=root@localhost EVENT GRAFIK_PRACY_FILL_DATE_event
  725. ON SCHEDULE EVERY 1 DAY
  726. STARTS str_to_date( date_format(now(), '%Y%m%d 0400'), '%Y%m%d %H%i' ) + INTERVAL 1 DAY
  727. DO
  728. BEGIN
  729. call GRAFIK_PRACY_FILL_DATE(date_format(now(),'%Y-%m-01'),date_format(DATE_ADD(now(),INTERVAL + 2 MONTH ),'%Y-%m-01'));
  730. END
  731. ";
  732. $sql['view__GRAFIK_PRACY']="create or replace ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `GRAFIK_PRACY_view` as
  733. select `GRAFIK_PRACY`.`ID` AS `ID`,
  734. year(`GRAFIK_PRACY`.`DATE`) AS `rok`, month(`GRAFIK_PRACY`.`DATE`) AS `miesiac`,
  735. `GRAFIK_PRACY`.`L_APPOITMENT_USER` AS `L_APPOITMENT_USER`,
  736. (sum(time_to_sec(timediff(`GRAFIK_PRACY`.`END_WORK_HOUR`,`GRAFIK_PRACY`.`START_WORK_HOUR`))) / 3600) AS `GODZIN_PLANOWO`,
  737. (sum(time_to_sec(timediff(if(`GRAFIK_PRACY`.`END_WORK_HOUR_CONFIRM`,`GRAFIK_PRACY`.`END_WORK_HOUR_CONFIRM`,`GRAFIK_PRACY`.`START_WORK_HOUR_CONFIRM`),`GRAFIK_PRACY`.`START_WORK_HOUR_CONFIRM`))) / 3600) AS `GODZIN_FAKTYCZNIE`,
  738. (sum(if((time_to_sec(timediff(`GRAFIK_PRACY`.`START_WORK_HOUR_CONFIRM`,`GRAFIK_PRACY`.`START_WORK_HOUR`)) > 0),time_to_sec(timediff(`GRAFIK_PRACY`.`START_WORK_HOUR_CONFIRM`,`GRAFIK_PRACY`.`START_WORK_HOUR`)),0)) / 3600) AS `GODZIN_SPOZNIEN`,
  739. (sum(if(`GRAFIK_PRACY`.`END_WORK_HOUR_CONFIRM` and (time_to_sec(timediff(`GRAFIK_PRACY`.`END_WORK_HOUR`,`GRAFIK_PRACY`.`END_WORK_HOUR_CONFIRM`)) > 0),time_to_sec(timediff(`GRAFIK_PRACY`.`END_WORK_HOUR`,`GRAFIK_PRACY`.`END_WORK_HOUR_CONFIRM`)),0)) / 3600) AS `GODZIN_WYJSC_PRZED_CZASEM`,
  740. (sum((`GRAFIK_PRACY`.`BREAK1_MINUTES` + `GRAFIK_PRACY`.`BREAK2_MINUTES`)) / 60) AS `CZAS_PRZERW`,
  741. sum((if((`GRAFIK_PRACY`.`BREAK1_MINUTES` > 0),1,0) + if((`GRAFIK_PRACY`.`BREAK2_MINUTES` > 0),1,0))) AS `ILOSC_PRZERW`,
  742. sum(if(`GRAFIK_PRACY`.`START_WORK_HOUR_CONFIRM` and `GRAFIK_PRACY`.`END_WORK_HOUR_CONFIRM`,1,0)) AS `DNI_W_PRACY`,
  743. count(`GRAFIK_PRACY`.`ID`) AS `ILOSC_DNI`,
  744. sum(if(`GRAFIK_PRACY`.`START_WORK_HOUR_CONFIRM` and `GRAFIK_PRACY`.`END_WORK_HOUR_CONFIRM`, time_to_sec(timediff(`GRAFIK_PRACY`.`END_WORK_HOUR_CONFIRM`,`GRAFIK_PRACY`.`START_WORK_HOUR_CONFIRM`)) - time_to_sec(timediff(`GRAFIK_PRACY`.`END_WORK_HOUR`,`GRAFIK_PRACY`.`START_WORK_HOUR`)),0) / 3600) AS `NADGODZINY`,
  745. sum(if(`GRAFIK_PRACY`.`START_WORK_HOUR_CONFIRM` and time_to_sec(timediff('07:00:00', `GRAFIK_PRACY`.`START_WORK_HOUR_CONFIRM`))>0, time_to_sec(timediff('07:00:00',`GRAFIK_PRACY`.`START_WORK_HOUR_CONFIRM`)),0) + if(`GRAFIK_PRACY`.`END_WORK_HOUR_CONFIRM` and time_to_sec(timediff(`GRAFIK_PRACY`.`END_WORK_HOUR_CONFIRM`,'21:00:00'))>0, time_to_sec(timediff(`GRAFIK_PRACY`.`END_WORK_HOUR_CONFIRM`,'21:00:00')),0)) / 3600 AS GODZIN_W_NOCY,
  746. (sum(if(`GRAFIK_PRACY`.`START_WORK_HOUR_CONFIRM` and (time_to_sec(timediff(`GRAFIK_PRACY`.`START_WORK_HOUR`,`GRAFIK_PRACY`.`START_WORK_HOUR_CONFIRM`)) > 0),time_to_sec(timediff(`GRAFIK_PRACY`.`START_WORK_HOUR`,`GRAFIK_PRACY`.`START_WORK_HOUR_CONFIRM`)),0)) / 3600) AS `GODZIN_PRZYJSC_PRZED_CZASEM`,
  747. (sum(if((time_to_sec(timediff(`GRAFIK_PRACY`.`END_WORK_HOUR_CONFIRM`,`GRAFIK_PRACY`.`END_WORK_HOUR`)) > 0),time_to_sec(timediff(`GRAFIK_PRACY`.`END_WORK_HOUR_CONFIRM`,`GRAFIK_PRACY`.`END_WORK_HOUR`)),0)) / 3600) AS `GODZIN_WYJSC_PO_CZASIE` from `GRAFIK_PRACY`
  748. group by
  749. `GRAFIK_PRACY`.`L_APPOITMENT_USER`, year(`GRAFIK_PRACY`.`DATE`), month(`GRAFIK_PRACY`.`DATE`);
  750. ";
  751. $sql['view__in7_dziennik_koresp_budget_view']="
  752. CREATE or replace ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `in7_dziennik_koresp_budget_view` AS select `k`.`ID` AS `ID`,`k`.`path` AS `path`,`k`.`ID_PROJECT` AS `ID_PROJECT`,year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) AS `rok`,month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) AS `miesiac`,date_format(`k`.`K_DATA_OTRZYMANEJ_KORESP`,'%Y-%m') AS `data`,sum(`k`.`COST_VALUE`) AS `sum_k`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '0') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_0`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '1') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_1`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '2') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_2`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '3') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_3`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '4') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_4`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '5') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_5`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '6') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_6`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '7') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_7`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '8') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_8`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '9') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_9`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '10') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_10`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '11') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_11`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '12') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_12`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '13') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_13`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '0') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_0`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '1') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_1`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '2') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_2`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '3') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_3`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '4') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_4`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '5') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_5`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '6') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_6`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '7') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_7`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '8') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_8`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '9') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_9`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '10') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_10`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '11') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_11`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '12') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_12`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '13') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_13`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '0') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_0`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '1') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_1`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '2') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_2`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '3') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_3`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '4') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_4`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '5') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_5`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '6') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_6`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '7') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_7`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '8') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_8`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '9') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_9`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '10') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_10`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '11') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_11`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '12') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_12`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '13') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_13` from `IN7_DZIENNIK_KORESP` `k` where (`k`.`COST_VALUE` <> '') group by `k`.`ID_PROJECT`;
  753. ";
  754. $sql['view__in7_dziennik_koresp_budget_main_view']="
  755. CREATE or replace ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `in7_dziennik_koresp_budget_main_view` AS select cast(substring_index(substring_index(`k`.`path`,'-',2),'-',-(1)) as signed) AS `ID`,substring_index(`k`.`path`,'-',2) AS `path`,cast(concat(',',group_concat(distinct `k`.`ID_PROJECT` order by `k`.`ID_PROJECT` ASC separator ','),',') as char charset utf8) AS `ID_PROJECT`,year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) AS `rok`, sum(`k`.`COST_VALUE`) AS `sum_k`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '0') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_0`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '1') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_1`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '2') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_2`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '3') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_3`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '4') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_4`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '5') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_5`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '6') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_6`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '7') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_7`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '8') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_8`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '9') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_9`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '10') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_10`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '11') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_11`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '12') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_12`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '13') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = year(now()))),`k`.`COST_VALUE`,0)) AS `sum_13`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '0') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_0`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '1') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_1`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '2') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_2`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '3') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_3`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '4') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_4`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '5') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_5`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '6') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_6`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '7') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_7`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '8') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_8`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '9') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_9`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '10') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_10`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '11') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_11`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '12') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_12`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '13') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) - 1))),`k`.`COST_VALUE`,0)) AS `sum_ly_13`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '0') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_0`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '1') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_1`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '2') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_2`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '3') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_3`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '4') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_4`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '5') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_5`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '6') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_6`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '7') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_7`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '8') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_8`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '9') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_9`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '10') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_10`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '11') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_11`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '12') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_12`,sum(if(((month(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = '13') and (year(`k`.`K_DATA_OTRZYMANEJ_KORESP`) = (year(now()) + 1))),`k`.`COST_VALUE`,0)) AS `sum_ny_13` from `IN7_DZIENNIK_KORESP` `k` where (`k`.`COST_VALUE` <> '') group by substring_index(`k`.`path`,'-',2);
  756. ";
  757. $sql['view__budget_project_to_realization_view']="
  758. CREATE or replace ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `budget_project_to_realization_view` AS select `p`.`ID` AS `ID`,`p`.`ID_PROJECT` AS `ID_PROJECT`,`k`.`path` AS `path`,`p`.`YEAR` AS `YEAR`,`p`.`MONTH_1_VALUE` AS `MONTH_1_VALUE`,`k`.`sum_1` AS `sum_1`,`p`.`MONTH_2_VALUE` AS `MONTH_2_VALUE`,`k`.`sum_2` AS `sum_2`,`p`.`MONTH_3_VALUE` AS `MONTH_3_VALUE`,`k`.`sum_3` AS `sum_3`,`p`.`MONTH_4_VALUE` AS `MONTH_4_VALUE`,`k`.`sum_4` AS `sum_4`,`p`.`MONTH_5_VALUE` AS `MONTH_5_VALUE`,`k`.`sum_5` AS `sum_5`,`p`.`MONTH_6_VALUE` AS `MONTH_6_VALUE`,`k`.`sum_6` AS `sum_6`,`p`.`MONTH_7_VALUE` AS `MONTH_7_VALUE`,`k`.`sum_7` AS `sum_7`,`p`.`MONTH_8_VALUE` AS `MONTH_8_VALUE`,`k`.`sum_8` AS `sum_8`,`p`.`MONTH_9_VALUE` AS `MONTH_9_VALUE`,`k`.`sum_9` AS `sum_9`,`p`.`MONTH_10_VALUE` AS `MONTH_10_VALUE`,`k`.`sum_10` AS `sum_10`,`p`.`MONTH_11_VALUE` AS `MONTH_11_VALUE`,`k`.`sum_11` AS `sum_11`,`p`.`MONTH_12_VALUE` AS `MONTH_12_VALUE`,`k`.`sum_12` AS `sum_12` from (`projects_budget_year_month` `p` left join `in7_dziennik_koresp_budget_view` `k` on(((`k`.`ID_PROJECT` = `p`.`ID_PROJECT`) and (`p`.`YEAR` = `k`.`rok`))));
  759. ";
  760. $sql['view__budget_project_to_realization_main_view']="
  761. CREATE or replace ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `budget_project_to_realization_main_view` AS select `p`.`ID` AS `ID`,`p`.`ID_PROJECT` AS `ID_PROJECT`,`k`.`path` AS `path`,`p`.`YEAR` AS `YEAR`,`p`.`MONTH_1_VALUE` AS `MONTH_1_VALUE`,`k`.`sum_1` AS `sum_1`,`p`.`MONTH_2_VALUE` AS `MONTH_2_VALUE`,`k`.`sum_2` AS `sum_2`,`p`.`MONTH_3_VALUE` AS `MONTH_3_VALUE`,`k`.`sum_3` AS `sum_3`,`p`.`MONTH_4_VALUE` AS `MONTH_4_VALUE`,`k`.`sum_4` AS `sum_4`,`p`.`MONTH_5_VALUE` AS `MONTH_5_VALUE`,`k`.`sum_5` AS `sum_5`,`p`.`MONTH_6_VALUE` AS `MONTH_6_VALUE`,`k`.`sum_6` AS `sum_6`,`p`.`MONTH_7_VALUE` AS `MONTH_7_VALUE`,`k`.`sum_7` AS `sum_7`,`p`.`MONTH_8_VALUE` AS `MONTH_8_VALUE`,`k`.`sum_8` AS `sum_8`,`p`.`MONTH_9_VALUE` AS `MONTH_9_VALUE`,`k`.`sum_9` AS `sum_9`,`p`.`MONTH_10_VALUE` AS `MONTH_10_VALUE`,`k`.`sum_10` AS `sum_10`,`p`.`MONTH_11_VALUE` AS `MONTH_11_VALUE`,`k`.`sum_11` AS `sum_11`,`p`.`MONTH_12_VALUE` AS `MONTH_12_VALUE`,`k`.`sum_12` AS `sum_12` from (`projects_budget_year_month` `p` left join `in7_dziennik_koresp_budget_main_view` `k` on(((`k`.`ID_PROJECT` = `p`.`ID_PROJECT`) and (`p`.`YEAR` = `k`.`rok`))));
  762. ";
  763. /*
  764. CREATE DEFINER=root@localhost EVENT _CRM_PROCES_STATS_event
  765. ON SCHEDULE EVERY 1 DAY
  766. STARTS str_to_date( date_format(now(), '%Y%m%d 0500'), '%Y%m%d %H%i' ) + INTERVAL 1 DAY
  767. DO
  768. BEGIN
  769. SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
  770. replace into _CRM_PROCES_STATS ".$sql_tmp['select__CRM_PROCES_STATS']." ;
  771. END
  772. */
  773. $sql['view__TASKS_INFO_trigger']="
  774. CREATE or replace ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `_TASKS_INFO_trigger` AS
  775. SELECT CONCAT( 'W:', SUM( IF( t.A_STATUS = 'WAITING', 1, 0 ) ) , '/N:', SUM( IF( t.A_STATUS = 'NORMAL', 1, 0 ) ) , '/Z:', SUM( IF( t.A_STATUS = 'OFF_HARD', 1, 0 ) ) ) AS TASKS_INFO_trigger,
  776. SUM( IF( t.A_STATUS = 'WAITING', 1, 0 ) ) as WAITING,
  777. SUM( IF( t.A_STATUS = 'NORMAL', 1, 0 ) ) as NORMAL,
  778. SUM( IF( t.A_STATUS = 'OFF_SOFT', 1, 0 ) ) as OFF_SOFT,
  779. SUM( IF( t.A_STATUS = 'OFF_HARD', 1, 0 ) ) as OFF_HARD,
  780. t.ID_PROJECT
  781. FROM PROBLEMS AS t
  782. GROUP BY ID_PROJECT";
  783. $sql['drop__PROBLEMS_TASKS_INFO_trigger_INSERT']="DROP TRIGGER IF EXISTS `_PROBLEMS_TASKS_INFO_trigger_INSERT`";
  784. $sql['create__PROBLEMS_TASKS_INFO_trigger_INSERT']="CREATE DEFINER=`root`@`localhost` TRIGGER `_PROBLEMS_TASKS_INFO_trigger_INSERT`
  785. AFTER INSERT ON `PROBLEMS` FOR EACH ROW BEGIN
  786. UPDATE IN7_MK_BAZA_DYSTRYBUCJI , _TASKS_INFO_trigger
  787. set IN7_MK_BAZA_DYSTRYBUCJI.TASKS_INFO_trigger = _TASKS_INFO_trigger.TASKS_INFO_trigger where IN7_MK_BAZA_DYSTRYBUCJI.ID=NEW.ID_PROJECT and _TASKS_INFO_trigger.ID_PROJECT=NEW.ID_PROJECT;
  788. END
  789. ";
  790. $sql['drop__PROBLEMS_TASKS_INFO_trigger_UPDATE']="DROP TRIGGER IF EXISTS `_PROBLEMS_TASKS_INFO_trigger_UPDATE`";
  791. $sql['create__PROBLEMS_TASKS_INFO_trigger_UPDATE']="CREATE DEFINER=`root`@`localhost` TRIGGER `_PROBLEMS_TASKS_INFO_trigger_UPDATE` AFTER UPDATE ON `PROBLEMS` FOR EACH ROW BEGIN
  792. UPDATE IN7_MK_BAZA_DYSTRYBUCJI , _TASKS_INFO_trigger
  793. set IN7_MK_BAZA_DYSTRYBUCJI.TASKS_INFO_trigger = _TASKS_INFO_trigger.TASKS_INFO_trigger where IN7_MK_BAZA_DYSTRYBUCJI.ID=NEW.ID_PROJECT and _TASKS_INFO_trigger.ID_PROJECT=NEW.ID_PROJECT;
  794. END
  795. ";
  796. $sql['view__IN7_DZIENNIK_KORESP_trigger']="
  797. CREATE or replace ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `_IN7_DZIENNIK_KORESP_trigger` AS
  798. SELECT CONCAT( 'W:', SUM( IF( t.A_STATUS = 'WAITING', 1, 0 ) ) , '/N:', SUM( IF( t.A_STATUS = 'NORMAL', 1, 0 ) ) , '/Z:', SUM( IF( t.A_STATUS = 'OFF_HARD', 1, 0 ) ) ) AS IN7_DZIENNIK_KORESP_INFO_trigger,
  799. SUM( IF( t.A_STATUS = 'WAITING', 1, 0 ) ) as WAITING,
  800. SUM( IF( t.A_STATUS = 'NORMAL', 1, 0 ) ) as NORMAL,
  801. SUM( IF( t.A_STATUS = 'OFF_SOFT', 1, 0 ) ) as OFF_SOFT,
  802. SUM( IF( t.A_STATUS = 'OFF_HARD', 1, 0 ) ) as OFF_HARD,
  803. t.ID_PROJECT
  804. FROM IN7_DZIENNIK_KORESP AS t
  805. GROUP BY ID_PROJECT";
  806. /* - nie dziala, bo jest trigger w bash_file_perms!!!
  807. $sql['drop__IN7_DZIENNIK_KORESP_trigger_INSERT']="DROP TRIGGER IF EXISTS `_IN7_DZIENNIK_KORESP_trigger_INSERT`";
  808. $sql['create__PROBLEMS_TASKS_INFO_trigger_INSERT']="CREATE DEFINER=`root`@`localhost` TRIGGER `_IN7_DZIENNIK_KORESP_trigger_INSERT`
  809. AFTER INSERT ON `IN7_DZIENNIK_KORESP` FOR EACH ROW BEGIN
  810. UPDATE IN7_MK_BAZA_DYSTRYBUCJI , _IN7_DZIENNIK_KORESP_trigger
  811. set IN7_MK_BAZA_DYSTRYBUCJI.IN7_DZIENNIK_KORESP_INFO_trigger = _IN7_DZIENNIK_KORESP_trigger.IN7_DZIENNIK_KORESP_INFO_trigger where IN7_MK_BAZA_DYSTRYBUCJI.ID=NEW.ID_PROJECT and _TASKS_INFO_trigger.ID_PROJECT=NEW.ID_PROJECT;
  812. END
  813. ";
  814. $sql['drop__IN7_DZIENNIK_KORESP_trigger_UPDATE']="DROP TRIGGER IF EXISTS `_IN7_DZIENNIK_KORESP_trigger_UPDATE`";
  815. $sql['create__PROBLEMS_TASKS_INFO_trigger_UPDATE']="CREATE DEFINER=`root`@`localhost` TRIGGER `_IN7_DZIENNIK_KORESP_trigger_UPDATE` AFTER UPDATE ON `IN7_DZIENNIK_KORESP` FOR EACH ROW BEGIN
  816. UPDATE IN7_MK_BAZA_DYSTRYBUCJI , _IN7_DZIENNIK_KORESP_trigger
  817. set IN7_MK_BAZA_DYSTRYBUCJI.IN7_DZIENNIK_KORESP_INFO_trigger = _IN7_DZIENNIK_KORESP_trigger.IN7_DZIENNIK_KORESP_INFO_trigger where IN7_MK_BAZA_DYSTRYBUCJI.ID=NEW.ID_PROJECT and _IN7_DZIENNIK_KORESP_trigger.ID_PROJECT=NEW.ID_PROJECT;
  818. END
  819. ";
  820. */
  821. // W zastepstwie poki nie bedzie triggera na KORESPONDENCJI
  822. $sql['_IN7_DZIENNIK_KORESP_trigger_event_drop']="DROP EVENT if exists _IN7_DZIENNIK_KORESP_trigger_event";
  823. $sql['_IN7_DZIENNIK_KORESP_trigger_event']="CREATE EVENT `_IN7_DZIENNIK_KORESP_trigger_event` ON SCHEDULE EVERY 1 DAY STARTS '2015-05-12 00:04:30' ON COMPLETION NOT PRESERVE ENABLE DO
  824. UPDATE IN7_MK_BAZA_DYSTRYBUCJI , _IN7_DZIENNIK_KORESP_trigger
  825. set IN7_MK_BAZA_DYSTRYBUCJI.IN7_DZIENNIK_KORESP_INFO_trigger = _IN7_DZIENNIK_KORESP_trigger.IN7_DZIENNIK_KORESP_INFO_trigger where IN7_MK_BAZA_DYSTRYBUCJI.ID=_IN7_DZIENNIK_KORESP_trigger.ID_PROJECT ;";
  826. $sql['view__budget_project_to_realization_main_event_drop']="DROP EVENT if exists view__budget_project_to_realization_main_event";
  827. $sql['view__budget_project_to_realization_main_event']="CREATE EVENT `view__budget_project_to_realization_main_event` ON SCHEDULE EVERY 1 DAY STARTS '2015-05-12 00:04:30' ON COMPLETION NOT PRESERVE ENABLE DO INSERT IGNORE INTO `projects_budget_year_month` ( `ID_PROJECT` , `M_DIST_DESC` , `YEAR` ,`A_RECORD_CREATE_AUTHOR` , `A_RECORD_CREATE_DATE` )
  828. SELECT t1.`ID` , t2.M_DIST_DESC, t1.`rok` , 'import z widoku budzetu glownych spraw (view__budget_project_to_realization_main_event)', NOW( )
  829. FROM `in7_dziennik_koresp_budget_main_view` AS t1
  830. LEFT JOIN IN7_MK_BAZA_DYSTRYBUCJI AS t2 ON t1.ID = t2.ID;";
  831. $sql['event_shedule_init']="SET GLOBAL event_scheduler = ON";
  832. foreach($sql as $ind=>$sql_) {
  833. DEBUG_S(-3,'wykonuje zapytanie sql dla '.$ind,$sql_,__FILE__,__FUNCTION__,__LINE__);
  834. if(!empty($DB)) {
  835. $DB->query($sql_) or die('Problem z zapytaniem '.mysql_error());
  836. } else {
  837. DB::query($sql_) or die('Problem z zapytaniem '.mysql_error());
  838. }
  839. }
  840. //-- alter table _CRM_PROCES_USER_STATS add unique(ID,TEST_TYPE,ADM_ACCOUNT);
  841. } //eof func
  842. ?>