PokazOfertyView.php 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990
  1. <?php
  2. class PokazOfertyView {
  3. private $args = array();
  4. public function set($k, $v) {
  5. $this->args[$k] = $v;
  6. }
  7. public function get($k) {
  8. return V::get($k, null, $this->args);
  9. }
  10. function print_css() {
  11. $col_silver = "#faf2f2";
  12. $col_silver_0 = "#ddd";//"#F2F2F2";
  13. $col_silver_1 = "#e6e6e6";//"#fff";
  14. $col_hover = "#daf9da";
  15. $col_sub_hover = "#ffe5b5";
  16. return '<style type="text/css">' . "
  17. body{font-family:arial; font-size:12px;}
  18. .tbl-view{}
  19. .tbl-view th,
  20. .tbl-view td{ padding:0 2px; font-size:12px; }
  21. .tbl-view thead th{ background:#F3F3F3; }
  22. #tbl-oferty {width:98%; margin-top:3px; border-color:#aaa;}
  23. #tbl-oferty th,
  24. #tbl-oferty td{font-size:12px;}
  25. #tbl-oferty th{background-color:#C7C7E5; border-color:#aaa;}
  26. #tbl-oferty .tbl-row {cursor:pointer; margin:0;}
  27. #tbl-oferty .tbl-row-0 td{background-color:$col_silver_0;}
  28. #tbl-oferty .tbl-row-1 td{background-color:$col_silver_1;}
  29. #tbl-oferty .cell-id{width:3%; font-size:14px; font-weight:bold; font-family:monospace;}
  30. #tbl-oferty .active td.cell-id{background-color:$col_hover; border-bottom:none;}
  31. #tbl-oferty .sub td{background-color:$col_hover;}
  32. #tbl-oferty .tbl-row:hover td{background-color:$col_hover;}
  33. #tbl-oferty .sub-oferty{width:95%; margin:0 0 0 auto; padding:0; border:none;}
  34. #tbl-oferty .sub-oferty tr.selected,
  35. #tbl-oferty .sub-oferty tr:hover td{background-color:$col_sub_hover;color:#444;}
  36. #tbl-oferty .sub-oferty-wrap{padding:0; border-top:none; border-bottom:1px solid #333;}
  37. #tbl-oferty .sub-0 .sub-oferty-wrap{background-color:$col_hover;}
  38. #tbl-oferty .sub-1 .sub-oferty-wrap{background-color:$col_hover;}
  39. #tbl-oferty .sub-oferty th{background-color:#f1f1f1; border-color:#aaa; color:#000;}
  40. #tbl-oferty .sub-oferty td{background-color:#fff; border-color:#aaa; color:#444;}
  41. #tbl-oferty code{padding:0 2px;color:#666; font-size:10px;}
  42. #tbl-oferty .cell-suma_1 {text-align:right; white-space:nowrap;}
  43. #tbl-oferty .cell-suma_2 {text-align:right; white-space:nowrap;}
  44. #tbl-oferty .cell-cost {text-align:right; white-space:nowrap;}
  45. #tbl-oferty .cell-zysk {border-left:2px solid red; background:#FFB5B5; text-align:right; white-space:nowrap;}
  46. #tbl-oferty .row-oferty-opcje td {background:#FBFFCF; color:#aaa;}
  47. #tbl-oferty .row-oferty-opcje-srv td {background:#CFFCFF; color:#aaa;}
  48. #tbl-oferty .row-oferty-opcje-selected td {background:#fff; color:#444;}
  49. #tbl-oferty tbody.hide_options .row-oferty-opcje {display:none}
  50. .podglad-users2_deals td.DATA_DOK,
  51. .podglad-users2_deals td.P_DEAL_DATE_NEW,
  52. .podglad-users2_deals td.P_DEALTERM_NEW,
  53. .podglad-users2_deals td.P_DEAL_DATE_OLD,
  54. .podglad-users2_deals td.P_DEALTERM_OLD,
  55. .podglad-users2_deals td.P_DEALDATE,
  56. .podglad-users2_deals td.P_DEALDATE_TERM {white-space:nowrap;}
  57. .podglad-users2_deals .old-deal {display:none;}
  58. .podglad-users2_deals .old-deal td {background:#eee;}
  59. " . '</style>';
  60. }
  61. function print_jquery_ui() {
  62. $out = '<link rel="stylesheet" type="text/css" href="stuff/jquery-ui-smoothness/jquery-ui-1.10.1.custom.min.css">' . "\n";
  63. $out .= '<script type="text/javascript" src="stuff/jquery-ui.custom.min.js"></script>' . "\n";
  64. return $out;
  65. }
  66. function print_ui_widget_info($title, $msg = '') {
  67. $out = '';
  68. $out .= '<div class="ui-widget">';
  69. $out .= '<div class="ui-state-highlight ui-corner-all" style="margin-top:20px; padding:0 .7em;">';
  70. $out .= '<p><span class="ui-icon ui-icon-info" style="float:left; margin-right:.3em;"></span>';
  71. $out .= '<strong></strong> ' . $title . '</p>';
  72. if (!empty($msg)) {
  73. $out .= '<p>' . $msg . '</p>';
  74. }
  75. $out .= '</div>';
  76. $out .= '</div>';
  77. return $out;
  78. }
  79. function print_ui_widget_ok($title, $msg = '') {
  80. $out = '';
  81. $out .= '<div class="ui-widget">';
  82. $out .= '<div class="ui-state-highlight ui-corner-all" style="margin-top:20px; padding:0 .7em;">';
  83. $out .= '<p><span class="ui-icon ui-icon-check" style="float:left; margin-right:.3em;"></span>';
  84. $out .= '<strong></strong> ' . $title . '</p>';
  85. if (!empty($msg)) {
  86. $out .= '<p>' . $msg . '</p>';
  87. }
  88. $out .= '</div>';
  89. $out .= '</div>';
  90. return $out;
  91. }
  92. function print_ui_widget_errors($title, $errors_arr = array()) {
  93. $out = '';
  94. $out .= '<div class="ui-widget">';
  95. $out .= '<div class="ui-state-error ui-corner-all" style="padding:0 .7em;">';
  96. $out .= '<p><span class="ui-icon ui-icon-alert" style="float:left; margin-right:.3em;"></span>';
  97. $out .= '<strong>Error:</strong> ' . $title . '</p>';
  98. if (!empty($errors_arr)) {
  99. $out .= '<ul style="color:red"><li>' . implode('</li><li>', $errors_arr) . '</li></ul>';
  100. }
  101. $out .= '</div>';
  102. $out .= '</div>';
  103. return $out;
  104. }
  105. function print_simple_tbl_header($cols, $caption = '') {
  106. if (!empty($caption)) echo '<caption>' . $caption . '</caption>';
  107. $is_ID = in_array('ID', $cols);
  108. echo '<thead><tr>';
  109. if ($is_ID) {
  110. echo '<th>' . "ID" . '</th>';
  111. }
  112. foreach ($cols as $v_field_name) {
  113. if ($is_ID && $v_field_name == 'ID') continue;
  114. echo '<th>' . str_replace('_', ' ', $v_field_name) . '</th>';
  115. }
  116. echo '</tr></thead>';
  117. }
  118. function print_simple_tbl_body_row($obj, $cols, $params = array()) {
  119. $is_ID = in_array('ID', $cols);
  120. $cls = V::get('class', '', $params);
  121. if (!empty($cls)) $cls = ' class="' . $cls . '"';
  122. echo '<tr' . $cls . '>';
  123. if ($is_ID) {
  124. if (isset($obj->ID)) {
  125. echo '<td>' . $obj->ID . '</td>';
  126. } else {
  127. echo '<td>' . "&nbsp;" . '</td>';
  128. }
  129. }
  130. foreach ($cols as $v_field_name) {
  131. if ($is_ID && $v_field_name == 'ID') continue;
  132. if (isset($obj->$v_field_name)) {
  133. echo '<td>';
  134. if (strlen($obj->$v_field_name) > 20) {
  135. echo '<span title="' . htmlspecialchars($obj->$v_field_name) . '">' . substr($obj->$v_field_name, 0, 20) . "..." . '</span>';
  136. } else {
  137. echo $obj->$v_field_name;
  138. }
  139. echo '</td>';
  140. } else {
  141. echo '<td>' . "&nbsp;" . '</td>';
  142. }
  143. }
  144. echo '</tr>';
  145. }
  146. function print_simple_tbl($obj, $cols, $caption = '') {
  147. echo '<table cellspacing="0" cellpadding="0" border="1" class="tbl-view">';
  148. if (!empty($caption)) echo '<caption>' . $caption . '</caption>';
  149. PokazOfertyView::print_simple_tbl_header($cols);
  150. echo '<tbody>';
  151. PokazOfertyView::print_simple_tbl_body_row($obj, $cols);
  152. echo '</tbody>';
  153. echo '</table>';
  154. }
  155. function printServices($user, $active_deals_by_id) {
  156. ?>
  157. <h4>Aktualne umowy</h4>
  158. <div style="padding:6px; border-left:1px solid silver;">
  159. <?php if (empty($active_deals_by_id)) : ?>
  160. Brak aktualnych umów
  161. <?php else : ?>
  162. <table cellspacing="0" cellpadding="0" border="1" class="tbl-view-wrap" id="tbl-user-deals-info">
  163. <?php
  164. $has_not_active = false;
  165. foreach ($active_deals_by_id as $k_id_deal => $v_deal) {
  166. if (!empty($v_deal->services)) {
  167. foreach ($v_deal->services as $k_p_service => $v_srv_arr) {
  168. foreach ($v_srv_arr as $k_srv_id => $v_srv) {
  169. if ($v_srv->_status != 'NORMAL') {
  170. $has_not_active = true;
  171. }
  172. }
  173. }
  174. }
  175. }
  176. if ($has_not_active) : ?>
  177. <caption class="tbl-actions">
  178. <button class="all">Pokaż wszystkie usługi</button>
  179. <button class="active_only">Pokaż tylko aktywne usługi</button>
  180. </caption>
  181. <?php endif; ?>
  182. <thead><tr>
  183. <th>ID</th>
  184. <th>Numer umowy</th>
  185. <th>Data umowy</th>
  186. <th>Termin</th>
  187. <th>Adres</th>
  188. <th>Pakiet</th>
  189. </tr></thead>
  190. <tbody>
  191. <?php
  192. foreach ($active_deals_by_id as $k_id_deal => $v_deal) {
  193. echo '<tr class="tbl-row-0">';
  194. echo '<th>' . $v_deal->ID_DEALS . '</th>';
  195. echo '<td>' . "Numer: " . $v_deal->P_DEALNUMBER . '</td>';
  196. echo '<td>' . "Data: " . $v_deal->P_DEALDATE . '</td>';
  197. echo '<td>' . "Termin: " .$v_deal->P_DEALDATE_TERM . '</td>';
  198. echo '<td>' . $v_deal->SERVICES_S_ADDRESS_STREET . '</td>';
  199. echo '<td>' . "Pakiet: " . (($v_deal->ID_OFFERS_GROUP > 0)? $v_deal->ID_OFFERS_GROUP : '<span style="color:red">' . "nieznany" . '</span>') . '</td>';
  200. echo '</tr>';
  201. if (empty($v_deal->services)) {
  202. echo '<tr class="tbl-row-1"><td colspan="6">' . "Brak przypisanych usług" . '</td></tr>';
  203. } else {
  204. echo '<tr class="tbl-row-1">';
  205. echo '<td>' . "&nbsp;" . '</td>';
  206. echo '<td colspan="6" style="padding:0 0 7px 0;">';
  207. echo '<table cellspacing="0" cellpadding="0" border="1" class="tbl-view">';
  208. echo '<thead>';
  209. echo '<tr>';
  210. echo '<th>' . "ID" . '</th>';
  211. echo '<th>' . "P_SERVICE" . '</th>';
  212. echo '<th>' . "ABONAMENT_VALUE" . '</th>';
  213. echo '<th>' . "ID_OFFERS" . '</th>';
  214. echo '<th>' . "description" . '</th>';
  215. echo '<th>' . "parametry (ses_x_a)" . '</th>';
  216. echo '<th>' . "T WHEN CONNECTED" . '</th>';
  217. echo '<th>' . "STATUS" . '</th>';
  218. echo '<th>' . "HANGUP" . '</th>';
  219. echo '</tr>';
  220. echo '</thead>';
  221. echo '<tbody>';
  222. foreach ($v_deal->services as $k_p_service => $v_srv_arr) {
  223. foreach ($v_srv_arr as $k_srv_id => $v_srv) {
  224. $ses_x_a = null;
  225. if (!array_key_exists($k_srv_id, $v_deal->ses_x_a)) {
  226. echo 'brak danych';
  227. } else {
  228. $ses_x_a = $v_deal->ses_x_a[$k_srv_id];
  229. }
  230. echo '<tr class="tbl-row-1 srv-status-' . $v_srv->_status . '">';
  231. echo '<td>' . $v_srv->ID . '</td>';
  232. echo '<td>' . $v_srv->P_SERVICE . '</td>';
  233. echo '<td>' . $v_srv->ABONAMENT_VALUE . '</td>';
  234. echo '<td>' . $v_srv->ID_OFFERS . '</td>';
  235. echo '<td>' . $v_srv->description . '</td>';
  236. echo '<td>';
  237. if ($ses_x_a) {
  238. // show params
  239. $srv_params = array();
  240. if ($v_srv->NAME_LIST_SERVICES == 'USERS2') {
  241. $srv_params[] = '<span title="' . "Początkowa prędkość dostępu (dla danej uslugi) - P_SERVICE_QUOTA" . '">' . $ses_x_a->P_SERVICE_QUOTA . "kbit" . '</span>';
  242. if ($ses_x_a->CONN_DIV == 'YES') {
  243. $srv_params[] = '<span title="' . "podział łącza" . '">' . "CONN_DIV" . '</span>';
  244. }
  245. if ($ses_x_a->S_PUBLIC_IP == 'YES') {
  246. $srv_params[] = '<span title="' . "Zewnętrzne IP" . '">' . "S_PUBLIC_IP" . '</span>';
  247. }
  248. if ($ses_x_a->S_E_PORT_1293 == 'YES') {
  249. $srv_params[] = '<span title="' . "Przekierowanie portu TCP/IP" . '">' . "PORT" . '</span>';
  250. }
  251. if ($ses_x_a->S_SOHO_WIFI_ROUTER_1292 == 'YES') {
  252. $srv_params[] = '<span title="' . "Dzierżawa urządzenia WIFI z ROUTEREM" . '">' . "WIFI ROUTER" . '</span>';
  253. }
  254. //echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">TV (F.' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($ses_x_a);echo'</pre>';
  255. }
  256. else if ($v_srv->NAME_LIST_SERVICES == 'TV') {
  257. $srv_params[] = '<span title="' . "Typ usługi TV do ustalenia w systemie" . '">' . $ses_x_a->P_SERVICE_CLASS . '</span>';
  258. if ($ses_x_a->P_DEVICE != 'BRAK') {
  259. $srv_params[] = '<span title="' . "Dzierżawa urządzenia do odbioru TV" . '">' . $ses_x_a->P_DEVICE . '</span>';
  260. }
  261. if ($ses_x_a->P_SERVICE_SOCKETS_AMMOUNT_1298 > 0) {
  262. $srv_params[] = '<span title="' . "Ilość dodatkowych gniazd analogowych do zainstalowania u klienta" . '">' . "Dodatkowe gniazda: " . $ses_x_a->P_SERVICE_SOCKETS_AMMOUNT_1298 . '</span>';
  263. }
  264. if ($ses_x_a->ID_DOMAINS_PACKET_ID > 0) {
  265. $srv_params[] = '<span title="' . "Numer pakietu/cennika z zewnętrznego systemu" . '">' . $ses_x_a->ID_DOMAINS . ": " . $ses_x_a->ID_DOMAINS_PACKET_ID . '</span>';
  266. }
  267. //echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">TV (F.' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($ses_x_a);echo'</pre>';
  268. }
  269. else if ($v_srv->NAME_LIST_SERVICES == 'VOIP') {
  270. if (!empty($ses_x_a->S_PHONE_NUMBER)) {
  271. $srv_params[] = '<span title="' . "Numer tel" . '">' . $ses_x_a->S_PHONE_NUMBER . '</span>';
  272. }
  273. if (!empty($ses_x_a->ID_DOMAINS)) {
  274. $srv_params[] = '<span title="' . "Numer pakietu/cennika z zewnętrznego systemu" . '">' . $ses_x_a->ID_DOMAINS . ": " . $ses_x_a->ID_DOMAINS_PACKET_ID . '</span>';
  275. }
  276. }
  277. if (empty($srv_params)) {
  278. echo 'brak danych';
  279. } else {
  280. echo implode(', ', $srv_params);
  281. }
  282. }
  283. echo '</td>';
  284. echo '<td>';
  285. if ($ses_x_a) {
  286. echo $ses_x_a->T_WHEN_CONNECTED;
  287. }
  288. echo '</td>';
  289. echo '<td class="col-A_STATUS_DESC-'.$v_srv->_status.'">';
  290. echo ($v_srv->A_STATUS_DESC)? $v_srv->A_STATUS_DESC : $v_srv->_status;
  291. echo '</td>';
  292. echo '<td>';
  293. if ($v_srv->HANGUP_FROM || $v_srv->HANGUP_TILL) {
  294. if ($v_srv->HANGUP_STATUS) {
  295. echo ' <em>' . $v_srv->HANGUP_STATUS . '</em>';
  296. }
  297. echo ' (';
  298. echo ($v_srv->HANGUP_FROM)? $v_srv->HANGUP_FROM : '0000-00-00';
  299. echo ' - ';
  300. echo ($v_srv->HANGUP_TILL)? $v_srv->HANGUP_TILL : '0000-00-00';
  301. echo ')';
  302. }
  303. echo '</td>';
  304. echo '</tr>' . "\n";
  305. }
  306. }
  307. echo '</tbody>';
  308. echo '</table>';
  309. echo '</td>';
  310. echo '</tr>';
  311. }
  312. }
  313. ?>
  314. </tbody>
  315. </table>
  316. <?php endif; ?>
  317. </div>
  318. <?php
  319. }
  320. function user_with_services($user, $active_deals_by_id) {
  321. ?>
  322. <style type="text/css">
  323. .tbl-view-wrap {}
  324. .tbl-view-wrap tr {background:#fff;}
  325. #tbl-user-deals-info {}
  326. #tbl-user-deals-info .tbl-actions {text-align:left;}
  327. #tbl-user-deals-info th,
  328. #tbl-user-deals-info td {padding:0 2px; text-align:left;}
  329. #tbl-user-deals-info td {border-color:#eee;}
  330. #tbl-user-deals-info thead th,
  331. #tbl-user-deals-info thead td {background:#f3f3f3;}
  332. #tbl-user-deals-info tr.tbl-row-0 {background:#f3f3f3;}
  333. #tbl-user-deals-info tr.tbl-row-1 {background:#fff;}
  334. #tbl-user-deals-info .tbl-actions .all {display:none;}
  335. #tbl-user-deals-info .tbl-actions .with_offers_only {display:inline;}
  336. #tbl-user-deals-info.active_only .tbl-actions .all {display:inline;}
  337. #tbl-user-deals-info.active_only .tbl-actions .active_only {display:none;}
  338. #tbl-user-deals-info.active_only .srv-status- {display:none;}
  339. #tbl-user-deals-info.active_only .srv-status-WAITING {display:none;}
  340. #tbl-user-deals-info.active_only .srv-status-NORMAL {}
  341. #tbl-user-deals-info.active_only .srv-status-OFF_SOFT {display:none;}
  342. #tbl-user-deals-info.active_only .srv-status-OFF_HARD {display:none;}
  343. #tbl-user-deals-info .col-A_STATUS_DESC-OFF_HARD {background-color:#FFBABA;}
  344. #tbl-user-deals-info .col-A_STATUS_DESC-OFF_SOFT {background-color:#D6D6D6;}
  345. #tbl-user-deals-info .col-A_STATUS_DESC-NORMAL {background-color:#BDFDBD;}
  346. </style>
  347. <script type="text/javascript">
  348. jQuery(document).ready(function(){
  349. jQuery('#tbl-user-deals-info').find('.tbl-actions button').click(function(e){
  350. console.log(e);
  351. var n=jQuery(e.target);
  352. if (n.hasClass('active_only')) {
  353. jQuery('#tbl-user-deals-info').removeClass('all');
  354. jQuery('#tbl-user-deals-info').addClass('active_only');
  355. } else {
  356. jQuery('#tbl-user-deals-info').removeClass('active_only');
  357. jQuery('#tbl-user-deals-info').addClass('all');
  358. }
  359. })
  360. });
  361. </script>
  362. <div style="margin:10px 0;padding:6px 10px;border:1px solid blue;background:#C0DDFC;">
  363. <table cellspacing="0" cellpadding="0" border="0"><tr>
  364. <?php if ($user) : ?>
  365. <th style="text-align:left">
  366. Dane klienta <?php echo $user->ID_BILLING_USERS . (($user->is_firma)? ' <b style="color:red">' . "(firma)" . '</b>' : ''); ?>
  367. <?php if ($user->BILLING_OWNER == 1) : ?>
  368. <em style="float:right;padding:0 10px;">BIALL-NET</em>
  369. <?php elseif ($user->BILLING_OWNER == 2) : ?>
  370. <em style="float:right;padding:0 10px;">NETDAY</em>
  371. <?php endif; ?>
  372. </th>
  373. <?php endif; ?>
  374. <th style="padding:0 0 0 10px; text-align:left; border-left:1px solid silver">
  375. Aktualne umowy
  376. </th>
  377. </tr><tr>
  378. <?php $t = 0; if ($user) : ?>
  379. <td style="padding:0 10px 0 0; vertical-align:top;">
  380. <table cellspacing="0" cellpadding="0" border="1" class="tbl-view">
  381. <tr class="tbl-row-<?php echo ($t = 1 - $t); ?>"><td>Imię i nazwisko</td><td><b><?php echo $user->P_NAME . " " . $user->P_NAME_SECOND; ?></b></td></tr>
  382. <tr class="tbl-row-<?php echo ($t = 1 - $t); ?>"><td>adres</td><td>ul. <?php echo $user->P_ADDRESS_STREET . " " . $user->P_ADDRESS_HOUSE . "/" . $user->P_ADDRESS_HOME . ", " . $user->P_ADDRESS_POST_CODE . " " . $user->P_ADDRESS_CITY; ?></td></tr>
  383. <tr class="tbl-row-<?php echo ($t = 1 - $t); ?>"><td>tel.</td><td><?php echo $user->P_PHONE; ?></td></tr>
  384. <tr class="tbl-row-<?php echo ($t = 1 - $t); ?>"><td>mail</td><td><?php echo $user->user_mail_contact; ?></td></tr>
  385. </table>
  386. </td>
  387. <?php endif; ?>
  388. <td style="padding:0 0 0 10px; vertical-align:top; border-left:1px solid silver">
  389. <?php if (empty($active_deals_by_id)) : ?>
  390. Brak aktualnych umów
  391. <?php else : ?>
  392. <table cellspacing="0" cellpadding="0" border="1" class="tbl-view-wrap" id="tbl-user-deals-info">
  393. <?php
  394. $has_not_active = false;
  395. foreach ($active_deals_by_id as $k_id_deal => $v_deal) {
  396. if (!empty($v_deal->services)) {
  397. foreach ($v_deal->services as $k_p_service => $v_srv_arr) {
  398. foreach ($v_srv_arr as $k_srv_id => $v_srv) {
  399. if ($v_srv->_status != 'NORMAL') {
  400. $has_not_active = true;
  401. }
  402. }
  403. }
  404. }
  405. }
  406. if ($has_not_active) : ?>
  407. <caption class="tbl-actions">
  408. <button class="all">Pokaż wszystkie usługi</button>
  409. <button class="active_only">Pokaż tylko aktywne usługi</button>
  410. </caption>
  411. <?php endif; ?>
  412. <thead><tr>
  413. <th>ID</th>
  414. <th>Numer umowy</th>
  415. <th>Data umowy</th>
  416. <th>Termin</th>
  417. <th>Adres</th>
  418. <th>Pakiet</th>
  419. </tr></thead>
  420. <tbody>
  421. <?php
  422. foreach ($active_deals_by_id as $k_id_deal => $v_deal) {
  423. echo '<tr class="tbl-row-0">';
  424. echo '<th>' . $v_deal->ID_DEALS . '</th>';
  425. echo '<td>' . "Numer: " . $v_deal->P_DEALNUMBER . '</td>';
  426. echo '<td>' . "Data: " . $v_deal->P_DEALDATE . '</td>';
  427. echo '<td>' . "Termin: " .$v_deal->P_DEALDATE_TERM . '</td>';
  428. echo '<td>' . $v_deal->SERVICES_S_ADDRESS_STREET . '</td>';
  429. echo '<td>' . "Pakiet: " . (($v_deal->ID_OFFERS_GROUP > 0)? $v_deal->ID_OFFERS_GROUP : '<span style="color:red">' . "nieznany" . '</span>') . '</td>';
  430. echo '</tr>';
  431. if (empty($v_deal->services)) {
  432. echo '<tr class="tbl-row-1"><td colspan="6">' . "Brak przypisanych usług" . '</td></tr>';
  433. } else {
  434. echo '<tr class="tbl-row-1">';
  435. echo '<td>' . "&nbsp;" . '</td>';
  436. echo '<td colspan="6" style="padding:0 0 7px 0;">';
  437. echo '<table cellspacing="0" cellpadding="0" border="1" class="tbl-view">';
  438. echo '<thead>';
  439. echo '<tr>';
  440. echo '<th>' . "ID" . '</th>';
  441. echo '<th>' . "P_SERVICE" . '</th>';
  442. echo '<th>' . "ABONAMENT_VALUE" . '</th>';
  443. echo '<th>' . "ID_OFFERS" . '</th>';
  444. echo '<th>' . "description" . '</th>';
  445. echo '<th>' . "parametry (ses_x_a)" . '</th>';
  446. echo '<th>' . "dodatkowe (extra_srv.)" . '</th>';
  447. echo '<th>' . "T WHEN CONNECTED" . '</th>';
  448. echo '<th>' . "STATUS" . '</th>';
  449. echo '<th>' . "HANGUP" . '</th>';
  450. echo '</tr>';
  451. echo '</thead>';
  452. echo '<tbody>';
  453. foreach ($v_deal->services as $k_p_service => $v_srv_arr) {
  454. foreach ($v_srv_arr as $k_srv_id => $v_srv) {
  455. $ses_x_a = null;
  456. if (!array_key_exists($k_srv_id, $v_deal->ses_x_a)) {
  457. echo 'brak danych';
  458. } else {
  459. $ses_x_a = $v_deal->ses_x_a[$k_srv_id];
  460. }
  461. echo '<tr class="tbl-row-1 srv-status-' . $v_srv->_status . '">';
  462. echo '<td>' . $v_srv->ID . '</td>';
  463. echo '<td>' . $v_srv->P_SERVICE . '</td>';
  464. echo '<td>';
  465. echo $v_srv->ABONAMENT_VALUE;
  466. if (isset($v_srv->VAT)) {
  467. echo ' / ';
  468. $brutto = $v_srv->ABONAMENT_VALUE * (1 + $v_srv->VAT / 100);
  469. echo '<b title="brutto">' . number_format($brutto, 2, ',', '') . '</b>';
  470. }
  471. echo '</td>';
  472. echo '<td>' . $v_srv->ID_OFFERS . '</td>';
  473. echo '<td>' . $v_srv->description . '</td>';
  474. echo '<td>';
  475. if ($ses_x_a) {
  476. // show params
  477. $srv_params = array();
  478. if ($v_srv->NAME_LIST_SERVICES == 'USERS2') {
  479. $srv_params[] = '<span title="' . "Początkowa prędkość dostępu (dla danej uslugi) - P_SERVICE_QUOTA" . '">' . $ses_x_a->P_SERVICE_QUOTA . "kbit" . '</span>';
  480. if ($ses_x_a->CONN_DIV == 'YES') {
  481. $srv_params[] = '<span title="' . "podział łącza" . '">' . "CONN_DIV" . '</span>';
  482. }
  483. if ($ses_x_a->S_PUBLIC_IP == 'YES') {
  484. $srv_params[] = '<span title="' . "Zewnętrzne IP" . '">' . "S_PUBLIC_IP" . '</span>';
  485. }
  486. if ($ses_x_a->S_E_PORT_1293 == 'YES') {
  487. $srv_params[] = '<span title="' . "Przekierowanie portu TCP/IP" . '">' . "PORT" . '</span>';
  488. }
  489. if ($ses_x_a->S_SOHO_WIFI_ROUTER_1292 == 'YES') {
  490. $srv_params[] = '<span title="' . "Dzierżawa urządzenia WIFI z ROUTEREM" . '">' . "WIFI ROUTER" . '</span>';
  491. }
  492. //echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">TV (F.' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($ses_x_a);echo'</pre>';
  493. }
  494. else if ($v_srv->NAME_LIST_SERVICES == 'TV') {
  495. $srv_params[] = '<span title="' . "Typ usługi TV do ustalenia w systemie" . '">' . $ses_x_a->P_SERVICE_CLASS . '</span>';
  496. if ($ses_x_a->P_DEVICE != 'BRAK') {
  497. $srv_params[] = '<span title="' . "Dzierżawa urządzenia do odbioru TV" . '">' . $ses_x_a->P_DEVICE . '</span>';
  498. }
  499. if ($ses_x_a->P_SERVICE_SOCKETS_AMMOUNT_1298 > 0) {
  500. $srv_params[] = '<span title="' . "Ilość dodatkowych gniazd analogowych do zainstalowania u klienta" . '">' . "Dodatkowe gniazda: " . $ses_x_a->P_SERVICE_SOCKETS_AMMOUNT_1298 . '</span>';
  501. }
  502. if ($ses_x_a->ID_DOMAINS_PACKET_ID > 0) {
  503. $srv_params[] = '<span title="' . "Numer pakietu/cennika z zewnętrznego systemu" . '">' . $ses_x_a->ID_DOMAINS . ": " . $ses_x_a->ID_DOMAINS_PACKET_ID . '</span>';
  504. }
  505. //echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">TV (F.' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($ses_x_a);echo'</pre>';
  506. }
  507. else if ($v_srv->NAME_LIST_SERVICES == 'VOIP') {
  508. if (!empty($ses_x_a->S_PHONE_NUMBER)) {
  509. $srv_params[] = '<span title="' . "Numer tel" . '">' . $ses_x_a->S_PHONE_NUMBER . '</span>';
  510. }
  511. if (!empty($ses_x_a->ID_DOMAINS)) {
  512. $srv_params[] = '<span title="' . "Numer pakietu/cennika z zewnętrznego systemu" . '">' . $ses_x_a->ID_DOMAINS . ": " . $ses_x_a->ID_DOMAINS_PACKET_ID . '</span>';
  513. }
  514. }
  515. if (empty($srv_params)) {
  516. echo 'brak danych';
  517. } else {
  518. echo implode(', ', $srv_params);
  519. }
  520. }
  521. echo '</td>';
  522. echo '<td>';
  523. $dodatkowe = V::get($k_srv_id, null, $v_deal->extra_services);
  524. if (!empty($dodatkowe)) {
  525. $dodatkoweOut = array();
  526. foreach ($dodatkowe as $esrvKey => $esrv) {
  527. $dodatkoweOut[] = "{$esrv->E_SERVICE},{$esrv->E_S_V}";
  528. }
  529. if (!empty($dodatkoweOut)) {
  530. echo implode('<br>', $dodatkoweOut);
  531. }
  532. }
  533. echo '</td>';
  534. echo '<td>';
  535. if ($ses_x_a) {
  536. echo $ses_x_a->T_WHEN_CONNECTED;
  537. }
  538. echo '</td>';
  539. echo '<td class="col-A_STATUS_DESC-'.$v_srv->_status.'">';
  540. echo ($v_srv->A_STATUS_DESC)? $v_srv->A_STATUS_DESC : $v_srv->_status;
  541. echo '</td>';
  542. echo '<td>';
  543. if ($v_srv->HANGUP_FROM || $v_srv->HANGUP_TILL) {
  544. if ($v_srv->HANGUP_STATUS) {
  545. echo ' <em>' . $v_srv->HANGUP_STATUS . '</em>';
  546. }
  547. echo ' (';
  548. echo ($v_srv->HANGUP_FROM)? $v_srv->HANGUP_FROM : '0000-00-00';
  549. echo ' - ';
  550. echo ($v_srv->HANGUP_TILL)? $v_srv->HANGUP_TILL : '0000-00-00';
  551. echo ')';
  552. }
  553. echo '</td>';
  554. echo '</tr>' . "\n";
  555. }
  556. }
  557. echo '</tbody>';
  558. echo '</table>';
  559. echo '</td>';
  560. echo '</tr>';
  561. }
  562. }
  563. ?>
  564. </tbody>
  565. </table>
  566. <?php endif; ?>
  567. </td></tr></table>
  568. </div>
  569. <?php
  570. }
  571. public static function print_js_umowa($cols = null) {
  572. $cols = (!$cols)? 10 : $cols;
  573. return '<script type="text/javascript">' . "
  574. function show_opcje(cell_id, service){
  575. var n=jQuery('#' + cell_id);
  576. if (!n) return;
  577. if (n.find('tr').length === 1) {// init, fetch data
  578. var tbody_opcje=jQuery('#oferty-opcje-service-' + service).find('tr');
  579. if (tbody_opcje.length > 0) {
  580. for (var i = 0; i < tbody_opcje.length; i++) {
  581. n.append(jQuery(tbody_opcje[i]).clone());
  582. }
  583. } else {
  584. n.append('<tr class=\"row-oferty-opcje\"><td colspan=\"{$cols}\">Brak danych</td></tr>');
  585. }
  586. if ('NET' === service) {
  587. tbody_opcje=jQuery('#oferty-opcje-service-OPCJA_TVC').find('tr');
  588. if (tbody_opcje.length > 0) {
  589. for (var i = 0; i < tbody_opcje.length; i++) {
  590. n.append(jQuery(tbody_opcje[i]).clone());
  591. }
  592. }
  593. tbody_opcje=jQuery('#oferty-opcje-service-OPCJA_TEL').find('tr');
  594. if (tbody_opcje.length > 0) {
  595. for (var i = 0; i < tbody_opcje.length; i++) {
  596. n.append(jQuery(tbody_opcje[i]).clone());
  597. }
  598. }
  599. }
  600. } else {
  601. if (!n.hasClass('hide_options')) {
  602. n.addClass('hide_options');
  603. // remove selected rows and checked inputs
  604. n.find('.row-oferty-opcje-selected').removeClass('row-oferty-opcje-selected');
  605. n.find('input[type=\'checkbox\']:checked').attr('checked', false);
  606. } else {
  607. n.removeClass('hide_options');
  608. }
  609. }
  610. return false;
  611. }
  612. function select_option(n){
  613. n=jQuery(n);
  614. //console.log('n.data(p_service):', n.data('p_service'), 'n.val', n.val());
  615. var p_service = n.data('p_service'), opcja_id = n.val();
  616. if ('OPCJA_' == p_service.substr(0, 6) && opcja_id > 0) {
  617. var parentTr = n.parent().parent(),
  618. service = p_service.substr(6);
  619. // TODO: hide/show if checked or not
  620. //console.log('TODO: n.prop(checked): ', n.prop('checked'));
  621. if (n.prop('checked')) {
  622. //console.log('TODO: p_service: ', p_service, 'n.val()', n.val(), 'service to load:', service, 'parentTr', parentTr);
  623. var tbody_opcje=jQuery('#oferty-opcje-service-' + service).find('tr');
  624. if (tbody_opcje.length > 0) {
  625. for (var i = 0; i < tbody_opcje.length; i++) {
  626. var tr = jQuery(tbody_opcje[i]).clone();
  627. tr.addClass('row-oferty-opcje-to-' + opcja_id);
  628. tr.insertAfter(parentTr);
  629. }
  630. } else {
  631. n.append('<tr class=\"row-oferty-opcje\"><td colspan=\"{$cols}\">Brak danych</td></tr>');
  632. }
  633. }
  634. else {
  635. parentTr.nextAll('.row-oferty-opcje-to-' + opcja_id).remove();
  636. }
  637. }
  638. // <a href=\"#\" onclick=\"return show_opcje('3072-2179', 'NET');\">opcje</a>
  639. n.parents('tr:first').toggleClass('row-oferty-opcje-selected');
  640. }
  641. function print_umowa(n){
  642. var add='';
  643. n=jQuery(n);
  644. n.parents('table').find('input[type=\'checkbox\']:checked').each(function(ind, o){
  645. if (o.value > 0) {
  646. add += '&' + o.name + '=' + o.value;
  647. }
  648. });
  649. n.attr('href', n.attr('href_base') + add);
  650. return true;
  651. }
  652. function umowaZysk_click(n) {
  653. var n = $(n);
  654. var visible = n.data('tip-visible');
  655. if (!visible) {
  656. n.data('tip-visible', true);
  657. } else {
  658. n.data('tip-visible', false);
  659. n.popover('destroy');
  660. }
  661. if (!visible) {
  662. umowaZysk_load(n);
  663. }
  664. return false;
  665. }
  666. function umowaZysk_loadResult(n, result) {
  667. var content = 'Error!';
  668. if (result && result.html) {
  669. content = result.html;
  670. }
  671. n.data('tip-visible', true);
  672. var tip = {
  673. placement: 'left',
  674. html: true,
  675. trigger: 'manual',
  676. title: 'Zysk',
  677. content: content
  678. };
  679. n.popover(tip);
  680. n.popover('show');
  681. }
  682. function umowaZysk_load(n) {
  683. var reqData = {};
  684. n.parents('table').find('input[type=\'checkbox\']:checked').each(function(ind, o){
  685. if (o.value > 0) {
  686. if ('[]' == o.name.substr(-2)) {
  687. if (!reqData[o.name]) {
  688. reqData[o.name] = [];
  689. }
  690. reqData[o.name].push(o.value);
  691. } else {
  692. reqData[o.name] = o.value;
  693. }
  694. }
  695. });
  696. //console.log('reqData', reqData);
  697. reqData['id_group'] = n.data('id_group');
  698. jQuery.ajax({
  699. data: reqData,
  700. dataType: 'json',
  701. type: 'GET',
  702. url: 'index.php?FUNCTION_INIT=POKAZ_OFERTY_AKTUALNE_FUNC&HEADER_NOT_INIT=YES&task=ajaxUmowaZysk'
  703. })
  704. .done(function(data, textStatus, jqXHR){
  705. umowaZysk_loadResult(n, data);
  706. })
  707. .fail(function(jqXHR){// jqXHR.fail(function( jqXHR, textStatus, errorThrown ) {});
  708. umowaZysk_loadResult(n, 'error');
  709. });
  710. }
  711. " . '</script>';
  712. }
  713. function get_oferty_opcje_visible_cols() {
  714. $cols = array();
  715. $cols ['ID'] = 'ID oferty';
  716. //$cols ['ID_PROCES' ] = '';
  717. $cols ['S_OTHER_INFO' ] = '<b title="' . "Uwagi" . '">&nbsp;!&nbsp;</b>';
  718. $cols ['P_SERVICE_NAME' ] = 'Nazwa oferty';
  719. $cols ['P_INSTALL_QUOTE' ] = 'Promocyjna cena instalacji (brutto)';
  720. $cols ['P_PROMO_MONTH_PRICE' ] = 'Wartość abonamentu w promocyjnych miesiącach (brutto)';
  721. $cols ['P_CONTRACT_PRICE' ] = 'Wartość abonamentu po promocji (brutto)';
  722. $cols ['P_DEAL_PROMO_MONTHS' ] = 'Ilość promocyjnych miesięcy';
  723. //$cols ['P_DEALTERM_MONTHS' ] = '';
  724. $cols ['P_NORMAL_PRICE' ] = 'Nominalna wartość abonamentu (brutto)';
  725. $cols ['srednia'] = 'Średnia (brutto)';
  726. $cols ['upust'] = 'Upust od ceny normalnej do wyliczeń kary (brutto)';
  727. $cols ['koszt'] = 'Koszt (netto)';
  728. return $cols;
  729. }
  730. function print_js_show_hide_groups() {
  731. return '<script type="text/javascript">' . "
  732. jQuery(document).ready(function(){
  733. jQuery('#tbl-oferty').on('click', '.tbl-row', function(event){
  734. jQuery(this).toggleClass('active');
  735. jQuery(this).next('tr').toggle();
  736. });
  737. jQuery('#tbl-oferty-rowin-all').on('click', function(event){
  738. jQuery('#tbl-oferty .tbl-row').addClass('active');
  739. jQuery('#tbl-oferty .sub').show();
  740. });
  741. jQuery('#tbl-oferty-zwin-all').on('click', function(event){
  742. jQuery('#tbl-oferty .tbl-row').removeClass('active');
  743. jQuery('#tbl-oferty .sub').hide();
  744. });
  745. jQuery('#tbl-oferty .tbl-row').removeClass('active');
  746. jQuery('#tbl-oferty .sub').hide();
  747. });
  748. " . '</script>';
  749. }
  750. function print_groups_info_header($params = array()) {
  751. echo self::print_js_umowa();
  752. $show_zysk = V::get('show_zysk', $this->get('show_zysk'), $params);
  753. $show_www = V::get('show_www', $this->get('show_www'), $params);
  754. $show_status = V::get('show_status', $this->get('show_status'), $params);
  755. $show_rewir = V::get('show_rewir', $this->get('show_rewir'), $params);
  756. echo '<table cellspacing="0" cellpadding="0" border="1" class="tbl tbl-hover" id="tbl-oferty">';
  757. echo '<thead><tr>';
  758. echo '<th class="cell-id">' . "ID <code>0_1380</code>" . '</th>';
  759. if ($show_www) echo '<th>' . '<nobr>' . "www" . $show_www . '</nobr>' . '</th>';
  760. if ($show_status) echo '<th>' . '<nobr>' . "status" . $show_status . '</nobr>' . '</th>';
  761. if ($show_rewir) echo '<th>' . "rewir" . '</th>';
  762. echo '<th>' . "nazwa promocji <code>0_451</code>" . '</th>';
  763. echo '<th>' . "okres umowy <code>0_456</code>" . '</th>';
  764. echo '<th>' . "suma opłat instalacyjnych (brutto)" . '</th>';
  765. echo '<th>' . "suma abonamentów w promocyjnych miesiącach / po promocji (brutto)" . '</th>';
  766. echo '<th>' . "średnia kwota (brutto)" . '</th>';
  767. if ($show_zysk) {
  768. echo '<th>' . "suma kosztów (netto)" . '</th>';
  769. echo '<th>' . "zysk (netto)" . '</th>';
  770. }
  771. echo '</tr></thead>';
  772. echo '<tbody>';
  773. }
  774. function print_groups_info_footer() {
  775. echo '</tbody>';
  776. echo '</table>';
  777. }
  778. function print_group_info($group, $params = array()) {
  779. $deal_add_opcje_frm = V::get('DealAddOptionsForm', null, $params);
  780. $deal_rm_opcje_frm = V::get('DealRmOptionsForm', null, $params);
  781. $hide_header = V::get('hide_header', null, $params);
  782. $show_zysk = V::get('show_zysk', $this->get('show_zysk'), $params);
  783. $show_www = V::get('show_www', $this->get('show_www'), $params);
  784. $show_status = V::get('show_status', $this->get('show_status'), $params);
  785. $show_rewir = V::get('show_rewir', $this->get('show_rewir'), $params);
  786. $opcje_cols = $this->get_oferty_opcje_visible_cols();
  787. if (isset($opcje_cols['koszt'])) {
  788. unset($opcje_cols['koszt']);
  789. }
  790. if (!$hide_header) {
  791. $this->print_groups_info_header();
  792. }
  793. echo '<tr class="tbl-row tbl-row-1">';
  794. echo '<td class="cell-id">' . $group->get('ID') . '</td>';
  795. if ($show_www) echo '<td>' . '<nobr>' . $group->get('OFERTA_WWW') . $show_www . '</nobr>' . '</td>';
  796. if ($show_status) echo '<td>' . '<nobr>' . $group->get('A_STATUS') . $show_status . '</nobr>' . '</td>';
  797. if ($show_rewir) echo '<td>' . $group->get('M_REWIR') . '</td>';
  798. echo '<td>' . $group->get('S_ALIAS') . ' <em style="color:#555;">(' . $group->get('P_PROMOTION_NAME') . ')</em></td>';
  799. echo '<td>' . $group->get('P_DEALTERM_MONTHS') . '</td>';
  800. echo '<td class="cell-suma_1">' . number_format($group->suma_P_PROMO_INSTALL_PRICE, 2, ',', ' ') . " zł" . '</td>';
  801. echo '<td class="cell-suma_2">' . "<b>" . number_format($group->suma_P_PROMO_MONTH_PRICE, 2, ',', ' ') . "</b> zł" . " / " . number_format($group->suma_P_CONTRACT_PRICE, 2, ',', ' ') . " zł" . '</td>';
  802. echo '<td class="cell-srednia">' . "" . number_format($group->suma_P_OFFER_SREDNIA, 2, ',', ' ') . " zł" . '</td>';
  803. if ($show_zysk) {
  804. echo '<td class="cell-cost">' . "" . number_format($group->suma_P_OFFER_COSTS, 2, ',', ' ') . " zł" . '</td>';
  805. echo '<td class="cell-zysk">' . "" . number_format($group->suma_P_OFFER_SREDNIA_NETTO - $group->suma_P_OFFER_COSTS, 2, ',', ' ') . " zł" . '</td>';
  806. }
  807. echo '</tr>';
  808. echo '<tr class="sub sub-0">';
  809. echo '<td colspan="' . 99 . '" class="sub-oferty-wrap">';
  810. echo '<table class="sub-oferty" cellspacing="0" cellpadding="0" border="1">';
  811. echo '<thead>';
  812. echo '<tr>';
  813. echo '<th>';
  814. if (!V::get('hide_print', '', $params)) {
  815. $link_href = "./odt2xhtml/1379.umowa.php";
  816. $link_href .= "?id_group=" . $group->get('ID');
  817. if (($user_id = V::get('user_id', 0, $params, 'int')) > 0) {
  818. $link_href .= "&id_user={$user_id}";
  819. }
  820. $js = "return print_umowa(this);";
  821. echo '<a href="' . $link_href . '" href_base="' . $link_href . '" title="' . "Drukuj umowę [1379]" . '" target="_blank" onclick="' . $js . '">' . '<img src="icon/print.gif" height="24" />' . '</a>';
  822. }
  823. echo '</th>';
  824. foreach ($opcje_cols as $k_zasob_id => $v_label) {
  825. echo '<th>' . $v_label . '</th>';
  826. }
  827. echo '</tr>';
  828. echo '</thead>';
  829. foreach ($group->get_offers() as $k_p_service => $v_offers_arr) {
  830. foreach ($v_offers_arr as $k_offer_id => $v_offer) {
  831. echo '<tbody>';
  832. echo '<tr>';
  833. echo '<td>';
  834. echo $v_offer->P_SERVICE;
  835. echo '</td>';
  836. foreach ($opcje_cols as $k_field_name => $v_label) {
  837. echo '<td>' . $v_offer->$k_field_name . '</td>';
  838. }
  839. echo '</tr>';
  840. echo '</tbody>';
  841. $oferta_opcje = $group->get_options_by_service($v_offer->P_SERVICE);
  842. if (!empty($oferta_opcje)) {
  843. foreach ($oferta_opcje as $v_offer_opcja_id => $v_opcja) {
  844. echo '<tr class="row-oferty-opcje' . (($deal_add_opcje_frm)? ' row-oferty-opcje-selected' : '') . '">';
  845. echo '<td>' . "&nbsp;";
  846. if (!$deal_add_opcje_frm) {
  847. if ($deal_rm_opcje_frm) {
  848. echo '<input type="checkbox" name="id_options_'.$v_offer->P_SERVICE.'[]" value="' . $v_opcja->ID . '">';
  849. } else {
  850. echo '<span style="display:none">';
  851. echo '<input type="checkbox" name="id_options_'.$v_offer->P_SERVICE.'[]" value="' . $v_opcja->ID . '" checked="checked">';
  852. echo '</span>';
  853. }
  854. }
  855. echo '</td>';
  856. foreach ($opcje_cols as $k_field => $v_type_label) {
  857. if ($k_field == 'koszt') {
  858. echo '<td>' . number_format($v_opcja->$k_field, 2, ',', ' ') . '</td>';
  859. } else {
  860. echo '<td>' . $v_opcja->$k_field . '</td>';
  861. }
  862. }
  863. /*
  864. echo '<td>' . $v_opcja->P_SERVICE_NAME . '</td>';
  865. echo '<td>' . $v_opcja->P_INSTALL_QUOTE . '</td>';
  866. echo '<td>' . $v_opcja->P_PROMO_MONTH_PRICE . '</td>';
  867. echo '<td>' . $v_opcja->P_CONTRACT_PRICE . '</td>';
  868. echo '<td>' . ((isset($v_opcja->P_DEAL_PROMO_MONTHS))? $v_opcja->P_DEAL_PROMO_MONTHS : 0) . '</td>';
  869. echo '<td>' . $v_opcja->P_NORMAL_PRICE . '</td>';
  870. echo '<td></td>';// Średnia
  871. echo '<td></td>';// Upust od ceny normalnej do wyliczeń kary
  872. //echo '<td></td>';
  873. */
  874. echo '</tr>';
  875. }
  876. }
  877. if ($deal_add_opcje_frm) {
  878. $add_oferty_opcje = $deal_add_opcje_frm->get_oferty_opcje_by_service($v_offer->P_SERVICE);
  879. foreach ($add_oferty_opcje as $k_id => $v_oferta) {
  880. if (array_key_exists($k_id, $oferta_opcje)) {
  881. continue;
  882. }
  883. echo '<tr class="row-oferty-opcje' . (($deal_add_opcje_frm->has_option($v_offer->P_SERVICE, $k_id))? ' row-oferty-opcje-selected' : '') . '">';
  884. echo '<td>';
  885. $chck = ($deal_add_opcje_frm->has_option($v_offer->P_SERVICE, $k_id))? ' checked="checked"' : '';
  886. $option_name = 'id_options_' . $v_offer->P_SERVICE . '[]';
  887. echo '<input type="checkbox" name="'.$option_name.'" value="' . $k_id . '" onclick="return select_option(this);" '.$chck.' />';
  888. echo '</td>';
  889. foreach ($opcje_cols as $k_field => $v_type_label) {
  890. if ($k_field == 'koszt') {
  891. echo '<td>' . number_format($v_oferta->$k_field, 2, ',', ' ') . '</td>';
  892. } else {
  893. echo '<td>' . $v_oferta->$k_field . '</td>';
  894. }
  895. }
  896. echo '</tr>';
  897. }
  898. }
  899. }
  900. }
  901. echo '</table>';
  902. echo '</td>';
  903. echo '</tr>';
  904. if (!$hide_header) {
  905. $this->print_groups_info_footer();
  906. }
  907. }
  908. function print_options_tree($options_tree, $cols, $title = 'Wybrane opcje') {
  909. echo '<table cellspacing="0" cellpadding="0" border="1" class="tbl-view">';
  910. echo '<caption style="text-align:left;">' . $title . ':</caption>';
  911. echo '<thead>';
  912. echo '<tr>';
  913. echo '<td></td>';
  914. foreach ($cols as $k_field => $v_label) {
  915. echo '<td>' . $v_label . '</td>';
  916. }
  917. echo '</tr>';
  918. echo '</thead>';
  919. foreach ($options_tree as $k_service => $v_options) {
  920. echo '<tr>';
  921. echo '<td>';
  922. echo $k_service;
  923. echo '</td>';
  924. echo '<td colspan="' . count($cols) . '">';
  925. echo '</td>';
  926. echo '</tr>';
  927. foreach ($v_options as $v_option) {
  928. echo '<tr>';
  929. echo '<td></td>';
  930. foreach ($cols as $k_field => $v_label) {
  931. echo '<td>' . $v_option->$k_field . '</td>';
  932. }
  933. echo '</tr>';
  934. }
  935. }
  936. echo '</table>';
  937. }
  938. }