Explorar o código

zestawienie zadluzonych dla vectra

Piotr Labudda %!s(int64=11) %!d(string=hai) anos
pai
achega
8002c7744c
Modificáronse 1 ficheiros con 336 adicións e 2 borrados
  1. 336 2
      SE/superedit-USERS2_WINDYKACJA_STATUS.php

+ 336 - 2
SE/superedit-USERS2_WINDYKACJA_STATUS.php

@@ -43,6 +43,14 @@ function USERS2_WINDYKACJA_STATUS() {
 				echo'<p style="color:red">'."Bledne dane.".'</p>';
 			}
 		}
+		else if ($task == 'zestawienie_vectra_zadluzenia') {
+			WindykacjaView::zestawienie_vectra_zadluzenia();
+			exit;
+		}
+		else if ($task == 'zestawienie_vectra_nadplaty') {
+			WindykacjaView::zestawienie_vectra_nadplaty();
+			exit;
+		}
 		else if ($task == 'wezwanie') {
 			$user_id = V::get('user_id', 0, $_REQUEST, 'int');
 			if ($user_id > 0) {
@@ -1882,6 +1890,304 @@ body{font-family:arial;}
 		self::wezwanie($user, $wezwanie_termin, true);
 	}
 
+	public static function zestawienie_vectra_nadplaty() {
+		$usersList = array();
+		$db = DB::getDB();
+		$sql_select = "
+				c.`ID` as ID
+				, c.`ID` as id_users
+				, c.`P_NAME`
+				, c.`P_NAME_SECOND`
+				, c.`P_ADDRESS_STREET`
+				, c.`P_ADDRESS_HOME`
+				, c.`P_ADDRESS_HOUSE`
+				, c.`P_ADDRESS_CITY`
+				, c.`P_ADDRESS_POST_CODE`
+				, c.`P_ADDRESS_REGION`
+				, c.`P_PESEL`
+				, c.`P_PHONE`
+				, c.`P_OTHER_DOC`
+				, c.`user_mail_contact`
+				, c.`is_firma`
+				, w.`ID` as WINDYKACJA_ID
+				, w.`ID_BILLING_USERS`
+				, w.`A_STATUS`
+				, w.`A_STATUS_UPDATE_DATE`
+				, w.`USER_PAY_TERM_ADD`
+				, w.`L_APPOITMENT_DATE`
+				, w.`L_APPOITMENT_USER`
+				, w.`L_APPOITMENT_INFO`
+				, w.`PAY_DATE`
+				, w.`PAY_DATE_FIRST_FVAT`
+				, w.`PAY_TERM`
+				, w.`PAY_SALDO`
+				, w.`PAY_FVAT`
+				, w.`wezwanie1_DATE`
+				, w.`wezwanie2_DATE`
+				, w.`ID_KORESP`
+				, w.`LAST_PAY_DATE`
+				, w.`BAD_ADDRESS`
+				, c.`STATUS`
+				, c.`BILLING_OWNER`
+				, w.`NR_SPRAWY_KRD`
+				, w.`NR_SPRAWY_SAD`
+				, w.`NR_SPRAWY_KOMORNIK`
+		";
+		$sql = "select {$sql_select}
+			from `USERS2_WINDYKACJA_STATUS` as w
+				join `COMPANIES` as c on(c.`ID`=w.`ID_BILLING_USERS`)
+			where c.`A_ADM_COMPANY`='19994_PODMIOT_Vectra_wlasciciel'
+				and w.`PAY_SALDO`>=0
+				and w.`LAST_PAY_DATE`>='2014-12-01'
+		";
+		$res = $db->query($sql);
+		if ($db->has_errors()) {
+			print_r($db->get_errors());
+			die();
+		}
+		while ($r = $db->fetch($res)) {
+			$usersList[$r->ID_BILLING_USERS] = $r;
+		}
+		if (V::get('DBG_ILE', '', $_GET)) {
+			echo '<p>ilosc: ' . count($usersList) . '</p>' . '<pre style="max-height:200px;overflow:auto">';
+				print_r($usersList);
+			echo '</pre>';
+			exit;
+		}
+		if (V::get('DBG_IDS', '', $_GET)) {
+			header('Content-Type: text/plain; charset=utf-8');
+			echo 'ilosc: ' . count($usersList) . "\n";
+			echo implode("\n", array_keys($usersList));
+			exit;
+		}
+		$limit = 10000;
+		$date_limit = date("Y-m-d");
+		$csvFileName = "Zestawienie." . date("Y-m-d");
+		header('Content-Type: text/csv; charset=utf-8');
+		header("Content-Disposition: attachment; filename={$csvFileName}.csv");
+		$showCsvHeader = true;
+		foreach ($usersList as $userId => $user) {
+			$billing_docs = WindykacjaStatsModel::get_bill_dosc_by_date($user, $date_limit);
+			$billing_docs->sort_docs();
+			$fvat_arr = $billing_docs->get_unpaid_fvat();
+			WindykacjaStatsModel::update_doc_number($fvat_arr);
+
+			$out_tbl = array();
+			foreach ($fvat_arr as $v_fvat) {
+				$out_tr = array();
+				$out_tr['ID'] = $v_fvat['ID'];
+				$out_tr['nr'] = $v_fvat['NUMBER'] . '/' . $v_fvat['ID_BILLING_PREFIXES'];
+				$out_tr['winien'] = number_format($v_fvat['WINIEN'], 2, ',', ' ');
+				$out_tr['data'] = $v_fvat['BILL_DATE'];
+				$out_tr['termin'] = $v_fvat['PAYMENT_TERM'];
+				$out_tr['pozostalo'] = number_format($v_fvat['WINIEN_POZOSTALO'], 2, ',', ' ');
+				array_unshift($out_tbl, $out_tr);// add to the begining
+			}
+
+			{// csv
+				$csvLine = array();
+				$csvLine[] = '"id klienta"';
+				$csvLine[] = '"nr dokumentu"';
+				$csvLine[] = '"kwota brutto"';
+				$csvLine[] = '"data faktury"';
+				$csvLine[] = '"termin płatności"';
+				$csvLine[] = '"pozostało do zapłaty"';
+				if ($showCsvHeader) {
+					echo implode(';', $csvLine) . ";\n";
+					$showCsvHeader = false;
+				}
+				foreach ($out_tbl as $tr) {
+					$csvLine = array();
+					$csvLine[] = '"' . $userId . '"';
+					$csvLine[] = '"' . $tr['nr'] . '"';
+					$csvLine[] = '"' . $tr['winien'] . '"';
+					$csvLine[] = '"' . $tr['data'] . '"';
+					$csvLine[] = '"' . $tr['termin'] . '"';
+					$csvLine[] = '"' . $tr['pozostalo'] . '"';
+					echo implode(';', $csvLine) . ";\n";
+				}
+			}
+			//echo '<pre style="max-height:200px;overflow:auto">fvat_arr: ';print_r($fvat_arr);echo'</pre>';
+			//echo '<pre style="max-height:200px;overflow:auto">ilosc('.count($out_tbl).') ' . "client({$userId}): ";print_r($out_tbl);echo'</pre>';
+			if (--$limit < 0) {
+				echo '<br>BREAK';
+				break;
+			}
+		}
+		exit;
+	}
+
+	public static function zestawienie_vectra_zadluzenia() {
+		$usersList = array();
+		$db = DB::getDB();
+		$sql_select = "
+				c.`ID` as ID
+				, c.`ID` as id_users
+				, c.`P_NAME`
+				, c.`P_NAME_SECOND`
+				, c.`P_ADDRESS_STREET`
+				, c.`P_ADDRESS_HOME`
+				, c.`P_ADDRESS_HOUSE`
+				, c.`P_ADDRESS_CITY`
+				, c.`P_ADDRESS_POST_CODE`
+				, c.`P_ADDRESS_REGION`
+				, c.`P_PESEL`
+				, c.`P_PHONE`
+				, c.`P_OTHER_DOC`
+				, c.`user_mail_contact`
+				, c.`is_firma`
+				, w.`ID` as WINDYKACJA_ID
+				, w.`ID_BILLING_USERS`
+				, w.`A_STATUS`
+				, w.`A_STATUS_UPDATE_DATE`
+				, w.`USER_PAY_TERM_ADD`
+				, w.`L_APPOITMENT_DATE`
+				, w.`L_APPOITMENT_USER`
+				, w.`L_APPOITMENT_INFO`
+				, w.`PAY_DATE`
+				, w.`PAY_DATE_FIRST_FVAT`
+				, w.`PAY_TERM`
+				, w.`PAY_SALDO`
+				, w.`PAY_FVAT`
+				, w.`wezwanie1_DATE`
+				, w.`wezwanie2_DATE`
+				, w.`ID_KORESP`
+				, w.`LAST_PAY_DATE`
+				, w.`BAD_ADDRESS`
+				, c.`STATUS`
+				, c.`BILLING_OWNER`
+				, w.`NR_SPRAWY_KRD`
+				, w.`NR_SPRAWY_SAD`
+				, w.`NR_SPRAWY_KOMORNIK`
+				, w.`LAST_FVAT_PAY_TERM`
+		";
+		$sqlWhereAdd = "
+			and w.`PAY_SALDO`<0 -- zaleglosci >= 1 PLN
+			-- and w.`PAY_FVAT`>0 -- zaleglosci < 1 PLN
+			and (w.`LAST_FVAT_PAY_TERM`>='2014-12-01'
+				or (	w.`LAST_FVAT_PAY_TERM`='0000-00-00'
+					and w.`LAST_FVAT_SELL_DATE`>='2014-12-01'
+				)
+			)
+			and c.`ID_BILLING_PREFIXES` in('0','1')
+			and c.`BILLING_OWNER` in('1')
+		";
+		if (V::get('DBG_NUM', '', $_GET)) {// number of clients with fvat after 2014-12-01
+			$sqlWhereAdd = "
+				-- and w.`PAY_SALDO`<0 -- zaleglosci >= 1 PLN
+				-- and w.`PAY_FVAT`>0 -- zaleglosci < 1 PLN
+				and (w.`LAST_FVAT_PAY_TERM`>='2014-12-01'
+					or (	w.`LAST_FVAT_PAY_TERM`='0000-00-00'
+						and w.`LAST_FVAT_SELL_DATE`>='2014-12-01'
+					)
+				)
+				and c.`ID_BILLING_PREFIXES` in('0','1')
+				and c.`BILLING_OWNER` in('1')
+			";
+		}
+		$sql = "select {$sql_select}
+			from `USERS2_WINDYKACJA_STATUS` as w
+				join `COMPANIES` as c on(c.`ID`=w.`ID_BILLING_USERS`)
+			where c.`A_ADM_COMPANY`='19994_PODMIOT_Vectra_wlasciciel'
+				{$sqlWhereAdd}
+		";
+		if (V::get('DBG_SQL', '', $_GET)) {
+			header('Content-Type: text/plain; charset=utf-8');
+			echo $sql;
+			exit;
+		}
+		$res = $db->query($sql);
+		if ($db->has_errors()) {
+			print_r($db->get_errors());
+			die();
+		}
+		while ($r = $db->fetch($res)) {
+			$usersList[$r->ID_BILLING_USERS] = $r;
+		}
+		if (V::get('DBG_ILE', '', $_GET)) {
+			echo '<p>ilosc: ' . count($usersList) . '</p>' . '<pre style="max-height:200px;overflow:auto">';
+				print_r($usersList);
+			echo '</pre>';
+			exit;
+		}
+		if (V::get('DBG_IDS', '', $_GET)) {
+			header('Content-Type: text/plain; charset=utf-8');
+			echo 'ilosc: ' . count($usersList) . "\n";
+			echo implode("\n", array_keys($usersList));
+			exit;
+		}
+		$limit = 10000;
+		$date_limit = V::get('DATE_LIMIT', date("Y-m-d"), $_GET);
+		$date_limit_from = '2014-12-01';
+		$csvFileName = "Zestawienie-zadluzenia-do-{$date_limit}";
+		header('Content-Type: text/csv; charset=utf-8');
+		header("Content-Disposition: attachment; filename={$csvFileName}.csv");
+		$showCsvHeader = true;
+		foreach ($usersList as $userId => $user) {
+			$billing_docs = WindykacjaStatsModel::get_bill_dosc_by_date($user, $date_limit);
+			$billing_docs->sort_docs();
+			$fvat_arr = $billing_docs->get_unpaid_fvat();
+			WindykacjaStatsModel::update_doc_number($fvat_arr);
+
+			if (V::get('DBG_LAST_FVAT_TERM', '', $_GET)) {
+				$lastFvatDoc = $billing_docs->get_last_fvat_doc();
+				if ($lastFvatDoc) {
+					echo '<p>lastFvatDoc:</p><pre style="max-height:200px;overflow:auto">';
+						print_r($lastFvatDoc);
+					echo '</pre>';
+					exit;
+				}
+			}
+
+			$out_tbl = array();
+			foreach ($fvat_arr as $v_fvat) {
+				if ($v_fvat['BILL_DATE'] < $date_limit_from || $v_fvat['BILL_DATE'] > $date_limit) {
+					//echo 'pomin fvat:'."\n";print_r($v_fvat);
+					continue;
+				}
+				$out_tr = array();
+				$out_tr['ID'] = $v_fvat['ID'];
+				$out_tr['nr'] = $v_fvat['NUMBER'] . '/' . $v_fvat['ID_BILLING_PREFIXES'];
+				$out_tr['winien'] = number_format($v_fvat['WINIEN'], 2, '.', '');
+				$out_tr['data'] = $v_fvat['BILL_DATE'];
+				$out_tr['termin'] = $v_fvat['PAYMENT_TERM'];
+				$out_tr['pozostalo'] = number_format($v_fvat['WINIEN_POZOSTALO'], 2, '.', '');
+				array_unshift($out_tbl, $out_tr);// add to the begining
+			}
+
+			{// csv
+				$csvLine = array();
+				$csvLine[] = '"id klienta"';
+				$csvLine[] = '"nr dokumentu"';
+				$csvLine[] = '"kwota brutto"';
+				$csvLine[] = '"data faktury"';
+				$csvLine[] = '"termin płatności"';
+				$csvLine[] = '"pozostało do zapłaty"';
+				if ($showCsvHeader) {
+					echo implode(';', $csvLine) . ";\n";
+					$showCsvHeader = false;
+				}
+				foreach ($out_tbl as $tr) {
+					$csvLine = array();
+					$csvLine[] = '"' . $userId . '"';
+					$csvLine[] = '"' . $tr['nr'] . '"';
+					$csvLine[] = '"' . $tr['winien'] . '"';
+					$csvLine[] = '"' . $tr['data'] . '"';
+					$csvLine[] = '"' . $tr['termin'] . '"';
+					$csvLine[] = '"' . $tr['pozostalo'] . '"';
+					echo implode(';', $csvLine) . ";\n";
+				}
+			}
+			//echo '<pre style="max-height:200px;overflow:auto">fvat_arr: ';print_r($fvat_arr);echo'</pre>';
+			//echo '<pre style="max-height:200px;overflow:auto">ilosc('.count($out_tbl).') ' . "client({$userId}): ";print_r($out_tbl);echo'</pre>';
+			if (--$limit < 0) {
+				echo '<br>BREAK';
+				break;
+			}
+		}
+		exit;
+	}
+
 	public static function wezwanie(&$user, $wezwanie_termin, $wezwanie_ostateczne = false) {
 		$date_limit = date("Y-m-d");
 		$billing_docs = WindykacjaStatsModel::get_bill_dosc_by_date($user, $date_limit);
@@ -2417,6 +2723,9 @@ class BillingDocs {
 
 	public function add_bill_doc($data, $type, $h) {
 		$bill_doc = new BillingDoc($type, $h);
+		if ('FVAT' == $type && '0000-00-00' == $data) {
+			$data = $h['BILL_DATE'];
+		}
 		$this->_docs[$data][] = $bill_doc;
 		if ($data <= date("Y-m-d")) {
 			$this->_saldo += $bill_doc->get_saldo();
@@ -2491,6 +2800,23 @@ class BillingDocs {
 		return $last_pay_doc;
 	}
 
+	public function get_last_fvat_doc() {
+		$last_fvat_doc = null;
+		$today_date = date("Y-m-d");
+		$break = false;
+		foreach ($this->_docs as $k_data => $v_saldo_arr) {
+			if ($k_data > $today_date) continue;
+			foreach ($v_saldo_arr as $k_ind => $v_doc) {
+				if (in_array($v_doc->get_type(), array('FVAT'))) {
+					$last_fvat_doc = $v_doc;
+					break;
+				}
+			}
+			if ($break) break;
+		}
+		return $last_fvat_doc;
+	}
+
 }
 
 
@@ -2651,8 +2977,10 @@ class WindykacjaStatsHelper {
 	 */
 	public static function update_stats(&$user, &$billing_docs) {
 		$data_arr = array();
-		if ($user->A_STATUS_UPDATE_DATE >= date("Y-m-d")) {
-			return;
+		if (!V::get('DBG_LAST_FVAT_PAY_TERM', '', $_GET)) {
+			if ($user->A_STATUS_UPDATE_DATE >= date("Y-m-d")) {
+				return;
+			}
 		}
 		$saldo = $billing_docs->get_saldo();
 		$data_arr["A_STATUS_UPDATE_DATE"] = date("Y-m-d");
@@ -2674,6 +3002,12 @@ class WindykacjaStatsHelper {
 		$data_arr["PAY_SALDO"] = $saldo;
 		$data_arr["PAY_FVAT"] = 0;
 		$data_arr["PAY_DATE_FIRST_FVAT"] = '0000-00-00';
+		$lastFvatDoc = $billing_docs->get_last_fvat_doc();
+		if(V::get('DBG_LAST_FVAT_PAY_TERM', '', $_GET)){echo'<pre>lastFvatDoc: ';print_r($lastFvatDoc);echo'</pre>';}
+		if ($lastFvatDoc) {
+			$data_arr["LAST_FVAT_PAY_TERM"] = $lastFvatDoc->get('PAYMENT_TERM');
+			$data_arr["LAST_FVAT_SELL_DATE"] = $lastFvatDoc->get('SELL_DATE');
+		}
 		if ($saldo <= 0) {
 			$fvat_arr = $billing_docs->get_unpaid_fvat();
 			$data_arr["PAY_FVAT"] = count($fvat_arr);