|
|
@@ -1,6 +1,7 @@
|
|
|
<?php
|
|
|
|
|
|
Lib::loadClass('RouteBase');
|
|
|
+Lib::loadClass('Windykacja_View');
|
|
|
|
|
|
// Windykacja - oblicz ile odzyskano po kontakcie
|
|
|
class Route_UrlAction_UserSaldoAfterContact extends RouteBase {
|
|
|
@@ -16,11 +17,11 @@ class Route_UrlAction_UserSaldoAfterContact extends RouteBase {
|
|
|
|
|
|
$idUser = $contactInfo['ID_BILLING_USERS'];
|
|
|
if ($idUser <= 0) throw new Exception("Brak numeru klienta");
|
|
|
- $this->viewUserInfo($idUser);
|
|
|
+ Windykacja_View::viewUserInfo($idUser);
|
|
|
|
|
|
$postTask = V::get('_postTask', '', $_POST);
|
|
|
switch ($postTask) {
|
|
|
- case 'saveIleOdzyskano': $this->saveIleOdzyskanoPostTask($idUser); break;
|
|
|
+ case 'saveIleOdzyskano': $this->saveIleOdzyskanoPostTask($id, $contactInfo); break;
|
|
|
case '': break;
|
|
|
default: throw new Exception("Not implemented postTask '{$postTask}'");
|
|
|
}
|
|
|
@@ -28,7 +29,7 @@ class Route_UrlAction_UserSaldoAfterContact extends RouteBase {
|
|
|
|
|
|
echo UI::h('hr');
|
|
|
|
|
|
- Router::getRoute('UrlAction_UserContact')->viewUserPaymentContactsHistory($idUser);
|
|
|
+ Router::getRoute('UrlAction_UserContact')->viewUserPaymentContactsHistory($idUser, [ 'markEventsFromSpotkanieNr' => $id ]);
|
|
|
}
|
|
|
|
|
|
function viewIleOdzyskanoForm($id) {
|
|
|
@@ -42,36 +43,38 @@ class Route_UrlAction_UserSaldoAfterContact extends RouteBase {
|
|
|
and A_STATUS != 'DELETED'
|
|
|
", [ ':id_user' => $idUser, ':contact_date' => $contactInfo['A_RECORD_CREATE_DATE'] ]);
|
|
|
$lastContactId = (!empty($listContactAfter)) ? end($listContactAfter)['ID'] : null;
|
|
|
+ $args = [];
|
|
|
+ $args['ILE_ODZYSKANO'] = V::get('ILE_ODZYSKANO', $contactInfo['ILE_ODZYSKANO'], $_POST);
|
|
|
|
|
|
echo UI::h('form', [ 'method' => "POST", 'class' => "form-inline" ], [
|
|
|
UI::h('input', [ 'type' => "hidden", 'name' => '_postTask', 'value' => "saveIleOdzyskano" ]),
|
|
|
UI::h('input', [ 'type' => "hidden", 'name' => 'id', 'value' => $id ]),
|
|
|
UI::h('div', [ 'class' => "row", 'style' => "padding-bottom: 12px" ], [
|
|
|
- "Notatka ze spotkania:",
|
|
|
- UI::hTable([ 'rows' => [ $contactInfo ] ]),
|
|
|
+ UI::h('div', [ 'class' => "col-md-12" ], [
|
|
|
+ UI::h('h4', [], "Notatka ze spotkania:"),
|
|
|
+ UI::h('div', [ 'style' => "padding-left:32px" ], [
|
|
|
+ $this->viewNotatkaRow($contactInfo),
|
|
|
+ ]),
|
|
|
+ ]),
|
|
|
]),
|
|
|
($listContactAfter)
|
|
|
? UI::h('div', [ 'class' => "row", 'style' => "padding-bottom: 12px" ], [
|
|
|
- UI::h('div', [ 'class' => "alert alert-warning" ], [
|
|
|
- "Uwaga: Znaleziono późniejsze notatki z klientem",
|
|
|
- " ",
|
|
|
- UI::h('a', [ 'href' => $this->getLink('', [ 'ID' => $lastContactId ]) ], "przejdź do najnowszego kontaktu"),
|
|
|
- ]),
|
|
|
- UI::hTable([
|
|
|
- 'rows' => array_map(function ($item) {
|
|
|
- return arraY_merge([
|
|
|
- 'ID' => $item['ID'],
|
|
|
- ], $item);
|
|
|
- }, $listContactAfter)
|
|
|
+ UI::h('div', [ 'class' => "col-md-12" ], [
|
|
|
+ UI::h('div', [ 'class' => "alert alert-warning" ], [
|
|
|
+ "Uwaga: Znaleziono późniejsze notatki z klientem",
|
|
|
+ " ",
|
|
|
+ UI::h('a', [ 'href' => $this->getLink('', [ 'ID' => $lastContactId ]) ], "przejdź do najnowszego kontaktu"),
|
|
|
+ ]),
|
|
|
+ UI::h('div', [ 'style' => "padding-left:32px" ], array_map([ $this, 'viewNotatkaRow' ], $listContactAfter)),
|
|
|
]),
|
|
|
])
|
|
|
: UI::h('div', [], [
|
|
|
UI::h('div', [ 'class' => "row", 'style' => "padding-bottom: 12px" ], [
|
|
|
UI::h('div', [ 'class' => "col-md-12" ], [
|
|
|
- UI::h('iframe', [
|
|
|
- 'src' => "https://biuro.biall-net.pl/dev-pl/se-master/index.php?MENU_INIT=USERS2_WINDYKACJA_STATUS&q=&_f=&_user_id={$idUser}",
|
|
|
- 'style' => "width:100%; height:400px; padding:12px; border:1px solid #ddd; border-radius:8px",
|
|
|
- ]),
|
|
|
+ // UI::h('iframe', [
|
|
|
+ // 'src' => "https://biuro.biall-net.pl/dev-pl/se-master/index.php?MENU_INIT=USERS2_WINDYKACJA_STATUS&q=&_f=&_user_id={$idUser}",
|
|
|
+ // 'style' => "width:100%; height:400px; padding:12px; border:1px solid #ddd; border-radius:8px",
|
|
|
+ // ]),
|
|
|
]),
|
|
|
UI::h('div', [ 'class' => "col-md-12" ], [
|
|
|
UI::h('label', [], "Ile odzyskano:"),
|
|
|
@@ -85,376 +88,65 @@ class Route_UrlAction_UserSaldoAfterContact extends RouteBase {
|
|
|
,
|
|
|
]);
|
|
|
}
|
|
|
- function saveContactPostTask($idUser) {
|
|
|
+ function viewNotatkaRow($item) {
|
|
|
+ return UI::h('div', [ 'style' => "margin-bottom:12px" ], array_merge(
|
|
|
+ [
|
|
|
+ UI::h('div', [ 'style' => "font-weight:bold" ], "Notatka nr {$item['ID']}"),
|
|
|
+ UI::h('div', [ 'style' => "color:#333" ], [
|
|
|
+ UI::h('span', [ 'class' => "text-muted" ], "Wykonana przez: "),
|
|
|
+ " {$item['L_APPOITMENT_USER']}",
|
|
|
+ ]),
|
|
|
+ UI::h('div', [ 'style' => "color:#333" ], [
|
|
|
+ UI::h('span', [ 'class' => "text-muted" ], "Data: "),
|
|
|
+ " {$item['L_APPOITMENT_DATE']}",
|
|
|
+ ]),
|
|
|
+ UI::h('div', [ 'style' => "color:#333" ], [
|
|
|
+ UI::h('span', [ 'class' => "text-muted" ], "Treść: "),
|
|
|
+ " {$item['L_APPOITMENT_INFO']}",
|
|
|
+ ]),
|
|
|
+ ],
|
|
|
+ ($item['ILE_ODZYSKANO'] > 0) ? [
|
|
|
+ UI::h('div', [ 'style' => "color:#333" ], [
|
|
|
+ UI::h('span', [ 'class' => "text-muted" ], "Odzyskano: "),
|
|
|
+ " ",
|
|
|
+ UI::price($item['ILE_ODZYSKANO']),
|
|
|
+ ]),
|
|
|
+ ] : []
|
|
|
+ ));
|
|
|
+ }
|
|
|
+ function saveIleOdzyskanoPostTask($id, $contactInfo) {
|
|
|
$args = [];
|
|
|
- $args['L_APPOITMENT_USER'] = V::get('L_APPOITMENT_USER', '', $_POST);
|
|
|
- $args['L_APPOITMENT_DATE'] = V::get('L_APPOITMENT_DATE', '', $_POST);
|
|
|
- $args['L_APPOITMENT_TYPE'] = V::get('L_APPOITMENT_TYPE', '', $_POST);
|
|
|
- $args['L_APPOITMENT_INFO'] = V::get('L_APPOITMENT_INFO', '', $_POST);
|
|
|
- $args['change_windykacja_status'] = V::get('change_windykacja_status', '', $_POST);
|
|
|
- $args['A_STATUS_INFO'] = V::get('A_STATUS_INFO', '', $_POST);
|
|
|
- $args['add_reminder'] = V::get('add_reminder', '', $_POST);
|
|
|
- $args['REMINDER_USER'] = V::get('REMINDER_USER', '', $_POST);
|
|
|
- $args['REMINDER_DATE'] = V::get('REMINDER_DATE', '', $_POST);
|
|
|
- $args['REMINDER_INFO'] = V::get('REMINDER_INFO', '', $_POST);
|
|
|
+ $args['ILE_ODZYSKANO'] = V::get('ILE_ODZYSKANO', 0, $_POST, 'price');
|
|
|
|
|
|
try {
|
|
|
- if (empty($args['L_APPOITMENT_USER'])) throw new Exception("Brak pracownika");
|
|
|
- if (empty($args['L_APPOITMENT_DATE'])) throw new Exception("Brak daty spotkania");
|
|
|
- if (empty($args['L_APPOITMENT_TYPE'])) throw new Exception("Brak rodzaju spotkania");
|
|
|
- if (empty($args['L_APPOITMENT_INFO'])) throw new Exception("Brak treści notatki");
|
|
|
- if ($args['change_windykacja_status']) {
|
|
|
- if (empty($args['A_STATUS_INFO'])) throw new Exception("Brak statusu windykacji");
|
|
|
- }
|
|
|
- if ($args['add_reminder']) {
|
|
|
- if (empty($args['REMINDER_USER'])) throw new Exception("Brak pracownika w przypomnieniu");
|
|
|
- if (empty($args['REMINDER_DATE'])) throw new Exception("Brak daty przypomnienia");
|
|
|
- if (empty($args['REMINDER_INFO'])) throw new Exception("Brak adnotacji przypomnienia");
|
|
|
- }
|
|
|
-
|
|
|
- $windykInfo = $this->getWindykacjaInfo($idUser);
|
|
|
+ if ($contactInfo['ILE_ODZYSKANO'] == $args['ILE_ODZYSKANO']) throw new AlertInfoException("Nie wprowadzono żadnych zmian");
|
|
|
|
|
|
- // create new record with L_APPOITMENT_* in table `USERS2_CONTACT`
|
|
|
- DB::getPDO()->insert('USERS2_CONTACT', [
|
|
|
- 'ID_BILLING_USERS' => $idUser,
|
|
|
- 'L_APPOITMENT_USER' => $args['L_APPOITMENT_USER'],
|
|
|
- 'L_APPOITMENT_DATE' => $args['L_APPOITMENT_DATE'],
|
|
|
- 'L_APPOITMENT_TYPE' => $args['L_APPOITMENT_TYPE'],
|
|
|
- 'L_APPOITMENT_INFO' => $args['L_APPOITMENT_INFO'],
|
|
|
- 'SALDO' => $windykInfo['SALDO'],
|
|
|
- 'A_RECORD_CREATE_DATE' => "NOW()",
|
|
|
- 'A_RECORD_CREATE_AUTHOR' => User::getLogin(),
|
|
|
+ DB::getPDO()->update('USERS2_CONTACT', 'ID', $id, [
|
|
|
+ 'ILE_ODZYSKANO' => $args['ILE_ODZYSKANO'],
|
|
|
+ 'A_RECORD_UPDATE_DATE' => "NOW()",
|
|
|
+ 'A_RECORD_UPDATE_AUTHOR' => User::getLogin(),
|
|
|
]);
|
|
|
- // update A_STATUS_INFO in `USERS2_WINDYKACJA_STATUS` if $args['change_windykacja_status']
|
|
|
- if ($args['change_windykacja_status']) {
|
|
|
- DB::getPDO()->update('USERS2_WINDYKACJA_STATUS', 'ID_BILLING_USERS', $idUser, [
|
|
|
- 'A_STATUS_INFO' => $args['A_STATUS_INFO'],
|
|
|
- 'A_RECORD_UPDATE_DATE' => "NOW()",
|
|
|
- 'A_RECORD_UPDATE_AUTHOR' => User::getLogin(),
|
|
|
- ]);
|
|
|
- }
|
|
|
- // update L_APPOITMENT_* fields using REMINDER_* in `USERS2_WINDYKACJA_STATUS` if $args['add_reminder']
|
|
|
- if ($args['add_reminder']) {
|
|
|
- DB::getPDO()->update('USERS2_WINDYKACJA_STATUS', 'ID_BILLING_USERS', $idUser, [
|
|
|
- 'L_APPOITMENT_USER' => $args['REMINDER_USER'],
|
|
|
- 'L_APPOITMENT_DATE' => $args['REMINDER_DATE'],
|
|
|
- 'L_APPOITMENT_INFO' => $args['REMINDER_INFO'],
|
|
|
- 'A_RECORD_UPDATE_DATE' => "NOW()",
|
|
|
- 'A_RECORD_UPDATE_AUTHOR' => User::getLogin(),
|
|
|
- ]);
|
|
|
- }
|
|
|
+ DB::getPDO()->insert('USERS2_CONTACT_HIST', [
|
|
|
+ 'ID_USERS2' => $id,
|
|
|
+ 'ILE_ODZYSKANO' => $args['ILE_ODZYSKANO'],
|
|
|
+ 'A_RECORD_UPDATE_DATE' => "NOW()",
|
|
|
+ 'A_RECORD_UPDATE_AUTHOR' => User::getLogin(),
|
|
|
+ ]);
|
|
|
+ } catch (AlertInfoException $e) {
|
|
|
+ DBG::log($e);
|
|
|
+ UI::alert('info', $e->getMessage());
|
|
|
+ return;
|
|
|
} catch (Exception $e) {
|
|
|
DBG::log($e);
|
|
|
UI::alert('danger', $e->getMessage());
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- throw new AlertSuccessException("Wprowadzono notatkę ze spotkania z klientem " . UI::h('a', [ 'href' => $this->getLink('', [ 'id_user' => $idUser ]) ], "wróć"));
|
|
|
- }
|
|
|
-
|
|
|
- function viewUserInfo($idUser) {
|
|
|
- $userInfo = $this->getUserInfo($idUser);
|
|
|
- $windykInfo = $this->getWindykacjaInfo($idUser);
|
|
|
-
|
|
|
- echo UI::h('details', [ 'style' => "margin-bottom: 24px" ], [
|
|
|
- UI::h('summary', [ 'style' => "padding: 12px; background: #eee; cursor: pointer; outline: none" ], [
|
|
|
- ($userInfo['is_firma']) ? "Firma" : "Klient",
|
|
|
- " ",
|
|
|
- UI::h('b', [], "{$userInfo['P_NAME']} {$userInfo['P_NAME_SECOND']}"),
|
|
|
- $windykInfo ? UI::h('span', [ 'style' => "padding-left: 24px" ], [
|
|
|
- "Zapis/Odczyt dla: {$windykInfo['A_ADM_COMPANY']}", // $windykInfo['A_CLASSIFIED'];
|
|
|
- ]) : "",
|
|
|
- UI::h('span', [ 'style' => "padding-left: 24px" ], [
|
|
|
- "Status windykacji: ",
|
|
|
- (!$windykInfo) ? "brak danych" : UI::h('span', [], "{$windykInfo['A_STATUS']} <em>{$windykInfo['A_STATUS_INFO']}</em>"),
|
|
|
- ]),
|
|
|
- " ...",
|
|
|
- UI::h('span', [ 'style' => "float:right" ], [
|
|
|
- UI::h('a', [ 'href' => "index.php?MENU_INIT=USERS2_WINDYKACJA_STATUS&q=&_f=&_user_id={$idUser}" ], "Panel windykacji"),
|
|
|
- ]),
|
|
|
- ]),
|
|
|
- UI::h('div', [ 'style' => "padding: 12px; background: #eee;" ], [
|
|
|
- UI::h('table', [], [
|
|
|
- UI::h('tr', [], [
|
|
|
- UI::h('td', [ 'style' => "vertical-align:top; padding-right:8px" ], [
|
|
|
- $this->viewWidgetUserInfo($idUser, $userInfo),
|
|
|
- ]),
|
|
|
- UI::h('td', [ 'style' => "vertical-align:top; padding-right:8px" ], [
|
|
|
- $this->viewWidgetUserWindykInfo($idUser, $windykInfo),
|
|
|
- ]),
|
|
|
- ]),
|
|
|
- ]),
|
|
|
- ]),
|
|
|
- ]);
|
|
|
- }
|
|
|
- function viewWidgetUserInfo($idUser, $userInfo = []) {
|
|
|
- if (empty($userInfo)) $userInfo = $this->getUserInfo($idUser);
|
|
|
-
|
|
|
- $outUserInfo = [
|
|
|
- 'Nr klienta' => $userInfo['ID_BILLING_USERS'],
|
|
|
- 'Firma' => ($userInfo['is_firma']) ? "Tak" : "Nie",
|
|
|
- 'Nip' => $userInfo['P_NIP'],
|
|
|
- 'Pesel' => $userInfo['P_PESEL'],
|
|
|
- 'Tel' => $userInfo['P_PHONE'],
|
|
|
- 'email' => $userInfo['user_mail_contact'],
|
|
|
- 'Adres' => "{$userInfo['P_ADDRESS_POST_CODE']} {$userInfo['P_ADDRESS_CITY']} {$userInfo['P_ADDRESS_STREET']} {$userInfo['P_ADDRESS_HOME']}/{$userInfo['P_ADDRESS_HOUSE']}",
|
|
|
- 'Operator' => "[{$userInfo['BILLING_OWNER']}] {$userInfo['BILLING_OWNER_NAME']}",
|
|
|
- ];
|
|
|
-
|
|
|
- return UI::h('div', [], [
|
|
|
- UI::h('p', [ 'style' => "border-left:3px solid #ddd; padding-left:6px; font-weight:bold" ], "Dane klienta"),
|
|
|
- UI::h('table', [ 'class' => "table table-bordered", 'style' => "width:auto; background:#fff" ],
|
|
|
- array_map(function ($fieldName) use ($outUserInfo) {
|
|
|
- return UI::h('tr', [], [
|
|
|
- UI::h('th', [], $fieldName),
|
|
|
- UI::h('td', [], $outUserInfo[$fieldName]),
|
|
|
- ]);
|
|
|
- }, array_keys($outUserInfo))
|
|
|
- ),
|
|
|
- ]);
|
|
|
- }
|
|
|
- function viewWidgetUserWindykInfo($idUser, $windykInfo = []) {
|
|
|
- if (empty($windykInfo)) $windykInfo = $this->getUserInfo($idUser);
|
|
|
-
|
|
|
- $outWindykInfo = [
|
|
|
- 'Status' => $windykInfo['A_STATUS'],
|
|
|
-
|
|
|
- // $filter_arr['stan_zero'] = array("stan zerowy");
|
|
|
- // $filter_arr['10-ego'] = array("termin płatności faktur, saldo na -", 'desc'=>array("10-ego", "10-ego każdego miesiąca - termin płatnosci faktur oraz saldo na minusie"));
|
|
|
- // $filter_arr['WAITING'] = array("termin płatności faktur", 'desc'=>array("10-ego", "10-ego każdego miesiąca - termin płatnosci faktur"));// z regulaminu
|
|
|
- // $filter_arr['15'] = array("mail ponaglenie", 'desc'=>array("10-ego + 5", "10-ego + 5 dni roboczych"));
|
|
|
- // $filter_arr['blokada'] = array("blokada", 'desc'=>array("pn, wt, śr około 25", "najbliższy pn, wt, śr do 25"));// najbliższy pn, wt, śr do 25-ego danego miesiąca
|
|
|
- // $filter_arr['tel1'] = array("kontakt tel.", 'desc'=>array("", "Ostatni kontakt tel. ponad 3 m-ce temu"));
|
|
|
- // $filter_arr['bad_address'] = array("błędny adres");
|
|
|
- // $filter_arr['wezwanie1'] = array("wezwanie do zapłaty", 'desc'=>array("2 x FVat", "2 faktury"));
|
|
|
- // $filter_arr['waiting-wezwanie2'] = array("oczekiwanie 7 dni od terminu płatności");
|
|
|
- // $filter_arr['wezwanie2'] = array("ostateczne wezwanie do zapłaty, rozwiązanie umowy", 'desc'=>array("wezwanie + 14", "wezwanie + 14 dni"));
|
|
|
- // $filter_arr['waiting-krd'] = array("min. 30 dni od ostatecznego wezwania");
|
|
|
- // $filter_arr['krd'] = array("do przekazania do KRD", 'desc'=>array("wezwanie ost. + 60", "wezwanie ost. + 60 dni"));
|
|
|
- // $filter_arr['waiting-sad'] = array("przekazano do KRD");
|
|
|
- // $filter_arr['docs-in-sad'] = array("przekazać sprawę do sądu");// waiting-sad = 30 dni
|
|
|
- // $filter_arr['sad'] = array("przekazano sprawę do sądu");
|
|
|
-
|
|
|
- // $filter_arr['3 m-ce przed'] = array("3 m-ce przed przedawnieniem");// 3 m-ce przed przedawnieniem
|
|
|
- // $filter_arr['po-terminie'] = array("po terminie");// 3 lata po dacie platnosci faktur
|
|
|
- // $filter_arr['has_nr_sad'] = array("nr sprawy sąd");
|
|
|
- // $filter_arr['has_nr_komornik'] = array("nr sprawy komornik");
|
|
|
- // $filter_arr['has_ustalenia'] = array("ustalenia z klientem");
|
|
|
- // $filter_arr['sad_and_komornik'] = array("sąd z komornik");
|
|
|
- // $filter_arr['sad_bez_komornik'] = array("sąd bez komornik");
|
|
|
- // $filter_arr['isMovedToVectra'] = array("przeniesieni do Vectra");
|
|
|
-
|
|
|
- // if ($filter_selected == 'po-terminie') {
|
|
|
- // $sql_where_and_arr[] = "w.`PAY_SALDO`<=-0.05";
|
|
|
- // $sql_where_and_arr[] = "w.`PAY_DATE`!='0000-00-00'";
|
|
|
- // $sql_where_and_arr[] = "w.`PAY_DATE`<DATE_SUB(NOW(), INTERVAL 36 MONTH)";
|
|
|
- // }
|
|
|
- // else if ($filter_selected == '3 m-ce przed') {
|
|
|
- // $sql_where_and_arr[] = "w.`PAY_SALDO`<=-0.05";
|
|
|
- // $sql_where_and_arr[] = "w.`PAY_DATE`!='0000-00-00'";
|
|
|
- // $sql_where_and_arr[] = "w.`PAY_DATE`<DATE_SUB(NOW(), INTERVAL 33 MONTH)";
|
|
|
- // $sql_where_and_arr[] = "w.`PAY_DATE`>DATE_SUB(NOW(), INTERVAL 36 MONTH)";
|
|
|
- // }
|
|
|
- // else if ($filter_selected == 'tel1') {
|
|
|
- // $sql_where_and_arr[] = "w.`PAY_SALDO`<=-0.05";
|
|
|
- // $sql_where_and_arr[] = "w.`A_STATUS` in('wezwanie1', 'waiting-wezwanie2', 'wezwanie2', 'waiting-krd')";
|
|
|
- // $sql_where_and_arr[] = "( w.`LAST_PHONE_STATUS_DATE`='0000-00-00'
|
|
|
- // or w.`LAST_PHONE_STATUS_DATE`<DATE_SUB(NOW(), INTERVAL 3 MONTH) )";
|
|
|
- // }
|
|
|
- // else if ($filter_selected == 'bad_address') {
|
|
|
- // $sql_where_and_arr[] = "w.`BAD_ADDRESS`>0";
|
|
|
- // $sql_where_and_arr[] = "w.`PAY_SALDO`<=-0.05";
|
|
|
- // }
|
|
|
- // else if ($filter_selected == 'stan_zero') {
|
|
|
- // $sql_where_and_arr[] = "w.`A_STATUS`='WAITING'";
|
|
|
- // $sql_where_and_arr[] = "w.`PAY_SALDO`>-0.05";
|
|
|
- // }
|
|
|
- // else if ($filter_selected == '10-ego') {
|
|
|
- // $sql_where_and_arr[] = "w.`A_STATUS`='WAITING'";
|
|
|
- // $sql_where_and_arr[] = "w.`PAY_SALDO`<=-0.05";
|
|
|
- // }
|
|
|
- // else if ($filter_selected == 'has_nr_sad') {
|
|
|
- // $sql_where_and_arr[] = "w.`NR_SPRAWY_SAD`!=''";
|
|
|
- // }
|
|
|
- // else if ($filter_selected == 'has_nr_komornik') {
|
|
|
- // $sql_where_and_arr[] = "w.`NR_SPRAWY_KOMORNIK`!=''";
|
|
|
- // }
|
|
|
- // else if ($filter_selected == 'has_ustalenia') {
|
|
|
- // $sql_where_and_arr[] = "w.`L_APPOITMENT_INFO`!=''";
|
|
|
- // }
|
|
|
- // else if ($filter_selected == 'sad_and_komornik') {
|
|
|
- // $sql_where_and_arr[] = "w.`A_STATUS`='sad' and w.`NR_SPRAWY_KOMORNIK`!=''";
|
|
|
- // }
|
|
|
- // else if ($filter_selected == 'sad_bez_komornik') {
|
|
|
- // $sql_where_and_arr[] = "w.`A_STATUS`='sad' and w.`NR_SPRAWY_KOMORNIK`=''";
|
|
|
- // }
|
|
|
- // else if ($filter_selected == 'isMovedToVectra') {
|
|
|
- // $sql_where_and_arr[] = "w.`IS_MOVED_TO_VECTRA`=1";
|
|
|
- // }
|
|
|
- // else {
|
|
|
- // $sql_where_and_arr[] = "w.`A_STATUS`='{$filter_selected}'";
|
|
|
- // }
|
|
|
-
|
|
|
- 'Saldo' => $windykInfo['PAY_SALDO'],
|
|
|
- 'Termin ost. fv' => $windykInfo['PAY_DATE'], // Data wymagalności ostatniej faktury
|
|
|
- 'Zaległe faktury' => $windykInfo['PAY_FVAT'],
|
|
|
- 'Adresy usług' => $windykInfo['SERVICES_STREETS'],
|
|
|
- ];
|
|
|
-
|
|
|
- return UI::h('div', [], [
|
|
|
- UI::h('p', [ 'style' => "border-left:3px solid #ddd; padding-left:6px; font-weight:bold" ], [
|
|
|
- "Informacje o płatnościach",
|
|
|
- ($windykInfo['A_STATUS_UPDATE_DATE'] < date("Y-m-d"))
|
|
|
- ? UI::h('div', [ 'class' => "text-danger" ], [
|
|
|
- "Uwaga: Wymagają aktualizacji",
|
|
|
- " ",
|
|
|
- UI::h('em', [ 'class' => "text-muted" ], "(dane z {$windykInfo['A_STATUS_UPDATE_DATE']})"),
|
|
|
- // TODO: btn aktualizuj lub auto aktualizuj przed pokazaniem danych
|
|
|
- ])
|
|
|
- : "",
|
|
|
- ]),
|
|
|
- UI::h('table', [ 'class' => "table table-bordered", 'style' => "width:auto; background:#fff" ],
|
|
|
- array_map(function ($fieldName) use ($outWindykInfo) {
|
|
|
- return UI::h('tr', [], [
|
|
|
- UI::h('th', [], $fieldName),
|
|
|
- UI::h('td', [], $outWindykInfo[$fieldName]),
|
|
|
- ]);
|
|
|
- }, array_keys($outWindykInfo))
|
|
|
- ),
|
|
|
- UI::h('table', [ 'class' => "table table-bordered", 'style' => "width:auto; display:none; background:yellow" ],
|
|
|
- array_map(function ($fieldName) use ($windykInfo) {
|
|
|
- return UI::h('tr', [], [
|
|
|
- UI::h('th', [], $fieldName),
|
|
|
- UI::h('td', [], $windykInfo[$fieldName]),
|
|
|
- ]);
|
|
|
- }, array_keys($windykInfo))
|
|
|
- ),
|
|
|
- ]);
|
|
|
+ throw new AlertSuccessException("Wprowadzono zmiany " . UI::h('a', [ 'href' => $this->getLink('', [ 'id' => $id ]) ], "wróć"));
|
|
|
}
|
|
|
|
|
|
function getContactInfo($id) {
|
|
|
return DB::getPDO()->fetchFirst(" select t.* from USERS2_CONTACT t where t.ID = :id ", [ ':id' => $id ]);
|
|
|
}
|
|
|
|
|
|
- function getUserInfo($idUser) {
|
|
|
- return DB::getPDO()->fetchFirst("
|
|
|
- select bua.`id_users`
|
|
|
- , bua.`id_users` as ID_BILLING_USERS
|
|
|
- , bua.`is_firma`
|
|
|
- , bua.`P_NAME`
|
|
|
- , bua.`P_NAME_SECOND`
|
|
|
- , bua.`P_NIP`
|
|
|
- , bua.`P_PESEL`
|
|
|
- , bua.`P_PHONE`
|
|
|
- , bua.`P_ADDRESS_REGION`
|
|
|
- , bua.`P_ADDRESS_CITY`
|
|
|
- , bua.`P_ADDRESS_POST_CODE`
|
|
|
- , bua.`P_ADDRESS_STREET`
|
|
|
- , bua.`P_ADDRESS_HOME`
|
|
|
- , bua.`P_ADDRESS_HOUSE`
|
|
|
- , bua.`user_mail_contact`
|
|
|
- , bu.`BILLING_OWNER`
|
|
|
- , ( select bo.name1 from BILLING_OWNER bo where bo.ID = bu.BILLING_OWNER ) as BILLING_OWNER_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' => $idUser ]);
|
|
|
- }
|
|
|
- function getWindykacjaInfo($idUser) {
|
|
|
- if ($this->_windykInfo) return $this->_windykInfo;
|
|
|
-
|
|
|
- $this->_windykInfo = $this->fetchWindykacjaInfo($idUser);
|
|
|
- if ($this->_windykInfo['A_STATUS_UPDATE_DATE'] < date("Y-m-d")) {
|
|
|
- Lib::loadClass('Windykacja_StatsModel');
|
|
|
- Lib::loadClass('Windykacja_StatsHelper');
|
|
|
- $user = Windykacja_StatsModel::get_user_by_id($idUser);
|
|
|
- if ($user) {
|
|
|
- $billing_docs = Windykacja_StatsModel::getBillDocsByDate($idUser);
|
|
|
- Windykacja_StatsHelper::update_stats($user, $billing_docs);
|
|
|
- }
|
|
|
- $this->_windykInfo = $this->fetchWindykacjaInfo($idUser);
|
|
|
- }
|
|
|
- return $this->_windykInfo;
|
|
|
- }
|
|
|
- function fetchWindykacjaInfo($idUser) {
|
|
|
- return DB::getPDO()->fetchFirst("
|
|
|
- select t.`ID`
|
|
|
- , t.A_STATUS
|
|
|
- , t.A_STATUS_INFO
|
|
|
- , t.*
|
|
|
- from `USERS2_WINDYKACJA_STATUS` as t
|
|
|
- where t.`ID_BILLING_USERS` = :id_user
|
|
|
- ", [ ':id_user' => $idUser ]);
|
|
|
- }
|
|
|
-
|
|
|
- function prepareTable() {
|
|
|
- DB::getPDO()->execSql("
|
|
|
- CREATE TABLE IF NOT EXISTS `USERS2_CONTACT` (
|
|
|
- `ID` int(11) NOT NULL AUTO_INCREMENT,
|
|
|
- `ID_BILLING_USERS` int(11) NOT NULL DEFAULT '0',
|
|
|
- `CLIENT_INFO` varchar(255) NOT NULL DEFAULT '',
|
|
|
- `A_STATUS` enum('WAITING','NORMAL','DELETED') NOT NULL DEFAULT 'WAITING',
|
|
|
- `A_STATUS_INFO` varchar(255) NOT NULL,
|
|
|
- `L_APPOITMENT_DATE` date NOT NULL DEFAULT '0000-00-00',
|
|
|
- `L_APPOITMENT_USER` varchar(20) NOT NULL DEFAULT '',
|
|
|
- `L_APPOITMENT_PERIOD` varchar(4) NOT NULL,
|
|
|
- `L_APPOITMENT_INFO` varchar(255) NOT NULL,
|
|
|
- `L_APPOITMENT_TYPE` enum('','LIVE','TEL','MAIL','SMS','INNE') DEFAULT NULL,
|
|
|
- `A_RECORD_CREATE_DATE` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
|
|
- `A_RECORD_CREATE_AUTHOR` varchar(20) NOT NULL DEFAULT '',
|
|
|
- `A_RECORD_UPDATE_DATE` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
|
|
- `A_RECORD_UPDATE_AUTHOR` varchar(20) NOT NULL DEFAULT '',
|
|
|
- `A_PROBLEM` enum('','WARNING','PROBLEM','SERIOUS','UNVERIFIED') DEFAULT NULL,
|
|
|
- `A_PROBLEM_DESC` varchar(255) NOT NULL DEFAULT '',
|
|
|
- `A_PROBLEM_DATE` varchar(30) NOT NULL DEFAULT '',
|
|
|
- `T_WORKPOINTS` varchar(100) NOT NULL DEFAULT '',
|
|
|
- `T_WORKPOINTS_VALUE` varchar(100) NOT NULL DEFAULT '',
|
|
|
- `T_WORKPOINTS_TYPE` varchar(100) NOT NULL DEFAULT '',
|
|
|
- `T_WORKPOINTS_USER` varchar(100) NOT NULL DEFAULT '',
|
|
|
- `T_WORKPOINTS_DATE` varchar(100) NOT NULL DEFAULT '',
|
|
|
- `A_CLASSIFIED` varchar(100) NOT NULL DEFAULT '',
|
|
|
- `A_ADM_COMPANY` varchar(100) NOT NULL DEFAULT '',
|
|
|
- `ROZLICZ_MONTH` date NOT NULL DEFAULT '0000-00-00',
|
|
|
- `ROZLICZ_CONFIRM` int(11) NOT NULL DEFAULT '0',
|
|
|
- `SALDO` decimal(10,2) NOT NULL DEFAULT '0.00',
|
|
|
- `ILE_ODZYSKANO` decimal(10,2) NOT NULL DEFAULT '0.00',
|
|
|
- PRIMARY KEY (`ID`)
|
|
|
- ) ENGINE=MyISAM DEFAULT CHARSET=latin2;
|
|
|
- ");
|
|
|
- DB::getPDO()->execSql("
|
|
|
- CREATE TABLE IF NOT EXISTS `USERS2_CONTACT_HIST` (
|
|
|
- `ID` int(11) NOT NULL AUTO_INCREMENT,
|
|
|
- `ID_USERS2` int(11) NOT NULL,
|
|
|
- `ID_BILLING_USERS` varchar(11) NOT NULL DEFAULT 'N/S;',
|
|
|
- `CLIENT_INFO` varchar(255) NOT NULL DEFAULT 'N/S;',
|
|
|
- `A_STATUS` varchar(32) NOT NULL DEFAULT 'N/S;',
|
|
|
- `A_STATUS_INFO` varchar(255) NOT NULL DEFAULT 'N/S;',
|
|
|
- `L_APPOITMENT_DATE` varchar(20) NOT NULL DEFAULT 'N/S;',
|
|
|
- `L_APPOITMENT_USER` varchar(20) NOT NULL DEFAULT 'N/S;',
|
|
|
- `L_APPOITMENT_PERIOD` varchar(4) NOT NULL DEFAULT 'N/S;',
|
|
|
- `L_APPOITMENT_INFO` varchar(255) NOT NULL DEFAULT 'N/S;',
|
|
|
- `L_APPOITMENT_TYPE` varchar(16) NOT NULL DEFAULT 'N/S;',
|
|
|
- `A_RECORD_CREATE_DATE` varchar(20) NOT NULL DEFAULT 'N/S;',
|
|
|
- `A_RECORD_CREATE_AUTHOR` varchar(20) NOT NULL DEFAULT 'N/S;',
|
|
|
- `A_RECORD_UPDATE_DATE` varchar(20) NOT NULL DEFAULT 'N/S;',
|
|
|
- `A_RECORD_UPDATE_AUTHOR` varchar(20) NOT NULL DEFAULT 'N/S;',
|
|
|
- `A_PROBLEM` varchar(16) NOT NULL DEFAULT 'N/S;',
|
|
|
- `A_PROBLEM_DESC` varchar(255) NOT NULL DEFAULT 'N/S;',
|
|
|
- `A_PROBLEM_DATE` varchar(30) NOT NULL DEFAULT 'N/S;',
|
|
|
- `T_WORKPOINTS` varchar(100) NOT NULL DEFAULT 'N/S;',
|
|
|
- `T_WORKPOINTS_VALUE` varchar(100) NOT NULL DEFAULT 'N/S;',
|
|
|
- `T_WORKPOINTS_TYPE` varchar(100) NOT NULL DEFAULT 'N/S;',
|
|
|
- `T_WORKPOINTS_USER` varchar(100) NOT NULL DEFAULT 'N/S;',
|
|
|
- `T_WORKPOINTS_DATE` varchar(100) NOT NULL DEFAULT 'N/S;',
|
|
|
- `A_CLASSIFIED` varchar(100) NOT NULL DEFAULT 'N/S;',
|
|
|
- `A_ADM_COMPANY` varchar(100) NOT NULL DEFAULT 'N/S;',
|
|
|
- `ROZLICZ_MONTH` varchar(20) NOT NULL DEFAULT 'N/S;',
|
|
|
- `ROZLICZ_CONFIRM` varchar(11) NOT NULL DEFAULT 'N/S;',
|
|
|
- `SALDO` varchar(11) NOT NULL DEFAULT 'N/S;',
|
|
|
- `ILE_ODZYSKANO` varchar(11) NOT NULL DEFAULT 'N/S;',
|
|
|
- PRIMARY KEY (`ID`),
|
|
|
- KEY `ID_USERS2` (`ID_USERS2`)
|
|
|
- ) ENGINE=MyISAM DEFAULT CHARSET=latin2;
|
|
|
- ");
|
|
|
- }
|
|
|
}
|