|
|
@@ -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);
|