CompanyHelper.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546
  1. <?php
  2. class CompanyHelper {
  3. private $_db;
  4. private $_tbl;
  5. public function __construct($db) {
  6. $this->_db = $db;
  7. $this->_tbl = "COMPANIES";
  8. }
  9. public function getById($id) {
  10. if (!$this->_db) return false;
  11. $user = null;
  12. $sql = "select bua.`id_users`
  13. , bua.`id_users` as ID_BILLING_USERS
  14. , bua.`is_firma`
  15. , bua.`P_NAME`
  16. , bua.`P_NAME_SECOND`
  17. , bua.`P_NIP`
  18. , bua.`P_PESEL`
  19. , bua.`P_PHONE`
  20. , bua.`P_ADDRESS_REGION`
  21. , bua.`P_ADDRESS_CITY`
  22. , bua.`P_ADDRESS_POST_CODE`
  23. , bua.`P_ADDRESS_STREET`
  24. , bua.`P_ADDRESS_HOME`
  25. , bua.`P_ADDRESS_HOUSE`
  26. , bua.`user_mail_contact`
  27. , bu.`BILLING_OWNER`
  28. from `BILLING_USERS_ADD` as bua
  29. left join `BILLING_USERS` as bu on(bu.`ID`=bua.`id_users`)
  30. where bua.`id_users`='{$id}'
  31. ";
  32. $sql = "select c.`ID`
  33. , c.`ID` as id_users
  34. , c.`ID` as ID_BILLING_USERS
  35. , c.`is_firma`
  36. , c.`P_NAME`
  37. , c.`P_NAME_SECOND`
  38. , c.`P_NIP`
  39. , c.`P_PESEL`
  40. , c.`P_PHONE`
  41. , c.`P_ADDRESS_REGION`
  42. , c.`P_ADDRESS_CITY`
  43. , c.`P_ADDRESS_POST_CODE`
  44. , c.`P_ADDRESS_STREET`
  45. , c.`P_ADDRESS_HOME`
  46. , c.`P_ADDRESS_HOUSE`
  47. , c.`user_mail_contact`
  48. , c.`BILLING_OWNER`
  49. , c.`CRM_LISTA_ZASOBOW_ID`
  50. from `{$this->_tbl}` as c
  51. where c.`ID`='{$id}'
  52. ";
  53. $res = $this->_db->query($sql);
  54. if ($r = $this->_db->fetch($res)) {
  55. $user = $r;
  56. }
  57. return $user;
  58. }
  59. public function getByNip($nip) {
  60. if (!$this->_db) return false;
  61. $user = null;
  62. $sqlNip = trim(str_replace('-', '', $nip));
  63. $sql = "select c.`ID`
  64. , c.`ID` as id_users
  65. , c.`ID` as ID_BILLING_USERS
  66. , c.`is_firma`
  67. , c.`P_NAME`
  68. , c.`P_NAME_SECOND`
  69. , c.`P_NIP`
  70. , c.`P_PESEL`
  71. , c.`P_PHONE`
  72. , c.`P_ADDRESS_REGION`
  73. , c.`P_ADDRESS_CITY`
  74. , c.`P_ADDRESS_POST_CODE`
  75. , c.`P_ADDRESS_STREET`
  76. , c.`P_ADDRESS_HOME`
  77. , c.`P_ADDRESS_HOUSE`
  78. , c.`user_mail_contact`
  79. , c.`BILLING_OWNER`
  80. , c.`CRM_LISTA_ZASOBOW_ID`
  81. from `{$this->_tbl}` as c
  82. where replace(c.`P_NIP`, '-', '')='{$sqlNip}'
  83. ";
  84. $res = $this->_db->query($sql);
  85. if ($r = $this->_db->fetch($res)) {
  86. $user = $r;
  87. }
  88. return $user;
  89. }
  90. /**
  91. * @param object $company @see getById
  92. */
  93. public function getBillingOwner($company) {
  94. if (!$this->_db) return false;
  95. if ($company) {
  96. if ($company->BILLING_OWNER > 0) {
  97. $owner = null;
  98. /*
  99. CREATE TABLE IF NOT EXISTS `BILLING_OWNER` (
  100. `id` int(10) NOT NULL AUTO_INCREMENT,
  101. `name1` varchar(255) NOT NULL DEFAULT '',
  102. `name2` varchar(255) NOT NULL DEFAULT '',
  103. `kod` varchar(6) NOT NULL DEFAULT '',
  104. `miasto` varchar(150) NOT NULL DEFAULT '',
  105. `ulica` varchar(255) NOT NULL DEFAULT '',
  106. `numer_dom` int(5) DEFAULT NULL,
  107. `numer_pos` tinyint(5) DEFAULT NULL,
  108. `uwagi` text NOT NULL,
  109. `tel` varchar(100) NOT NULL DEFAULT '',
  110. `fax` varchar(100) NOT NULL DEFAULT '',
  111. `nip` varchar(13) NOT NULL DEFAULT '',
  112. `regon` varchar(10) NOT NULL DEFAULT '',
  113. `bank` varchar(255) NOT NULL DEFAULT '',
  114. `nr_rach` varchar(255) NOT NULL DEFAULT '',
  115. `NR_RACH_MASS_PAY` varchar(24) DEFAULT NULL,
  116. `BILLING_OWNER_EMAIL` varchar(100) NOT NULL DEFAULT '',
  117. `CRM_LISTA_ZASOBOW_ID` int(11) NOT NULL,
  118. UNIQUE KEY `id` (`id`)
  119. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=3 ;
  120. INSERT INTO `BILLING_OWNER` (`id`, `name1`, `name2`, `kod`, `miasto`, `ulica`, `numer_dom`, `numer_pos`, `uwagi`, `tel`, `fax`, `nip`, `regon`, `bank`, `nr_rach`, `NR_RACH_MASS_PAY`, `BILLING_OWNER_EMAIL`, `CRM_LISTA_ZASOBOW_ID`) VALUES
  121. (1, '"BIALL-NET" Sp. z o.o.', '', '80-174', 'Gdańsk, Otomin', 'Słoneczna', 43, NULL, '', '0-58 320-72-92', '0-58 320-72-96', '593-22-68-672', '192120212', 'Bank Zachodni WBK SA I O/Gdansk', '46 1090 1098 0000 0001 0253 7156', '109000049887', 'biall-net@biall.net.pl', 12889),
  122. (2, '"NET-DAY" s.c.', 'Adrian i Ewa Wieczorkowscy', '80-809', 'Gdańsk', 'Kopeckiego', 9, 24, '', '0-58 741 84 54', '0-58 741 84 56', '583-27-54-031', '192578721', '', '84 1500 1171 1211 7002 9997 0000', '109000049669', 'netday@netday.pl', 12919);
  123. */
  124. $sql = "select o.*
  125. from `BILLING_OWNER` as o
  126. where o.`ID`='{$company->BILLING_OWNER}'
  127. ";
  128. $res = $this->_db->query($sql);
  129. if ($r = $this->_db->fetch($res)) {
  130. $owner = $r;
  131. }
  132. return $owner;
  133. }
  134. }
  135. return null;
  136. }
  137. /**
  138. * Powiązanie zasobu z companies za pomocą $company->CRM_LISTA_ZASOBOW_ID
  139. */
  140. public function getZasobPodmiot($company, $billingOwner) {
  141. if (!$this->_db) return false;
  142. if (!$company || !$billingOwner) return false;
  143. if (!$billingOwner->CRM_LISTA_ZASOBOW_ID) return false;
  144. if (!$company->CRM_LISTA_ZASOBOW_ID) return null;
  145. $zasob = null;
  146. $sql = "select z.*
  147. from `CRM_LISTA_ZASOBOW` as z
  148. where z.`ID`='{$company->CRM_LISTA_ZASOBOW_ID}'
  149. ";
  150. $res = $this->_db->query($sql);
  151. if ($r = $this->_db->fetch($res)) {
  152. $zasob = $r;
  153. }
  154. return $zasob;
  155. //if ($zasob->PARENT_ID == $billingOwner->CRM_LISTA_ZASOBOW_ID) {
  156. // return $zasob;
  157. //} else {
  158. // return false;
  159. //}
  160. }
  161. public function createZasobPodmiot($company, $billingOwner) {
  162. if (!$this->_db) return false;
  163. if (!$company || !$billingOwner) return false;
  164. if (!$billingOwner->CRM_LISTA_ZASOBOW_ID) return false;
  165. if ($company->CRM_LISTA_ZASOBOW_ID > 0) return null;
  166. $podmiot = new stdClass();
  167. $podmiot->PARENT_ID = $billingOwner->CRM_LISTA_ZASOBOW_ID;
  168. $podmiot->TYPE = 'PODMIOT';
  169. $podmiot->DESC = "{$company->P_NAME} {$company->P_NAME_SECOND}";
  170. $zasobId = $this->_db->ADD_NEW_OBJ('CRM_LISTA_ZASOBOW', $podmiot);
  171. if ($zasobId > 0) {
  172. $sqlCom = new stdClass();
  173. $sqlCom->ID = $company->ID;
  174. $sqlCom->CRM_LISTA_ZASOBOW_ID = $zasobId;
  175. $affeted = $this->_db->UPDATE_OBJ($this->_tbl, $sqlCom);
  176. }
  177. return $zasobId;
  178. }
  179. /**
  180. * Powiązane konta do autoryzacji w systemie
  181. */
  182. public function getAccountsList($company) {
  183. if (!$this->_db) return false;
  184. if (!$company) return false;
  185. if (!$company->CRM_LISTA_ZASOBOW_ID) return false;
  186. $accList = null;
  187. $sql = "select u.*
  188. , count(up.ID) as cntProfile
  189. from `ADMIN_USERS` as u
  190. left join `CRM_AUTH_PROFILE` as up on(up.`REMOTE_ID`=u.`ID` and up.`REMOTE_TABLE`='ADMIN_USERS')
  191. where (u.`ADM_ACCOUNT` like 'c{$company->ID}%' or u.`ID_BILLING_USERS`='{$company->ID}')
  192. group by u.`ID`
  193. ";
  194. $res = $this->_db->query($sql);
  195. while ($r = $this->_db->fetch($res)) {
  196. $accList[$r->ID] = $r;
  197. }
  198. return $accList;
  199. }
  200. /**
  201. * @see POKAZ_OFERTY_AKTUALNE_FUNC: PokazOfertyHelper::get_deals_active_by_user($ID_BILLING_USERS, $only_active = true)
  202. */
  203. public function getDealsFull($ID_BILLING_USERS, $only_active = true) {
  204. $deals = $this->getDealsAll(array('ID_BILLING_USERS'=>$ID_BILLING_USERS, 'return_by'=>'ID', 'P_DEALNUMBER'=>true));
  205. $this->addDealsActiveInfo($deals, $ID_BILLING_USERS, $only_active);
  206. return $deals;
  207. }
  208. /**
  209. * @see POKAZ_OFERTY_AKTUALNE_FUNC: PokazOfertyHelper::deals_active_add_info(&$active_deals_by_id, $ID_BILLING_USERS, $only_active = false)
  210. */
  211. public function addDealsActiveInfo(&$active_deals_by_id, $ID_BILLING_USERS, $only_active = false) {
  212. if (empty($active_deals_by_id)) {
  213. return;
  214. }
  215. $uslugi = $this->getServicesByDeals($ID_BILLING_USERS, array_keys($active_deals_by_id), $only_active);
  216. foreach ($active_deals_by_id as $k_deal_id => $v_deal) {
  217. if (array_key_exists($k_deal_id, $uslugi)) {
  218. $active_deals_by_id[$k_deal_id]->services = $uslugi[$k_deal_id];
  219. $active_deals_by_id[$k_deal_id]->services_by_id = array();
  220. foreach ($uslugi[$k_deal_id] as $k_p_service => $v_srv_arr) {
  221. foreach ($v_srv_arr as $k_srv_id => $v_srv) {
  222. $active_deals_by_id[$k_deal_id]->services_by_id[$k_srv_id] = $v_srv;
  223. }
  224. }
  225. }
  226. }
  227. // add $v_deal->ses_x_a
  228. $out_id_count = array();
  229. $uslugi_params = $this->getServicesParams($uslugi);
  230. foreach ($active_deals_by_id as $k_deal_id => $v_deal) {
  231. $active_deals_by_id[$k_deal_id]->ses_x_a = array();
  232. foreach ($v_deal->services as $k_p_service => $v_srv_arr) {
  233. foreach ($v_srv_arr as $k_srv_id => $v_srv) {
  234. $v_deal->services[$k_p_service][$k_srv_id]->offer_p_service = $k_p_service;
  235. // add SERVICE params if exists
  236. if (array_key_exists($k_srv_id, $uslugi_params)) {
  237. $active_deals_by_id[$k_deal_id]->ses_x_a[$k_srv_id] = $uslugi_params[$k_srv_id];
  238. if ($v_srv->NAME_LIST_SERVICES == 'TV' && $uslugi_params[$k_srv_id]->P_SERVICE_CLASS != '') {
  239. $v_deal->services[$k_p_service][$k_srv_id]->offer_p_service = $uslugi_params[$k_srv_id]->P_SERVICE_CLASS;
  240. }
  241. }
  242. // add out_id - @used in JavaScript overview
  243. if (!in_array($v_srv->offer_p_service, $out_id_count)) {
  244. $out_id_count[$v_srv->offer_p_service] = 1;
  245. } else {
  246. $out_id_count[$v_srv->offer_p_service] += 1;
  247. }
  248. $v_deal->services[$k_p_service][$k_srv_id]->out_id = $v_srv->offer_p_service . '_' . $out_id_count[$v_srv->offer_p_service];
  249. }
  250. }
  251. }
  252. }
  253. /**
  254. * @see POKAZ_OFERTY_AKTUALNE_FUNC: PokazOfertyHelper::get_services_by_user_deals($user_id, $deals_ids = array(), $only_active = false)
  255. */
  256. public function getServicesByDeals($user_id, $deals_ids = array(), $only_active = false) {
  257. $deals = array();
  258. if (empty($deals_ids)) {
  259. return $deals;
  260. }
  261. $db = DB::getDB();
  262. $sql = "select
  263. s.`ID`, s.`NAME_LIST_SERVICES`, s.`A_STATUS`
  264. , s.`ID_OFFERS`
  265. , s.`ID_DEALS_TABLE`
  266. , s.`P_ID_SERVICES`
  267. , s.`ABONAMENT_VALUE` as ABONAMENT_VALUE
  268. , s.`P_ID_SERVICES` as P_ID
  269. , s.`HANGUP_STATUS`
  270. , s.`HANGUP_FROM`
  271. , s.`HANGUP_TILL`
  272. , ls.`description` as description
  273. -- , lst.`name` as A_STATUS_DESC
  274. , '' as A_STATUS_DESC
  275. from `SERVICES` as s
  276. left join `LIST_SERVICES` as ls on(ls.`name`=s.`NAME_LIST_SERVICES`)
  277. -- left join `LIST_status` as lst on(lst.`ses_users2`=s.`A_STATUS`)
  278. -- left join `LIST_status` as lst on(lst.`ses_users2`=s.`HANGUP_STATUS` and lst.`ID`>2)
  279. where `ID_BILLING_USERS`='" . $user_id . "'
  280. and `ID_DEALS_TABLE` in(" . implode(",", $deals_ids) . ")
  281. -- and s.`A_STATUS`='NORMAL'
  282. ";
  283. if(V::get('DBG_SQL', 0, $_GET, 'int') > 0){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">sql (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sql);echo'</pre>';}
  284. $res = $db->query($sql);
  285. while ($r = $db->fetch($res)) {
  286. // TODO: only active services - @from $A_STATUS_L2_SQL
  287. // $r->HANGUP_STATUS = ('NORMAL', 'OFF_SOFT', 'OFF_HARD')
  288. $r->HANGUP_TILL = (!$r->HANGUP_TILL || $r->HANGUP_TILL == '0000-00-00')? null : $r->HANGUP_TILL;
  289. $r->HANGUP_FROM = (!$r->HANGUP_FROM || $r->HANGUP_FROM == '0000-00-00')? null : $r->HANGUP_FROM;
  290. $r->_status = null;
  291. $today = date("Y-m-d");
  292. if ($r->HANGUP_STATUS == $r->A_STATUS) {
  293. $r->_status = $r->A_STATUS;
  294. } else if (!$r->HANGUP_TILL && $r->HANGUP_FROM > '' && $today > $r->HANGUP_FROM) {
  295. $r->_status = $r->HANGUP_STATUS;
  296. } else if (!$r->HANGUP_TILL && $r->HANGUP_FROM > '' && $today < $r->HANGUP_FROM) {
  297. $r->_status = $r->A_STATUS;
  298. } else if ($r->HANGUP_TILL > '' && $r->HANGUP_FROM > '' && $today > $r->HANGUP_FROM && $today < $r->HANGUP_TILL) {
  299. $r->_status = $r->HANGUP_STATUS;
  300. } else if ($r->HANGUP_TILL > '' && $r->HANGUP_FROM > '' && $today < $r->HANGUP_FROM && $today < $r->HANGUP_TILL) {
  301. $r->_status = $r->A_STATUS;
  302. } else if (!$r->HANGUP_TILL && !$r->HANGUP_FROM) {
  303. $r->_status = $r->A_STATUS;
  304. } else if ($r->HANGUP_TILL > '' && $r->HANGUP_FROM > '' && $today > $r->HANGUP_FROM && $today > $r->HANGUP_TILL) {
  305. $r->_status = $r->A_STATUS;
  306. } else if ($r->HANGUP_TILL > '' && $r->HANGUP_FROM > '' && $today > $r->HANGUP_FROM && $today > $r->HANGUP_TILL && $r->HANGUP_FROM < $r->HANGUP_TILL) {
  307. $r->_status = 'ERROR1';
  308. } else {
  309. $r->_status = 'ERROR2';
  310. }
  311. $r->A_STATUS_DESC = $this->getStatusName($r->_status);
  312. if ($only_active && !in_array($r->_status, array('NORMAL'))) {
  313. continue;
  314. }
  315. // TODO: P_SERVICE used?
  316. $r->P_SERVICE = $r->NAME_LIST_SERVICES;
  317. if ($r->P_SERVICE == 'USERS2') $r->P_SERVICE = 'NET';
  318. else if ($r->P_SERVICE == 'VOIP') $r->P_SERVICE = 'TEL';
  319. $deals[$r->ID_DEALS_TABLE][$r->P_SERVICE][$r->ID] = $r;
  320. }
  321. return $deals;
  322. }
  323. /**
  324. * @see POKAZ_OFERTY_AKTUALNE_FUNC: PokazOfertyHelper::get_l2_list_status_name($status)
  325. */
  326. function getStatusName($status) {
  327. if (!$this->_db) return false;
  328. if (!$this->_l2_list_status) {
  329. $this->_l2_list_status = array();
  330. $sql = "select lst.`ses_users2`, lst.`name`, lst.`description`
  331. from `LIST_status` as lst
  332. where lst.`ID`>2
  333. ";
  334. $res = $this->_db->query($sql);
  335. while ($r = $this->_db->fetch($res)) {
  336. $this->_l2_list_status[$r->ses_users2] = $r->name;
  337. }
  338. }
  339. if (array_key_exists($status, $this->_l2_list_status)) {
  340. return $this->_l2_list_status[$status];
  341. }
  342. return null;
  343. }
  344. /**
  345. * @see POKAZ_OFERTY_AKTUALNE_FUNC: PokazOfertyHelper::get_services_params($uslugi)
  346. */
  347. public function getServicesParams($uslugi) {
  348. $ses_x_a = array();
  349. if (empty($uslugi)) return $ses_x_a;
  350. $allowed_name_list_srv = array('USERS2', 'TV', 'VOIP');
  351. $load_ses_x_a_ids = array();
  352. foreach ($uslugi as $k_deal_id => $v_deal_arr) {
  353. foreach ($v_deal_arr as $k_p_service => $v_srv_arr) {
  354. if (empty($v_srv_arr)) continue;
  355. foreach ($v_srv_arr as $k_srv_id => $v_srv) {
  356. $load_ses_x_a_ids [$v_srv->NAME_LIST_SERVICES][] = $v_srv->ID;
  357. }
  358. }
  359. }
  360. // load from DB
  361. $db = DB::getDB();
  362. foreach ($load_ses_x_a_ids as $k_name_list_srv => $v_srv_ids) {
  363. if (!in_array($k_name_list_srv, $allowed_name_list_srv)) continue;
  364. $sql = "select * from `SES_" . $k_name_list_srv . "_A` where `ID_SERVICES` in (" . implode(", ", $v_srv_ids) . ")";
  365. $res = $db->query($sql);
  366. while ($r = $db->fetch($res)) {
  367. $ses_x_a [$r->ID_SERVICES] = $r;
  368. }
  369. }
  370. return $ses_x_a;
  371. }
  372. public function getDealsAll($params = array()) {
  373. if (!$this->_db) return false;
  374. $sqlReturnBy = V::get('return_by', '', $params);
  375. $forceUpdate = false;
  376. Lib::loadClass('ColumnDealsStatus');
  377. ColumnDealsStatus::run_update($forceUpdate);
  378. $dealsActive = array();
  379. $sql_left_join = "";
  380. $sql_select_arr = array();
  381. $sql_select_arr[] = "ds.`ID_DEALS`";
  382. $sql_select_arr[] = "ds.`ID_BILLING_USERS`";
  383. $sql_select_arr[] = "ds.`SERVICES_S_ADDRESS_STREET`";
  384. $sql_select_arr[] = "concat(c.`P_NAME`, ' ', c.`P_NAME_SECOND`) as P_NAME";
  385. if ('' != V::get('ID_BILLING_USERS', '', $params)) {
  386. $sql_left_join .= "\n left join `DEALS_TABLE` as d on (d.`ID`=ds.`ID_DEALS`)";
  387. $sql_select_arr[] = "d.`P_DEALNUMBER`";
  388. $sql_select_arr[] = "d.`P_DEALDATE`";
  389. $sql_select_arr[] = "d.`P_DEALDATE_TERM`";
  390. $sql_select_arr[] = "d.`ID_OFFERS_GROUP`";
  391. $sql_select_arr[] = "d.`ID_OFFERS_ON`";
  392. $sql_select_arr[] = "d.`ID_OFFERS_OFF`";
  393. $sql_select_arr[] = "d.`S_ADDRESS_STREET`";
  394. }
  395. $sql_where_arr = array();
  396. //$sql_where_arr[] = "ds.`DEALS_ACTIVE`=1";
  397. if ('' != ($user_id = V::get('ID_BILLING_USERS', '', $params))) {
  398. $sql_where_arr[] = "ds.`ID_BILLING_USERS`='{$user_id}'";
  399. }
  400. if ('' != ($street = V::get('S_ADDRESS_STREET', '', $params))) {
  401. $sql_where_arr[] = "(ds.`SERVICES_S_ADDRESS_STREET`='{$street}' or concat(',', ds.`SERVICES_S_ADDRESS_STREET`, ',') like '%,{$street},%')";
  402. }
  403. $sql_where_arr = implode("\n and ", $sql_where_arr);
  404. $sql = "select " . implode("\n, ", $sql_select_arr) . "
  405. from `temp_DEALS_STATUS` as ds
  406. left join `{$this->_tbl}` as c on (c.`ID`=ds.`ID_BILLING_USERS`)
  407. {$sql_left_join}
  408. where {$sql_where_arr}
  409. order by ds.`ID_DEALS` DESC
  410. ";
  411. if(V::get('DBG_SQL', 0, $_GET, 'int') > 0){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">sql (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sql);echo'</pre>';}
  412. $res = $this->_db->query($sql);
  413. while ($r = $this->_db->fetch($res)) {
  414. if ($sqlReturnBy == 'ID') {
  415. $dealsActive[$r->ID_DEALS]= $r;
  416. } else {
  417. $dealsActive[$r->ID_BILLING_USERS][] = $r;
  418. }
  419. }
  420. return $dealsActive;
  421. }
  422. /**
  423. * @see POKAZ_OFERTY_AKTUALNE_FUNC: PokazOfertyHelper::get_deals_active($params)
  424. */
  425. public function getDealsActive($params = array()) {
  426. if (!$this->_db) return false;
  427. $sqlReturnBy = V::get('return_by', '', $params);
  428. $forceUpdate = false;
  429. Lib::loadClass('ColumnDealsStatus');
  430. ColumnDealsStatus::run_update($forceUpdate);
  431. $dealsActive = array();
  432. $sql_left_join = "";
  433. $sql_select_arr = array();
  434. $sql_select_arr[] = "ds.`ID_DEALS`";
  435. $sql_select_arr[] = "ds.`ID_BILLING_USERS`";
  436. $sql_select_arr[] = "ds.`SERVICES_S_ADDRESS_STREET`";
  437. $sql_select_arr[] = "concat(c.`P_NAME`, ' ', c.`P_NAME_SECOND`) as P_NAME";
  438. if ('' != V::get('ID_BILLING_USERS', '', $params)) {
  439. $sql_left_join .= "\n left join `DEALS_TABLE` as d on (d.`ID`=ds.`ID_DEALS`)";
  440. $sql_select_arr[] = "d.`P_DEALNUMBER`";
  441. $sql_select_arr[] = "d.`P_DEALDATE`";
  442. $sql_select_arr[] = "d.`P_DEALDATE_TERM`";
  443. $sql_select_arr[] = "d.`ID_OFFERS_GROUP`";
  444. $sql_select_arr[] = "d.`ID_OFFERS_ON`";
  445. $sql_select_arr[] = "d.`ID_OFFERS_OFF`";
  446. $sql_select_arr[] = "d.`S_ADDRESS_STREET`";
  447. }
  448. $sql_where_arr = array();
  449. $sql_where_arr[] = "ds.`DEALS_ACTIVE`=1";
  450. if ('' != ($user_id = V::get('ID_BILLING_USERS', '', $params))) {
  451. $sql_where_arr[] = "ds.`ID_BILLING_USERS`='{$user_id}'";
  452. }
  453. if ('' != ($street = V::get('S_ADDRESS_STREET', '', $params))) {
  454. $sql_where_arr[] = "(ds.`SERVICES_S_ADDRESS_STREET`='{$street}' or concat(',', ds.`SERVICES_S_ADDRESS_STREET`, ',') like '%,{$street},%')";
  455. }
  456. $sql_where_arr = implode("\n and ", $sql_where_arr);
  457. $sql = "select " . implode("\n, ", $sql_select_arr) . "
  458. from `temp_DEALS_STATUS` as ds
  459. left join `{$this->_tbl}` as c on (c.`ID`=ds.`ID_BILLING_USERS`)
  460. {$sql_left_join}
  461. where {$sql_where_arr}
  462. order by ds.`ID_DEALS` DESC
  463. ";
  464. if(V::get('DBG_SQL', 0, $_GET, 'int') > 0){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">sql (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sql);echo'</pre>';}
  465. $res = $this->_db->query($sql);
  466. while ($r = $this->_db->fetch($res)) {
  467. if ($sqlReturnBy == 'ID') {
  468. $dealsActive[$r->ID_DEALS]= $r;
  469. } else {
  470. $dealsActive[$r->ID_BILLING_USERS][] = $r;
  471. }
  472. }
  473. return $dealsActive;
  474. }
  475. /**
  476. * Emulates TypespecialVariable->getValuesWithExports($query)
  477. * TODO: only groups visible for current Partner - $company
  478. */
  479. public function searchTypeSpecialPartnerGroups($company, $query) {
  480. $values = array();
  481. $db = DB::getDB();
  482. $query = trim($query, ' %');
  483. $query = $db->_($query);
  484. $sqlLimit = 20;
  485. $sql = "select z.`ID`, z.`DESC`, z.`TYPE`
  486. from `CRM_LISTA_ZASOBOW` as z
  487. where z.`A_STATUS` in('NORMAL', 'WAITING')
  488. and z.`TYPE` in('STANOWISKO', 'PODMIOT', 'DZIAL')
  489. and (z.`DESC` like '%{$query}%' or z.`ID` like '%{$query}%')
  490. group by z.`DESC`
  491. limit {$sqlLimit}
  492. ";
  493. if(V::get('DBG_TS', 0, $_GET) > 2){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">sql (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sql);echo'</pre>';}
  494. $res = $db->query($sql);
  495. while ($r = $db->fetch($res)) {
  496. $values[] = (object)array('id'=>$r->ID, 'param_out'=>$r->TYPE . ' ' . $r->DESC);
  497. }
  498. if(V::get('DBG_TS', 0, $_GET) > 2){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">values (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($values);echo'</pre>';}
  499. return $values;
  500. }
  501. public function setTableName($tbl) {
  502. $this->_tbl = $tbl;
  503. }
  504. }