Parcourir la source

U DB to PDO in windykacja stats helper and model

Piotr Labudda il y a 6 ans
Parent
commit
80af81b25f
2 fichiers modifiés avec 388 ajouts et 670 suppressions
  1. 180 323
      SE/se-lib/Windykacja/StatsHelper.php
  2. 208 347
      SE/se-lib/Windykacja/StatsModel.php

+ 180 - 323
SE/se-lib/Windykacja/StatsHelper.php

@@ -59,10 +59,11 @@ class Windykacja_StatsHelper {
 	}
 
 	public static function get_by_user(&$user) {
-		$db = DB::getDB();
-		$sql = "select * from `USERS2_WINDYKACJA_STATUS` as w where w.`ID_BILLING_USERS`='{$user->ID}' ";
-		$res = $db->query($sql);
-		$ret = $db->fetch($res);
+		return (object)DB::getPDO()->fetchFirst("
+			select *
+			from `USERS2_WINDYKACJA_STATUS` as w
+			where w.`ID_BILLING_USERS` = :id_user
+		", [ ':id_user' => $user->ID ]);
 		return $ret;
 	}
 
@@ -96,6 +97,23 @@ class Windykacja_StatsHelper {
 		$nr_konta = Windykacja_FunkcjeL1::bankowy_make_nrach($company->NR_RACH_MASS_PAY, $user->ID_BILLING_USERS, 0);
 		$data_arr["ACCOUNT_NUMBER"] = $nr_konta;
 		$data_arr["SERVICES_STREETS"] = Windykacja_StatsModel::getAllServicesStreetsCSV($user);
+		$data_arr["BILLING_USER_NAME"] = DB::getPDO()->fetchValue("
+			select concat(bua.`P_NAME`, ' ', bua.`P_NAME_SECOND`) as P_NAME
+			from `BILLING_USERS_ADD` as bua
+				left join `BILLING_USERS` as bu on ( bu.`ID` = bua.`id_users` )
+			where bua.`id_users` = :id_user
+		", [ ':id_user' => $user->ID_BILLING_USERS ]);
+		$data_arr["BILLING_USER_ADRES"] = DB::getPDO()->fetchValue("
+			select concat(bua.P_ADDRESS_POST_CODE, ' ', bua.P_ADDRESS_CITY, ' ', bua.P_ADDRESS_STREET, ' ', bua.P_ADDRESS_HOME, '/', bua.P_ADDRESS_HOUSE) as P_NAME
+			from `BILLING_USERS_ADD` as bua
+				left join `BILLING_USERS` as bu on ( bu.`ID` = bua.`id_users` )
+			where bua.`id_users` = :id_user
+		", [ ':id_user' => $user->ID_BILLING_USERS ]);
+		$data_arr["BILLING_OWNER_NAME"] = DB::getPDO()->fetchValue("
+			select ( select bo.name1 from BILLING_OWNER bo where bo.ID = bu.BILLING_OWNER ) as BILLING_OWNER_NAME
+			from `BILLING_USERS` as bu
+			where bu.ID = :id_user
+		", [ ':id_user' => $user->ID_BILLING_USERS ]);
 		// set default values
 		//$data_arr["A_STATUS"] = "WAITING";
 		//$data_arr["PAY_FVAT"] = 0;
@@ -216,14 +234,12 @@ class Windykacja_StatsHelper {
 			$hasActiveNET = 0;
 			$hasActiveTV = 0;
 			$isMovedToVectra = 0;
-			$db = DB::getDB();
-			$idUser = $user->ID;
-			$sql = "
+			$statsActiveVectra = DB::getPDO()->fetchFirst("
 				select
 					IF(1 = (
 							select 1 as hasActiveNET
 							from `SERVICES` srv
-							where srv.`ID_BILLING_USERS`='{$idUser}'
+							where srv.`ID_BILLING_USERS` = :id_user
 								and srv.`NAME_LIST_SERVICES`='USERS2'
 								and 'NORMAL'=A_STATUS_L2_SQL_L1(srv.`ID`)
 							limit 1
@@ -232,7 +248,7 @@ class Windykacja_StatsHelper {
 					IF(1 = (
 							select 1 as hasActiveTV
 							from `SERVICES` srv
-							where srv.`ID_BILLING_USERS`='{$idUser}'
+							where srv.`ID_BILLING_USERS` = :id_user
 								and srv.`NAME_LIST_SERVICES`='TV'
 								and 'NORMAL'=A_STATUS_L2_SQL_L1(srv.`ID`)
 							limit 1
@@ -241,49 +257,35 @@ class Windykacja_StatsHelper {
 					IF(1 = ('REZYGNACJA_Z_PRZEJSCIEM_DO_VECTRA'=(select `RODZAJ_DZIALANIA_HANDLOWEGO`
 						from `DEALS_TABLE`
 						where `A_STATUS`='NORMAL'
-							and `ID_BILLING_USERS`='{$user->ID}'
+							and `ID_BILLING_USERS` = :id_user
 						order by `ID` DESC
 						limit 1)
 						), 1, 0) as IS_MOVED_TO_VECTRA
-			";
+			", [ ':id_user' => $user->ID ]);
 			DBG::_('DBG_ACTIVE_SRV', '>2', "DBG_ACTIVE_SRV sql", $sql, __CLASS__, __FUNCTION__, __LINE__);
-			$res = $db->query($sql);
-			if ($r = $db->fetch($res)) {
-				DBG::_('DBG_ACTIVE_SRV', '>2', "r", $r, __CLASS__, __FUNCTION__, __LINE__);
-				$hasActiveNET = V::get('hasActiveNET', '', $r);
-				$hasActiveTV  = V::get('hasActiveTV', '', $r);
-				$isMovedToVectra = V::get('IS_MOVED_TO_VECTRA', '', $r);
+			if ($statsActiveVectra) {
+				$hasActiveNET = V::get('hasActiveNET', '', $statsActiveVectra);
+				$hasActiveTV  = V::get('hasActiveTV', '', $statsActiveVectra);
+				$isMovedToVectra = V::get('IS_MOVED_TO_VECTRA', '', $statsActiveVectra);
 			}
 			$data_arr['HAS_ACTIVE_NET'] = $hasActiveNET;
 			$data_arr['HAS_ACTIVE_TV']  = $hasActiveTV;
 			$data_arr['IS_MOVED_TO_VECTRA'] = $isMovedToVectra;
-			DBG::_('DBG_ACTIVE_SRV', '>2', "data_arr", $data_arr, __CLASS__, __FUNCTION__, __LINE__);
 		}
 		if(V::get('DBG_LAST_FVAT_PAY_TERM', '', $_GET)){echo'<pre>data_arr #' . __LINE__ . ': ';print_r($data_arr);echo'</pre>';}
 
-		$sql_arr = array();
-		foreach ($data_arr as $k => $v) {
-			$sql_arr[] = "`{$k}`='{$v}'";
-		}
-		$db = DB::getDB();
-		$sql = "update `USERS2_WINDYKACJA_STATUS` set " . implode(",", $sql_arr) . " where `ID`='{$user->WINDYKACJA_ID}' limit 1 ; ";
-		$db->query($sql);
+		DB::getPDO()->update('USERS2_WINDYKACJA_STATUS', 'ID', $user->WINDYKACJA_ID, $data_arr);
 
 		// update HIST - tylko zmiana na WAITING - powrót do oczekujących
 		if (isset($data_arr["A_STATUS"]) && $data_arr["A_STATUS"] == "WAITING" && $user->A_STATUS != "WAITING") {
-			$sql_arr = array();
-			foreach ($data_arr as $k => $v) {
-				$sql_arr["`{$k}`"] = "'{$v}'";
-			}
-			$sql_arr["`ID_USERS2`"] = "'{$user->WINDYKACJA_ID}'";
-			$sql = "insert into `USERS2_WINDYKACJA_STATUS_HIST`(" . implode(",", array_keys($sql_arr)) . ") values(" . implode(",", array_values($sql_arr)) . ");";
-			$db->query($sql);
+			DB::getPDO()->insert('USERS2_WINDYKACJA_STATUS_HIST', array_merge($data_arr, [
+				'ID_USERS2' => $user->WINDYKACJA_ID,
+			]));
 		}
 	}
 
 	public static function updateUserKoresp($user) {
-		//echo'<pre>TODO: updateUserKoresp: ';print_r($user);echo'</pre>';
-		$sql = <<<SQL
+		DB::getPDO()->execSql("
 			insert into `USERS2_WINDYKACJA_STATUS_HIST` (
 					`A_RECORD_UPDATE_DATE`
 					, `A_RECORD_UPDATE_AUTHOR`
@@ -302,11 +304,8 @@ class Windykacja_StatsHelper {
 					left join `USERS2_WINDYKACJA_STATUS_HIST` h on (h.`ID_USERS2`=w.`ID` and h.`ID_KORESP`=k.`ID`)
 				where 1=1
 					and h.ID is null
-					and w.`ID_BILLING_USERS`={$user->ID_BILLING_USERS}
-SQL;
-		$db = DB::getDB();
-		$db->query($sql);
-		//echo'<pre>TODO: updateUserKoresp: last insert_id: ';print_r($db->insert_id());echo'</pre>';
+					and w.`ID_BILLING_USERS` = :id_user
+		", [ ':id_user' => $user->ID_BILLING_USERS ]);
 	}
 
 	public static function &get_phone_status_array(&$user) {
@@ -440,24 +439,11 @@ SQL;
 			}
 		}
 
-		$sql_arr = array();
-		foreach ($data_arr as $k => $v) {
-			$sql_arr[] = "`{$k}`='{$v}'";
-		}
-		$sql = "update `USERS2_WINDYKACJA_STATUS` set " . implode(",", $sql_arr) . " where `ID`='{$user->WINDYKACJA_ID}' limit 1 ; ";
-		//echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">';print_r($sql);echo'</pre>';
-		DB::query($sql);
-
-		// update HIST
-		//if (DB::affected()) {
-			$sql_arr = array();
-			foreach ($data_arr as $k => $v) {
-				$sql_arr["`{$k}`"] = "'{$v}'";
-			}
-			$sql_arr["`ID_USERS2`"] = "'{$user->WINDYKACJA_ID}'";
-			$sql = "insert into `USERS2_WINDYKACJA_STATUS_HIST`(" . implode(",", array_keys($sql_arr)) . ") values(" . implode(",", array_values($sql_arr)) . ");";
-			DB::query($sql);
-		//}
+		DB::getPDO()->update('USERS2_WINDYKACJA_STATUS', 'ID', $user->WINDYKACJA_ID, $data_arr);
+		DB::getPDO()->insert('USERS2_WINDYKACJA_STATUS_HIST', array_merge($data_arr, [
+			'ID_USERS2' => $user->WINDYKACJA_ID,
+		]));
+
 		return true;
 	}
 
@@ -471,22 +457,17 @@ SQL;
 			echo '<div class="alert alert-danger">Nieznany status!</div>';
 			return false;
 		}
-		$db_webone = DB::getDB('931');
+		$db_webone = DB::getPDO('931');
 		if (!$db_webone) {
 			echo '<div class="alert alert-danger">Brak połączenia do bazy billing!</div>';
 			return false;
 		}
-		$sqlArr = array();
-		$sqlArr["`ID_BILLING_USERS`"] = $user->ID;
-		$sqlArr["`SUBJECT`"] = "'{$status_info[$sms_status]['label']}'";
-		$sqlArr["`BODY_HTML`"] = "'{$status_info[$sms_status]['msg']}'";
-		$sqlArr["`REQUEST_STATUS_SMS`"] = "'SENT_SMS'";
-		$sql = "insert into `HIST_CONTACTS` (" . implode(",", array_keys($sqlArr)) . ")
-																 values (" . implode(",", array_values($sqlArr)) . ");";
-		//echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">sql ';print_r($sql);echo'</pre>';
-		//echo'TODO: TEST...';return true;
-		$db_webone->query($sql);
-		$msgId = $db_webone->insert_id();
+		$msgId = $db_webone->insert('HIST_CONTACTS', [
+			'ID_BILLING_USERS' => $user->ID,
+			'SUBJECT' => $status_info[$sms_status]['label'],
+			'BODY_HTML' => $status_info[$sms_status]['msg'],
+			'REQUEST_STATUS_SMS' => "SENT_SMS",
+		]);
 		//echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">$msgId ';print_r($msgId);echo'</pre>';
 
 		$data_arr["A_RECORD_UPDATE_DATE"] = date("Y-m-d-H:i");
@@ -500,25 +481,10 @@ SQL;
 				$data_arr["PAY_TERM"] = $date;
 			}
 		}
-
-		$sql_arr = array();
-		foreach ($data_arr as $k => $v) {
-			$sql_arr[] = "`{$k}`='{$v}'";
-		}
-		$sql = "update `USERS2_WINDYKACJA_STATUS` set " . implode(",", $sql_arr) . " where `ID`='{$user->WINDYKACJA_ID}' limit 1 ; ";
-		//echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">';print_r($sql);echo'</pre>';
-		DB::query($sql);
-
-		// update HIST
-		//if (DB::affected()) {
-			$sql_arr = array();
-			foreach ($data_arr as $k => $v) {
-				$sql_arr["`{$k}`"] = "'{$v}'";
-			}
-			$sql_arr["`ID_USERS2`"] = "'{$user->WINDYKACJA_ID}'";
-			$sql = "insert into `USERS2_WINDYKACJA_STATUS_HIST`(" . implode(",", array_keys($sql_arr)) . ") values(" . implode(",", array_values($sql_arr)) . ");";
-			DB::query($sql);
-		//}
+		DB::getPDO()->update('USERS2_WINDYKACJA_STATUS', 'ID', $user->WINDYKACJA_ID, $data_arr);
+		DB::getPDO()->insert('USERS2_WINDYKACJA_STATUS_HIST', array_merge($data_arr, [
+			'ID_USERS2' => $user->WINDYKACJA_ID,
+		]));
 		return true;
 	}
 
@@ -532,22 +498,17 @@ SQL;
 			echo '<div class="alert alert-danger">Nieznany status!</div>';
 			return false;
 		}
-		$db_webone = DB::getDB('931');
+		$db_webone = DB::getPDO('931');
 		if (!$db_webone) {
 			echo '<div class="alert alert-danger">Brak połączenia do bazy billing!</div>';
 			return false;
 		}
-		$sqlArr = array();
-		$sqlArr["`ID_BILLING_USERS`"] = $user->ID;
-		$sqlArr["`SUBJECT`"] = "'{$status_info[$mail_status]['label']}'";
-		$sqlArr["`BODY_HTML`"] = "'<html><body>{$status_info[$mail_status]['msg']}</body></html>'";
-		$sqlArr["`REQUEST_STATUS_MAIL`"] = "'CONFIRM_SENT_MAIL'";
-		$sql = "insert into `HIST_CONTACTS` (" . implode(",", array_keys($sqlArr)) . ")
-																 values (" . implode(",", array_values($sqlArr)) . ");";
-		//echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">sql ';print_r($sql);echo'</pre>';
-		//echo'TODO: TEST...';return true;
-		$db_webone->query($sql);
-		$msgId = $db_webone->insert_id();
+		$msgId = $db_webone->insert('HIST_CONTACTS', [
+			'ID_BILLING_USERS' => $user->ID,
+			'SUBJECT' => $status_info[$mail_status]['label'],
+			'BODY_HTML' => "<html><body>{$status_info[$mail_status]['msg']}</body></html>",
+			'REQUEST_STATUS_MAIL' => "CONFIRM_SENT_MAIL",
+		]);
 		echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">$msgId ';print_r($msgId);echo'</pre>';
 
 		$data_arr["A_RECORD_UPDATE_DATE"] = date("Y-m-d-H:i");
@@ -562,53 +523,35 @@ SQL;
 			}
 		}
 
-		$sql_arr = array();
-		foreach ($data_arr as $k => $v) {
-			$sql_arr[] = "`{$k}`='{$v}'";
-		}
-		$sql = "update `USERS2_WINDYKACJA_STATUS` set " . implode(",", $sql_arr) . " where `ID`='{$user->WINDYKACJA_ID}' limit 1 ; ";
-		//echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">';print_r($sql);echo'</pre>';
-		DB::query($sql);
-
-		// update HIST
-		//if (DB::affected()) {
-			$sql_arr = array();
-			foreach ($data_arr as $k => $v) {
-				$sql_arr["`{$k}`"] = "'{$v}'";
-			}
-			$sql_arr["`ID_USERS2`"] = "'{$user->WINDYKACJA_ID}'";
-			$sql = "insert into `USERS2_WINDYKACJA_STATUS_HIST`(" . implode(",", array_keys($sql_arr)) . ") values(" . implode(",", array_values($sql_arr)) . ");";
-			DB::query($sql);
-		//}
+		DB::getPDO()->update('USERS2_WINDYKACJA_STATUS', 'ID', $user->WINDYKACJA_ID, $data_arr);
+		DB::getPDO()->insert('USERS2_WINDYKACJA_STATUS_HIST', array_merge($data_arr, [
+			'ID_USERS2' => $user->WINDYKACJA_ID,
+		]));
 		return true;
 	}
 
 	public static function update_old_id_koresp(&$user, $id_koresp, $koresp_type) {
-		$db = DB::getDB();
-		$koresp = DB::get_by_id('IN7_DZIENNIK_KORESP', $id_koresp);
+		$koresp = DB::getPDO()->fetchFirst("
+			select *
+			from IN7_DZIENNIK_KORESP
+			where ID = :id
+		", [ ':id' => $id_koresp ]);
 		if (!$koresp) {
 			return false;
 		}
 
 		// check if ID koresp already exists in HIST table!
-		$sql = "select wh.`ID`,wh.``,wh.`` from `USERS2_WINDYKACJA_STATUS_HIST` as wh where ";
-
-		$data_arr = array();
-		$data_arr["A_RECORD_UPDATE_DATE"] = date("Y-m-d-H:i");
-		$data_arr["A_RECORD_UPDATE_AUTHOR"] = $_SESSION['ADM_ACCOUNT'];
-		$data_arr["ID_USERS2"] = $user->WINDYKACJA_ID;
-		$data_arr["ID_KORESP"] = $id_koresp;
-		//$data_arr["A_STATUS_UPDATE_DATE"] = $koresp->K_DATA_OTRZYMANEJ_KORESP;// data utworzenia
-		$data_arr["A_STATUS_UPDATE_DATE"] = $koresp->K_DATA_OTRZYM_KORESP;// data wyslania
-		// $koresp_type ?
-
-		// update HIST
-		$sql_arr = array();
-		foreach ($data_arr as $k => $v) {
-			$sql_arr["`{$k}`"] = "'{$v}'";
-		}
-		$sql = "insert into `USERS2_WINDYKACJA_STATUS_HIST`(" . implode(",", array_keys($sql_arr)) . ") values(" . implode(",", array_values($sql_arr)) . ");";
-		$db->query($sql);
+		// $sql = "select wh.`ID`,wh.``,wh.`` from `USERS2_WINDYKACJA_STATUS_HIST` as wh where ";
+
+		DB::getPDO()->insert('USERS2_WINDYKACJA_STATUS_HIST', [
+			'ID_USERS2' => $user->WINDYKACJA_ID,
+			'A_RECORD_UPDATE_DATE' => date("Y-m-d-H:i"),
+			'A_RECORD_UPDATE_AUTHOR' => $_SESSION['ADM_ACCOUNT'],
+			'ID_KORESP' => $id_koresp,
+			//'A_STATUS_UPDATE_DATE' => $koresp->K_DATA_OTRZYMANEJ_KORESP, // data utworzenia
+			'A_STATUS_UPDATE_DATE' => $koresp->K_DATA_OTRZYM_KORESP, // data wyslania
+			// $koresp_type ?
+		]);
 		return true;
 	}
 
@@ -617,49 +560,37 @@ SQL;
 	 */
 	public static function update_bok_rozwiazanie_umowy(&$user, $id_proj, $nr_umowy, $powod, $powod_desc, $termin_odlaczenia, &$msg_log) {
 		$data_arr = array();
-		if ($id_proj > 0 && $nr_umowy > 0 && $powod != '') {
-			$new_id_deals = Windykacja_StatsModel::create_deals_rozwiazanie($user->ID, $nr_umowy, $termin_odlaczenia, $powod_desc);
-			if (!$new_id_deals) {
-				$msg_log[] = "Nie udało się utworzyć rekordu w DEALS_TABLE";
-				return null;
-			}
-			$msg_log[] = "Utworzonno rekord w DEALS_TABLE ID={$new_id_deals}";
+		if ($id_proj <= 0 || $nr_umowy <= 0 || $powod = '') {
+			return null;
+		}
+		$new_id_deals = Windykacja_StatsModel::create_deals_rozwiazanie($user->ID, $nr_umowy, $termin_odlaczenia, $powod_desc);
+		if (!$new_id_deals) {
+			$msg_log[] = "Nie udało się utworzyć rekordu w DEALS_TABLE";
+			return null;
+		}
+		$msg_log[] = "Utworzonno rekord w DEALS_TABLE ID={$new_id_deals}";
 
-			$new_id_koresp = Windykacja_StatsModel::create_koresp($user, 'rozwiazanie umowy', $id_proj, array('nr_umowy'=>$nr_umowy, 'powod'=>$powod, 'powod_desc'=>$powod_desc));
-			if (!$new_id_koresp) {
-				$msg_log[] = "Nie udało się utworzyć rekordu KORESP";
-				return null;
-			}
-			$msg_log[] = "Utworzonno rekord KORESP ID={$new_id_koresp}";
-			$data_arr["ID_KORESP"] = $new_id_koresp;
-		} else {
+		$new_id_koresp = Windykacja_StatsModel::create_koresp($user, 'rozwiazanie umowy', $id_proj, array('nr_umowy'=>$nr_umowy, 'powod'=>$powod, 'powod_desc'=>$powod_desc));
+		if (!$new_id_koresp) {
+			$msg_log[] = "Nie udało się utworzyć rekordu KORESP";
 			return null;
 		}
+		$msg_log[] = "Utworzonno rekord KORESP ID={$new_id_koresp}";
+		$data_arr["ID_KORESP"] = $new_id_koresp;
 		$data_arr["params"] = "rozwiazanie umowy,{$nr_umowy},{$powod},{$termin_odlaczenia},{$new_id_deals}";
 		$data_arr["A_STATUS_UPDATE_DATE"] = date("Y-m-d");// zawsze podana jesli jest zmiana A_STATUS
 
 		$data_arr["A_RECORD_UPDATE_DATE"] = date("Y-m-d-H:i");
 		$data_arr["A_RECORD_UPDATE_AUTHOR"] = $_SESSION['ADM_ACCOUNT'];
-		$sql_arr = array();
-		foreach ($data_arr as $k => $v) {
-			$sql_arr[] = "`{$k}`='{$v}'";
-		}
-		$sql = "update `USERS2_WINDYKACJA_STATUS` set " . implode(",", $sql_arr) . " where `ID`='{$user->WINDYKACJA_ID}' limit 1 ";
-		DB::query($sql);
+		DB::getPDO()->update('USERS2_WINDYKACJA_STATUS', 'ID', $user->WINDYKACJA_ID, $data_arr);
 
-		//if (DB::affected()) {
 		// update $user data
 		foreach ($data_arr as $k => $v) {
 			$user->$k = $v;
 		}
-		$sql_arr = array();
-		foreach ($data_arr as $k => $v) {
-			$sql_arr["`{$k}`"] = "'{$v}'";
-		}
-		$sql_arr["`ID_USERS2`"] = "'{$user->WINDYKACJA_ID}'";
-		$sql = "insert into `USERS2_WINDYKACJA_STATUS_HIST`(" . implode(",", array_keys($sql_arr)) . ") values(" . implode(",", array_values($sql_arr)) . ");";
-		DB::query($sql);
-		//}
+
+		DB::getPDO()->insert('USERS2_WINDYKACJA_STATUS_HIST', array_merge($data_arr, [ 'ID_USERS2' => $user->WINDYKACJA_ID ]));
+
 		return $new_id_koresp;
 	}
 
@@ -667,11 +598,10 @@ SQL;
 		if (!isset($_SESSION['USERS2_WINDYKACJA_PANEL'])) $_SESSION['USERS2_WINDYKACJA_PANEL'] = array();
 		$_SESSION['USERS2_WINDYKACJA_PANEL']['_initialized'] = 0;// always actualize
 		if (0 == V::get('_initialized', 0, $_SESSION['USERS2_WINDYKACJA_PANEL'], 'int')) {
-			$sql = "insert ignore into `USERS2_WINDYKACJA_STATUS` (`ID_BILLING_USERS`, `A_RECORD_CREATE_DATE`, `A_RECORD_CREATE_AUTHOR`)
-				select `id_users`, '" . date("Y-m-d-H:i") . "', 'sync-users' from `BILLING_USERS_ADD`
-			";
-			$res = DB::query($sql);
-
+			DB::getPDO()->execSql("
+				insert ignore into `USERS2_WINDYKACJA_STATUS` (`ID_BILLING_USERS`, `A_RECORD_CREATE_DATE`, `A_RECORD_CREATE_AUTHOR`)
+				select `id_users`, :today , 'sync-users' from `BILLING_USERS_ADD`
+			", [ ':today' => date("Y-m-d-H:i") ]);
 			$_SESSION['USERS2_WINDYKACJA_PANEL']['_initialized'] = 1;
 		}
 	}
@@ -686,36 +616,24 @@ SQL;
 	}
 
 	public static function get_to_update_total() {
-		$ret = array();
 		$sql_where = self::_to_update_where();
-		$db = DB::getDB();
-		$sql = "select count(1) as cnt
+		return DB::getPDO()->fetchValue("
+			select count(1) as cnt
 			from `USERS2_WINDYKACJA_STATUS` as w
 			where {$sql_where}
-		";
-		$res = $db->query($sql);
-		while ($r = $db->fetch($res)) {
-			$ret = $r->cnt;
-		}
-		return $ret;
+		");
 	}
 
 	public static function get_to_update_list($limit) {
-		$ret = array();
-		$db = DB::getDB();
 		$sql_where = self::_to_update_where();
 		$sql_limit = ($limit > 0)? "limit {$limit}" : "";
-		$sql = "select w.*
+		return array_map(function ($item) { return (object)$item; }, DB::getPDO()->fetchAll("
+			select w.*
 			from `USERS2_WINDYKACJA_STATUS` as w
 			where {$sql_where}
 			order by ID desc
 			{$sql_limit}
-		";
-		$res = $db->query($sql);
-		while ($r = $db->fetch($res)) {
-			$ret[] = $r;
-		}
-		return $ret;
+		", [ ':id' => $user->WINDYKACJA_ID ]));
 	}
 
 	/**
@@ -797,26 +715,15 @@ SQL;
 
 		$data_arr["A_RECORD_UPDATE_DATE"] = date("Y-m-d-H:i");
 		$data_arr["A_RECORD_UPDATE_AUTHOR"] = $_SESSION['ADM_ACCOUNT'];
-		$sql_arr = array();
-		foreach ($data_arr as $k => $v) {
-			$sql_arr[] = "`{$k}`='{$v}'";
-		}
-		$sql = "update `USERS2_WINDYKACJA_STATUS` set " . implode(",", $sql_arr) . " where `ID`='{$user->WINDYKACJA_ID}' limit 1 ";
-		DB::query($sql);
+		DB::getPDO()->update('USERS2_WINDYKACJA_STATUS', 'ID', $user->WINDYKACJA_ID, $data_arr);
 
-		//if (DB::affected()) {
 		// update $user data
 		foreach ($data_arr as $k => $v) {
 			$user->$k = $v;
 		}
-		$sql_arr = array();
-		foreach ($data_arr as $k => $v) {
-			$sql_arr["`{$k}`"] = "'{$v}'";
-		}
-		$sql_arr["`ID_USERS2`"] = "'{$user->WINDYKACJA_ID}'";
-		$sql = "insert into `USERS2_WINDYKACJA_STATUS_HIST`(" . implode(",", array_keys($sql_arr)) . ") values(" . implode(",", array_values($sql_arr)) . ");";
-		DB::query($sql);
-		//}
+
+		DB::getPDO()->insert('USERS2_WINDYKACJA_STATUS_HIST', array_merge($data_arr, [ 'ID_USERS2' => $user->WINDYKACJA_ID ]));
+
 		return true;
 	}
 
@@ -839,24 +746,15 @@ SQL;
 	}
 
 	public static function _sql_update($user, $data_arr) {
-		// update values
-		$sql_arr = array();
-		foreach ($data_arr as $k => $v) {
-			$sql_arr[] = "`{$k}`='{$v}'";
-		}
-		$sql = "update `USERS2_WINDYKACJA_STATUS` set " . implode(",", $sql_arr) . " where `ID`='{$user->WINDYKACJA_ID}' limit 1 ";
-		DB::query($sql);
+		DB::getPDO()->update('USERS2_WINDYKACJA_STATUS', 'ID', $user->WINDYKACJA_ID, $data_arr);
+
 		// update $user data
 		foreach ($data_arr as $k => $v) {
 			$user->$k = $v;
 		}
-		$sql_arr = array();
-		foreach ($data_arr as $k => $v) {
-			$sql_arr["`{$k}`"] = "'{$v}'";
-		}
-		$sql_arr["`ID_USERS2`"] = "'{$user->WINDYKACJA_ID}'";
-		$sql = "insert into `USERS2_WINDYKACJA_STATUS_HIST`(" . implode(",", array_keys($sql_arr)) . ") values(" . implode(",", array_values($sql_arr)) . ");";
-		DB::query($sql);
+
+		DB::getPDO()->insert('USERS2_WINDYKACJA_STATUS_HIST', array_merge($data_arr, [ 'ID_USERS2' => $user->WINDYKACJA_ID ]));
+
 		return true;
 	}
 
@@ -911,64 +809,40 @@ SQL;
 	}
 
 	public static function get_user_hist_events(&$user) {
-		$db = DB::getDB();
-		$ret = array();
-		$sql = "select wh.*
+		return array_map(function ($item) { return (object)$item; }, DB::getPDO()->fetchAll("
+			select wh.*
 			from `USERS2_WINDYKACJA_STATUS_HIST` as wh
-			where wh.`ID_USERS2`='{$user->WINDYKACJA_ID}'
-		";
-		$res = $db->query($sql);
-		while ($r = $db->fetch($res)) {
-			$ret[] = $r;
-		}
-		return $ret;
+			where wh.`ID_USERS2` = :id
+		", [ ':id' => $user->WINDYKACJA_ID ]));
 	}
 
 	public static function get_user_hist_status_events(&$user) {
-		$db = DB::getDB();
-		$ret = array();
-		$sql = "select wh.*, kor.`K_ZAWARTOS`
+		return array_map(function ($item) { return (object)$item; }, DB::getPDO()->fetchAll("
+			select wh.*, kor.`K_ZAWARTOS`
 			from `USERS2_WINDYKACJA_STATUS_HIST` as wh
 				left join `IN7_DZIENNIK_KORESP` as kor on(wh.`ID_KORESP`!='N/S;' and kor.`ID`=wh.`ID_KORESP`)
-			where wh.`ID_USERS2`='{$user->WINDYKACJA_ID}'
+			where wh.`ID_USERS2` = :id
 				and wh.`A_STATUS_UPDATE_DATE`!='N/S;'
-		";
-		$res = $db->query($sql);
-		while ($r = $db->fetch($res)) {
-			$ret[] = $r;
-		}
-		return $ret;
+		", [ ':id' => $user->WINDYKACJA_ID ]));
 	}
 
 	public static function get_user_hist_phone_events(&$user) {
-		$ret = array();
-		$db = DB::getDB();
-		$sql = "select wh.*
+		return array_map(function ($item) { return (object)$item; }, DB::getPDO()->fetchAll("
+			select wh.*
 			from `USERS2_WINDYKACJA_STATUS_HIST` as wh
-			where wh.`ID_USERS2`='{$user->WINDYKACJA_ID}'
-				and wh.`LAST_PHONE_STATUS_DATE`!='N/S;'
-		";
-		$res = $db->query($sql);
-		while ($r = $db->fetch($res)) {
-			$ret[] = $r;
-		}
-		return $ret;
+			where wh.`ID_USERS2` = :id
+				and wh.`LAST_PHONE_STATUS_DATE` != 'N/S;'
+		", [ ':id' => $user->WINDYKACJA_ID ]));
 	}
 
 	public static function get_user_bad_address_events(&$user) {
-		$ret = array();
-		$db = DB::getDB();
-		$sql = "select wh.*
+		return array_map(function ($item) { return (object)$item; }, DB::getPDO()->fetchAll("
+			select wh.*
 			from `USERS2_WINDYKACJA_STATUS_HIST` as wh
-			where wh.`ID_USERS2`='{$user->WINDYKACJA_ID}'
-				and wh.`BAD_ADDRESS`!='N/S;'
+			where wh.`ID_USERS2` = :id
+				and wh.`BAD_ADDRESS` != 'N/S;'
 			order by wh.`ID` ASC
-		";
-		$res = $db->query($sql);
-		while ($r = $db->fetch($res)) {
-			$ret[] = $r;
-		}
-		return $ret;
+		", [ ':id' => $user->WINDYKACJA_ID ]));
 	}
 
 	public static function get_status_count() {
@@ -981,20 +855,18 @@ SQL;
 		$sqlWhereAdd = " and " . implode(" and ", $sql_where_and_arr);
 
 		$ret = array();
-		$db = DB::getDB();
-		$sql = " select w.`A_STATUS`, count(1) as cnt
+		$ret = array_map(function ($item) {
+			return (object)$item;
+		}, DB::getPDO()->fetchAllByKey("
+			select w.`A_STATUS`, count(1) as cnt
 				, sum(IF(w.`PAY_SALDO`<=-0.05, w.`PAY_SALDO`, 0)) as suma_zaleglosci
 			from  `USERS2_WINDYKACJA_STATUS` as w
 				left join `BILLING_USERS_ADD` as a on(a.`id_users`=w.`ID_BILLING_USERS`)
 			where 1=1 {$sqlWhereAdd}
-			group by w.`A_STATUS` 
-		";
-		$res = $db->query($sql);
-		while ($r = $db->fetch($res)) {
-			$ret[$r->A_STATUS] = $r;
-		}
-		// filter: 'po-terminie'
-		$sql = "select w.`A_STATUS`
+			group by w.`A_STATUS`
+		", $key = 'A_STATUS'));
+		$ret['po-terminie'] = (object)DB::getPDO()->fetchFirst("
+			select w.`A_STATUS`
 				, count(1) as cnt
 				, sum(IF(w.`PAY_SALDO`<=-0.05, w.`PAY_SALDO`, 0)) as suma_zaleglosci
 			from  `USERS2_WINDYKACJA_STATUS` as w
@@ -1004,13 +876,9 @@ SQL;
 				and w.`PAY_DATE`!='0000-00-00'
 				and w.`PAY_DATE`<DATE_SUB(NOW(), INTERVAL 36 MONTH)
 				{$sqlWhereAdd}
-		";
-		$res = $db->query($sql);
-		if ($r = $db->fetch($res)) {
-			$ret['po-terminie'] = $r;
-		}
-		// filter: '3 m-ce przed'
-		$sql = "select w.`A_STATUS`
+		");
+		$ret['3 m-ce przed'] = (object)DB::getPDO()->fetchFirst("
+			select w.`A_STATUS`
 				, count(1) as cnt
 				, sum(IF(w.`PAY_SALDO`<=-0.05, w.`PAY_SALDO`, 0)) as suma_zaleglosci
 			from  `USERS2_WINDYKACJA_STATUS` as w
@@ -1021,13 +889,9 @@ SQL;
 				and w.`PAY_DATE`<DATE_SUB(NOW(), INTERVAL 33 MONTH)
 				and w.`PAY_DATE`>DATE_SUB(NOW(), INTERVAL 36 MONTH)
 				{$sqlWhereAdd}
-		";
-		$res = $db->query($sql);
-		if ($r = $db->fetch($res)) {
-			$ret['3 m-ce przed'] = $r;
-		}
-		// filter: 'tel1'
-		$sql = "select w.`A_STATUS`
+		");
+		$ret['tel1'] = (object)DB::getPDO()->fetchFirst("
+			select w.`A_STATUS`
 				, count(1) as cnt
 				, sum(IF(w.`PAY_SALDO`<=-0.05, w.`PAY_SALDO`, 0)) as suma_zaleglosci
 			from  `USERS2_WINDYKACJA_STATUS` as w
@@ -1038,13 +902,9 @@ SQL;
 				and ( w.`LAST_PHONE_STATUS_DATE`='0000-00-00'
 					or w.`LAST_PHONE_STATUS_DATE`<DATE_SUB(NOW(), INTERVAL 14 DAY) )
 				{$sqlWhereAdd}
-		";
-		$res = $db->query($sql);
-		if ($r = $db->fetch($res)) {
-			$ret['tel1'] = $r;
-		}
-		// filter: 'bad_address'
-		$sql = "select w.`A_STATUS`
+		");
+		$ret['bad_address'] = (object)DB::getPDO()->fetchFirst("
+			select w.`A_STATUS`
 				, count(1) as cnt
 				, sum(IF(w.`PAY_SALDO`<=-0.05, w.`PAY_SALDO`, 0)) as suma_zaleglosci
 			from  `USERS2_WINDYKACJA_STATUS` as w
@@ -1054,14 +914,12 @@ SQL;
 				-- and w.`A_STATUS` in('wezwanie1', 'waiting-wezwanie2', 'wezwanie2', 'waiting-krd')
 				and w.`BAD_ADDRESS`>0
 				{$sqlWhereAdd}
-		";
-		$res = $db->query($sql);
-		if ($r = $db->fetch($res)) {
-			$ret['bad_address'] = $r;
-		}
-		// filter: 'stan_zero', '10-ego'
+		");
+
 		$stanZeroLimit = -0.05;
-		$sql = "select w.`A_STATUS`
+
+		$statsZero10ego = (object)DB::getPDO()->fetchFirst("
+			select w.`A_STATUS`
 				, count(1) as cnt
 				, sum(IF(w.`PAY_SALDO`>{$stanZeroLimit}, 1, 0)) as cnt_stan_zero
 				, sum(IF(w.`PAY_SALDO`<={$stanZeroLimit}, 1, 0)) as cnt_stan_minus
@@ -1071,14 +929,14 @@ SQL;
 			where
 				w.`A_STATUS`='WAITING'
 				{$sqlWhereAdd}
-		";
-		$res = $db->query($sql);
-		if ($r = $db->fetch($res)) {
-			$ret['stan_zero'] = (object)array('A_STATUS'=>'stan_zero', 'cnt'=>$r->cnt_stan_zero, 'suma_zaleglosci'=>0);
-			$ret['10-ego'] = (object)array('A_STATUS'=>'10-ego', 'cnt'=>$r->cnt_stan_minus, 'suma_zaleglosci'=>$r->suma_zaleglosci);
+		");
+		if ($statsZero10ego) {
+			$ret['stan_zero'] = (object)[ 'A_STATUS' => 'stan_zero', 'cnt' => $statsZero10ego->cnt_stan_zero, 'suma_zaleglosci' => 0 ];
+			$ret['10-ego']    = (object)[ 'A_STATUS' => '10-ego',    'cnt' => $statsZero10ego->cnt_stan_minus, 'suma_zaleglosci' => $statsZero10ego->suma_zaleglosci ];
 		}
 		// filter: 'has_nr_sad', 'has_nr_komornik', 'has_ustalenia'
-		$sql = "select w.`A_STATUS`
+		$statsSad = (object)DB::getPDO()->fetchFirst("
+			select w.`A_STATUS`
 				, count(1) as cnt
 				, sum(IF(w.`NR_SPRAWY_SAD`!='', 1, 0)) as cnt_sad
 				, sum(IF(w.`NR_SPRAWY_KOMORNIK`!='', 1, 0)) as cnt_komornik
@@ -1091,15 +949,15 @@ SQL;
 					or w.`L_APPOITMENT_INFO`!=''
 				)
 				{$sqlWhereAdd}
-		";
-		$res = $db->query($sql);
-		if ($r = $db->fetch($res)) {
-			$ret['has_nr_sad'] = (object)array('A_STATUS'=>'has_nr_sad', 'cnt'=>$r->cnt_sad, 'suma_zaleglosci'=>null);
-			$ret['has_nr_komornik'] = (object)array('A_STATUS'=>'has_nr_komornik', 'cnt'=>$r->cnt_komornik, 'suma_zaleglosci'=>null);
-			$ret['has_ustalenia'] = (object)array('A_STATUS'=>'has_ustalenia', 'cnt'=>$r->cnt_ustalenia, 'suma_zaleglosci'=>null);
+		");
+		if ($statsSad) {
+			$ret['has_nr_sad']      = (object)[ 'A_STATUS' => 'has_nr_sad',      'cnt' => $statsSad->cnt_sad,       'suma_zaleglosci' => null ];
+			$ret['has_nr_komornik'] = (object)[ 'A_STATUS' => 'has_nr_komornik', 'cnt' => $statsSad->cnt_komornik,  'suma_zaleglosci' => null ];
+			$ret['has_ustalenia']   = (object)[ 'A_STATUS' => 'has_ustalenia',   'cnt' => $statsSad->cnt_ustalenia, 'suma_zaleglosci' => null ];
 		}
 		// filter: 'sad_and_komornik', 'sad_bez_komornik'
-		$sql = "select w.`A_STATUS`
+		$statsKom = (object)DB::getPDO()->fetchFirst("
+			select w.`A_STATUS`
 				, count(1) as cnt
 				, sum(IF(w.`NR_SPRAWY_KOMORNIK`!='', 1, 0)) as cnt_komornik
 			from  `USERS2_WINDYKACJA_STATUS` as w
@@ -1107,14 +965,14 @@ SQL;
 			where
 				w.`A_STATUS`='sad'
 				{$sqlWhereAdd}
-		";
-		$res = $db->query($sql);
-		if ($r = $db->fetch($res)) {
-			$ret['sad_and_komornik'] = (object)array('A_STATUS'=>'sad_and_komornik', 'cnt'=>$r->cnt_komornik, 'suma_zaleglosci'=>null);
-			$ret['sad_bez_komornik'] = (object)array('A_STATUS'=>'sad_bez_komornik', 'cnt'=>($r->cnt - $r->cnt_komornik), 'suma_zaleglosci'=>null);
+		");
+		if ($statsKom) {
+			$ret['sad_and_komornik'] = (object)[ 'A_STATUS' => 'sad_and_komornik', 'cnt' => $statsKom->cnt_komornik,                    'suma_zaleglosci' => null ];
+			$ret['sad_bez_komornik'] = (object)[ 'A_STATUS' => 'sad_bez_komornik', 'cnt' => ($statsKom->cnt - $statsKom->cnt_komornik), 'suma_zaleglosci' => null ];
 		}
 		// filter: 'isMovedToVectra'
-		$sql = "select w.`A_STATUS`
+		$statsVectra = (object)DB::getPDO()->fetchFirst("
+			select w.`A_STATUS`
 				, count(1) as cnt
 				, sum(IF(w.`PAY_SALDO`<={$stanZeroLimit}, w.`PAY_SALDO`, 0)) as suma_zaleglosci
 			from  `USERS2_WINDYKACJA_STATUS` as w
@@ -1122,10 +980,9 @@ SQL;
 			where
 				w.`IS_MOVED_TO_VECTRA`=1
 				{$sqlWhereAdd}
-		";
-		$res = $db->query($sql);
-		if ($r = $db->fetch($res)) {
-			$ret['isMovedToVectra'] = (object)array('cnt'=>$r->cnt, 'suma_zaleglosci'=>$r->suma_zaleglosci);
+		");
+		if ($statsVectra) {
+			$ret['isMovedToVectra'] = (object)[ 'cnt' => $statsVectra->cnt, 'suma_zaleglosci' => $statsVectra->suma_zaleglosci ];
 		}
 		return $ret;
 	}

+ 208 - 347
SE/se-lib/Windykacja/StatsModel.php

@@ -15,7 +15,7 @@ class Windykacja_StatsModel {
 		$sql_where_and_arr[] = "a.`A_ADM_COMPANY` in({$sqlUsrAclGroups})";
 		$sql_where_and_arr[] = "a.`A_CLASSIFIED` in({$sqlUsrAclGroups})";
 
-		$filter_selected = Windykacja_StatsHelper::get_filter_selected();
+		$filter_selected = Windykacja_StatsHelper::get_filter_selected(); // V::get('_f', '', $_GET);
 		if ($filter_selected) {
 			if ($filter_selected == 'po-terminie') {
 				$sql_where_and_arr[] = "w.`PAY_SALDO`<=-0.05";
@@ -71,7 +71,7 @@ class Windykacja_StatsModel {
 		if (!empty($q)) {
 			$q = trim($q);
 			if (is_numeric($q)) {// billing number
-				$sqlIdUsr = DB::_($q);
+				$sqlIdUsr = $q;
 				$sql_where_and_arr[] = "a.`id_users`='{$sqlIdUsr}'";
 			}
 			else {// string - name, second name
@@ -92,9 +92,9 @@ class Windykacja_StatsModel {
 					$pl_letters = array('ą', 'ć', 'ę', 'ł', 'ń', 'ó', 'ś', 'ź', 'ż');
 					$en_letters = array('a', 'c', 'e', 'l', 'n', 'o', 's', 'z', 'z');
 
-					$sqlQValue = DB::_($q_value);
-					$sql_filter_q[] = "a.`P_NAME` like '{$sqlQValue}%'";
-					$sql_filter_q[] = "a.`P_NAME_SECOND` like '{$sqlQValue}%'";
+					$sqlQValue = DB::getPDO()->quote("{$q_value}%");
+					$sql_filter_q[] = " a.`P_NAME` like {$sqlQValue} ";
+					$sql_filter_q[] = " a.`P_NAME_SECOND` like {$sqlQValue} ";
 
 					$q_value_clean_en = str_replace($pl_letters, $en_letters, $q_value);
 					$q_value_clean_pl = str_replace($en_letters, $pl_letters, $q_value_clean_en);
@@ -104,21 +104,21 @@ class Windykacja_StatsModel {
 					if ($q_value_clean_pr != $q_value) $q_arr[$q_value_clean_pr] = true;
 
 					foreach ($q_arr as $v_q => $v_val) {
-						$sqlQValue = DB::_($v_q);
-						$sql_filter_q[] = "a.`P_NAME` like '{$sqlQValue}'";
-						$sql_filter_q[] = "a.`P_NAME_SECOND` like '{$sqlQValue}'";
+						$sqlQValue = DB::getPDO()->quote($v_q);
+						$sql_filter_q[] = " a.`P_NAME` like {$sqlQValue} ";
+						$sql_filter_q[] = " a.`P_NAME_SECOND` like {$sqlQValue} ";
 						// $sql_filter_q[] = "a.`P_ADDRESS_STREET` like '{$sqlQValue}'";
 					}
 
-					$sql_field_1 = "a.`P_NAME`";
-					$sql_field_2 = "a.`P_NAME_SECOND`";
+					$sql_field_1 = " a.`P_NAME` ";
+					$sql_field_2 = " a.`P_NAME_SECOND` ";
 					foreach ($pl_letters as $k_ind => $v_char_pl) {
 						$sql_field_1 = "REPLACE({$sql_field_1}, '{$v_char_pl}', '{$en_letters[$k_ind]}')";
 						$sql_field_2 = "REPLACE({$sql_field_2}, '{$v_char_pl}', '{$en_letters[$k_ind]}')";
 					}
-					$q_value_clean_en = DB::_($q_value_clean_en);
-					$sql_filter_q[] = $sql_field_1 . " like '%{$q_value_clean_en}%'";
-					$sql_filter_q[] = $sql_field_2 . " like '%{$q_value_clean_en}%'";
+					$q_value_clean_en = DB::getPDO()->quote("%{$q_value_clean_en}%");
+					$sql_filter_q[] = $sql_field_1 . " like {$q_value_clean_en} ";
+					$sql_filter_q[] = $sql_field_2 . " like {$q_value_clean_en} ";
 
 					$sql_where_and_arr[] = "(" . implode(" or ", $sql_filter_q) . ")";
 				}
@@ -167,20 +167,13 @@ class Windykacja_StatsModel {
 	}
 
 	public static function get_users_total($q = '') {
-		$total = 0;
 		$sql_where = self::_parse_query($q);
-		$db = DB::getDB();
-		$sql = "select count(1) as cnt
+		return DB::getPDO()->fetchValue("
+			select count(1) as cnt
 			from `USERS2_WINDYKACJA_STATUS` as w
-				left join `BILLING_USERS_ADD` as a on(a.`id_users`=w.`ID_BILLING_USERS`)
+				left join `BILLING_USERS_ADD` as a on ( a.`id_users` = w.`ID_BILLING_USERS` )
 			where {$sql_where}
-		";
-		//echo'<pre>sqlTotal:';print_r($sql);echo'</pre>';
-		$res = $db->query($sql);
-		if ($r = $db->fetch($res)) {
-			$total = $r->cnt;
-		}
-		return $total;
+		");
 	}
 
 	public static function get_sql_users_select() {
@@ -274,22 +267,17 @@ class Windykacja_StatsModel {
 				$sql_order_by .= " {$order_dir}";
 			}
 		}
-		$db = DB::getDB();
-		$sql = "select {$sql_select}
+		return array_map(function ($item) {
+			return (object)$item;
+		}, DB::getPDO()->fetchAllByKey("
+			select {$sql_select}
 			from `USERS2_WINDYKACJA_STATUS` as w
 				left join `BILLING_USERS` as bu on(bu.`ID`=w.`ID_BILLING_USERS`)
 				left join `BILLING_USERS_ADD` as a on(a.`id_users`=w.`ID_BILLING_USERS`)
 			where {$sql_where}
 			{$sql_order_by}
 			{$sql_limit}
-		";
-		DBG::_('DBG_SQL', '>1', "sql", $sql, __CLASS__, __FUNCTION__, __LINE__);
-		//echo'<pre>';print_r($sql);echo'</pre>';
-		$res = $db->query($sql);
-		while ($r = $db->fetch($res)) {
-			$ret[$r->id_users] = $r;
-		}
-		return $ret;
+		", $key = 'id_users'));
 	}
 
 	public static function get_user_by_id($id) {
@@ -305,45 +293,59 @@ class Windykacja_StatsModel {
 		$sqlWhereAdd = " and " . implode(" and ", $sql_where_and_arr);
 
 		$sql_select = self::get_sql_users_select();
-		$sql_where = "a.`id_users`='{$id}'";
-		$db = DB::getDB();
-		$sql = "select {$sql_select}
+		return (object)DB::getPDO()->fetchFirst("
+			select {$sql_select}
 			from `USERS2_WINDYKACJA_STATUS` as w
 				left join `BILLING_USERS` as bu on(bu.`ID`=w.`ID_BILLING_USERS`)
 				left join `BILLING_USERS_ADD` as a on(a.`id_users`=w.`ID_BILLING_USERS`)
-			where {$sql_where}
+			where a.`id_users` = :id_user
 				{$sqlWhereAdd}
-		";
-		$res = $db->query($sql);
-		if ($r = $db->fetch($res)) {
-			if(0){
-				$r->BA_WINIEN = "";
-				$r->BA_MA = "";
-				$r->BA_TIMESTAMP = "";
-				$sql = "select BA.`WINIEN` as BA_WINIEN
-						, BA.`MA` as BA_MA
-						, unix_timestamp(BA.TIMESTAMP) as BA_TIMESTAMP
-					from `BILLING_ACCOUNTS` as BA
-					where BA.`ID_BILLING_USERS`='" . $r->ID . "'
-				";
-				$db_webone = DB::getDB('931');
-				if ($db_webone) {
-					$res_fin = $db_webone->query($sql);
-					if ($r_fin = $db_webone->fetch($res_fin)) {
-						$r->BA_WINIEN = $r_fin->BA_WINIEN;
-						$r->BA_MA = $r_fin->BA_MA;
-						$r->BA_TIMESTAMP = $r_fin->BA_TIMESTAMP;
-					}
-				}
-			}
-			$ret = $r;
-		}
-		return $ret;
+		", [ ':id_user' => $id ]);
+		// if(0){
+		// 	$r->BA_WINIEN = "";
+		// 	$r->BA_MA = "";
+		// 	$r->BA_TIMESTAMP = "";
+		// 	if (DB::getPDO('931')) {
+		// 		$r_fin = DB::getPDO('931')->fetchFirst("
+		// 			select BA.`WINIEN` as BA_WINIEN
+		// 				, BA.`MA` as BA_MA
+		// 				, unix_timestamp(BA.TIMESTAMP) as BA_TIMESTAMP
+		// 			from `BILLING_ACCOUNTS` as BA
+		// 			where BA.`ID_BILLING_USERS` = :id_user
+		// 		", [ ':id_user' => $r->ID ]);
+		// 		if ($r_fin) {
+		// 			$r->BA_WINIEN = $r_fin['BA_WINIEN'];
+		// 			$r->BA_MA = $r_fin['BA_MA'];
+		// 			$r->BA_TIMESTAMP = $r_fin['BA_TIMESTAMP'];
+		// 		}
+		// 	}
+		// }
 	}
 
 	public static function get_company(&$user) {
 		if (!isset($user->_company)) {
-			$db = DB::getDB();
+			$user->_company = (object)DB::getPDO()->fetchFirst("
+				select
+					bo.`id`
+					, bo.`name1`
+					, bo.`name2`
+					, bo.`kod`
+					, bo.`miasto`
+					, bo.`ulica`
+					, bo.`numer_dom`
+					, bo.`tel`
+					, bo.`fax`
+					, bo.`nip`
+					, bo.`regon`
+					, bo.`bank`
+					, bo.`nr_rach`
+					, bo.`NR_RACH_MASS_PAY`
+					, bo.`BILLING_OWNER_EMAIL`
+				from `BILLING_USERS` as bu
+					left join `BILLING_OWNER` as bo on (bo.`ID`=bu.`BILLING_OWNER`)
+				where
+					bu.`ID` = :id_user
+			", [ ':id_user' => $user->ID_BILLING_USERS ]);
 			/*
 				id					1 / 2
 				name1				"BIALL-NET" Sp. z o.o. / "NET-DAY" s.c.
@@ -363,38 +365,6 @@ class Windykacja_StatsModel {
 				NR_RACH_MASS_PAY		109000049887 / 109000049669
 				BILLING_OWNER_EMAIL	biall-net@biall.net.pl / netday@netday.pl
 			 */
-			$sql = "select
-					bo.`id`
-					, bo.`name1`
-					, bo.`name2`
-					, bo.`kod`
-					, bo.`miasto`
-					, bo.`ulica`
-					, bo.`numer_dom`
-					, bo.`tel`
-					, bo.`fax`
-					, bo.`nip`
-					, bo.`regon`
-					, bo.`bank`
-					, bo.`nr_rach`
-					, bo.`NR_RACH_MASS_PAY`
-					, bo.`BILLING_OWNER_EMAIL`
-				from `BILLING_USERS` as bu
-					left join `BILLING_OWNER` as bo on (bo.`ID`=bu.`BILLING_OWNER`)
-				where
-					bu.`ID`='{$user->ID_BILLING_USERS}'
-			";
-			//$db_webone = DB::getDB('931');
-			//if ($db_webone) {
-				//$res = $db_webone->query($sql);
-				//if ($r = $db_webone->fetch($res)) {
-				//	$user->_company = $r;
-				//}
-			//}
-			$res = $db->query($sql);
-			if ($r = $db->fetch($res)) {
-				$user->_company = $r;
-			}
 		}
 		return $user->_company;
 	}
@@ -428,21 +398,17 @@ class Windykacja_StatsModel {
 		$cache_key = implode(".", $ids);
 		if (!array_key_exists($cache_key, $_cache)) {
 			$billing_types = array();
-			$db_webone = DB::getDB('931');
-			if ($db_webone) {
-				$sql_where = "1=1";
+			if (DB::getPDO('931')) {
+				$sql_where = " 1=1 ";
 				if (!empty($ids)) {
-					$sql_where = "`ID` in ('".implode("','", $ids)."')";
+					$sql_where = " `ID` in ('".implode("','", $ids)."') ";
 				}
-				$sql = "select *
+				$billing_types = DB::getPDO('931')->fetchAllByKey("
+					select *
 					from `BILLING_NUMBERS_TYPE`
 					where
 						{$sql_where}
-				";
-				$res = $db_webone->query($sql);
-				while ($h = $db_webone->fetch_assoc($res)) {
-					$billing_types[$h['ID']] = $h;
-				}
+				", $key = 'ID');
 			}
 			$_cache[$cache_key] = $billing_types;
 		}
@@ -450,57 +416,32 @@ class Windykacja_StatsModel {
 	}
 
 	public static function getAllServicesStreetsCSV($user) {
-		$streets = array();
-		$db = DB::getDB();
-		$sql = "
+		$streets = DB::getPDO()->fetchAllByKey("
 			select s.`S_ADDRESS_STREET`
 			from `COMPANIES` c
 				join `DEALS_TABLE` d on(d.`ID_BILLING_USERS`=c.`ID`)
 				join `SERVICES` s on(s.`ID_BILLING_USERS`=c.`ID` and s.`ID_DEALS_TABLE`=d.`ID`)
-			where c.`ID`='{$user->ID}'
+			where c.`ID` = :id_user
 		--		and c.`A_ADM_COMPANY`='19994_PODMIOT_Vectra_wlasciciel'
 				and s.`NAME_LIST_SERVICES` in ('TV','USERS2','VOIP')
 				and s.`A_STATUS` not in ('DELETED')
-		";
-		$res = $db->query($sql);
-		while ($r = $db->fetch($res)) {
-			$streets[$r->S_ADDRESS_STREET] = true;
-		}
-		$streets = (!empty($streets))? implode(',', array_keys($streets)) : '';
-		return $streets;
+		", $key = 'S_ADDRESS_STREET', [ ':id_user' => $user->ID ]);
+		return (!empty($streets))? implode(',', array_keys($streets)) : '';
 	}
 
 	public static function get_umowy_from_l2($user) {
-		$ret = array();
-		$db_webone = DB::getDB();
-		if (!$db_webone) {
-			return -1;
-		}
-
-		$sql = "select
+		return DB::getPDO()->fetchAllByKey("
+			select
 				d.`ID`, d.`P_DEALPREFIX`, d.`P_DEALNUMBER`, d.`P_DEALNUMBER_OLD`, d.`P_DEALDATE`, d.`P_DEALDATE_TERM`, d.`DEALDESC`, d.`ANEX_NEEDED`, d.`ANEX_CONFIRM_DATE`
 			from `DEALS_TABLE` as d
-			where d.`ID_BILLING_USERS`='{$user->ID}'
+			where d.`ID_BILLING_USERS` = :id_user
 			order by d.`ID` DESC
-		";
-		$res = $db_webone->query($sql);
-		while ($h = $db_webone->fetch_assoc($res)) {
-			$ret[$h['ID']] = $h;
-		}
-		return $ret;
+		", $key = 'ID', [ ':id_user' => $user->ID ]);
 	}
 
 	public static function get_uslugi_from_l2(&$user) {
 		// l2: www/modules/webone/form/edit_user_status.php
 		// Aktualne: Usługa[Status] => list_services2($user->ID);
-		$uID = $user->ID;
-
-		$ret = array();
-		$db_webone = DB::getDB();
-		if (!$db_webone) {
-			return -1;
-		}
-
 		if(0){//	SERVICES table struct example:
 			//[ID_BILLING_USERS] => 11363
 			//[active] => 1
@@ -534,7 +475,8 @@ class Windykacja_StatsModel {
 			//[A_RECORD_UPDATE_DATE] => 
 			//[A_RECORD_UPDATE_AUTHOR] => 
 		}
-		$sql = "select
+		return DB::getPDO()->fetchAllByKey("
+			select
 				s.`ID`, s.`NAME_LIST_SERVICES`, s.`A_STATUS`
 				, s.`ID_OFFERS`
 				, s.`ID_DEALS_TABLE`
@@ -548,46 +490,36 @@ class Windykacja_StatsModel {
 			from `SERVICES` as s
 				left join `LIST_SERVICES` as ls on(ls.`name`=s.`NAME_LIST_SERVICES`)
 				left join `LIST_status` as lst on(lst.`ses_users2`=s.`HANGUP_STATUS` and lst.`ID`>2)
-			where `ID_BILLING_USERS`='{$user->ID}'
-		";
-		$res = $db_webone->query($sql);
-		while ($h = $db_webone->fetch_assoc($res)) {
-			$ret[$h['ID']] = $h;
-		}
-		return $ret;
+			where `ID_BILLING_USERS` = :id_user
+		", $key = 'ID', [ ':id_user' => $user->ID ]);
 	}
 
 	public static function get_umowy_from_l3(&$user) {
-		$ret = array();
-		$db = DB::getDB();
-		$sql = "select d.*
+		return DB::getPDO()->fetchAll("
+			select d.*
 			from `USERS2_DEALS` as d
 			where
-				(d.`ID_BILLING_USERS_OLD`='{$user->ID}' or d.`ID_BILLING_USERS_NEW`='{$user->ID}')
+				( d.`ID_BILLING_USERS_OLD` = :id_user or d.`ID_BILLING_USERS_NEW` = :id_user )
 			order by d.`ID` DESC
-		";
-		$res = $db->query($sql);
-		while ($h = $db->fetch_assoc($res)) {
-			$ret[] = $h;
-		}
-		return $ret;
+		", [ ':id_user' => $user->ID ]);
 	}
 
 	public static function get_bill_dosc_by_date(&$user, $date_limit = null) {
 		// fetch finanse data from remote DB
 		$billing_docs = new Windykacja_BillingListDocs();
-		$db_webone = DB::getDB('931');
-		if (!$db_webone) {
+		$pdo_webone = DB::getPDO('931');
+		if (!$pdo_webone) {
 			echo'<p style="color:red">'."Blad polaczenia do bazy dancyh webone_billing - Zasob [931]".'</p>';
 			return;
 		}
-		$sql_where = " BILLS_FVAT.OPEN='N' and  BILLS_FVAT.ID_BILLING_USERS ='{$user->ID}' ";
+		$sqlWhereAdd = " ";
 		// blad w zaokragleniach
 		//		, sum((BILLS_FVAT_POS.AMMOUNT * BILLS_FVAT_POS.PRICE)*(1 + BILLS_FVAT_POS.VAT/100)) as WARTOSC
 		if ($date_limit) {
-			$sql_where .= " and BILLS_FVAT.PAYMENT_TERM <= '{$date_limit}' ";
+			$sqlWhereAdd .= " and BILLS_FVAT.PAYMENT_TERM <= '{$date_limit}' ";
 		}
-		$sql = "select
+		$billsFvat = $pdo_webone->fetchAll("
+			select
 				BILLS_FVAT.*
 				, count(BILLS_FVAT_POS.ID) as ILOSC_POZYCJI
 				, BILLS_FVAT_POS.ID_BILLS_FVAT
@@ -598,38 +530,36 @@ class Windykacja_StatsModel {
 			from `BILLS_FVAT`
 				left join `BILLING_NUMBERS` on(`BILLING_NUMBERS`.`ID`=`BILLS_FVAT`.`ID_BILLING_NUMBERS`)
 				left join `BILLS_FVAT_POS` on(`BILLS_FVAT_POS`.`ID_BILLS_FVAT`=`BILLS_FVAT`.`ID`)
-			where {$sql_where}
+			where BILLS_FVAT.OPEN='N' and BILLS_FVAT.ID_BILLING_USERS = :id_user
+				{$sqlWhereAdd}
 			group by BILLS_FVAT.ID
 			order by BILLS_FVAT.ID_BILLING_NUMBERS ASC
-		";
-		//echo'<pre>sql1: L.' . __LINE__ . "\n";print_r($sql);echo'</pre>';
-//echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">';print_r($sql);echo'</pre>';
-		$res = $db_webone->query($sql);
-		while ($h = $db_webone->fetch_assoc($res)) {
-			if (0){// ? dla kazdej faktury ?
-			$sql = "select t1.ID_BILLING_NUMBERS AS NR_DOK
-					, t1.ID_BILLING_USERS as PLATNIK
-					, t1.WINIEN,t1.MA
-					, t1.ID_FIN_WINIEN as ID_F_W
-					, t1.ID_FIN_WINIEN_VAL as F_WINIEN_V
-					, t1.ID_FIN_MA as ID_F_M
-					, t1.ID_FIN_MA_VAL as F_MA_V
-					, max(t2.ID)
-					, sum(t2.ID_FIN_WINIEN_VAL) as ROZ_WINIEN
-					, max(t3.ID)
-					, sum(t3.ID_FIN_MA_VAL) as ROZ_MA
-					, t1.WINIEN - sum(t2.ID_FIN_WINIEN_VAL) - sum(t3.ID_FIN_MA_VAL) as POZ_WINIEN
-					, t1.MA - sum(t3.ID_FIN_MA_VAL) - sum(t2.ID_FIN_WINIEN_VAL) as POZ_MA
-				from `BILLING_ACCOUNTS_FILES` as t1
-					left join `BILLING_ACCOUNTS_FILES` as t2 on (t1.ID_BILLING_NUMBERS=t2.ID_FIN_WINIEN)
-					left join `BILLING_ACCOUNTS_FILES` as t3 on (t1.ID_BILLING_NUMBERS=t3.ID_FIN_MA)
-				where
-					t1.ID_FIN_WINIEN is NULL and t1.ID_FIN_MA is NULL and t1.MA = 0 and  t1.WINIEN > 0
-					and t1.ID_BILLING_NUMBERS={$user->ID}
-				group by t1.ID_BILLING_NUMBERS
-				limit 0,1
-			";
-			}
+		", [ ':id_user' => $user->ID ]);
+		foreach ($billsFvat as $h) {
+			// if (0){// ? dla kazdej faktury ?
+			// $sql = "select t1.ID_BILLING_NUMBERS AS NR_DOK
+			// 		, t1.ID_BILLING_USERS as PLATNIK
+			// 		, t1.WINIEN,t1.MA
+			// 		, t1.ID_FIN_WINIEN as ID_F_W
+			// 		, t1.ID_FIN_WINIEN_VAL as F_WINIEN_V
+			// 		, t1.ID_FIN_MA as ID_F_M
+			// 		, t1.ID_FIN_MA_VAL as F_MA_V
+			// 		, max(t2.ID)
+			// 		, sum(t2.ID_FIN_WINIEN_VAL) as ROZ_WINIEN
+			// 		, max(t3.ID)
+			// 		, sum(t3.ID_FIN_MA_VAL) as ROZ_MA
+			// 		, t1.WINIEN - sum(t2.ID_FIN_WINIEN_VAL) - sum(t3.ID_FIN_MA_VAL) as POZ_WINIEN
+			// 		, t1.MA - sum(t3.ID_FIN_MA_VAL) - sum(t2.ID_FIN_WINIEN_VAL) as POZ_MA
+			// 	from `BILLING_ACCOUNTS_FILES` as t1
+			// 		left join `BILLING_ACCOUNTS_FILES` as t2 on (t1.ID_BILLING_NUMBERS=t2.ID_FIN_WINIEN)
+			// 		left join `BILLING_ACCOUNTS_FILES` as t3 on (t1.ID_BILLING_NUMBERS=t3.ID_FIN_MA)
+			// 	where
+			// 		t1.ID_FIN_WINIEN is NULL and t1.ID_FIN_MA is NULL and t1.MA = 0 and  t1.WINIEN > 0
+			// 		and t1.ID_BILLING_NUMBERS={$user->ID}
+			// 	group by t1.ID_BILLING_NUMBERS
+			// 	limit 0,1
+			// ";
+			// }
 			//$h['type'] = 'FVAT';
 			//$h['nr'] = $h['ID_BILLING_NUMBERS'];
 			//$h['WINIEN'] = $h['WARTOSC'];
@@ -651,7 +581,8 @@ class Windykacja_StatsModel {
 		foreach ($billing_types as $bill_type) {
 			if ($bill_type['CLASS'] == 'FINANCE') {
 				$sql_where = ($date_limit)? " and {$bill_type['TABLE']}.BILL_DATE <= '{$date_limit}' " : "";
-				$sql = "select {$bill_type['TABLE']}.ID
+				$sql = "
+					select {$bill_type['TABLE']}.ID
 						, {$bill_type['TABLE']}.ID_BILLING_NUMBERS
 						, {$bill_type['TABLE']}.BILL_DATE
 						, round({$bill_type['TABLE']}.WINIEN, 2) as WINIEN
@@ -668,9 +599,8 @@ class Windykacja_StatsModel {
 					where {$bill_type['TABLE']}.ID_BILLING_USERS='{$user->ID}'
 						{$sql_where}
 				";
-				//echo'<pre>sql2: L.' . __LINE__ . "\n";print_r($sql);echo'</pre>';
-				$res = $db_webone->query($sql);
-				while ($h = $db_webone->fetch_assoc($res)) {
+				$vBillDocs = $pdo_webone->fetchAll($sql);
+				foreach ($vBillDocs as $h) {
 					$billing_docs->add_bill_doc($h['BILL_DATE'], $bill_type['TYPE'], $h);
 				}
 			}
@@ -702,9 +632,8 @@ class Windykacja_StatsModel {
 					group by t.`ID`
 					order by t.`ID`
 				";
-				//echo'<pre>sql3: L.' . __LINE__ . "\n";print_r($sql);echo'</pre>';
-				$res = $db_webone->query($sql);
-				while ($h = $db_webone->fetch_assoc($res)) {
+				$vBillDocs = $pdo_webone->fetchAll($sql);
+				foreach ($vBillDocs as $h) {
 					$billing_docs->add_bill_doc($h['BILL_DATE'], $bill_type['TYPE'], $h);
 				}
 			}
@@ -721,8 +650,7 @@ class Windykacja_StatsModel {
 		$ECHO_PARAM = '';
 		$ID_BILLING_USERS_PARAM = $user_id;
 
-		$db_webone = DB::getDB('931');
-		if (!$db_webone) {
+		if (!DB::getPDO('931')) {
 			echo'<p style="color:red">'."Blad polaczenia do bazy dancyh webone_billing - Zasob [931]".'</p>';
 			return $baf;
 		}
@@ -743,7 +671,8 @@ class Windykacja_StatsModel {
 		$WHERE_FIRMA = "";
 		if ($_GET['FIRMA']) $WHERE_FIRMA = "and BILLING_USERS.BILLING_OWNER='{$_GET['FIRMA']}'" ;
 		//$billing_account_files = self::
-		$sql = "create temporary table TEMP_BILLING_ACCOUNTS_FILES
+		$sql = "
+			create temporary table TEMP_BILLING_ACCOUNTS_FILES
 			select BAF.ID
 				, BAF.ID_BILLING_USERS
 				, BAF.WINIEN
@@ -789,7 +718,8 @@ class Windykacja_StatsModel {
 				{$WHERE_FIRMA}
 		";
 
-		$sql2 = "insert into TEMP_BILLING_ACCOUNTS_FILES
+		$sql2 = "
+			insert into TEMP_BILLING_ACCOUNTS_FILES
 			select BAF.ID
 				, BAF.ID_BILLING_USERS
 				, BAF.WINIEN
@@ -836,7 +766,8 @@ class Windykacja_StatsModel {
 				{$WHERE_FIRMA}
 		";
 		if (strstr($ECHO_PARAM,'saldo_rok')) {
-			$sql = "create temporary table TEMP_BILLING_ACCOUNTS_FILES
+			$sql = "
+				create temporary table TEMP_BILLING_ACCOUNTS_FILES
 				select
 					BAF.ID, BAF.ID_BILLING_USERS , BAF.WINIEN, BAF.MA, BAF.ID_BILLING_NUMBERS_TYPE, BN.NUMBER , BN.ID_BILLING_PREFIXES,
 					BAF_WINIEN.ID_FIN_WINIEN,
@@ -874,7 +805,8 @@ class Windykacja_StatsModel {
 				limit 2000 ;
 			";
 
-			$sql2 = " insert into TEMP_BILLING_ACCOUNTS_FILES select
+			$sql2 = "
+				insert into TEMP_BILLING_ACCOUNTS_FILES select
 					BAF.ID, BAF.ID_BILLING_USERS , BAF.WINIEN, BAF.MA, BAF.ID_BILLING_NUMBERS_TYPE, BN.NUMBER , BN.ID_BILLING_PREFIXES,
 					NULL as ID_FIN_WINIEN,
 					NULL as ID_BILLING_NUMBERS_TYPE_W,
@@ -914,7 +846,8 @@ class Windykacja_StatsModel {
 			";
 		}//EOF if saldo_rok param
 
-		$sql_alter = "alter table TEMP_BILLING_ACCOUNTS_FILES
+		$sql_alter = "
+			alter table TEMP_BILLING_ACCOUNTS_FILES
 			modify ID_FIN_MA int(11)
 			, modify ID_BILLING_NUMBERS_TYPE_M int(2)
 			, modify NUMBER_M int(10)
@@ -925,31 +858,24 @@ class Windykacja_StatsModel {
 			, modify ID_BILLING_PREFIXES_W int(2)  default NULL NULL
 		";
 
-		$db_webone->query("drop TEMPORARY table TEMP_BILLING_ACCOUNTS_FILES");
-		$result_create = $db_webone->query($sql);
-		$result_alter = $db_webone->query($sql_alter);
-		$result_create2 = $db_webone->query($sql2);
-echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">db_webone: ';print_r($db_webone);echo'</pre>';
-
-		$sql = "select * from TEMP_BILLING_ACCOUNTS_FILES  order by ID_BILLING_USERS,ID ";
-		$sql_count = "select count(1) as cnt from TEMP_BILLING_ACCOUNTS_FILES ";
-		$count = 0;
-		$res = $db_webone->query($sql_count);
-		if ($r_count = $db_webone->fetch($res)) {
-			$count = $r_count->cnt;
-		}
-echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">count: ';print_r($count);echo'</pre>';
-		if ($count > 0 && $ID_BILLING_USERS_PARAM > 0) {
-			$result = $db_webone->query($sql);
-		} else {
-			$sql_none = "insert into TEMP_BILLING_ACCOUNTS_FILES (ID,ID_BILLING_USERS,BAT_TILL,BAT_WINIEN,BAT_MA)
-				select '0',ID_BILLING_USERS,TILL ,WINIEN ,MA from BILLING_ACCOUNTS_TILL where ID_BILLING_USERS='{$ID_BILLING_USERS_PARAM}' and TILL=YEAR(NOW())-1
-			";
-			$db_webone->query($sql_none);
-			$result = $db_webone->query($sql);
-		}
-		while ($h_baf = $db_webone->fetch_row($result)) {
-			$baf[] = $h_baf;
+		DB::getPDO('931')->execSql(" drop TEMPORARY table TEMP_BILLING_ACCOUNTS_FILES ");
+		DB::getPDO('931')->execSql($sql);
+		DB::getPDO('931')->execSql($sql_alter);
+		DB::getPDO('931')->execSql($sql2);
+
+		$count = DB::getPDO('931')->fetchValue(" select count(1) as cnt from TEMP_BILLING_ACCOUNTS_FILES ");
+		if ($count <= 0 || $ID_BILLING_USERS_PARAM <= 0) {
+			DB::getPDO('931')->execSql("
+				insert into TEMP_BILLING_ACCOUNTS_FILES (ID, ID_BILLING_USERS, BAT_TILL, BAT_WINIEN, BAT_MA)
+				select '0', ID_BILLING_USERS, TILL, WINIEN, MA
+				from BILLING_ACCOUNTS_TILL
+				where ID_BILLING_USERS = :id_user
+					and TILL = YEAR(NOW()) - 1
+			", [ ':id_user' => $ID_BILLING_USERS_PARAM ]);
+		}
+		$listBaf = DB::getPDO('931')->fetchAll(" select * from TEMP_BILLING_ACCOUNTS_FILES order by ID_BILLING_USERS, ID ");
+		foreach ($listBaf as $h_baf) {
+			$baf[] = array_values($h_baf); // like mysql_fetch_row which returm array [ 0 => val_1, 1 => val_2, ... ]
 		}
 		return $baf;
 	}
@@ -960,21 +886,16 @@ echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">count: ';
 			$fetch_ids[] = $fvat['ID_BILLING_NUMBERS'];
 		}
 		if (!empty($fetch_ids)) {
-			$db_webone = DB::getDB('931');
-			if (!$db_webone) {
+			if (!DB::getPDO('931')) {
 				return -1;
 			}
 
-			$sql = "select `ID`, `NUMBER`, `ID_BILLING_PREFIXES`
+			$bnum = DB::getPDO('931')->fetchAllByKey("
+				select `ID`, `NUMBER`, `ID_BILLING_PREFIXES`
 				from `BILLING_NUMBERS`
 				where
 					`ID` in(".implode(",", $fetch_ids).")
-			";
-			$res = $db_webone->query($sql);
-			$bnum = array();
-			while ($h = $db_webone->fetch_assoc($res)) {
-				$bnum[$h['ID']] = $h;
-			}
+			", $key = 'ID');
 			foreach ($bnum as $k_id => $bn) {
 				foreach ($fvat_arr as $k_fvat => $fvat) {
 					if ($bn['ID'] == $fvat['ID_BILLING_NUMBERS']) {
@@ -1015,28 +936,32 @@ echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">count: ';
 			return false;
 		}
 
-/**
- * przykładowe wezwania:
- *   SELECT * FROM `IN7_DZIENNIK_KORESP` WHERE `K_ZAWARTOS` LIKE '%wezwanie%' ORDER BY `IN7_DZIENNIK_KORESP`.`ID` DESC;
- * przykład:
- *   SELECT * FROM `IN7_DZIENNIK_KORESP` WHERE `ID`=25951;
- */
+		/**
+		 * przykładowe wezwania:
+		 *   SELECT * FROM `IN7_DZIENNIK_KORESP` WHERE `K_ZAWARTOS` LIKE '%wezwanie%' ORDER BY `IN7_DZIENNIK_KORESP`.`ID` DESC;
+		 * przykład:
+		 *   SELECT * FROM `IN7_DZIENNIK_KORESP` WHERE `ID`=25951;
+		 */
+
+		$sql_data = array_merge($sql_data, [
+			'A_STATUS' => 'WAITING',
+			'ID_BILLING_USERS' => $user->ID,
+			'K_DATA_OTRZYM_KORESP' => '', // data
+			'K_DATA_OTRZYMANEJ_KORESP' => '', // data
+			'K_OD_KOGO' => "{$user->P_NAME} {$user->P_NAME_SECOND}",
+			'OD_KOGO_ADRES' => "ul. {$user->P_ADDRESS_STREET} {$user->P_ADDRESS_HOUSE}/{$user->P_ADDRESS_HOME}, {$user->P_ADDRESS_POST_CODE} {$user->P_ADDRESS_CITY}",
+			'K_ZAWARTOS' => $sql_zawartosc,
+			'K_ZNAK_REFERENTA' => User::getFullName() . ' (' . User::getInicjaly() . ')',
+			'ID_PROJECT' => $id_proj,
+			'A_RECORD_CREATE_DATE' => "NOW()",
+			'A_RECORD_CREATE_AUTHOR' => User::getLogin(),
+		]);
+
+		$ret_id = DB::getPDO()->insert('IN7_DZIENNIK_KORESP', $sql_data);
+		DB::getPDO()->insert('IN7_DZIENNIK_KORESP_HIST', array_merge($sql_data, [
+			'ID_USERS2' => $ret_id,
+		]));
 
-		$db = DB::getDB();
-		$sql_obj = new stdClass();
-		$sql_obj->A_STATUS = 'WAITING';
-		foreach ($sql_data as $k_field => $v_value) {
-			$sql_obj->$k_field = $v_value;
-		}
-		$sql_obj->ID_BILLING_USERS = $user->ID;
-		$sql_obj->K_DATA_OTRZYM_KORESP = '';// data ?
-		$sql_obj->K_DATA_OTRZYMANEJ_KORESP = '';// data ?
-		$sql_obj->K_OD_KOGO = "{$user->P_NAME} {$user->P_NAME_SECOND}";
-		$sql_obj->OD_KOGO_ADRES = "ul. {$user->P_ADDRESS_STREET} {$user->P_ADDRESS_HOUSE}/{$user->P_ADDRESS_HOME}, {$user->P_ADDRESS_POST_CODE} {$user->P_ADDRESS_CITY}";
-		$sql_obj->K_ZAWARTOS = $sql_zawartosc;
-		$sql_obj->K_ZNAK_REFERENTA = User::getFullName() . ' (' . User::getInicjaly() . ')';
-		$sql_obj->ID_PROJECT = $id_proj;
-		$ret_id = $db->ADD_NEW_OBJ('IN7_DZIENNIK_KORESP', $sql_obj);
 		return $ret_id;
 	}
 
@@ -1047,95 +972,31 @@ echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">count: ';
 	 * @returns int - ID created record
 	 */
 	public static function create_deals_rozwiazanie($user_id, $id_deals_old, $termin_odlaczenia, $powod_desc = '') {
-		$db = DB::getDB();
-		$old_deal = $db->get_by_id('DEALS_TABLE', $id_deals_old);
+		$old_deal = DB::getPDO()->fetchFirst("
+			select * from DEALS_TABLE where ID = :id
+		", [ ':id' => $id_deals_old ]);
 		if (!$old_deal) {
 			return false;
 		}
 
-		$sql_obj = new stdClass();
-		$sql_obj->DEALDESC = "Rezygnacja z dniem {$termin_odlaczenia}";
-		$sql_obj->A_STATUS = 'WAITING';
-		$sql_obj->ID_BILLING_USERS = $user_id;
-		$sql_obj->P_DEALNUMBER_OLD = $old_deal->ID;
-		$sql_obj->S_ADDRESS_STREET = $old_deal->S_ADDRESS_STREET;
-		$sql_obj->P_DEALDATE = $old_deal->P_DEALDATE;
-		$sql_obj->P_DEALDATE_TERM = $old_deal->P_DEALDATE_TERM;
-		$sql_obj->L2_HANGUP_FROM = $termin_odlaczenia;
-		$sql_obj->RODZAJ_DZIALANIA_HANDLOWEGO = $powod_desc;
-		// TODO: $sql_obj->ID_OFFERS_OFF = get_active_services_id($old_deal->ID);
-/*
-		if(
-			SV.HANGUP_STATUS=SV.A_STATUS
-			, coalesce(SV.A_STATUS)
-			, if(
-				( unix_timestamp(NOW()) > unix_timestamp(SV.HANGUP_FROM)
-					and  ( SV.HANGUP_TILL='0000-00-00' or SV.HANGUP_TILL is NULL )
-					and ( SV.HANGUP_FROM<>'0000-00-00' and SV.HANGUP_FROM is not null )
-				)
-				, coalesce(SV.HANGUP_STATUS)
-				, if(
-					( unix_timestamp(NOW()) < unix_timestamp(SV.HANGUP_FROM) 
-						and (SV.HANGUP_TILL='0000-00-00' or SV.HANGUP_TILL is NULL )
-						and ( SV.HANGUP_FROM<>'0000-00-00' and SV.HANGUP_FROM is not null )
-					)
-					, coalesce(SV.A_STATUS)
-					, if(
-						( unix_timestamp(NOW()) > unix_timestamp(SV.HANGUP_FROM)
-							and unix_timestamp(NOW()) < unix_timestamp(SV.HANGUP_TILL)
-							and ( SV.HANGUP_TILL<>'0000-00-00' and SV.HANGUP_TILL is not NULL )
-							and ( SV.HANGUP_FROM<>'0000-00-00' and SV.HANGUP_FROM is not null )
-						)
-					, coalesce(SV.HANGUP_STATUS)
-					, if(
-							( unix_timestamp(NOW()) < unix_timestamp(SV.HANGUP_FROM) and  unix_timestamp(NOW())< unix_timestamp(SV.HANGUP_TILL) 
-			and  ( SV.HANGUP_TILL<>'0000-00-00' and SV.HANGUP_TILL is not NULL )
-			and ( SV.HANGUP_FROM<>'0000-00-00' and SV.HANGUP_FROM is not null ))
-							, coalesce(SV.A_STATUS)
-							, if(
-									(	( SV.HANGUP_TILL='0000-00-00' or SV.HANGUP_TILL is NULL )
-			and ( SV.HANGUP_FROM='0000-00-00' or SV.HANGUP_FROM is null ))
-									, coalesce(SV.A_STATUS)
-									, if( unix_timestamp(NOW()) > unix_timestamp(SV.HANGUP_FROM)
-											and  unix_timestamp(NOW()) > unix_timestamp(SV.HANGUP_TILL)
-											and (
-												( SV.HANGUP_TILL<>'0000-00-00' and SV.HANGUP_TILL is not NULL )
-												and ( SV.HANGUP_FROM<>'0000-00-00' and SV.HANGUP_FROM is not null )
-											)
-										, coalesce(SV.A_STATUS)
-										, if(
-											unix_timestamp(NOW()) > unix_timestamp(SV.HANGUP_FROM)
-											and unix_timestamp(NOW()) > unix_timestamp(SV.HANGUP_TILL)
-											and SV.HANGUP_FROM<SV.HANGUP_TILL
-											and (
-			( SV.HANGUP_TILL<>'0000-00-00' and SV.HANGUP_TILL is not NULL )
-			and ( SV.HANGUP_FROM<>'0000-00-00' and SV.HANGUP_FROM is not null )) , 'ERROR1', 
-			'ERROR2'
-			)
-			)      
-			)    
-			)
-			)
-			)    
-			)
-		)
- */
-/*
-		$id_offers_off = array();
-		$sql = "select
-				s.``
-				, s.`ID_OFFERS`
-			from `SERVICES` as s
-			where
-				s.`ID_DEALS_TABLE`='{$old_deal->ID}'
-				and s.`ID_BILLING_USERS`='{$user_id}'
-		";
-		$res = $db->query($sql);
-		while ($r = $db->fetch($res)) {
-			$id_offers_off[] = $r;
-		}
- */
-		$ret_id = $db->ADD_NEW_OBJ('DEALS_TABLE', $sql_obj);
+		$sql_data = [
+			'DEALDESC' => "Rezygnacja z dniem {$termin_odlaczenia}",
+			'A_STATUS' => 'WAITING',
+			'ID_BILLING_USERS' => $user_id,
+			'P_DEALNUMBER_OLD' => $old_deal->ID,
+			'S_ADDRESS_STREET' => $old_deal->S_ADDRESS_STREET,
+			'P_DEALDATE' => $old_deal->P_DEALDATE,
+			'P_DEALDATE_TERM' => $old_deal->P_DEALDATE_TERM,
+			'L2_HANGUP_FROM' => $termin_odlaczenia,
+			'RODZAJ_DZIALANIA_HANDLOWEGO' => $powod_desc,
+			// TODO: 'ID_OFFERS_OFF' => get_active_services_id($old_deal->ID),
+		];
+
+		$ret_id = DB::getPDO()->insert('DEALS_TABLE', $sql_data);
+		DB::getPDO()->insert('DEALS_TABLE_HIST', array_merge($sql_data, [
+			'ID_USERS2' => $ret_id,
+		]));
+
 		return $ret_id;
 	}