superedit-BUDGET_ANALYTICS.php 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581
  1. <?php
  2. function BUDGET_ANALYTICS() {
  3. $TURN_OFF = true;// OFF 2015-06-24
  4. if ($TURN_OFF) {
  5. $url = "{$_SERVER['SCRIPT_URI']}?_route=Budget";
  6. if (!headers_sent()) {
  7. header('HTTP/1.1 303 See Other');
  8. header('Location: '.$url);
  9. } else {
  10. echo'<script type="text/javascript">'."
  11. window.location.href='{$url}';
  12. ".'</script>';
  13. echo "\n".'<noscript>';
  14. echo "\n".'<meta http-equiv="refresh" content="0;url='.$url.'" />';
  15. echo "\n".'</noscript>';
  16. echo'<p>'.'<a href="'.$url.'">'."dalej".'</a>'.'</p>';
  17. }
  18. }
  19. $budgetAnalyticsRouter = new BudgetAnalyticsRouter();
  20. $args = array();
  21. $args['year'] = V::get('zest_year', '', $_REQUEST, 'int');
  22. $args['_print'] = V::get('_print', '', $_REQUEST, 'int');
  23. $args['_task'] = V::get('_task', '', $_REQUEST, 'word');
  24. if ('test_fetchDataFromTables' == $args['_task']) {
  25. $budgetAnalyticsRouter->test_fetchDataFromTables();
  26. die('.EOF TEST test_fetchDataFromTables');
  27. }
  28. if (!$args['_print']) {
  29. $budgetAnalyticsRouter->menu($args['year']);
  30. }
  31. if (empty($args['year'])) {
  32. ?>
  33. <div class="alert alert-warning">
  34. Nie wybrano roku.
  35. </div>
  36. <?php
  37. return;
  38. }
  39. $costs = $budgetAnalyticsRouter->getCostsByYear($args['year']);
  40. if (empty($costs)) {
  41. ?>
  42. <div class="alert alert-warning">
  43. Brak danych na wybrany rok.
  44. </div>
  45. <?php
  46. return;
  47. }
  48. $projTree = $budgetAnalyticsRouter->buildProjectTree($costs);
  49. //$orderby = V::get('orderby', '', $_GET);
  50. //$view_type = V::get('view_type', '', $_GET);
  51. //$budgetAnalyticsRouter->cyfrowe($projekty, $grupyKosztow, $costs, $orderby, $view_type);
  52. $budgetAnalyticsRouter->printCostsForYear($projTree, $costs, $args['year']);
  53. }
  54. class BudgetAnalyticsRouter {
  55. function menu($selectedYear) {
  56. //SE_Layout::menu();
  57. $year = ($selectedYear)? $selectedYear : date("Y");
  58. ?>
  59. <div class="jumbotron">
  60. <div class="container">
  61. <form class="form-inline" method="POST">
  62. <input type="hidden" name="task" value="zest_year" />
  63. <label for="zest_year">Zestawienie kosztów projektów na podstawie korespondencji:</label>
  64. <div class="input-group date" id="fldZestYear">
  65. <input type="text" name="zest_year" class="form-control" value="" />
  66. <span class="input-group-addon"><span class="glyphicon glyphicon-time"></span></span>
  67. </div>
  68. <button type="submit" id="fldZestYearBtn" class="btn btn-primary" autocomplete="off">
  69. Pokaż
  70. </button>
  71. </form>
  72. </div>
  73. </div>
  74. <script type="text/javascript">
  75. jQuery(document).ready(function () {
  76. jQuery('#fldZestYearBtn').on('click', function () {
  77. jQuery(this).text(jQuery(this).text() + '...').attr('disabled', 'disabled');
  78. jQuery(this).parent().submit();
  79. })
  80. jQuery("#fldZestYear").datetimepicker({
  81. format: "YYYY",
  82. defaultDate: new Date(<?php echo $year; ?>, <?php echo intval(date("m")); ?>, 1),
  83. // minDate: new Date(2014, 11, 1),
  84. // maxDate: "<?php echo date("Y"); ?>"
  85. });
  86. });
  87. </script>
  88. <?php
  89. }
  90. function css() {
  91. ?>
  92. <style type="text/css">
  93. .c { text-align:center; }
  94. .r { text-align:right; }
  95. .zestawienie-kosztow-tbl { border-collapse:collapse; border:1px solid #7EC5FF; }
  96. .zestawienie-kosztow-tbl td { border:1px solid #7EC5FF; }
  97. .zestawienie-kosztow-tbl .p2 { padding:0 2px; }
  98. .zestawienie-kosztow-tbl .nr { color:#7A7A7A; }
  99. .zestawienie-kosztow-tbl thead th { border:1px solid #7EC5FF; }
  100. .zestawienie-kosztow-tbl tbody tr:hover td { background:#cafbfd; }
  101. .row-selected td {background-color:#d8fded;}
  102. .showOnlySelected tr { display:none; }
  103. .showOnlySelected tr.row-selected { display:table-row; }
  104. .cost { padding:0 2px; min-width:30px; text-align:right; }
  105. .cost-only_child { color:#777; }
  106. .cost-only_self { color:red; }
  107. .cost-self_and_child { color:orange; }
  108. /* print table background colors */
  109. table td, table th { -webkit-print-color-adjust:exact; }
  110. table { page-break-after:auto }
  111. tr { page-break-inside:avoid; page-break-after:auto; position:relative; }
  112. td { page-break-inside:avoid; page-break-after:auto; position:relative; }
  113. thead { display:table-header-group }
  114. tfoot { display:table-footer-group }
  115. </style>
  116. <?php
  117. }
  118. function printCostsForYear($projOrder, $costs, $year) {
  119. $months = array();
  120. for ($i = 0; $i < 12; $i++) {
  121. $months[] = $i + 1;
  122. }
  123. $this->css();
  124. if(V::get('DBG','',$_GET)){echo'<pre style="width:600px;border:1px solid red;max-height:300px;overflow:auto;display:none">';print_r($costs);echo'</pre>';}
  125. ?>
  126. <div class="container">
  127. <div style="float:right;color:#aaa;"><?php echo date("Y-m-d"); ?></div>
  128. <h1>Zestawienie kosztów projektów na rok <?php echo $year; ?></h1>
  129. <table cellspacing="0" cellpadding="0" border="0" id="zestawienie-kosztow-projektow" class="zestawienie-kosztow-tbl">
  130. <thead>
  131. <tr>
  132. <td colspan="3" class="p2">
  133. <span class="pull-left">
  134. <input type="checkbox" onclick="return showHideAll(this);"/> pokaż tylko zaznaczone
  135. </span>
  136. <span class="pull-right">miesiąc</span>
  137. </td>
  138. <?php foreach ($months as $month) { ?>
  139. <th class="c"><?php echo $month; ?></th>
  140. <?php } ?>
  141. </tr>
  142. </thead>
  143. <tbody>
  144. <?php $t = 1; ?>
  145. <?php foreach ($projOrder as $projPath => $projId) : ?>
  146. <?php $projectInfo = $costs[$projId]; ?>
  147. <tr class="row-<?php echo ($t = 1 - $t); ?>"
  148. data-projId="<?php echo $projectInfo->ID_PROJECT; ?>"
  149. data-path="<?php echo $projectInfo->path; ?>">
  150. <td class="p2 r nr">
  151. <input type="checkbox" name="selectedProject" onclick="return selectProject(this);" value="<?php echo $projectInfo->ID_PROJECT; ?>" />
  152. </td>
  153. <td class="p2 l nr"><?php echo $projectInfo->path; ?></td>
  154. <td class="p2" style="max-width:300px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;" title="<?php echo $projectInfo->M_DIST_DESC; ?>"><?php echo $projectInfo->M_DIST_DESC; ?></td>
  155. <?php foreach ($months as $month) : ?>
  156. <?php if (array_key_exists($month, $projectInfo->costsByMonth)) : ?>
  157. <?php $vCost = V::get($month, '', $projectInfo->costsByMonth); ?>
  158. <?php if ($vCost->COST_CHILD > 0) : ?>
  159. <?php $title = "Koszt projektu {$vCost->COST_SELF} / koszt podprojektów {$vCost->COST_CHILD}"; ?>
  160. <?php if ($vCost->COST_SELF > 0) : ?>
  161. <td class="cost cost-self_and_child"><span class="ttip" title="<?php echo $title; ?>"><?php echo $vCost->COST_TOTAL; ?></span></td>
  162. <?php else : ?>
  163. <td class="cost cost-only_child"><span class="ttip" title="<?php echo $title; ?>"><?php echo $vCost->COST_TOTAL; ?></span></td>
  164. <?php endif; ?>
  165. <?php else : ?>
  166. <td class="cost cost-only_self"><?php echo $vCost->COST_TOTAL; ?></td>
  167. <?php endif; ?>
  168. <?php else : ?>
  169. <td style="min-width:30px">&nbsp;</td>
  170. <?php endif; ?>
  171. <?php endforeach; ?>
  172. </tr>
  173. <?php endforeach; ?>
  174. </tbody>
  175. </table>
  176. </div>
  177. <script>
  178. jQuery(document).ready(function(){
  179. jQuery('.ttip').tooltip();
  180. });
  181. function selectProject(n) {
  182. var $n = jQuery(n);
  183. var $p = $n.parent().parent();
  184. if (n.checked) {
  185. $p.addClass('row-selected');
  186. } else {
  187. $p.removeClass('row-selected');
  188. }
  189. markSubProjects($p, $p.data('path'), n.checked);
  190. function markSubProjects($p, path, checked) {
  191. var $nextRow = $p.next('tr'),
  192. nextPath = $nextRow.data('path'),
  193. nextCheckbox = $nextRow.find('input[type="checkbox"]').get(0);
  194. if (0 !== nextPath.indexOf(path)) {
  195. return;
  196. }
  197. if (checked) {
  198. $nextRow.addClass('row-selected');
  199. } else {
  200. $nextRow.removeClass('row-selected');
  201. }
  202. nextCheckbox.checked = checked;
  203. markSubProjects($nextRow, path, checked);
  204. }
  205. }
  206. function showHideAll(n) {
  207. if (n.checked) {
  208. jQuery('#zestawienie-kosztow-projektow').find('tbody').addClass('showOnlySelected');
  209. } else {
  210. jQuery('#zestawienie-kosztow-projektow').find('tbody').removeClass('showOnlySelected');
  211. }
  212. }
  213. </script>
  214. <?php
  215. }
  216. public function getCostsByYear($year) {
  217. $db = DB::getDB();
  218. $costs = array();
  219. $sql = "
  220. select
  221. t.`ID_PROJECT`
  222. , t.`M_DIST_DESC`
  223. , t.`P_ID`
  224. , t.`path`
  225. , t.`MONTH`
  226. , t.`COST_SELF`
  227. , t.`COST_CHILD`
  228. , t.`COST_TOTAL`
  229. , t.`INCOME_SELF`
  230. , t.`INCOME_CHILD`
  231. , t.`INCOME_TOTAL`
  232. from `test_budget_project_synthetics_view` as t
  233. where 1=1
  234. and t.`MONTH` like '{$year}-%'
  235. ";
  236. $res = $db->query($sql);
  237. while ($r = $db->fetch($res)) {
  238. if (!array_key_exists($r->ID_PROJECT, $costs)) {
  239. $projectInfo = new stdClass();
  240. $projectInfo->ID_PROJECT = $r->ID_PROJECT;
  241. $projectInfo->M_DIST_DESC = $r->M_DIST_DESC;
  242. $projectInfo->path = $r->path;
  243. $projectInfo->costsByMonth = array();
  244. $costs[$r->ID_PROJECT] = $projectInfo;
  245. }
  246. $cost = new stdClass();
  247. $cost->MONTH = $r->MONTH;
  248. $cost->COST_SELF = $r->COST_SELF;
  249. $cost->COST_CHILD = $r->COST_CHILD;
  250. $cost->COST_TOTAL = $r->COST_TOTAL;
  251. $cost->INCOME_SELF = $r->INCOME_SELF;
  252. $cost->INCOME_CHILD = $r->INCOME_CHILD;
  253. $cost->INCOME_TOTAL = $r->INCOME_TOTAL;
  254. $monthNum = intval(substr($r->MONTH, 5, 2));
  255. $costs[$r->ID_PROJECT]->costsByMonth[$monthNum] = $cost;
  256. }
  257. return $costs;
  258. }
  259. public function buildProjectTree($costs) {
  260. $projPaths = array();
  261. foreach ($costs as $idProject => $projectInfo) {
  262. $projPaths[$projectInfo->path] = $projectInfo->ID_PROJECT;
  263. }
  264. //echo'<pre style="width:600px;border:1px solid red;max-height:300px;overflow:auto;">projPaths: ';print_r($projPaths);echo'</pre>';
  265. uksort($projPaths, array($this, 'sortPathsCallback'));
  266. //echo'<pre style="width:600px;border:1px solid red;max-height:300px;overflow:auto;">projPaths sorted: ';print_r($projPaths);echo'</pre>';
  267. return $projPaths;
  268. }
  269. public function sortPathsCallback($a, $b) {
  270. $ea = explode('-', $a);
  271. $eb = explode('-', $b);
  272. $la = count($ea);
  273. $lb = count($eb);
  274. $lmin = min($la, $lb);
  275. for ($i = 0; $i < $lmin; $i++) {
  276. if ($ea[$i] < $eb[$i]) {
  277. return -1;
  278. } else if ($ea[$i] > $eb[$i]) {
  279. return 1;
  280. }
  281. }
  282. return $la - $lb;
  283. }
  284. public function installView() {
  285. $sql = "
  286. CREATE VIEW `test_budget_project_analytics_view` AS
  287. select `IN7_DZIENNIK_KORESP`.`ID_PROJECT` AS `ID_PROJECT`
  288. , date_format(`IN7_DZIENNIK_KORESP`.`K_DATA_OTRZYMANEJ_KORESP`,'%Y-%m') AS `MONTH`
  289. , sum(`IN7_DZIENNIK_KORESP`.`COST_VALUE`) AS `COST`
  290. , sum(`IN7_DZIENNIK_KORESP`.`INCOME_VALUE`) AS `INCOME`
  291. , 'SELF' AS `TYPE`
  292. from `IN7_DZIENNIK_KORESP`
  293. where ((`IN7_DZIENNIK_KORESP`.`COST_VALUE` > 0) or (`IN7_DZIENNIK_KORESP`.`INCOME_VALUE` > 0))
  294. group by `IN7_DZIENNIK_KORESP`.`ID_PROJECT`
  295. , date_format(`IN7_DZIENNIK_KORESP`.`K_DATA_OTRZYMANEJ_KORESP`,'%Y-%m')
  296. union
  297. select `p`.`ID` AS `ID_PROJECT`
  298. , date_format(k.`K_DATA_OTRZYMANEJ_KORESP`,'%Y-%m') AS `MONTH`
  299. , sum(k.`COST_VALUE`) AS `COST`
  300. , sum(k.`INCOME_VALUE`) AS `INCOME`
  301. , 'CHILD' AS `TYPE`
  302. from (`IN7_MK_BAZA_DYSTRYBUCJI` `p`
  303. join `IN7_DZIENNIK_KORESP` k on((((k.`COST_VALUE` > 0) or (k.`INCOME_VALUE` > 0))
  304. and (k.`path` like concat('%-',`p`.`ID`,'-%'))))
  305. )
  306. group by `p`.`ID`, date_format(k.`K_DATA_OTRZYMANEJ_KORESP`, '%Y-%m')
  307. ";
  308. $sql = "
  309. CREATE VIEW `test_budget_project_synthetics_view` AS
  310. select `t1`.`ID_PROJECT` AS `ID_PROJECT`
  311. , `p`.`M_DIST_DESC` AS `M_DIST_DESC`
  312. , `p`.`P_ID` AS `P_ID`
  313. , `p`.`path` AS `path`
  314. , `t1`.`MONTH` AS `MONTH`
  315. , cast(sum(if((`t1`.`TYPE` = 'SELF'),`t1`.`COST`,'0')) as decimal(10,2)) AS `COST_SELF`
  316. , cast(sum(if((`t1`.`TYPE` = 'CHILD'),`t1`.`COST`,'0')) as decimal(10,2)) AS `COST_CHILD`
  317. , sum(`t1`.`COST`) AS `COST_TOTAL`
  318. , cast(sum(if((`t1`.`TYPE` = 'SELF'),`t1`.`INCOME`,'0')) as decimal(10,2)) AS `INCOME_SELF`
  319. , cast(sum(if((`t1`.`TYPE` = 'CHILD'),`t1`.`INCOME`,'0')) as decimal(10,2)) AS `INCOME_CHILD`
  320. , sum(`t1`.`INCOME`) AS `INCOME_TOTAL`
  321. from (`test_budget_project_analytics_view` `t1`
  322. join `IN7_MK_BAZA_DYSTRYBUCJI` `p` on((`t1`.`ID_PROJECT` = `p`.`ID`))
  323. )
  324. group by `t1`.`ID_PROJECT`, `t1`.`MONTH`
  325. ";
  326. }
  327. public function test_fetchDataFromTables() {
  328. $this->projectCost = array();
  329. $this->projectPath = array();
  330. $this->projectDesc = array();
  331. $this->tableProjectCost = array();
  332. $db = DB::getDB();
  333. $sql = "select `ID`, `P_ID`, `M_DIST_DESC`
  334. from `IN7_MK_BAZA_DYSTRYBUCJI`
  335. order by `ID`
  336. ";
  337. $res = $db->query($sql);
  338. while ($row = $db->fetch($res)) {
  339. $project_P_ID[$row->P_ID][] = $row->ID;
  340. $this->projectDesc[$row->ID] = $row->M_DIST_DESC;
  341. }
  342. function buildProjectTree($flat,$id,$tree) {
  343. if (isset($flat[$id])) {
  344. foreach ($flat[$id] as $child) {
  345. $tree[$id][$child] = @buildProjectTree($flat, $child, $tree[$id]);
  346. }
  347. return $tree[$id];
  348. }
  349. }
  350. $projectTree[0] = buildProjectTree($project_P_ID, 0, null);
  351. //print_r($projectTree);
  352. $this->test_fetchDataFromTables__buildProjectPath($projectTree, null);
  353. //print_r($this->projectPath);
  354. $sql = "
  355. select `ID_PROJECT`
  356. , `TRANSFER_OPPOSITE_ID_PROJECT`
  357. , date_format(`K_DATA_OTRZYMANEJ_KORESP`, '%Y-%m') as MONTH
  358. , sum(`COST_VALUE`) as COST
  359. from `IN7_DZIENNIK_KORESP`
  360. where `COST_VALUE`>0
  361. and `K_DATA_OTRZYMANEJ_KORESP` like '2015%'
  362. group by `ID_PROJECT`, `MONTH`
  363. order by `MONTH`, `ID_PROJECT`, `TRANSFER_OPPOSITE_ID_PROJECT`
  364. ";
  365. $res = $db->query($sql);
  366. while ($row = $db->fetch($res)) {
  367. foreach ($this->projectPath[$row->ID_PROJECT] as $id) {
  368. if ($row->ID_PROJECT == $id) @$this->projectCost[$id][$row->MONTH]['SELF'] += $row->COST;
  369. else @$this->projectCost[$id][$row->MONTH]['CHILD'] += $row->COST;
  370. }
  371. if ($row->TRANSFER_OPPOSITE_ID_PROJECT) {
  372. foreach ($this->projectPath[$row->TRANSFER_OPPOSITE_ID_PROJECT] as $id) {
  373. if ($row->TRANSFER_OPPOSITE_ID_PROJECT == $id) @$this->projectCost[$id][$row->MONTH]['SELF']-=$row->COST;
  374. else @$this->projectCost[$id][$row->MONTH]['CHILD'] -= $row->COST;
  375. }
  376. }
  377. }
  378. //echo'<pre>$projectTree: ';print_r($projectTree);echo'</pre>';
  379. //echo'<pre>projectCost: ';print_r($this->projectCost);echo'</pre>';
  380. $this->test_fetchDataFromTables__genTableProjectCost($projectTree);
  381. echo'<pre>tableProjectCost: ';print_r($this->tableProjectCost);echo'</pre>';
  382. }
  383. function test_fetchDataFromTables__genTableProjectCost($tree) {
  384. //if (!empty($tree)) echo '<p>DBG: F.' . __FUNCTION__ . ": tree(" . count($tree) . ")" . '</p>';
  385. if (isset($tree)) {
  386. foreach ($tree as $id => $child) {
  387. //echo '<p>DBG: F.' . __FUNCTION__ . ": tree=>child({$id}) isset(" . (isset($this->projectCost[$id])) . ")" . '</p>';
  388. if (isset($this->projectCost[$id])) {
  389. $this->tableProjectCost[$id]['PATH'] = implode('-', $this->projectPath[$id]);
  390. $this->tableProjectCost[$id]['DESC'] = @$this->projectDesc[$id];
  391. $this->tableProjectCost[$id]['COST'] = $this->projectCost[$id];
  392. }
  393. $this->test_fetchDataFromTables__genTableProjectCost($child);
  394. }
  395. }
  396. }
  397. function test_fetchDataFromTables__buildProjectPath($tree, $ppath) {
  398. if (isset($tree)) {
  399. foreach ($tree as $id => $child) {
  400. $this->projectPath[$id] = $ppath;
  401. $this->projectPath[$id][] = $id;
  402. $this->test_fetchDataFromTables__buildProjectPath($child, $this->projectPath[$id]);
  403. }
  404. }
  405. }
  406. /**
  407. * 2015-06-22
  408. * EVENT `view__budget_project_to_realization_main_event`
  409. * Write into TABLE `projects_budget_year_month`
  410. * VIEW `in7_dziennik_koresp_budget_view`
  411. * Read from TABLE `IN7_DZIENNIK_KORESP`
  412. * VIEW `in7_dziennik_koresp_budget_main_view`
  413. * Read from TABLE `IN7_DZIENNIK_KORESP`
  414. */
  415. function test_reinstallViewsAndEvents() {
  416. $sqls['RemoveView_korespMain'] = " drop view if exists `in7_dziennik_koresp_budget_main_view` ";
  417. $sqls['CreateView_korespMain'] = "
  418. CREATE VIEW `in7_dziennik_koresp_budget_main_view` AS
  419. select cast(substring_index(substring_index(k.`path`,'-',2),'-',-(1)) as signed) AS `ID`
  420. , substring_index(k.`path`,'-',2) AS `path`
  421. , cast(concat(',',group_concat(distinct k.`ID_PROJECT` order by k.`ID_PROJECT` ASC separator ','),',') as char charset utf8) AS `ID_PROJECT`
  422. , year(k.`K_DATA_OTRZYMANEJ_KORESP`) AS `rok`
  423. , sum(k.`COST_VALUE`) AS `sum_k`
  424. , 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`
  425. , 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`
  426. , 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`
  427. , 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`
  428. , 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`
  429. , 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`
  430. , 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`
  431. , 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`
  432. , 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`
  433. , 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`
  434. , 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`
  435. , 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`
  436. , 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`
  437. , 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`
  438. , 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`
  439. , 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`
  440. , 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`
  441. , 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`
  442. , 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`
  443. , 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`
  444. , 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`
  445. , 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`
  446. , 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`
  447. , 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`
  448. , 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`
  449. , 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`
  450. , 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`
  451. , 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`
  452. , 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`
  453. , 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`
  454. , 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`
  455. , 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`
  456. , 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`
  457. , 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`
  458. , 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`
  459. , 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`
  460. , 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`
  461. , 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`
  462. , 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`
  463. , 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`
  464. , 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`
  465. , 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`
  466. from `IN7_DZIENNIK_KORESP` k
  467. where (k.`COST_VALUE` <> '')
  468. group by substring_index(k.`path`,'-',2)
  469. ";
  470. $sqls['RemoveView_korespMain'] = " drop view if exists `in7_dziennik_koresp_budget_view` ";
  471. $sqls['CreateView_korespMain'] = "
  472. CREATE VIEW `in7_dziennik_koresp_budget_view` AS
  473. select k.`ID` AS `ID`
  474. , k.`path` AS `path`
  475. , k.`ID_PROJECT` AS `ID_PROJECT`
  476. , year(k.`K_DATA_OTRZYMANEJ_KORESP`) AS `rok`
  477. , month(k.`K_DATA_OTRZYMANEJ_KORESP`) AS `miesiac`
  478. , date_format(k.`K_DATA_OTRZYMANEJ_KORESP`,'%Y-%m') AS `data`
  479. , sum(k.`COST_VALUE`) AS `sum_k`
  480. , 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`
  481. , 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`
  482. , 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`
  483. , 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`
  484. , 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`
  485. , 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`
  486. , 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`
  487. , 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`
  488. , 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`
  489. , 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`
  490. , 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`
  491. , 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`
  492. , 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`
  493. , 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`
  494. , 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`
  495. , 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`
  496. , 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`
  497. , 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`
  498. , 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`
  499. , 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`
  500. , 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`
  501. , 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`
  502. , 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`
  503. , 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`
  504. , 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`
  505. , 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`
  506. , 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`
  507. , 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`
  508. , 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`
  509. , 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`
  510. , 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`
  511. , 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`
  512. , 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`
  513. , 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`
  514. , 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`
  515. , 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`
  516. , 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`
  517. , 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`
  518. , 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`
  519. , 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`
  520. , 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`
  521. , 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`
  522. from `IN7_DZIENNIK_KORESP` k
  523. where (k.`COST_VALUE`!='')
  524. group by k.`ID_PROJECT`
  525. ";
  526. $sqlList['RemoveEvent_everyDay'] = "DROP EVENT IF EXISTS `view__budget_project_to_realization_main_event`";
  527. $sqlList['CreateEvent_everyDay'] = "
  528. CREATE EVENT `view__budget_project_to_realization_main_event`
  529. ON SCHEDULE EVERY 1 DAY STARTS '2015-05-12 00:04:30'
  530. ON COMPLETION NOT PRESERVE ENABLE
  531. DO BEGIN
  532. INSERT IGNORE INTO `projects_budget_year_month`(`ID_PROJECT`, `M_DIST_DESC`, `YEAR` ,`A_RECORD_CREATE_AUTHOR`, `A_RECORD_CREATE_DATE`)
  533. SELECT t1.`ID`
  534. , t2.`M_DIST_DESC`
  535. , t1.`rok`
  536. , 'import z widoku budzetu glownych spraw (view__budget_project_to_realization_main_event)'
  537. , NOW()
  538. FROM `in7_dziennik_koresp_budget_main_view` AS t1
  539. LEFT JOIN IN7_MK_BAZA_DYSTRYBUCJI AS t2 ON(t1.ID=t2.ID);
  540. END
  541. ";
  542. }
  543. }