diff --git a/extdbms/lib/Controllers/DBMS/Client/PaymentController.php b/extdbms/lib/Controllers/DBMS/Client/PaymentController.php index 3941ef9..3be7500 100644 --- a/extdbms/lib/Controllers/DBMS/Client/PaymentController.php +++ b/extdbms/lib/Controllers/DBMS/Client/PaymentController.php @@ -2,6 +2,8 @@ namespace lib\Controllers\DBMS\Client; +use lib\Models\AddDbModel; +use lib\Models\ClientModel; use lib\Utils\Pagination; class PaymentController extends ClientController @@ -44,42 +46,53 @@ class PaymentController extends ClientController //WEB 접속방법 : http://localhostsite/client/payment/unpaid public function nonpayment(array $params): string { - //사이트 정보 가져오기 - if (!array_key_exists('sitekey', $params)) { - throw new \Exception("sitekey 값이 정의되지 않았습니다."); - } - $sitekey = $params['sitekey']; - $this->siteInfo = DBMS_SITEINFOS[$sitekey]; - if (!array_key_exists($sitekey, DBMS_SITEINFOS)) { - throw new \Exception("[{$sitekey}]에 해당하는 사이트정보가 없습니다."); - } - //사용자정보가져오기 - $client_code = $params['client_code']; - if (!array_key_exists('client_code', $params)) { - throw new \Exception("client_code 값이 정의되지 않았습니다."); - } - $client = $this->getClientService()->getEntityByCode($client_code); - if (!$client) { - throw new \Exception("[{$client_code}]에 해당하는 사이트정보가 없습니다."); - } - $this->client = $client; + //Client_Code = ["C219"=>WinIDC,"C116"=>IDC-JP"] -> 미지급금계산 제외 Client_Code + $exclude_clients = ['C116', 'C219']; //mode 당일,1일전,2일전,3일전,custom - $nonpaymentDay = 'all'; + $today = date("Y-m-d"); switch ($params['mode']) { + case 'today': + $this->getServiceService()->getModel()->where("service_payment_date = CURDATE()"); + $this->message = "오늘[{$today}]기준 당일 "; + break; case '1day': + $nonpaymentDay = 1; + $this->getServiceService()->getModel()->where("service_payment_date = Date_Add(CURDATE(),INTERVAL {$nonpaymentDay} DAY)"); + $this->message = "오늘[{$today}]기준 {$nonpaymentDay}일전"; break; case '2day': + $nonpaymentDay = 2; + $this->getServiceService()->getModel()->where("service_payment_date = Date_Add(CURDATE(),INTERVAL {$nonpaymentDay} DAY)"); + $this->message = "오늘[{$today}]기준 {$nonpaymentDay}일전"; break; case '3day': + $nonpaymentDay = 3; + $this->getServiceService()->getModel()->where("service_payment_date = Date_Add(CURDATE(),INTERVAL {$nonpaymentDay} DAY)"); + $this->message = "오늘[{$today}]기준 {$nonpaymentDay}일전"; break; - case 'custom': - break; + case 'all': default: + $this->message = "오늘[{$today}]기준 전체"; + break; } - $total = count($temps); - $page = $parmas['page'] ?? 1; - $perPage = $parmas['perPage'] ?? 10; - $this->pagination = new Pagination($total, (int)$page, (int)$perPage); + $table = $this->getServiceService()->getModel()->getTable(); + $clientTable = ClientModel::TABLE; + $addDbTable = AddDbModel::TABLE; + $this->getServiceService()->getModel()->select("{$clientTable}.Client_Name,{$table}.service_code,service_line,server_code,service_ip,service_payment_date,service_amount,service_nonpayment,service_note,addDB_case,addDB_nonpayment,addDB_payment,addDB_accountStatus,addDB_ip,addDB_payment_date"); + $this->getServiceService()->getModel()->join($clientTable, "{$table}.client_code = {$clientTable}.Client_Code"); + $this->getServiceService()->getModel()->join($addDbTable, "{$table}.service_code = {$addDbTable}.service_code"); + $this->getServiceService()->getModel()->whereNotIn("{$addDbTable}.client_code", $exclude_clients); + $this->getServiceService()->getModel()->whereNotIn("{$addDbTable}.addDB_accountStatus", ["complete"]); + $this->getServiceService()->getModel()->orderBy("service_payment_date", "DESC"); + + $this->mode = $params['mode']; + $this->total = $this->getServiceService()->getCount(); + $this->entities = $this->getServiceService()->getEntities(); + // $total = count($temps); + // $page = $parmas['page'] ?? 1; + // $perPage = $parmas['perPage'] ?? 10; + // $this->pagination = new Pagination($total, (int)$page, (int)$perPage); + //
SQL DEBUG: " . $this->toRawSql() . ""; + ? "\nSQL DEBUG: " . $this->toRawSql($select) . "\n" + : "
SQL DEBUG: " . $this->toRawSql($select) . ""; } $this->latestQuery = $this->toRawSql(); - $stmt = $this->pdo->prepare($this->buildSelectSql()); + $stmt = $this->pdo->prepare($this->buildSelectSql($select)); foreach ($this->bindings as $key => $value) { $stmt->bindValue($key, $value); } $stmt->execute(); + return $stmt; + } + final public function get(): array + { + $stmt = $this->execute(); $this->where = []; $this->bindings = []; return $stmt->fetchAll(PDO::FETCH_ASSOC); } - final public function first(): ?array { $this->limit = 1; $results = $this->get(); return $results[0] ?? null; } - final public function count(string $select = "COUNT(*) as cnt"): int { - $this->select = [$select]; - $results = $this->get(); + $stmt = $this->execute($select); + $results = $stmt->fetchAll(PDO::FETCH_ASSOC); return (int)($results[0]['cnt'] ?? 0); } diff --git a/extdbms/lib/Views/dbms/client/payment/nonpayment.php b/extdbms/lib/Views/dbms/client/payment/nonpayment.php index 0ab786f..df461cc 100644 --- a/extdbms/lib/Views/dbms/client/payment/nonpayment.php +++ b/extdbms/lib/Views/dbms/client/payment/nonpayment.php @@ -1,128 +1,13 @@ - -// 기본 설정 로딩 -require_once 'config.php'; -require_once 'function.php'; -require_once 'lib.php'; - -//HTML 시작 - -switch ($_GET[mode]) { - case "today": - //당일 - $count = "SELECT count(clientdb.Client_Code) FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = CURDATE() ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC"; - $msg = "당일 미납리스트"; - $checkall2 = "checked"; - break; - case "1day": - //1일전 - $count = "SELECT count(clientdb.Client_Code) FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = Date_Add(curdate(),INTERVAL 1 DAY) ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC "; - $date = str_replace('-', '/', $date); - $date = date('Y-m-d', strtotime($date . "+1 days")); - $msg = "1일전 미납리스트($date)"; - $checkall3 = "checked"; - break; - case "2day": - //2일전 - $count = "SELECT count(clientdb.Client_Code) FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = Date_Add(curdate(),INTERVAL 2 DAY) ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC "; - $date = str_replace('-', '/', $date); - $date = date('Y-m-d', strtotime($date . "+2 days")); - $msg = "2일전 미납리스트($date)"; - $checkall4 = "checked"; - break; - case "3day": - //3일전 - $count = "SELECT count(clientdb.Client_Code) FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = Date_Add(curdate(),INTERVAL 3 DAY) ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC "; - $date = str_replace('-', '/', $date); - $date = date('Y-m-d', strtotime($date . "+3 days")); - $msg = "3일전 미납리스트($date)"; - $checkall5 = "checked"; - break; - - case "custom": - //커스텀 - //$count = "SELECT count(servicedb.server_code) FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = CURDATE() Group By server_code ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC"; - $count = "SELECT count(clientdb.Client_Code) FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = Date_Add(curdate(),INTERVAL 1 DAY) Group By server_code ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC"; - $msg = "커스텀 미납리스트($date)+1일"; - $checkall6 = "checked"; - break; - - default: - //전체 - $count = "SELECT count(clientdb.Client_Code) FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC "; - $msg = "전체 미납리스트"; - $checkall1 = "checked"; - break; -} -?> - - -$list_no = (!$_GET[ea]) ? '50' : $_GET[ea]; - -$total_num = mysql_fetch_array(mysql_query($count, $db_connect)); - -$total = $total_num[0]; -if ($list_no > $total) { - $list_no = $total; -} -$total_page = ($total != '0') ? ceil($total / $list_no) : '0'; - -$page = $_GET[curPage]; - -if (!$page) { - $page = 1; -} elseif ($page >= $total_page) { - $page = $total_page; -} else { - $page = $page; -} - -$next_page = ($page - '1') * $list_no; -$next_no = $next_page + $list_no; - -switch ($_GET[mode]) { - case "today": - //당일 - $query = "SELECT clientdb.Client_Code,Client_Name,service_line,server_code,service_ip,service_payment_date,service_amount,service_nonpayment,service_note,adddb_case,adddb.client_code,adddb.service_code,adddb_nonpayment,adddb_payment,adddb_accountStatus,addDB_ip,addDB_payment_date FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = CURDATE() ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC limit " . $next_page . "," . $next_no; - break; - case "1day": - //1일전 - $query = "SELECT clientdb.Client_Code,Client_Name,service_line,server_code,service_ip,service_payment_date,service_amount,service_nonpayment,service_note,adddb_case,adddb.client_code,adddb.service_code,adddb_nonpayment,adddb_payment,adddb_accountStatus,addDB_ip,addDB_payment_date FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = Date_Add(curdate(),INTERVAL 1 DAY) ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC limit " . $next_page . "," . $next_no; - break; - case "2day": - //2일전 - $query = "SELECT clientdb.Client_Code,Client_Name,service_line,server_code,service_ip,service_payment_date,service_amount,service_nonpayment,service_note,adddb_case,adddb.client_code,adddb.service_code,adddb_nonpayment,adddb_payment,adddb_accountStatus,addDB_ip,addDB_payment_date FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = Date_Add(curdate(),INTERVAL 2 DAY) ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC limit " . $next_page . "," . $next_no; - break; - case "3day": - //3일전 - $query = "SELECT clientdb.Client_Code,Client_Name,service_line,server_code,service_ip,service_payment_date,service_amount,service_nonpayment,service_note,adddb_case,adddb.client_code,adddb.service_code,adddb_nonpayment,adddb_payment,adddb_accountStatus,addDB_ip,addDB_payment_date FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = Date_Add(curdate(),INTERVAL 3 DAY) ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC limit " . $next_page . "," . $next_no; - break; - - case "custom": - //커스텀 - //$query = "SELECT clientdb.Client_Code,Client_Name,service_line,server_code,service_ip,service_payment_date,service_amount,service_nonpayment,service_note,adddb_case,adddb.client_code,adddb.service_code,adddb_nonpayment,adddb_payment,adddb_accountStatus,addDB_ip,addDB_payment_date FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = CURDATE() Group By server_code ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC limit ".$next_page.",".$next_no; - $query = "SELECT clientdb.Client_Code,Client_Name,service_line,server_code,service_ip,service_payment_date,service_amount,service_nonpayment,service_note,adddb_case,adddb.client_code,adddb.service_code,adddb_nonpayment,adddb_payment,adddb_accountStatus,addDB_ip,addDB_payment_date FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = Date_Add(curdate(),INTERVAL 1 DAY) Group By server_code ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC limit " . $next_page . "," . $next_no; - break; - - default: - //전체 - $query = "SELECT clientdb.Client_Code,Client_Name,service_line,server_code,service_ip,service_payment_date,service_amount,service_nonpayment,service_note,adddb_case,adddb.client_code,adddb.service_code,adddb_nonpayment,adddb_payment,adddb_accountStatus,addDB_ip,addDB_payment_date FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC limit " . $next_page . "," . $next_no; - break; -} - -$result = @mysql_query($query, $db_connect) or die($db_q_error); -?> - -= $msg ?> 엑셀 + += $this->message ?> 미납리스트 엑셀
| = $data[Client_Name] ?> | -= $data[adddb_case] ?> | -= $data[server_code] ?> | -= $data[service_ip] ?> | - += $entity->Client_Name ?> | += $entity->addDB_case ?> | += $entity->server_code ?> | += $entity->service_ip ?> | + -= $data[service_payment_date] ?> | -= $data[service_amount] ?> | - -= $data[adddb_accountStatus] ?> | -= $data[adddb_nonpayment] ?> | - += $entity->service_payment_date ?> | += $entity->service_amount ?> | + += $entity->addDB_accountStatus ?> | += $entity->addDB_nonpayment ?> | + -= $data[service_note] ?> | += $entity->service_note ?> |