superedit-USERS2_OFFERS_COSTS_SALES_PLAN.php 34 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025
  1. <?php
  2. function USERS2_OFFERS_COSTS_SALES_PLAN() {
  3. global $ARG1;
  4. $params = array();
  5. require_once dirname(__FILE__) . '/' . 'se-lib' . '/' . 'Lib.php';
  6. Lib::loadClass('V');
  7. Lib::loadClass('DB');
  8. $params = array();
  9. $params['toolbar'] = array();
  10. $params['toolbar'] []= '<a href="' . "?MENU_INIT=USERS2_OFFERS_COSTS_SALES_PLAN" . "&ARG1=ROZLICZ" . '">' . "ROZLICZ" . '</a>';
  11. //$params['toolbar'] []= '<a href="' . "?MENU_INIT=USERS2_OFFERS_COSTS_SALES_PLAN" . "&ARG1=DEALS_CHECK" . '">' . "DEALS_CHECK" . '</a>';
  12. $params['toolbar'] []= '<a href="' . "?MENU_INIT=USERS2_OFFERS_COSTS_SALES_PLAN" . "&ARG1=DEALS_CHECK_END" . '" title="' . "Umowy - daty zakończenia" . '">' . "DEALS_END" . '</a>';
  13. $params['toolbar'] []= '<a href="' . "?MENU_INIT=USERS2_OFFERS_COSTS_SALES_PLAN" . "&ARG1=DEALS_CHECK_REZ" . '" title="' . "Umowy - rezygnacje" . '">' . "DEALS_REZ" . '</a>';
  14. $params['toolbar'] []= '<a href="' . "?MENU_INIT=USERS2_OFFERS_COSTS_SALES_PLAN" . "&ARG1=DEALS_CHECK_WYP" . '" title="' . "Umowy - rezygnacje wyprowadzka" . '">' . "DEALS_WYP" . '</a>';
  15. // update deals status table
  16. $update = false;
  17. if (V::get('_update_stats', 0, $_GET, 'int') == 1) {
  18. $update = true;
  19. if (V::get('DBG', 0, $_GET, 'int') > 1) {
  20. echo '<p>'."Update deals stats...".'</p>';
  21. }
  22. }
  23. $dbg_msgs = array();
  24. Lib::loadClass('ColumnDealsStatus');
  25. ColumnDealsStatus::run_update($update, $dbg_msgs);
  26. if (V::get('DBG', 0, $_GET, 'int') > 1) {
  27. echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">update dbg_msgs: ';print_r($dbg_msgs);echo'</pre>';
  28. }
  29. switch ($ARG1) {
  30. case 'ROZLICZ': {
  31. USERS2_OFFERS_COSTS_SALES_PLAN__ROZLICZ( $params );
  32. break;
  33. }
  34. case 'DEALS_CHECK': {
  35. USERS2_OFFERS_COSTS_SALES_PLAN__DEALS_CHECK( $params );
  36. break;
  37. }
  38. case 'DEALS_CHECK_END': {
  39. USERS2_OFFERS_COSTS_SALES_PLAN__DEALS_CHECK_END();
  40. break;
  41. }
  42. case 'DEALS_CHECK_REZ': {
  43. USERS2_OFFERS_COSTS_SALES_PLAN__type('DEALS_CHECK_REZ', $params);
  44. break;
  45. }
  46. case 'DEALS_CHECK_WYP': {
  47. USERS2_OFFERS_COSTS_SALES_PLAN__type('DEALS_CHECK_WYP', $params);
  48. break;
  49. }
  50. default:
  51. WIEVTABLE( $params );
  52. }
  53. }
  54. function USERS2_OFFERS_COSTS_SALES_PLAN_EDIT() {
  55. EDIT_TABLE_RECORD();
  56. }
  57. function USERS2_OFFERS_COSTS_SALES_PLAN_HIST() {
  58. WIEVTABLE_HIST();
  59. }
  60. function USERS2_OFFERS_COSTS_SALES_PLAN__ROZLICZ( $params = array() ) {
  61. SEF("MENU");
  62. MENU();
  63. if (!empty($params['toolbar'])) {
  64. echo '<p>' . implode(" | ", $params['toolbar']) . '</p>';
  65. }
  66. echo '<h1>' . "Rozliczenie:" . '</h1>';
  67. // frm
  68. $frm = new stdClass();
  69. $frm->sent = false;
  70. $frm->method = 'GET';
  71. $frm->display_field_sep = " ";
  72. $frm->f['f_data'] = array('type'=>'select', 'values'=>array(), 'label'=>"Wybierz miesiąc");
  73. $frm->f['f_user'] = array('type'=>'select', 'values'=>array(), 'label'=>"wybierz pracownika");
  74. foreach ($frm->f as $k_field_name => $v_field) {
  75. switch ($frm->method == 'POST') {
  76. case 'POST':
  77. $frm->v[$k_field_name] = V::get($k_field_name, '', $_POST);
  78. break;
  79. case 'GET':
  80. $frm->v[$k_field_name] = V::get($k_field_name, '', $_GET);
  81. break;
  82. default:
  83. $frm->v[$k_field_name] = V::get($k_field_name, '', $_REQUEST);
  84. }
  85. }//end foreach
  86. // frm - set values
  87. $sql = "select a.`T_WORKPOINTS_MONTH`
  88. from `USERS2_OFFERS_COSTS_SALES_PLAN` as a
  89. where `A_STATUS`!='DELETED'
  90. group by a.`T_WORKPOINTS_MONTH`
  91. order by a.`T_WORKPOINTS_MONTH` desc
  92. ";
  93. Lib::loadClass('DB');
  94. $res = DB::query( $sql );
  95. while ($r = DB::fetch( $res )) {
  96. $frm->f['f_data']['values'][$r->T_WORKPOINTS_MONTH] = $r->T_WORKPOINTS_MONTH;
  97. }
  98. $sql = "select a.`T_WORKPOINTS_USER`
  99. from `USERS2_OFFERS_COSTS_SALES_PLAN` as a
  100. where `A_STATUS`!='DELETED'
  101. group by a.`T_WORKPOINTS_USER`
  102. order by a.`T_WORKPOINTS_USER` asc
  103. ";
  104. Lib::loadClass('DB');
  105. $res = DB::query( $sql );
  106. while ($r = DB::fetch( $res )) {
  107. $frm->f['f_user']['values'][$r->T_WORKPOINTS_USER] = $r->T_WORKPOINTS_USER;
  108. }
  109. // frm - validation
  110. foreach ($frm->f as $k_field_name => $v_field) {
  111. switch ($v_field['type']) {
  112. case 'select':
  113. if (!array_key_exists($frm->v[$k_field_name], $frm->f[$k_field_name]['values'])) {
  114. //TODO: $frm->v[$k_field_name] = '';
  115. }
  116. break;
  117. default:// input type="text"
  118. }
  119. }
  120. // frm - sent
  121. $frm->sent = ($frm->v['f_data'] != '' && $frm->v['f_user'] != '');
  122. // frm - display
  123. echo '<form action="" method="' . $frm->method . '">';
  124. foreach ($frm->f as $k_field_name => $v_field) {
  125. if (isset($v_field['label'])) {
  126. echo $v_field['label'] . " ";
  127. }
  128. switch ($v_field['type']) {
  129. case 'select':
  130. echo '<select name="' . $k_field_name . '">';
  131. echo '<option>' . " [ wybierz ] " . '</option>';
  132. foreach ($v_field['values'] as $k_option => $v_value) {
  133. $sel = ($k_option == $frm->v[$k_field_name])? ' selected="selected"' : '';
  134. echo '<option value="' . $k_option . '"' . $sel . '>' . $v_value . '</option>';
  135. }//end foreach
  136. echo '</select>';
  137. break;
  138. default:// input type="text"
  139. echo '<input type="text" name="' . $k_field_name . '" value="' . $frm->v[$k_field_name] . '" />';
  140. }
  141. echo $frm->display_field_sep;
  142. }//end foreach
  143. // add hidden fields if GET
  144. if ($frm->method == 'GET') {
  145. foreach ($_GET as $k => $v) {
  146. if (!array_key_exists($k, $frm->f)) {
  147. echo '<input type="hidden" name="' . $k . '" value="' . $v . '" />';
  148. }
  149. }
  150. }
  151. echo '<input type="submit" value="' . "OK" . '" />';
  152. echo '</form>';
  153. echo '<br />';
  154. echo '<br />';
  155. // frm - action
  156. if ($frm->sent) {
  157. echo '<p>' . "TODO: rozliczenie " . $frm->v['f_user'] . " w miesiącu " . $frm->v['f_data'] . " ..." . '</p>';
  158. }
  159. }
  160. function USERS2_OFFERS_COSTS_SALES_PLAN__DEALS_CHECK( $params = array() ) {
  161. SEF("MENU");
  162. MENU();
  163. if (!empty($params['toolbar'])) {
  164. echo '<p>' . implode(" | ", $params['toolbar']) . '</p>';
  165. }
  166. echo '<style type="text/css">' . "
  167. .tbl-view {}
  168. .tbl-view th {padding:0 2px;}
  169. .tbl-view td {padding:0 2px;}
  170. .tbl-small {font-size:small;}
  171. .tbl-small th {padding:0 2px; font-size:small;}
  172. .tbl-small td {padding:0 2px; font-size:small;}
  173. " . '</style>';
  174. $deals = array();
  175. //$sql_month = date('Y-m');
  176. $sql_month = date('Y-m', mktime(0,0,0,date('m') - 1, date('d'), date('Y')));
  177. // pobierz z USERS2_DEALS tylko NORMAL
  178. $sql = "select
  179. d.`ID`
  180. -- , d.`M_DIST_FILES`
  181. , d.`A_RECORD_CREATE_DATE`
  182. , d.`A_RECORD_CREATE_AUTHOR`
  183. , d.`A_RECORD_UPDATE_DATE`
  184. , d.`A_RECORD_UPDATE_AUTHOR`
  185. -- , d.`TAB_UPDATE_STAT`
  186. -- , d.`TAB_UPDATE_DATE`
  187. -- , d.`TAB_UPDATE_INFO`
  188. -- , d.`L_APPOITMENT_DATE`
  189. -- , d.`L_APPOITMENT_USER`
  190. -- , d.`L_APPOITMENT_PERIOD`
  191. -- , d.`L_APPOITMENT_INFO`
  192. -- , d.`L_APPOITMENT_TYPE`
  193. -- , d.`A_PROBLEM`
  194. -- , d.`A_PROBLEM_DESC`
  195. -- , d.`A_PROBLEM_DATE`
  196. , d.`A_STATUS`
  197. -- , d.`A_STATUS_CURRENT`
  198. -- , d.`A_STATUS_INFO`
  199. -- , d.`A_STATUS_LASTCHANGE_DATE`
  200. -- , d.`A_UPDATE_DATE`
  201. -- , d.`A_ADM_COMPANY`
  202. , d.`DATA_DOK`
  203. -- , d.`S_ALIAS`
  204. -- , d.`S_ADDRESS_CITY`
  205. , d.`S_ADDRESS_STREET`
  206. , d.`S_OTHER_INFO`
  207. -- , d.`T_WORKPOINTS`
  208. -- , d.`T_WORKPOINTS_PROCES`
  209. -- , d.`T_WORKPOINTS_VALUE`
  210. -- , d.`T_WORKPOINTS_TYPE`
  211. -- , d.`T_WORKPOINTS_USER`
  212. -- , d.`T_WORKPOINTS_DATE`
  213. -- , d.`T_PENALTIES`
  214. -- , d.`T_PENALTIES_TYPE`
  215. -- , d.`T_PENALTIES_VALUE`
  216. , d.`ID_BILLING_USERS_OLD`
  217. , d.`ID_BILLING_USERS_NEW`
  218. , d.`ID_SERVICES_OLD`
  219. , d.`ID_SERVICES_NEW`
  220. , d.`P_SERVICE`
  221. , d.`P_SERVICE_COMPANY`
  222. , d.`P_SERVICE_NAME`
  223. , d.`P_OFFER_ID_OLD`
  224. , d.`P_OFFER_ID_NEW`
  225. , d.`P_DEAL_DATE_OLD`
  226. , d.`P_DEAL_DATE_NEW`
  227. , d.`P_DEALNUMBER_OLD`
  228. , d.`P_DEALNUMBER_NEW`
  229. , d.`P_DEALTERM_OLD`
  230. , d.`P_DEALTERM_NEW`
  231. , d.`MONTH_COST_OLD`
  232. , d.`MONTH_COST_NEW`
  233. , d.`INICJALY_HANDLOWCA`
  234. , d.`RODZAJ_DZIALANIA_HANDLOWEGO`
  235. from `USERS2_DEALS` as d
  236. where
  237. d.`A_STATUS`='NORMAL'
  238. and d.`DATA_DOK` like '" . $sql_month . "-%'
  239. ";
  240. $res = DB::query( $sql );
  241. while ($r = DB::fetch( $res )) {
  242. $deals [$r->ID] = $r;
  243. }
  244. foreach ($deals as $k_id => $deal) {
  245. echo '<br />' . '<b>' . "ID=" . $k_id . '</b>';
  246. $cols = get_object_vars($deal);
  247. // ID A_RECORD_CREATE_DATE A_RECORD_CREATE_AUTHOR A_RECORD_UPDATE_DATE A_RECORD_UPDATE_AUTHOR A_STATUS DATA_DOK S_ADDRESS_STREET S_OTHER_INFO ID_BILLING_USERS_OLD ID_BILLING_USERS_NEW ID_SERVICES_OLD ID_SERVICES_NEW P_SERVICE P_SERVICE_COMPANY P_SERVICE_NAME P_OFFER_ID_OLD P_OFFER_ID_NEW P_DEAL_DATE_OLD P_DEAL_DATE_NEW P_DEALNUMBER_OLD P_DEALNUMBER_NEW P_DEALTERM_OLD P_DEALTERM_NEW MONTH_COST_OLD MONTH_COST_NEW INICJALY_HANDLOWCA RODZAJ_DZIALANIA_HANDLOWEGO
  248. echo '<table border="1" cellspacing="0" cellpadding="0" class="tbl-small">';
  249. echo '<tr>';
  250. foreach ($cols as $k_key => $v_value) {
  251. echo '<th>'.$k_key.'</th>';
  252. }//end foreach
  253. echo '</tr>';
  254. echo '<tr>';
  255. foreach ($cols as $k_key => $v_value) {
  256. echo '<td>'.$deal->$k_key.'</td>';
  257. }//end foreach
  258. echo '</tr>';
  259. echo '</table>';
  260. if ($deal->ID_BILLING_USERS_OLD == 0 && $deal->ID_BILLING_USERS_NEW > 0) {
  261. echo 'Nowa umowa (' . $deal->P_DEALNUMBER_NEW . ') na oferte (' . $deal->P_OFFER_ID_NEW . ')';
  262. }
  263. else if ($deal->ID_BILLING_USERS_OLD > 0 && $deal->ID_BILLING_USERS_NEW == 0) {
  264. echo 'Rezygnacja z umowy (' . $deal->P_DEALNUMBER_OLD . ') na oferte ' . $deal->P_OFFER_ID_OLD;
  265. }
  266. else if ($deal->ID_BILLING_USERS_OLD > 0 && $deal->ID_BILLING_USERS_NEW > 0) {
  267. echo 'Aneks z umowy (' . $deal->P_DEALNUMBER_OLD . ') na umowe (' . $deal->P_DEALNUMBER_NEW . ')';
  268. }
  269. else {
  270. echo 'error?';
  271. }
  272. echo '<hr />';
  273. }//end foreach
  274. }
  275. function USERS2_OFFERS_COSTS_SALES_PLAN__DEALS_CHECK_END( $params = array() ) {
  276. SEF("MENU");
  277. MENU();
  278. if (!empty($params['toolbar'])) {
  279. echo '<p>' . implode(" | ", $params['toolbar']) . '</p>';
  280. }
  281. SalesPlan::print_css();
  282. $_month = V::get('_month', '', $_GET);
  283. $month_arr = explode('-', $_month);
  284. if (count($month_arr) == 2 && strlen($month_arr[0]) == 4 && strlen($month_arr[1]) == 2) {
  285. $klient = V::get('_klient', 0, $_GET, 'int');
  286. $deal = V::get('_deal', 0, $_GET, 'int');
  287. if ($deal > 0 && $klient > 0) {
  288. echo '<h1>' ;
  289. echo '<a href="' . "?MENU_INIT=USERS2_OFFERS_COSTS_SALES_PLAN&ARG1=DEALS_CHECK_END" . '">' . "Umowy - daty zakończenia" . '</a>';
  290. echo ' | ';
  291. echo '<a href="' . "?MENU_INIT=USERS2_OFFERS_COSTS_SALES_PLAN&ARG1=DEALS_CHECK_END&_month=" . $_month . '">' . " miesiac " . $_month . '</a>';
  292. echo ' | ';
  293. echo " klient " . $klient . " (umowa " . $deal . ")";
  294. echo '</h1>';
  295. $sql = "select
  296. d.`ID`
  297. -- , `M_DIST_FILES`
  298. -- , `TAB_UPDATE_STAT`, `TAB_UPDATE_DATE`, `TAB_UPDATE_INFO`
  299. , `DATA_DOK`
  300. -- , `S_ALIAS`, `S_ADDRESS_CITY`
  301. , `S_ADDRESS_STREET`
  302. , `S_OTHER_INFO`
  303. -- , `T_WORKPOINTS`, `T_WORKPOINTS_PROCES`, `T_WORKPOINTS_VALUE`, `T_WORKPOINTS_TYPE`, `T_WORKPOINTS_USER`, `T_WORKPOINTS_DATE`, `T_PENALTIES`, `T_PENALTIES_TYPE`, `T_PENALTIES_VALUE`
  304. , `P_SERVICE`
  305. , `P_SERVICE_COMPANY`
  306. , `P_SERVICE_NAME`
  307. , `ID_BILLING_USERS_OLD`, `ID_BILLING_USERS_NEW`
  308. , `ID_SERVICES_OLD`, `ID_SERVICES_NEW`
  309. , `P_OFFER_ID_OLD`, `P_OFFER_ID_NEW`
  310. , `P_DEAL_DATE_OLD`, `P_DEAL_DATE_NEW`
  311. , `P_DEALNUMBER_OLD`, `P_DEALNUMBER_NEW`
  312. , `P_DEALTERM_OLD`, `P_DEALTERM_NEW`
  313. , `MONTH_COST_OLD`, `MONTH_COST_NEW`
  314. , `INICJALY_HANDLOWCA`
  315. , `RODZAJ_DZIALANIA_HANDLOWEGO`
  316. , `A_RECORD_CREATE_DATE`, `A_RECORD_CREATE_AUTHOR`, `A_RECORD_UPDATE_DATE`, `A_RECORD_UPDATE_AUTHOR`
  317. -- , `L_APPOITMENT_DATE`, `L_APPOITMENT_USER`, `L_APPOITMENT_PERIOD`, `L_APPOITMENT_INFO`, `L_APPOITMENT_TYPE`
  318. -- , `A_PROBLEM`, `A_PROBLEM_DESC`, `A_PROBLEM_DATE`
  319. , `A_STATUS`, `A_STATUS_CURRENT`, `A_STATUS_INFO`, `A_STATUS_LASTCHANGE_DATE`
  320. -- , `A_UPDATE_DATE`
  321. -- , `A_ADM_COMPANY`
  322. , IF((d.`P_DEALNUMBER_OLD`='" . $deal . "' or d.`P_DEALNUMBER_NEW`='" . $deal . "')
  323. , 1
  324. , 0
  325. ) as DOTYCZY_UMOWY
  326. from `USERS2_DEALS` as d
  327. where
  328. (d.`ID_BILLING_USERS_OLD`='" . $klient . "' or d.`ID_BILLING_USERS_NEW`='" . $klient . "')
  329. -- (d.`P_DEALNUMBER_OLD`='" . $deal . "' or d.`P_DEALNUMBER_NEW`='" . $deal . "')
  330. order by `ID` DESC
  331. ";
  332. $res = DB::query( $sql );
  333. while ($r = DB::fetch( $res )) {
  334. $arr []= $r;
  335. }
  336. if (empty($arr)) {
  337. echo '<p>' . "Brak danych" . '</p>';
  338. return;
  339. }
  340. $col_date = array('DATA_DOK','P_DEALTERM_OLD','P_DEALTERM_NEW','P_DEAL_DATE_OLD','P_DEAL_DATE_NEW','A_RECORD_CREATE_DATE','A_RECORD_UPDATE_DATE');
  341. $cols = array_keys( get_object_vars( reset($arr) ) );
  342. if (end($cols) == 'DOTYCZY_UMOWY') array_pop($cols);// remove last col - DOTYCZY_UMOWY
  343. // group cols by OLD, NEW
  344. $col_groups = array();
  345. foreach ($cols as $col) {
  346. if (in_array(substr($col, -4), array('_OLD', '_NEW'))) {
  347. $col_group_name = substr($col, 0, -4);
  348. $col_groups[1][$col_group_name] = '';
  349. $col_groups[2][$col_group_name][$col] = '';
  350. }
  351. else {
  352. $col_groups[1][$col] = '';
  353. }
  354. }//end foreach
  355. echo '<table border="1" cellspacing="0" cellpadding="0" class="tbl-view">';
  356. echo '<thead>';
  357. echo '<tr>';
  358. foreach ($col_groups[1] as $col_group_name => $v_val) {
  359. $colspan = (!empty($col_groups[2][$col_group_name]))? ' colspan="' . count($col_groups[2][$col_group_name]) . '" style="border-bottom-width:1px;"' : ' rowspan="2"';
  360. echo '<th' . $colspan . '>' . $col_group_name . '</th>';
  361. }
  362. echo '</tr>';
  363. echo '<tr>';
  364. foreach ($col_groups[2] as $col_group_name => $v_cols) {
  365. foreach ($v_cols as $k_col => $v_val) {
  366. $v_col_name = $k_col;
  367. $cls = '';
  368. if (substr($k_col, -4) == '_OLD') {
  369. $cls = ' class="cell-old"';
  370. $v_col_name = 'OLD';
  371. }
  372. else if (substr($k_col, -4) == '_NEW') {
  373. $cls = ' class="cell-new"';
  374. $v_col_name = 'NEW';
  375. }
  376. //echo '<th' . $cls . '>' . str_replace('_', ' ', $col) . '</th>';
  377. echo '<th' . $cls . '>' . $v_col_name . '</th>';
  378. }
  379. }
  380. echo '</tr>';
  381. echo '</thead>';
  382. echo '<tbody>';
  383. $t = 1;
  384. foreach ($arr as $r) {
  385. $cls = array();
  386. $cls []= 'row-' . ($t = 1 - $t);
  387. if ($r->DOTYCZY_UMOWY) $cls []= 'dotyczy_umowy';
  388. $cls = (!empty($cls))? ' class="' . implode(' ', $cls) . '"' : '';
  389. echo '<tr' . $cls . '>';
  390. foreach ($cols as $col) {
  391. $cls = array();
  392. if (substr($col, -4) == '_OLD') {
  393. $cls []= 'cell-old';
  394. }
  395. else if (substr($col, -4) == '_NEW') {
  396. $cls []= 'cell-new';
  397. }
  398. if (in_array($col, $col_date)) {
  399. $cls []= 'cell-date';
  400. }
  401. if ($col == 'A_STATUS') {
  402. $cls []= 'cell-' . $r->$col;
  403. }
  404. if (substr($col, 0, -4) == 'P_DEALNUMBER' && $r->$col == $deal) {
  405. $cls []= 'cell-deal';
  406. }
  407. $cls = (!empty($cls))? ' class="' . implode(' ' , $cls) . '"' : '';
  408. echo '<td' . $cls . '>' . $r->$col . '</td>';
  409. }//end foreach
  410. echo '</tr>';
  411. }//end foreach
  412. echo '</tbody>';
  413. echo '</table>';
  414. return;
  415. }
  416. echo '<h1>' ;
  417. echo '<a href="' . "?MENU_INIT=USERS2_OFFERS_COSTS_SALES_PLAN&ARG1=DEALS_CHECK_END" . '">' . "Umowy - daty zakończenia" . '</a>';
  418. echo ' | ';
  419. echo " month " . $_month;
  420. echo '</h1>';
  421. $adresy = array();
  422. $adresy_info = array();
  423. $tbl_filters = array();
  424. $tbl_filters['L_APOINTMENT_DATE']['values'] = array('%'=>'wszystkie', 'stare'=>'stare');
  425. $tbl_filters['L_APOINTMENT_DATE']['value'] = V::get('filtr_L_APOINTMENT_DATE', '', $_GET);
  426. if (!array_key_exists($tbl_filters['L_APOINTMENT_DATE']['value'], $tbl_filters['L_APOINTMENT_DATE']['values'])) {
  427. $tbl_filters['L_APOINTMENT_DATE']['value'] = null;
  428. }
  429. $_limitstart = V::get('_limitstart', 0, $_GET, 'int');
  430. $conf_page_nav_show = true;
  431. $deals = ColumnDealsStatus::get_deals_stats_by_month($_month, $_limitstart);
  432. foreach ($deals as $v_deal) {
  433. if (!empty($v_deal->uslugi)) {
  434. foreach ($v_deal->uslugi as $v_srv) {
  435. // add adresy to fetch from MARKETING
  436. if ($v_srv->S_ADDRESS_STREET) $adresy[$v_srv->S_ADDRESS_STREET] = true;
  437. }
  438. }
  439. }
  440. if (!empty($adresy)) {
  441. $sql_adresy = array();
  442. foreach ($adresy as $k_street => $v_val) {
  443. $sql_adresy []= "'" . $k_street . "'";
  444. }
  445. $sql = "select m.`ID`, m.`S_ADDRESS_STREET`
  446. , m.`L_APPOITMENT_DATE`, m.`L_APPOITMENT_USER`, m.`L_APPOITMENT_INFO`, m.`L_APPOITMENT_TYPE`
  447. , m.`P_NAME`, m.`P_PHONE`, m.`M_REWIR`
  448. from `USERS2_MARKETING` as m
  449. where
  450. m.`S_ADDRESS_STREET` in (" . implode(", ", $sql_adresy) . ")
  451. ";
  452. $res = DB::query( $sql );
  453. while ($r = DB::fetch( $res )) {
  454. $adresy_info [$r->S_ADDRESS_STREET] = $r;
  455. }
  456. }
  457. // simple pagenav
  458. echo '<div' . ((!$conf_page_nav_show) ? ' style="display:none;"' : '') . '>';
  459. $link_base = array();
  460. $link_base []= "MENU_INIT=USERS2_OFFERS_COSTS_SALES_PLAN";
  461. $link_base []= "ARG1=DEALS_CHECK_END";
  462. $link_base []= "_month=" . $_month;
  463. if ($tbl_filters['L_APOINTMENT_DATE']['value']) $link_base []= "filtr_L_APOINTMENT_DATE=" . $tbl_filters['L_APOINTMENT_DATE']['value'];
  464. $link_href = "?" . implode("&", $link_base) . "&_limitstart=0";
  465. echo '<a href="' . $link_href . '">' . "|&lt;&lt; " . '</a>' . "&nbsp;";
  466. if ($_limitstart >= 100) {
  467. $link_href = "?" . implode("&", $link_base) . "&_limitstart=" . ($_limitstart - 100);
  468. echo '<a href="' . $link_href . '">' . " &lt;&lt; " . '</a>' . "&nbsp;";
  469. } else {
  470. echo '<span>' . " &lt;&lt; " . '</span>' . "&nbsp;";
  471. }
  472. echo $_limitstart . " (100)" . "&nbsp;";
  473. $link_href = "?" . implode("&", $link_base) . "&_limitstart=" . ($_limitstart + 100);
  474. echo '<a href="' . $link_href . '">' . " &gt;&gt; " . '</a>' . "&nbsp;";
  475. echo '</div>';
  476. echo '<table border="1" cellspacing="0" cellpadding="0" class="tbl-view">';
  477. echo '<thead>';
  478. echo '<tr>';
  479. echo '<th rowspan="2">' . "ID" . '</th>';
  480. echo '<th rowspan="2" class="dealnumber">' . "Nr umowy" . '</th>';
  481. echo '<th class="id_klienta">' . "Klient" . '</th>';
  482. echo '<th rowspan="2">' . "Data umowy" . '</th>';
  483. echo '<th rowspan="2">' . "Data końca umowy" . '</th>';
  484. echo '<th rowspan="2">' . "Usługi info <br />(brutto)" . '</th>';
  485. echo '<th rowspan="2">' . "Suma <br />(netto)" . '</th>';
  486. echo '<th rowspan="2">' . "Adres" . '</th>';
  487. echo '<th class="l_app" colspan="5">' . "L_APOINTMENT" . '</th>';
  488. echo '</tr>';
  489. echo '<tr>';
  490. echo '<th class="id_klienta">' . "ID" . '</th>';
  491. echo '<th class="l_app">' . "ID" . '</th>';
  492. echo '<th class="l_app">' . "DATE" . '</th>';
  493. echo '<th class="l_app">' . "USER" . '</th>';
  494. echo '<th class="l_app">' . "TYPE" . '</th>';
  495. echo '<th class="l_app">' . "INFO" . '</th>';
  496. echo '</tr>';
  497. echo '<tr class="find">';
  498. echo '<form action="" method="get">';
  499. foreach ($_GET as $k => $v) {
  500. if (!array_key_exists('filtr_' . $k, $tbl_filters)) {
  501. echo '<input type="hidden" name="'.$k.'" value="'.$v.'" />';
  502. }
  503. }
  504. echo '<td>';
  505. echo '<input type="image" value="Szukaj" src="icon/search.png" title="Szukaj">';
  506. echo '</td>';
  507. echo '<td>' . "&nbsp;" . '</td>';
  508. echo '<td>' . "&nbsp;" . '</td>';
  509. echo '<td>' . "&nbsp;" . '</td>';
  510. echo '<td>' . "&nbsp;" . '</td>';
  511. echo '<td>' . "&nbsp;" . '</td>';
  512. echo '<td>' . "&nbsp;" . '</td>';
  513. echo '<td>' . "&nbsp;" . '</td>';
  514. echo '<td>' . "&nbsp;" . '</td>';
  515. echo '<td>' . "&nbsp;" . '</td>';
  516. echo '<td>';
  517. if (!empty($tbl_filters['L_APOINTMENT_DATE']['values'])) {
  518. echo '<select name="'."filtr_L_APOINTMENT_DATE".'" onchange="this.form.submit();">';
  519. foreach ($tbl_filters['L_APOINTMENT_DATE']['values'] as $k_filtr => $v_label) {
  520. $sel = ($tbl_filters['L_APOINTMENT_DATE']['value'] == $k_filtr)? ' selected="selected"' : '';
  521. echo '<option value="' . $k_filtr . '"' . $sel . '>' . $v_label . '</option>';
  522. }
  523. echo '</select>';
  524. }
  525. echo '</td>';
  526. echo '<td>' . "&nbsp;" . '</td>';
  527. echo '<td>' . "&nbsp;" . '</td>';
  528. echo '<td>' . "&nbsp;" . '</td>';
  529. echo '</form>';
  530. echo '</tr>';
  531. echo '</thead>';
  532. echo '<tbody>';
  533. if (empty($deals)) {
  534. echo '<td colspan="14" style="padding:16px 30px;">';
  535. $link_href = "?" . implode("&", $link_base) . "&_limitstart=0";
  536. echo "Brak danych. Wróć do " . '<a href="'.$link_href.'">' . "pierwszej strony" . '</a>';
  537. echo '</td>';
  538. }
  539. else {
  540. foreach ($deals as $r) {
  541. $v_usluga_suma = 0;
  542. $v_usluga_adresy = array();
  543. if (!empty($r->uslugi)) {
  544. foreach ($r->uslugi as $v_usluga) {
  545. if ($v_usluga->S_ADDRESS_STREET) {
  546. $v_usluga_adresy [$v_usluga->S_ADDRESS_STREET] = true;
  547. }
  548. $v_usluga_suma += $v_usluga->ABONAMENT_VALUE * (100 + $v_usluga->VAT) / 100.0;
  549. }
  550. }
  551. // filters
  552. $hide_row = false;
  553. if ($tbl_filters['L_APOINTMENT_DATE']['value'] == 'stare') {
  554. $hide_row = true ; //zawsze chowamy wiersz, liczac , ze jakies spotkanie jest nieprzedawnione
  555. foreach($v_usluga_adresy as $IN=>$VA) {
  556. if (substr($adresy_info[ $IN ]->L_APPOITMENT_DATE,0,10) <= date('Y-m-d')) {
  557. $hide_row = false;
  558. }
  559. }
  560. // if($adresy_info[ $v_street ]->L_APPOITMENT_DATE=='2012-10-18') {
  561. // $hide_row=true;
  562. // echo "TAAAK";
  563. // }
  564. // if($r->ID=='206') $hide_row = true;
  565. /*
  566. if (empty($v_usluga_adresy)) {
  567. $hide_row = true;
  568. } else {
  569. $v_street = reset(array_keys($v_usluga_adresy));
  570. if (!$v_stree || !array_key_exists($v_street, $adresy_info)) {
  571. $hide_row = true;
  572. } else if ($adresy_info[ $v_street ]->L_APPOITMENT_DATE >= date('Y-m-d')) {
  573. $hide_row = true;
  574. }
  575. }
  576. */
  577. }
  578. $cls = '';
  579. if ($hide_row) {
  580. //continue;
  581. $cls = ' style="display:none"';
  582. }
  583. echo '<tr' . $cls . '>';
  584. echo '<td style="color:silver;">';
  585. echo $r->ID;
  586. echo '</td>';
  587. echo '<td class="dealnumber">';
  588. echo $r->P_DEALNUMBER;
  589. echo '</td>';
  590. echo '<td class="id_klienta">';
  591. echo $r->ID_BILLING_USERS;
  592. $link_deal = "?MENU_INIT=USERS2_OFFERS_COSTS_SALES_PLAN&ARG1=DEALS_CHECK_END&_month=2012-07&_deal=" . $r->P_DEALNUMBER . "&_klient=" . $r->ID_BILLING_USERS;
  593. $ico_deal = '<img src="icon/history.gif" alt="' . $r->ID_BILLING_USERS . '" border="0" width="16">';
  594. echo " " . '<a href="' . $link_deal . '" title="' . "Historia klienta" . '">' . $ico_deal . '</a>';
  595. echo '</td>';
  596. echo '<td>';
  597. echo '<nobr>' . $r->P_DEALDATE . '</nobr>';
  598. echo '</td>';
  599. echo '<td>';
  600. echo '<nobr>' . $r->P_DEALDATE_TERM . '</nobr>';
  601. echo '</td>';
  602. echo '<td class="uslugi-info">';
  603. if (empty($r->uslugi)) {
  604. echo '<b style="color:red">' . "brak usług!" . '</b>';
  605. } else {
  606. foreach ($r->uslugi as $v_usluga) {
  607. echo '<nobr>' . "(" . $v_usluga->ID . ") ";
  608. echo '<span class="usluga-'.$v_usluga->A_STATUS.'">' . $v_usluga->A_STATUS . '</span>';
  609. echo " " . $v_usluga->NAME_LIST_SERVICES . " " . $v_usluga->ABONAMENT_VALUE . " zł (Oferta ";
  610. echo ($v_usluga->ID_OFFERS > 0)? $v_usluga->ID_OFFERS : '<b style="color:red">' . "N/S;" . '</b>';
  611. echo ")";
  612. echo " " . $v_usluga->S_ADDRESS_STREET;
  613. echo '</nobr>';
  614. echo '<br />';
  615. }
  616. }
  617. echo '</td>';
  618. echo '<td>';
  619. if (!empty($r->uslugi)) {
  620. echo number_format($v_usluga_suma, 2, '.', ',');
  621. }
  622. echo '</td>';
  623. $cell_cls = '';
  624. $cell_title = '';
  625. if (count($v_usluga_adresy) == 0) {
  626. $cell_cls = ' class="err"';
  627. $cell_title = ' title="' . "Brak danych" . '"';
  628. } else if (count($v_usluga_adresy) > 1) {
  629. $cell_cls = ' class="err"';
  630. $cell_title = ' title="' . "Za dużo adresów!" . '"';
  631. }
  632. echo '<td'.$cell_cls.''.$cell_title.'>';
  633. if (!empty($r->uslugi)) {
  634. echo implode(", ", array_keys($v_usluga_adresy));
  635. }
  636. echo '</td>';
  637. if (count($v_usluga_adresy) > 0) {
  638. $v_street = reset(array_keys($v_usluga_adresy));
  639. echo '<td class="l_app l_app-id">';
  640. $link_edit = "?MENU_INIT=USERS2_MARKETING_EDIT&ARG1=EDIT&ARG1_VAL=" . $adresy_info[ $v_street ]->ID;
  641. $link_edit = "index.php?MENU_INIT=VIEWTABLE_AJAX&ZASOB_ID=23#EDIT/{$adresy_info[$v_street]->ID}";
  642. $ico_edit = '<img src="icon/edit.gif" alt="' . $adresy_info[ $v_street ]->ID . '" border="0" width="20">';
  643. echo '<a href="' . $link_edit . '" title="' . "Edycja rekordu MARKETING" . '">' . $ico_edit . '</a>';
  644. echo '</td>';
  645. $add_cls = '';
  646. if ($adresy_info[ $v_street ]->L_APPOITMENT_DATE == '') {
  647. $add_cls = ' l_app-date_empty';
  648. } else {
  649. if ($adresy_info[ $v_street ]->L_APPOITMENT_DATE < date('Y-m-d')) {//$_month . '-00'
  650. $add_cls = ' l_app-date_past';
  651. } else {
  652. $add_cls = ' l_app-date_future';
  653. }
  654. }
  655. echo '<td class="l_app' . $add_cls . '">';
  656. echo '<nobr>' . $adresy_info[ $v_street ]->L_APPOITMENT_DATE . '</nobr>';
  657. echo '</td>';
  658. echo '<td class="l_app">';
  659. echo $adresy_info[ $v_street ]->L_APPOITMENT_USER;
  660. echo '</td>';
  661. echo '<td class="l_app l_app_type-' . $adresy_info[ $v_street ]->L_APPOITMENT_TYPE . '">';
  662. echo $adresy_info[ $v_street ]->L_APPOITMENT_TYPE;
  663. echo '</td>';
  664. echo '<td class="l_app l_app-info">';
  665. echo $adresy_info[ $v_street ]->L_APPOITMENT_INFO;
  666. echo '</td>';
  667. }
  668. /*
  669. echo '<td>';
  670. if ($r->DEALS_ID > 0) {
  671. echo $r->DEALS_ID;
  672. echo ' / ';
  673. echo $r->S_ADDRESS_STREET;
  674. } else {
  675. echo '<b style="color:red">' . "brak wpisu w DEALS!" . '</b>';
  676. }
  677. echo '</td>';
  678. */
  679. echo '</tr>';
  680. //extra linia dla zapisania notatek by sqix @2012-10-04 TODO
  681. echo '<tr '.$cls.'>';
  682. echo '<td colspan=3>Notaki:<br>'.$adresy_info[ $v_street ]->M_REWIR.'<br></td>';
  683. echo '<td colspan=3>L2: '.$r->BUA_P_NAME.' <i>tel : '.$r->BUA_P_PHONE.'</i><hr>';
  684. echo 'MK:'.$adresy_info[ $v_street ]->P_NAME.' <i>tel : '.$adresy_info[ $v_street ]->P_PHONE.'</i></td>';
  685. echo '<td></td><td></td><td></td><td></td><td></td><td></td><td></td>';
  686. echo '</tr>';
  687. }
  688. }
  689. echo '</tbody>';
  690. echo '</table>';
  691. return;
  692. }
  693. $force_update = false;
  694. if (V::get('_update_stats', 0, $_GET, 'int') == 1) {
  695. $force_update = true;
  696. if (V::get('DBG', 0, $_GET, 'int') > 1) {
  697. echo '<p>'."Update deals stats...".'</p>';
  698. }
  699. }
  700. $deals_stats_by_months = ColumnDealsStatus::get_deals_stats_by_months($force_update);
  701. echo '<h1>' . "Umowy - daty zakończenia" . '</h1>';
  702. echo '<table border="1" cellspacing="0" cellpadding="0" class="tbl-view">';
  703. echo '<thead>';
  704. echo '<tr>';
  705. echo '<th>' . "Koniec umowy (miesiąc)" . '</th>';
  706. echo '<th>' . "Ilość" . '</th>';
  707. echo '<th>' . "Suma" . '</th>';
  708. echo '<th>' . "&nbsp;" . '</th>';
  709. echo '</tr>';
  710. echo '</thead>';
  711. echo '<tbody>';
  712. foreach ($deals_stats_by_months as $r) {
  713. echo '<tr>';
  714. echo '<td>';
  715. echo ($r['deal_term_month'] == '0000-00')? "zakończone" : $r['deal_term_month'];
  716. echo '</td>';
  717. echo '<td>';
  718. echo $r['cnt'];
  719. echo '</td>';
  720. echo '<td style="text-align:right">';
  721. if ($r['suma'] > 0) {
  722. echo number_format($r['suma'], 2, ',', ' ') . " zł";
  723. }
  724. echo '</td>';
  725. echo '<td>';
  726. echo '<a href="' . "?MENU_INIT=USERS2_OFFERS_COSTS_SALES_PLAN&ARG1=DEALS_CHECK_END&_month=" . $r['deal_term_month'] . '">' . "check" . '</a>';
  727. echo '</td>';
  728. echo '</tr>';
  729. }
  730. echo '</tbody>';
  731. echo '</table>';
  732. }
  733. function USERS2_OFFERS_COSTS_SALES_PLAN__type( $type = 'DEALS_CHECK_REZ', $params = array() ) {
  734. SEF("MENU");
  735. MENU();
  736. if (!empty($params['toolbar'])) {
  737. echo '<p>' . implode(" | ", $params['toolbar']) . '</p>';
  738. }
  739. SalesPlan::print_css();
  740. echo '<style type="text/css">' . "
  741. .tbl-view {}
  742. .tbl-view th {padding:0 2px;}
  743. .tbl-view td {padding:0 2px;}
  744. .tbl-small {font-size:small;}
  745. .tbl-small th {padding:0 2px; font-size:small;}
  746. .tbl-small td {padding:0 2px; font-size:small;}
  747. " . '</style>';
  748. $page = V::get('_page', 0, $_GET, 'int');
  749. $sql_limit = 100;
  750. if ($page > 0) {
  751. $sql_limit .= ' offset ' . ($page * 100);
  752. }
  753. $arr = array();
  754. $streets_arr = array();
  755. if ($type == 'DEALS_CHECK_WYP') {
  756. $sql = "select d.`ID`
  757. , d.`P_DEALNUMBER_OLD`
  758. , d.`ID_BILLING_USERS`
  759. , d.`S_ADDRESS_STREET`
  760. , d.`P_DEALDATE`
  761. , d.`DEALDESC`
  762. , d.`A_STATUS`
  763. from `DEALS_TABLE` as d
  764. where
  765. d.`RODZAJ_DZIALANIA_HANDLOWEGO`='REZYGNACJA WYPROWADZKA'
  766. order by d.`P_DEALDATE` desc
  767. limit $sql_limit
  768. ";
  769. } else {// default: DEALS_CHECK_REZ
  770. $sql = "select d.`ID`
  771. , d.`P_DEALNUMBER_OLD`
  772. , d.`ID_BILLING_USERS`
  773. , d.`S_ADDRESS_STREET`
  774. , d.`P_DEALDATE`
  775. , d.`DEALDESC`
  776. , d.`A_STATUS`
  777. from `DEALS_TABLE` as d
  778. where
  779. d.`P_DEALNUMBER_OLD`>0
  780. and (d.`P_DEALNUMBER`=0 or d.`P_DEALNUMBER`='' or d.`P_DEALNUMBER` is null)
  781. and d.`A_STATUS` in('NORMAL', 'WAITING')
  782. order by d.`P_DEALDATE` desc
  783. limit $sql_limit
  784. ";
  785. }
  786. $res = DB::query( $sql );
  787. while ($r = DB::fetch( $res )) {
  788. $arr []= $r;
  789. if (isset($r->S_ADDRESS_STREET)) {
  790. $streets_arr[$r->S_ADDRESS_STREET] = true;
  791. }
  792. }
  793. $adresy_info = array();
  794. $cols_adresy = array();
  795. $cols_adresy['ID'] = 'ID';
  796. $cols_adresy['L_APPOITMENT_DATE'] = 'DATE';
  797. $cols_adresy['L_APPOITMENT_USER'] = 'USER';
  798. $cols_adresy['L_APPOITMENT_INFO'] = 'TYPE';
  799. $cols_adresy['L_APPOITMENT_TYPE'] = 'INFO';
  800. if (!empty($streets_arr)) {
  801. $sql_adresy = array();
  802. foreach ($streets_arr as $k_street => $v_val) {
  803. $sql_adresy []= "'{$k_street}'";
  804. }
  805. $db = DB::getDB();
  806. $sql = "select m.`ID`
  807. , m.`S_ADDRESS_STREET`
  808. , m.`L_APPOITMENT_DATE`
  809. , m.`L_APPOITMENT_USER`
  810. , m.`L_APPOITMENT_INFO`
  811. , m.`L_APPOITMENT_TYPE`
  812. , m.`P_NAME`, m.`P_PHONE`, m.`M_REWIR`
  813. from `USERS2_MARKETING` as m
  814. where
  815. m.`S_ADDRESS_STREET` in (" . implode(", ", $sql_adresy) . ")
  816. ";
  817. $res = $db->query($sql);
  818. while ($r = $db->fetch($res)) {
  819. $adresy_info [$r->S_ADDRESS_STREET] = $r;
  820. }
  821. }
  822. echo '<h1>';
  823. if ($type == 'DEALS_CHECK_WYP') {
  824. echo "Umowy - rezygnacje wyprowadzka";
  825. } else {
  826. echo "Umowy - rezygnacje";
  827. }
  828. echo '</h1>';
  829. $cols = array_keys(get_object_vars(reset($arr)));
  830. echo '<p>' . "Strona: ";
  831. for ($i = 0; $i <= $page; $i++) {
  832. echo ' <a href="' . "?MENU_INIT=USERS2_OFFERS_COSTS_SALES_PLAN&ARG1={$type}&_page={$i}" . '" title="' . "Umowy - rezygnacje wyprowadzka" . '">' . ($i + 1) . '</a>';
  833. }
  834. echo ' <a href="' . "?MENU_INIT=USERS2_OFFERS_COSTS_SALES_PLAN&ARG1={$type}&_page={$i}" . '" title="' . "Umowy - rezygnacje wyprowadzka" . '">' . " next " . '</a>';
  835. echo '</p>';
  836. if (empty($arr)) {
  837. echo '<p>'."Brak danych - wróć do " . '<a href="' . "?MENU_INIT=USERS2_OFFERS_COSTS_SALES_PLAN&ARG1={$type}" . '" title="' . "Umowy - rezygnacje wyprowadzka" . '">' . "pierwszej strony" . '</a>' .'</p>';
  838. } else {
  839. echo '<table border="1" cellspacing="0" cellpadding="0" class="tbl-small tbl-view">';
  840. echo '<thead>';
  841. echo '<tr>';
  842. foreach ($cols as $k_field) {
  843. $cls = '';
  844. if ($k_field == 'P_DEALNUMBER_OLD') {
  845. $cls = 'dealnumber';
  846. } else if ($k_field == 'ID_BILLING_USERS') {
  847. $cls = 'id_klienta';
  848. }
  849. echo '<th rowspan="2" class="'.$cls.'">' . $k_field . '</th>';
  850. }
  851. echo '<th colspan="' . count($cols_adresy) . '" class="l_app">' . "L_APOINTMENT" . '</th>';
  852. echo '</tr>';
  853. echo '<tr>';
  854. foreach ($cols_adresy as $col) {
  855. echo '<th class="l_app">' . $col . '</th>';
  856. }
  857. echo '</tr>';
  858. echo '</thead>';
  859. echo '<tbody>';
  860. foreach ($arr as $r) {
  861. echo '<tr>';
  862. foreach ($cols as $k_field) {
  863. $cls = '';
  864. if ($k_field == 'P_DEALNUMBER_OLD') {
  865. $cls = 'dealnumber';
  866. } else if ($k_field == 'ID_BILLING_USERS') {
  867. $cls = 'id_klienta';
  868. }
  869. echo '<td class="'.$cls.'">' . $r->$k_field . '</td>';
  870. }
  871. if (isset($r->S_ADDRESS_STREET) && array_key_exists($r->S_ADDRESS_STREET, $adresy_info)) {
  872. $adres = $adresy_info[$r->S_ADDRESS_STREET];
  873. foreach ($cols_adresy as $k_col => $v_label) {
  874. if ($k_col == 'ID') {
  875. echo '<td class="l_app l_app-'.strtolower($v_label).'">';
  876. $link_edit = "?MENU_INIT=USERS2_MARKETING_EDIT&ARG1=EDIT&ARG1_VAL={$adres->$k_col}";
  877. $link_edit = "index.php?MENU_INIT=VIEWTABLE_AJAX&ZASOB_ID=23#EDIT/{$adresy_info[$v_street]->ID}";
  878. echo '<a href="' . $link_edit . '" title="Edycja rekordu MARKETING">';
  879. echo '<img src="icon/edit.gif" alt="1385" border="0" width="20">';
  880. echo '</a>';
  881. echo '</td>';
  882. } else if ($k_col == 'L_APPOITMENT_DATE') {
  883. $add_cls = '';
  884. if ($adres->$k_col == '') {
  885. $add_cls = ' l_app-date_empty';
  886. } else {
  887. if ($adres->$k_col < date('Y-m-d')) {//$_month . '-00'
  888. $add_cls = ' l_app-date_past';
  889. } else {
  890. $add_cls = ' l_app-date_future';
  891. }
  892. }
  893. echo '<td class="l_app' . $add_cls . '">';
  894. echo '<nobr>' . $adres->$k_col . '</nobr>';
  895. echo '</td>';
  896. } else {
  897. echo '<td class="l_app l_app-'.strtolower($v_label).'">' . $adres->$k_col . '</td>';
  898. }
  899. }
  900. } else {
  901. echo '<td colspan="' . count($cols_adresy) . '">'."".'</td>';
  902. }
  903. echo '</tr>';
  904. }
  905. echo '</tbody>';
  906. echo '</table>';
  907. }
  908. }
  909. class SalesPlan {
  910. function print_css() {
  911. echo '<style type="text/css">' . "
  912. body{font-family:arial;font-size:small;}
  913. .tbl-view {}
  914. .tbl-view thead th {background:#f3f3f3; font-size:11px; border-bottom:3px solid #999;}
  915. .tbl-view th {padding:0 2px;}
  916. .tbl-view td {padding:0 2px;}
  917. .tbl-small {font-size:small;}
  918. .tbl-small th {padding:0 2px; font-size:small;}
  919. .tbl-small td {padding:0 2px; font-size:small;}
  920. .tbl-view .err {background-color:#FD7A7A;}
  921. .tbl-view .dealnumber {background-color:#A3CDF5;}
  922. .tbl-view .id_klienta {background-color:#F9FBBB; white-space:nowrap;}
  923. .tbl-view .klient-tel {background-color:#F9FBBB;}
  924. .tbl-view .uslugi-info {font-size:12px;}
  925. .tbl-view .l_app {background-color:#eee;}
  926. .tbl-view .l_app-id {text-align:center;}
  927. .tbl-view .l_app-info {}
  928. .tbl-view .cell-old {border-right:1px solid blue; text-align:right;}
  929. .tbl-view .cell-new {border-left:1px solid blue; text-align:left;}
  930. .tbl-view .cell-date {white-space:nowrap;}
  931. .tbl-view .dotyczy_umowy td {background-color:#FDE6BB;}
  932. .tbl-view .dotyczy_umowy .cell-deal {background-color:#D58B04; color:#fff; font-weight:bold;}
  933. .usluga-NORMAL {background-color:#8F8;}
  934. .usluga-WAITING {background-color:#F8F;}
  935. .usluga-OFF_HARD {background-color:#EEE;}
  936. .usluga-OFF_SOFT {background-color:#EEE;}
  937. .tbl-view tbody td.l_app-date_empty {background-color:#FD7A7A;}
  938. .tbl-view tbody td.l_app-date_past {background-color:cyan;}
  939. .tbl-view tbody td.l_app-date_future {background-color:#BFC290;}
  940. .tbl-view tbody td.l_app_type-ARRANGED {background-color:#FFFF88;}
  941. .tbl-view tbody td.l_app_type-TO_ARRANGE {background-color:#FF88FF;}
  942. .tbl-view tbody td.l_app_type-CANCELLED {background-color:#FF5555;}
  943. .tbl-view tbody td.l_app_type-TO_CANCEL {background-color:#FF55FF;}
  944. .tbl-view tbody td.l_app_type-RELATE {background-color:#FFBBBB;}
  945. .tbl-view tbody td.l_app_type-WAIT {background-color:#88FF88;}
  946. " . '</style>';
  947. }
  948. }