superedit-STATYSTYKA_TABELE.php 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674
  1. <?php
  2. /**
  3. * Aktualizacja tabel statystycznych.
  4. *
  5. * Dotyczy tabel:
  6. * temp_USERS2_INTERNET_STATUS_INTERNET_NORMAL
  7. * temp_USERS2_INTERNET_STATUS_VOIP_NORMAL
  8. * temp_USERS2_INTERNET_STATUS_TV_NORMAL
  9. * temp_USERS2_INTERNET_STATUS_OFF_HARD
  10. * USERS2_MARKETING_OVERWIEV
  11. * USERS2_MARKETING_OVERWIEV_REWIR
  12. * Pobiera dane z tabeli temp_USERS2_INTERNET_STATUS - TODO gdzie jest tworzona ta tabela
  13. *
  14. */
  15. function STATYSTYKA_TABELE() {
  16. $db = DB::getDB();
  17. if (!$db) {
  18. echo '<div class="alert alert-error">' . "Database Error" . '</div>';
  19. return;
  20. }
  21. $sqlList = array();
  22. $task = V::get('task', '', $_GET);
  23. if ($task == 'FVAT_POS_CHARTS') {
  24. $DBG = V::get('DBG', '', $_GET);
  25. $args = array();
  26. $args['MONTH'] = V::get('MONTH', '', $_GET);
  27. $args['id_owner'] = V::get('id_owner', '', $_GET);
  28. $args['P_SERVICE'] = V::get('P_SERVICE', '', $_GET);
  29. $db = DB::getDB();
  30. $chart = new stdClass();
  31. $chart->select = array();
  32. $chart->groupBy = array();
  33. $chart->osY = '';
  34. $chart->osY_values = array();
  35. $chart->osX = 'MONTH';
  36. $chart->osX_values = array();
  37. $chart->osX_range_min = '2013-01-00';
  38. $chart->osX_range_max = '2014-05-00';
  39. $chart->groupBy[] = 'MONTH';
  40. $chart->groupBy[] = 'id_owner';
  41. $chart->groupBy[] = 'P_SERVICE';
  42. $chart->select['cnt'] = 'count(1)';
  43. $chart->select['sum_INCOME'] = 'sum(`INCOME`)';
  44. $sql_select = array();
  45. foreach ($chart->select as $kLabel => $vField) {
  46. $sql_select[] = "{$vField} as {$kLabel}";
  47. }
  48. foreach ($chart->groupBy as $vField) {
  49. if (!array_key_exists($vField, $chart->select)) {
  50. $sql_select[] = "{$vField} as {$vField}";
  51. }
  52. }
  53. $sql_select = implode(',', $sql_select);
  54. $sql_group_by = implode(',', $chart->groupBy);
  55. $chart->data = array();
  56. $sql = "select {$sql_select}
  57. from `stats_BILLS_FVAT_POS`
  58. where `{$chart->osX}` between '{$chart->osX_range_min}' and '{$chart->osX_range_max}'
  59. group by {$sql_group_by}
  60. ";
  61. if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">sql (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sql);echo'</pre>';}
  62. $res = $db->query($sql);
  63. while ($r = $db->fetch($res)) {
  64. if (empty($r->P_SERVICE)) {
  65. $r->P_SERVICE = 'Unknown';
  66. }
  67. if (isset($r->MONTH) && substr($r->MONTH, -3) == '-00') {
  68. $r->MONTH = substr($r->MONTH, 0, -3);
  69. }
  70. $r->cnt = (int)$r->cnt;
  71. $r->sum_INCOME = (double)$r->sum_INCOME;
  72. $chart->data[] = $r;
  73. foreach ($chart->groupBy as $vField) {
  74. if ($vField == $chart->osX) {
  75. $chart->osX_values[$r->{$chart->osX}] = true;
  76. }
  77. else if (!array_key_exists($vField, $chart->select)) {
  78. $chart->osY_values[$vField][$r->{$vField}] = true;
  79. }
  80. }
  81. }
  82. foreach ($chart->osY_values as $k => $v) {
  83. $chart->osY_values[$k] = array_keys($v);
  84. sort($chart->osY_values[$k]);
  85. }
  86. $chart->osX_values = array_keys($chart->osX_values);
  87. sort($chart->osX_values);
  88. if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">$chart->data (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($chart->data);echo'</pre>';}
  89. if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">$chart->osY_values (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($chart->osY_values);echo'</pre>';}
  90. ?>
  91. <script src="stuff/RGraph/libraries/RGraph.common.core.js"></script>
  92. <script src="stuff/RGraph/libraries/RGraph.common.dynamic.js"></script>
  93. <script src="stuff/RGraph/libraries/RGraph.common.key.js"></script>
  94. <script src="stuff/RGraph/libraries/RGraph.drawing.rect.js"></script>
  95. <script src="stuff/RGraph/libraries/RGraph.bar.js"></script>
  96. <script src="stuff/RGraph/libraries/RGraph.line.js"></script>
  97. <canvas id="chart-canvas" width="800" height="500" style="float:left; margin:0 20px; border:1px solid #666;">[No canvas support]</canvas>
  98. <form action="" method="post" id="chart-frm">
  99. <div class="chart-frm-cnt">
  100. </div>
  101. <button id="chart-frm-btn" class="btn btn-primary">Rysuj wykres</button>
  102. </form>
  103. <script>
  104. var frm = jQuery('#chart-frm')
  105. , frmCnt = frm.find('.chart-frm-cnt')
  106. , chart_data = <?php echo json_encode($chart->data); ?>
  107. , chart_select = <?php echo json_encode($chart->select); ?>
  108. , chart_groupBy = <?php echo json_encode($chart->groupBy); ?>
  109. , chart_osX = <?php echo json_encode($chart->osX); ?>
  110. , chart_osX_values = <?php echo json_encode($chart->osX_values); ?>
  111. , chart_values = <?php echo json_encode($chart->osY_values); ?>;
  112. for (var i in chart_values) {
  113. var selWrap = jQuery('<div></div>');
  114. jQuery('<label for="' + chart_values[i][j] + '">' + i + ': </label>').appendTo(selWrap);
  115. var sel = jQuery('<select name="' + i + '"></select>').appendTo(selWrap);
  116. sel.append('<option value="' + "all" + '">' + "dowolne" + '</select>');
  117. for (var j in chart_values[i]) {
  118. sel.append('<option value="' + chart_values[i][j] + '">' + chart_values[i][j] + '</select>');
  119. }
  120. selWrap.appendTo(frmCnt);
  121. }
  122. var selWrap = jQuery('<div></div>');
  123. jQuery('<label for="chart_select">Wartość: </label>').appendTo(selWrap);
  124. var sel = jQuery('<select name="chart_select"></select>').appendTo(selWrap);
  125. for (var i in chart_select) {
  126. sel.append('<option value="' + i + '">' + i + ': ' + chart_select[i] + '</select>');
  127. }
  128. selWrap.appendTo(frmCnt);
  129. jQuery('#chart-frm-btn').on('click', function(evt){
  130. var data = []
  131. , canvas = document.getElementById('chart-canvas')
  132. , frmNode = document.getElementById('chart-frm')
  133. , fld_name = jQuery(frmNode['chart_select']).val();
  134. console.log('chart_data', chart_data);
  135. var chart_data_filtered = chart_data.filter(function (item) {
  136. for (var i in chart_groupBy) {
  137. if (chart_groupBy[i] == chart_osX) continue;
  138. var frmVal = jQuery(frmNode[chart_groupBy[i]]).val();
  139. if (frmVal == 'all') continue;
  140. if (item[chart_groupBy[i]] != frmVal) {
  141. return false;
  142. }
  143. }
  144. return true;
  145. });
  146. console.log('chart_data_filtered', chart_data_filtered);
  147. chart_data_filtered.sort(function(a, b) {
  148. if (a[chart_osX] > b[chart_osX]) {
  149. return 1;
  150. }
  151. else if (a[chart_osX] < b[chart_osX]) {
  152. return -1;
  153. }
  154. return 0;
  155. });
  156. var d = chart_data_filtered.shift();
  157. console.log('chart_data_filtered.shift', d);
  158. for (var v in chart_osX_values) {
  159. if (!d || d[chart_osX] != chart_osX_values[v]) {
  160. data.push(0);
  161. continue;
  162. }
  163. data.push(d[fld_name]);
  164. d = chart_data_filtered.shift();
  165. }
  166. RGraph.Clear(canvas);
  167. var bar = new RGraph.Bar('chart-canvas', data)
  168. .Set('labels', chart_osX_values)
  169. .Set('gutter.left', 50)
  170. .Set('hmargin', 15)
  171. .Set('strokestyle', 'white')
  172. .Set('linewidth', 1)
  173. .Set('shadow', true)
  174. .Set('shadow.color', '#ccc')
  175. .Set('shadow.offsetx', 0)
  176. .Set('shadow.offsety', 0)
  177. .Set('shadow.blur', 10)
  178. .Draw();
  179. // .Set('colors', ['Gradient(#99f:#27afe9:#058DC7:#058DC7)', 'Gradient(#94f776:#50B332:#B1E59F)', 'Gradient(#fe783e:#EC561B:#F59F7D)'])
  180. return false;
  181. });
  182. </script>
  183. <?php
  184. return;
  185. }
  186. else if ($task == 'FVAT_POS') {
  187. $args = array();
  188. $args['no_clear'] = ('1' == V::get('no_clear', '', $_GET));
  189. $args['update_year'] = V::get('update_year', '', $_GET, 'int');
  190. $sql_date_filter = date('Y');
  191. if (!$args['no_clear']) {
  192. $sqlList[] = "DROP TABLE `stats_BILLS_FVAT_POS`; ";
  193. $sqlList[] = "CREATE TABLE IF NOT EXISTS `stats_BILLS_FVAT_POS` (
  194. `ID` int(11) NOT NULL,
  195. `ID_BILLING_USERS` int(11) NOT NULL,
  196. `id_owner` int(11) NOT NULL,
  197. `MONTH` date NOT NULL,
  198. `ID_SERVICES` int(11) NOT NULL DEFAULT '0',
  199. `ID_DEALS_TABLE` int(11) NOT NULL DEFAULT '0',
  200. `INCOME` decimal(10,2) NOT NULL DEFAULT '0.00',
  201. `P_OFFER_COSTS` decimal(10,2) NOT NULL DEFAULT '0.00',
  202. `P_OFFER_ZYSK` decimal(10,2) NOT NULL DEFAULT '0.00',
  203. `ID_OFFERS` int(11) NOT NULL DEFAULT '0',
  204. `S_ADDRESS_STREET` varchar(32) NOT NULL DEFAULT '',
  205. `T_TELBOX_BUILDING_IN` varchar(16) NOT NULL DEFAULT '',
  206. `P_OSIEDLE` varchar(64) NOT NULL DEFAULT '',
  207. `M_REWIR` varchar(255) NOT NULL DEFAULT '',
  208. `NAME_LIST_SERVICES` varchar(16) NOT NULL DEFAULT '',
  209. `P_SERVICE` varchar(16) NOT NULL DEFAULT '',
  210. `P_NET_SPEED` varchar(16) NOT NULL DEFAULT '',
  211. `P_NET_GROUP` varchar(32) NOT NULL DEFAULT '',
  212. `P_TV_NAME` varchar(64) NOT NULL DEFAULT '',
  213. `P_TEL_NAME` varchar(64) NOT NULL DEFAULT '',
  214. `FVAT_POS_DESCR` varchar(64) NOT NULL DEFAULT '',
  215. KEY `MONTH` (`MONTH`)
  216. ) ENGINE=MyISAM DEFAULT CHARSET=latin2;
  217. ";
  218. $sqlList[] = "TRUNCATE TABLE `stats_BILLS_FVAT_POS`; ";
  219. }
  220. if ($args['update_year']) {
  221. $sql_date_filter = $args['update_year'];
  222. $sqlList[] = "delete from `stats_BILLS_FVAT_POS` where `MONTH` like '{$sql_date_filter}-%' ; ";
  223. }
  224. // -- DATE_FORMAT(f.`DATE_FROM`,'%Y-%m-00')
  225. // -- (f.`DATE_FROM` like '{$sql_date_filter}-%')
  226. $sqlList[] = "insert into `SES_USERS2`.`stats_BILLS_FVAT_POS`
  227. (`ID`, `ID_SERVICES`, `MONTH`, `INCOME`, `ID_OFFERS`
  228. , `ID_BILLING_USERS`, `id_owner`
  229. , `FVAT_POS_DESCR`
  230. )
  231. select f.`ID`, f.`ID_SERVICES`, DATE_FORMAT(fv.`BILL_DATE`,'%Y-%m-00'), f.`PRICE` * f.`AMMOUNT`, f.`ID_OFFERS`
  232. , fv.`ID_BILLING_USERS`, fv.`id_owner`
  233. , f.`DESCR`
  234. from `billing2013`.`BILLS_FVAT_POS` as f, `billing2013`.`BILLS_FVAT` as fv
  235. where
  236. (fv.`BILL_DATE` like '{$sql_date_filter}-%')
  237. and f.`ID_BILLS_FVAT`=fv.`ID`
  238. ";
  239. $sqlList[] = "update `stats_BILLS_FVAT_POS` as f, `SERVICES` as s
  240. set
  241. f.`S_ADDRESS_STREET`=s.`S_ADDRESS_STREET`
  242. , f.`NAME_LIST_SERVICES`=s.`NAME_LIST_SERVICES`
  243. , f.`ID_DEALS_TABLE`=s.`ID_DEALS_TABLE`
  244. where s.`ID`=f.`ID_SERVICES`
  245. and f.`ID_SERVICES`>0
  246. ";
  247. $sqlList[] = "update `stats_BILLS_FVAT_POS` as f, `DEALS_TABLE` as d
  248. set
  249. f.`S_ADDRESS_STREET`=d.`S_ADDRESS_STREET`
  250. where d.`ID`=f.`ID_DEALS_TABLE`
  251. and f.`S_ADDRESS_STREET`=''
  252. ";
  253. $sqlList[] = "update `stats_BILLS_FVAT_POS` as f, `USERS2_MARKETING` as m, `BUILDINGS` as b
  254. set
  255. f.`T_TELBOX_BUILDING_IN`=m.`T_TELBOX_BUILDING_IN`
  256. , f.`M_REWIR`=b.`M_REWIR`
  257. , f.`P_OSIEDLE`=IF(b.`P_OSIEDLE`!=''
  258. , CONCAT(b.`S_ADDRESS_CITY`, ' - ', b.`P_OSIEDLE`)
  259. , b.`S_ADDRESS_CITY`
  260. )
  261. where m.`S_ADDRESS_STREET`=f.`S_ADDRESS_STREET`
  262. and b.`S_ADDRESS_STREET`=m.`T_TELBOX_BUILDING_IN`
  263. and f.`S_ADDRESS_STREET`!=''
  264. ";
  265. $sqlList[] = "update `stats_BILLS_FVAT_POS` as f, `USERS2_OFFERS` as o, `USERS2_OFFERS_COSTS_GROUPS` as c
  266. set
  267. f.`P_SERVICE`=IF(o.`P_SERVICE`='OPCJE'
  268. , concat(o.`P_SERVICE`, '_', o.`P_SERVICE_PARENT`)
  269. , o.`P_SERVICE`
  270. )
  271. , f.`P_NET_SPEED`=IF(o.`P_SERVICE` in('NET')
  272. , o.`P_S_PARAM1`
  273. , '')
  274. , f.`P_TV_NAME`=IF(o.`P_SERVICE` in('TV','TVC','TVCP')
  275. , o.`P_SERVICE_NAME`
  276. , '')
  277. , f.`P_TEL_NAME`=IF(o.`P_SERVICE` in('TEL')
  278. , o.`P_SERVICE_NAME`
  279. , '')
  280. , f.`P_OFFER_COSTS`=c.`P_OFFER_COSTS`
  281. where o.`ID`=f.`ID_OFFERS`
  282. and c.`ID`=o.`ID_COSTS_GROUPS`
  283. and f.`ID_OFFERS`>0
  284. ";
  285. $sqlList[] = "update `stats_BILLS_FVAT_POS` as f, `USERS2_OFFERS` as o, `USERS2_PRODUKT` as p
  286. set
  287. f.`P_NET_GROUP`=p.`P_NAME`
  288. where o.`ID`=f.`ID_OFFERS`
  289. and p.`ID`=o.`ID_PRODUKT`
  290. and f.`ID_OFFERS`>0
  291. and o.`ID_PRODUKT`>0
  292. and o.`P_SERVICE`='NET'
  293. ";
  294. $sqlList[] = "update `stats_BILLS_FVAT_POS` as f
  295. set
  296. f.`P_OFFER_ZYSK`=f.`INCOME` - f.`P_OFFER_COSTS`
  297. ";
  298. }
  299. else {
  300. {// temp_USERS2_INTERNET_STATUS_INTERNET_NORMAL
  301. $sqlList[] = "drop table if exists temp_USERS2_INTERNET_STATUS_INTERNET_NORMAL";
  302. $sqlList[] = "create table temp_USERS2_INTERNET_STATUS_INTERNET_NORMAL
  303. select ID, S_ADDRESS_STREET, USERS2_INTERNET_STATUS, P_DEALEXPIRE
  304. from temp_USERS2_INTERNET_STATUS
  305. where
  306. ( USERS2_INTERNET_STATUS like 'NORMAL%' or USERS2_INTERNET_STATUS like 'WAITING%' )
  307. and NAME_LIST_SERVICES like 'USERS2'
  308. group by S_ADDRESS_STREET
  309. ";
  310. $sqlList[] = "alter table temp_USERS2_INTERNET_STATUS_INTERNET_NORMAL add index(S_ADDRESS_STREET)";
  311. }
  312. {// temp_USERS2_INTERNET_STATUS_VOIP_NORMAL
  313. $sqlList[] = "drop table if exists temp_USERS2_INTERNET_STATUS_VOIP_NORMAL";
  314. $sqlList[] = "create table temp_USERS2_INTERNET_STATUS_VOIP_NORMAL
  315. select ID, S_ADDRESS_STREET, USERS2_INTERNET_STATUS, P_DEALEXPIRE
  316. from temp_USERS2_INTERNET_STATUS
  317. where
  318. ( USERS2_INTERNET_STATUS like 'NORMAL%' or USERS2_INTERNET_STATUS like 'WAITING%' )
  319. and NAME_LIST_SERVICES like 'VOIP'
  320. group by S_ADDRESS_STREET
  321. ";
  322. $sqlList[] = "alter table temp_USERS2_INTERNET_STATUS_VOIP_NORMAL add index(S_ADDRESS_STREET)";
  323. }
  324. {// temp_USERS2_INTERNET_STATUS_TV_NORMAL
  325. $sqlList[] = "drop table if exists temp_USERS2_INTERNET_STATUS_TV_NORMAL";
  326. $sqlList[] = "create table temp_USERS2_INTERNET_STATUS_TV_NORMAL
  327. select ID, S_ADDRESS_STREET, USERS2_INTERNET_STATUS, P_DEALEXPIRE
  328. from temp_USERS2_INTERNET_STATUS
  329. where
  330. ( USERS2_INTERNET_STATUS like 'NORMAL%' or USERS2_INTERNET_STATUS like 'WAITING%' )
  331. and NAME_LIST_SERVICES like 'TV'
  332. group by S_ADDRESS_STREET
  333. ";
  334. $sqlList[] = "alter table temp_USERS2_INTERNET_STATUS_TV_NORMAL add index(S_ADDRESS_STREET)";
  335. }
  336. {// temp_USERS2_INTERNET_STATUS_OFF_HARD
  337. $sqlList[] = "drop table if exists temp_USERS2_INTERNET_STATUS_OFF_HARD";
  338. $sqlList[] = "create table temp_USERS2_INTERNET_STATUS_OFF_HARD
  339. select t1.ID, t1.S_ADDRESS_STREET, t2.ID as T2_ID
  340. from USERS2_MARKETING as t1
  341. left join temp_USERS2_INTERNET_STATUS_INTERNET_NORMAL as t2 on(t2.S_ADDRESS_STREET=t1.S_ADDRESS_STREET)
  342. where
  343. t2.ID is NULL
  344. and t1.I_OPER='BN'
  345. ";
  346. }
  347. {// update USERS2_MARKETING fields: I_OPER, I_OPER_FIN
  348. // by NORMAL - temp_USERS2_INTERNET_STATUS_INTERNET_NORMAL
  349. $sqlList[] = "update USERS2_MARKETING, temp_USERS2_INTERNET_STATUS_INTERNET_NORMAL
  350. set USERS2_MARKETING.I_OPER='BN',
  351. USERS2_MARKETING.I_OPER_FIN=temp_USERS2_INTERNET_STATUS_INTERNET_NORMAL.P_DEALEXPIRE
  352. where USERS2_MARKETING.S_ADDRESS_STREET=temp_USERS2_INTERNET_STATUS_INTERNET_NORMAL.S_ADDRESS_STREET
  353. ";
  354. // update USERS2_MARKETING fields: I_OPER by OFF_HARD
  355. $sqlList[] = "update USERS2_MARKETING, temp_USERS2_INTERNET_STATUS_OFF_HARD
  356. set USERS2_MARKETING.I_OPER='NIEWIADOMO'
  357. where USERS2_MARKETING.I_OPER='BN'
  358. and USERS2_MARKETING.S_ADDRESS_STREET=temp_USERS2_INTERNET_STATUS_OFF_HARD.S_ADDRESS_STREET
  359. ";
  360. // update USERS2_MARKETING fields: I_OPER, T_OPER_FIN by VOIP
  361. $sqlList[] = "update USERS2_MARKETING, temp_USERS2_INTERNET_STATUS_VOIP_NORMAL
  362. set USERS2_MARKETING.T_OPER='BN',
  363. USERS2_MARKETING.T_OPER_FIN=temp_USERS2_INTERNET_STATUS_VOIP_NORMAL.P_DEALEXPIRE
  364. where USERS2_MARKETING.S_ADDRESS_STREET=temp_USERS2_INTERNET_STATUS_VOIP_NORMAL.S_ADDRESS_STREET
  365. ";
  366. // update USERS2_MARKETING fields: TV_OPER, TV_OPER_FIN
  367. $sqlList[] = "update USERS2_MARKETING, temp_USERS2_INTERNET_STATUS_TV_NORMAL
  368. set USERS2_MARKETING.TV_OPER='BN',
  369. USERS2_MARKETING.TV_OPER_FIN=temp_USERS2_INTERNET_STATUS_TV_NORMAL.P_DEALEXPIRE
  370. where USERS2_MARKETING.S_ADDRESS_STREET=temp_USERS2_INTERNET_STATUS_TV_NORMAL.S_ADDRESS_STREET
  371. ";
  372. }
  373. {// USERS2_MARKETING_OVERWIEV
  374. $sqlList[] = "drop table if exists USERS2_MARKETING_OVERWIEV";
  375. // update `USERS2_MARKETING` fields: `M_REWIR`
  376. $sqlList[] = "update USERS2_MARKETING , BUILDINGS
  377. set USERS2_MARKETING.M_REWIR=BUILDINGS.M_REWIR
  378. where
  379. USERS2_MARKETING.T_TELBOX_BUILDING_IN=BUILDINGS.S_ADDRESS_STREET
  380. and BUILDINGS.M_REWIR!=''
  381. and BUILDINGS.M_REWIR is not null
  382. ";
  383. $COLSFORSTATS = array('I','T','TV');
  384. $COLSFORSTATS_OPERS = array('INNY','UPC','NSM','TP','EIA','BRAK','JARSAT');
  385. //BEGIN MIESZKANIA STATSY
  386. $sql = "select 0 as ID
  387. , USERS2_MARKETING.T_TELBOX_BUILDING_IN
  388. , USERS2_MARKETING.M_REWIR
  389. , BUILDINGS.T_NETWORK_SERVER
  390. , sum(if(USERS2_MARKETING.I_OPER='BN',1,0) ) as ABO_I ,count(USERS2_MARKETING.S_ADDRESS_STREET) as MIESZKAN
  391. , round(( sum( if(
  392. ( USERS2_MARKETING.I_BAD_DATE> from_unixtime(unix_timestamp(now())-31536000)
  393. or USERS2_MARKETING.T_BAD_DATE> from_unixtime(unix_timestamp(now())-31536000)
  394. or USERS2_MARKETING.TV_BAD_DATE> from_unixtime(unix_timestamp(now())-31536000)
  395. ), 1, 0) ) / count(USERS2_MARKETING.S_ADDRESS_STREET) * 100), 2) as BADAN_I
  396. , round(( sum( if(
  397. ( USERS2_MARKETING.I_BAD_DATE> from_unixtime(unix_timestamp(now())-31536000)
  398. or USERS2_MARKETING.T_BAD_DATE> from_unixtime(unix_timestamp(now())-31536000)
  399. or USERS2_MARKETING.TV_BAD_DATE> from_unixtime(unix_timestamp(now())-31536000)
  400. or USERS2_MARKETING.I_OPER='BN'
  401. or USERS2_MARKETING.T_OPER='BN'
  402. or USERS2_MARKETING.TV_OPER='BN'
  403. ), 1, 0) ) / count(USERS2_MARKETING.S_ADDRESS_STREET) * 100), 2) as ANKIET_I
  404. , BUILDINGS.A_ADM_COMPANY
  405. ";
  406. foreach ($COLSFORSTATS as $FFS) {
  407. $sql .= " , round((sum(if( USERS2_MARKETING.{$FFS}_OPER='BN',1,0) ) / count(USERS2_MARKETING.S_ADDRESS_STREET) * 100), 2) as NAS_{$FFS} ";
  408. foreach ($COLSFORSTATS_OPERS as $FFFS) {
  409. $sql .= " , round((
  410. sum(
  411. if( USERS2_MARKETING.{$FFS}_OPER='{$FFFS}', 1, 0)
  412. ) / sum(
  413. if(
  414. (USERS2_MARKETING.{$FFS}_BAD_DATE!='0000-00-00')
  415. and (USERS2_MARKETING.{$FFS}_OPER!='BN'), 1, 0
  416. )
  417. ) * (
  418. count(USERS2_MARKETING.S_ADDRESS_STREET)
  419. -
  420. sum(if(USERS2_MARKETING.{$FFS}_OPER='BN', 1, 0))
  421. ) / count(USERS2_MARKETING.S_ADDRESS_STREET)
  422. ) * 100, 2) as PR_{$FFS}_{$FFFS}
  423. ";
  424. }
  425. $sql .= "
  426. , round((
  427. sum(
  428. if(
  429. (USERS2_MARKETING.{$FFS}_OPER!='BN'
  430. and USERS2_MARKETING.{$FFS}_OPER_ZAINT > 2
  431. and USERS2_MARKETING.{$FFS}_OPER_ZAINT != 'NIEWIADOMO'), 1, 0)
  432. ) / sum(
  433. if( (USERS2_MARKETING.{$FFS}_BAD_DATE!='0000-00-00') and (USERS2_MARKETING.{$FFS}_OPER!='BN'), 1, 0)
  434. ) * (
  435. count(USERS2_MARKETING.S_ADDRESS_STREET)
  436. -
  437. sum(if(USERS2_MARKETING.{$FFS}_OPER='BN',1,0))
  438. ) / count(USERS2_MARKETING.S_ADDRESS_STREET)
  439. ) * 100, 2) as PR_{$FFS}_ZAINT
  440. , round ((
  441. sum(
  442. if(
  443. (USERS2_MARKETING.{$FFS}_OPER!='BN'
  444. and USERS2_MARKETING.{$FFS}_OPER!='BRAK'
  445. and USERS2_MARKETING.{$FFS}_OPER!='NIEWIADOMO'), 1, 0)
  446. ) / sum(
  447. if(
  448. (USERS2_MARKETING.{$FFS}_BAD_DATE!='0000-00-00') and (USERS2_MARKETING.{$FFS}_OPER!='BN') ,1,0 )
  449. ) * (
  450. count(USERS2_MARKETING.S_ADDRESS_STREET)
  451. -
  452. sum(if(USERS2_MARKETING.{$FFS}_OPER='BN', 1, 0))
  453. ) / count(USERS2_MARKETING.S_ADDRESS_STREET)
  454. ) * 100, 2) as PR_{$FFS}_KONKUR
  455. ";
  456. }
  457. $sql .= "
  458. from USERS2_MARKETING as USERS2_MARKETING
  459. left join BUILDINGS on (BUILDINGS.S_ADDRESS_STREET=USERS2_MARKETING.T_TELBOX_BUILDING_IN)
  460. where
  461. USERS2_MARKETING.A_STATUS!='DELETED'
  462. and BUILDINGS.A_STATUS!='DELETED'
  463. group by USERS2_MARKETING.T_TELBOX_BUILDING_IN
  464. order by USERS2_MARKETING.M_REWIR DESC, USERS2_MARKETING.T_TELBOX_BUILDING_IN
  465. ";
  466. $sqlList[] = " create table `USERS2_MARKETING_OVERWIEV` \n {$sql} \n limit 1";
  467. $sqlList[] = " truncate table `USERS2_MARKETING_OVERWIEV` ";
  468. $sqlList[] = " ALTER TABLE `USERS2_MARKETING_OVERWIEV` ENGINE=MYISAM ";
  469. $sqlList[] = " ALTER TABLE `USERS2_MARKETING_OVERWIEV` CHANGE `ID` `ID` INT(11) NOT NULL DEFAULT '0' ";
  470. $sqlList[] = " ALTER TABLE `USERS2_MARKETING_OVERWIEV` ADD PRIMARY KEY(`ID`) ";
  471. $sqlList[] = " ALTER TABLE `USERS2_MARKETING_OVERWIEV` CHANGE `ID` `ID` INT(11) NOT NULL AUTO_INCREMENT ";
  472. $sqlList[] = " insert into `USERS2_MARKETING_OVERWIEV` \n {$sql}";
  473. }
  474. {// REWIRY STATSY - USERS2_MARKETING_OVERWIEV_REWIR
  475. $sqlList[] = "drop table if exists USERS2_MARKETING_OVERWIEV_REWIR";
  476. $sql = " select 0 as ID
  477. , group_concat(distinct ' ', USERS2_MARKETING.T_TELBOX_BUILDING_IN) as T_TELBOX_BUILDING_IN
  478. , USERS2_MARKETING.M_REWIR
  479. , BUILDINGS.T_NETWORK_SERVER
  480. , sum(if(USERS2_MARKETING.I_OPER='BN',1,0) ) as ABO_I
  481. , count(USERS2_MARKETING.S_ADDRESS_STREET) as MIESZKAN
  482. , round((sum(if(USERS2_MARKETING.I_OPER='BN', 1, 0)) / count(USERS2_MARKETING.S_ADDRESS_STREET) * 100), 2) as NAS_I
  483. , round(( sum( if(
  484. ( USERS2_MARKETING.I_BAD_DATE> from_unixtime(unix_timestamp(now())-31536000)
  485. or USERS2_MARKETING.T_BAD_DATE> from_unixtime(unix_timestamp(now())-31536000)
  486. or USERS2_MARKETING.TV_BAD_DATE> from_unixtime(unix_timestamp(now())-31536000)
  487. ), 1, 0)
  488. ) / count(USERS2_MARKETING.S_ADDRESS_STREET) * 100), 2) as BADAN_I
  489. , round(( sum( if(
  490. ( USERS2_MARKETING.I_BAD_DATE> from_unixtime(unix_timestamp(now())-31536000)
  491. or USERS2_MARKETING.T_BAD_DATE> from_unixtime(unix_timestamp(now())-31536000)
  492. or USERS2_MARKETING.TV_BAD_DATE> from_unixtime(unix_timestamp(now())-31536000)
  493. or USERS2_MARKETING.I_OPER='BN'
  494. or USERS2_MARKETING.T_OPER='BN'
  495. or USERS2_MARKETING.TV_OPER='BN'), 1, 0)
  496. ) / count(USERS2_MARKETING.S_ADDRESS_STREET) * 100), 2) as ANKIET_I
  497. , BUILDINGS.A_ADM_COMPANY
  498. ";
  499. foreach ($COLSFORSTATS as $FFS) {
  500. foreach ($COLSFORSTATS_OPERS as $FFFS) {
  501. $sql .= ", round(( sum(
  502. if(USERS2_MARKETING.{$FFS}_OPER='{$FFFS}', 1, 0)
  503. ) / sum(
  504. if( (USERS2_MARKETING.{$FFS}_BAD_DATE!='0000-00-00') and (USERS2_MARKETING.{$FFS}_OPER!='BN'), 1, 0)
  505. ) * (
  506. count(USERS2_MARKETING.S_ADDRESS_STREET)
  507. - sum(if(USERS2_MARKETING.{$FFS}_OPER='BN', 1, 0))
  508. ) / count(USERS2_MARKETING.S_ADDRESS_STREET)) * 100, 2) as PR_{$FFS}_{$FFFS}
  509. ";
  510. }
  511. $sql .= ", round(( sum(
  512. if(
  513. (USERS2_MARKETING.{$FFS}_OPER!='BN'
  514. and USERS2_MARKETING.{$FFS}_OPER_ZAINT > 2
  515. and USERS2_MARKETING.{$FFS}_OPER_ZAINT!='NIEWIADOMO'), 1, 0)
  516. ) / sum(
  517. if( (USERS2_MARKETING.{$FFS}_BAD_DATE!='0000-00-00') and (USERS2_MARKETING.{$FFS}_OPER!='BN'), 1, 0)
  518. ) * (
  519. count(USERS2_MARKETING.S_ADDRESS_STREET)
  520. - sum(if(USERS2_MARKETING.{$FFS}_OPER='BN', 1, 0))
  521. ) / count(USERS2_MARKETING.S_ADDRESS_STREET)) * 100, 2) as PR_{$FFS}_ZAINT
  522. , round((
  523. sum(
  524. if( (USERS2_MARKETING.{$FFS}_OPER!='BN' and USERS2_MARKETING.{$FFS}_OPER!='BRAK' and USERS2_MARKETING.{$FFS}_OPER!='NIEWIADOMO'), 1, 0)
  525. ) / sum(
  526. if( (USERS2_MARKETING.{$FFS}_BAD_DATE!='0000-00-00') and (USERS2_MARKETING.{$FFS}_OPER!='BN'), 1, 0)
  527. ) * (
  528. count(USERS2_MARKETING.S_ADDRESS_STREET)
  529. - sum(if(USERS2_MARKETING.{$FFS}_OPER='BN',1,0))
  530. ) / count(USERS2_MARKETING.S_ADDRESS_STREET)
  531. ) * 100, 2) as PR_{$FFS}_KONKUR
  532. ";
  533. }
  534. $sql .= "
  535. from USERS2_MARKETING as USERS2_MARKETING
  536. left join BUILDINGS on BUILDINGS.S_ADDRESS_STREET=USERS2_MARKETING.T_TELBOX_BUILDING_IN
  537. where USERS2_MARKETING.A_STATUS!='DELETED' and BUILDINGS.A_STATUS!='DELETED'
  538. group by USERS2_MARKETING.M_REWIR
  539. order by USERS2_MARKETING.M_REWIR DESC ,USERS2_MARKETING.T_TELBOX_BUILDING_IN
  540. ";
  541. $sqlList[] = " create table `USERS2_MARKETING_OVERWIEV_REWIR` \n {$sql} \n limit 1";
  542. $sqlList[] = " truncate table `USERS2_MARKETING_OVERWIEV_REWIR` ";
  543. $sqlList[] = " ALTER TABLE `USERS2_MARKETING_OVERWIEV_REWIR` ENGINE=MYISAM ";
  544. $sqlList[] = " ALTER TABLE `USERS2_MARKETING_OVERWIEV_REWIR` CHANGE `ID` `ID` INT(11) NOT NULL DEFAULT '0' ";
  545. $sqlList[] = " ALTER TABLE `USERS2_MARKETING_OVERWIEV_REWIR` ADD PRIMARY KEY(`ID`) ";
  546. $sqlList[] = " ALTER TABLE `USERS2_MARKETING_OVERWIEV_REWIR` CHANGE `ID` `ID` INT(11) NOT NULL AUTO_INCREMENT ";
  547. $sqlList[] = " insert into `USERS2_MARKETING_OVERWIEV_REWIR` \n {$sql}";
  548. }
  549. {// add fields to USERS2_MARKETING_OVERWIEV
  550. /*
  551. $sqlList[] = "ALTER TABLE `USERS2_MARKETING_OVERWIEV` CHANGE `ABO_I` `ABO_I` CHAR( 10 ) NOT NULL DEFAULT '0',
  552. CHANGE `MIESZKAN` `MIESZKAN` CHAR( 10 ) NOT NULL DEFAULT '0',
  553. CHANGE `NAS_I` `NAS_I` CHAR( 10 ) NULL DEFAULT NULL ,
  554. CHANGE `ANKIET_I` `ANKIET_I` CHAR( 10 ) NULL DEFAULT NULL ,
  555. CHANGE `PR_I_UPC` `PR_I_UPC` CHAR( 10 ) NULL DEFAULT NULL ,
  556. CHANGE `PR_I_INNY` `PR_I_INNY` CHAR( 10 ) NULL DEFAULT NULL , CHANGE `PR_I_NSM` `PR_I_NSM` CHAR( 10 ) NULL DEFAULT NULL ,
  557. CHANGE `PR_I_TP` `PR_I_TP` CHAR( 10 ) NULL DEFAULT NULL , CHANGE `PR_I_EIA` `PR_I_EIA` CHAR( 10 ) NULL DEFAULT NULL ,
  558. CHANGE `PR_I_BRAK` `PR_I_BRAK` CHAR( 10 ) NULL DEFAULT NULL , CHANGE `PR_I_KONKUR` `PR_I_KONKUR` CHAR( 10 ) NULL DEFAULT NULL ,
  559. CHANGE `BADAN_I` `BADAN_I` CHAR( 10 ) NULL DEFAULT NULL ,
  560. CHANGE `PR_I_ZAINT` `PR_I_ZAINT` CHAR( 10 ) NULL DEFAULT NULL,
  561. CHANGE `PR_I_JARSAT` `PR_I_JARSAT` CHAR( 10 ) NULL DEFAULT NULL
  562. ";
  563. */
  564. /*
  565. $sqlList[] = "ALTER TABLE `USERS2_MARKETING_OVERWIEV_REWIR` CHANGE `ABO_I` `ABO_I` CHAR( 10 ) NOT NULL DEFAULT '0',
  566. CHANGE `MIESZKAN` `MIESZKAN` CHAR( 10 ) NOT NULL DEFAULT '0',
  567. CHANGE `NAS_I` `NAS_I` CHAR( 10 ) NULL DEFAULT NULL ,
  568. CHANGE `ANKIET_I` `ANKIET_I` CHAR( 10 ) NULL DEFAULT NULL ,
  569. CHANGE `PR_I_UPC` `PR_I_UPC` CHAR( 10 ) NULL DEFAULT NULL ,
  570. CHANGE `PR_I_INNY` `PR_I_INNY` CHAR( 10 ) NULL DEFAULT NULL , CHANGE `PR_I_NSM` `PR_I_NSM` CHAR( 10 ) NULL DEFAULT NULL ,
  571. CHANGE `PR_I_TP` `PR_I_TP` CHAR( 10 ) NULL DEFAULT NULL , CHANGE `PR_I_EIA` `PR_I_EIA` CHAR( 10 ) NULL DEFAULT NULL ,
  572. CHANGE `PR_I_BRAK` `PR_I_BRAK` CHAR( 10 ) NULL DEFAULT NULL , CHANGE `PR_I_KONKUR` `PR_I_KONKUR` CHAR( 10 ) NULL DEFAULT NULL ,
  573. CHANGE `BADAN_I` `BADAN_I` CHAR( 10 ) NULL DEFAULT NULL ,
  574. CHANGE `PR_I_ZAINT` `PR_I_ZAINT` CHAR( 10 ) NULL DEFAULT NULL
  575. ";
  576. */
  577. $sqlList[] = " alter table USERS2_MARKETING_OVERWIEV add A_RECORD_CREATE_DATE varchar(30) ;";
  578. $sqlList[] = " alter table USERS2_MARKETING_OVERWIEV add A_RECORD_CREATE_AUTHOR varchar(100) not null ;";
  579. $sqlList[] = " alter table USERS2_MARKETING_OVERWIEV add A_RECORD_UPDATE_DATE varchar(30) ; ";
  580. $sqlList[] = " alter table USERS2_MARKETING_OVERWIEV add A_RECORD_UPDATE_AUTHOR varchar(100) not null ; ";
  581. $sqlList[] = " alter table USERS2_MARKETING_OVERWIEV add L_APPOITMENT_DATE varchar(30) not null ; ";
  582. $sqlList[] = " alter table USERS2_MARKETING_OVERWIEV add L_APPOITMENT_USER varchar(100) not null ; ";
  583. $sqlList[] = " alter table USERS2_MARKETING_OVERWIEV add L_APPOITMENT_PERIOD varchar(4) not null ; ";
  584. $sqlList[] = " alter table USERS2_MARKETING_OVERWIEV add L_APPOITMENT_INFO varchar(255) not null ; ";
  585. $sqlList[] = " alter table USERS2_MARKETING_OVERWIEV add L_APPOITMENT_TYPE enum('', 'ARRANGED', 'TO_ARRANGE', 'CANCELLED', 'TO_CANCEL', 'RELATE', 'WAIT') ; ";
  586. $sqlList[] = " alter table USERS2_MARKETING_OVERWIEV add A_PROBLEM enum('', 'WARNING', 'PROBLEM', 'SERIOUS', 'UNVERIFIED') ; ";
  587. $sqlList[] = " alter table USERS2_MARKETING_OVERWIEV add A_PROBLEM_DESC varchar(255) not null ; ";
  588. $sqlList[] = " alter table USERS2_MARKETING_OVERWIEV add A_PROBLEM_DATE varchar(30) not null ; ";
  589. $sqlList[] = " alter table USERS2_MARKETING_OVERWIEV add A_STATUS enum('WAITING', 'NORMAL', 'MONITOR', 'WARNING', 'OFF_SOFT', 'OFF_HARD', 'DELETED') ; ";
  590. $sqlList[] = " alter table USERS2_MARKETING_OVERWIEV add A_STATUS_INFO varchar(255) not null ; ";
  591. $sqlList[] = " alter table USERS2_MARKETING_OVERWIEV add A_CLASSIFIED varchar(100) not null ; ";
  592. $sqlList[] = " alter table USERS2_MARKETING_OVERWIEV add T_WORKPOINTS varchar(100) not null ; ";
  593. $sqlList[] = " alter table USERS2_MARKETING_OVERWIEV add T_WORKPOINTS_VALUE varchar(100) not null ; ";
  594. $sqlList[] = " alter table USERS2_MARKETING_OVERWIEV add T_WORKPOINTS_TYPE varchar(100) not null ; ";
  595. $sqlList[] = " alter table USERS2_MARKETING_OVERWIEV add T_WORKPOINTS_USER varchar(100) not null ; ";
  596. $sqlList[] = " alter table USERS2_MARKETING_OVERWIEV add T_WORKPOINTS_DATE varchar(100) not null ; ";
  597. $sqlList[] = " alter table USERS2_MARKETING_OVERWIEV add P_ACCOUNT varchar(40) not null ; ";
  598. }
  599. }
  600. $errors = false;
  601. foreach ($sqlList as $sql) {
  602. echo'<pre style="max-height:200px;overflow:auto;border:1px solid green;text-align:left;">sql (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sql);echo'</pre>';
  603. $res = $db->query($sql);
  604. if ($db->has_errors()) {
  605. $errors = true;
  606. echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;"> (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($db->get_errors());echo'</pre>';
  607. }
  608. }
  609. if ($errors) {
  610. echo '<div class="alert alert-error">' . "Uwaga wystąpiły błędy - w czerwonej ramce" . '</div>';
  611. } else {
  612. echo '<div class="alert alert-success">' . "Operacje zakończone pomyślnie" . '</div>';
  613. }
  614. }