diff --git a/app/Config/Routes.php b/app/Config/Routes.php
index aa9a5cc..802a3be 100644
--- a/app/Config/Routes.php
+++ b/app/Config/Routes.php
@@ -72,7 +72,6 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au
});
$routes->group('payment', function ($routes) {
$routes->get('/', 'PaymentController::index');
- //일회성결제관련용
$routes->get('create', 'PaymentController::create_form');
$routes->post('create', 'PaymentController::create');
$routes->get('modify/(:num)', 'PaymentController::modify_form/$1');
@@ -83,9 +82,6 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au
$routes->post('batchjob', 'PaymentController::batchjob');
$routes->post('batchjob_delete', 'PaymentController::batchjob_delete');
$routes->get('download/(:alpha)', 'PaymentController::download/$1');
- //결체처리
- $routes->post('paid', 'PaymentController::paid');
- //청구서발행용
$routes->post('invoice', 'PaymentController::invoice');
});
//Customer 관련
diff --git a/app/Controllers/AbstractCRUDController.php b/app/Controllers/AbstractCRUDController.php
index d9ac0ec..26ed81b 100644
--- a/app/Controllers/AbstractCRUDController.php
+++ b/app/Controllers/AbstractCRUDController.php
@@ -21,7 +21,8 @@ abstract class AbstractCRUDController extends AbstractWebController
protected function create_form_process(array $formDatas = []): array
{
- // Form Default값 설정 (오버라이드 포인트)
+ //초기 기본 Default값 지정
+ $formDatas = $this->request->getVar();
return $formDatas;
}
@@ -102,6 +103,7 @@ abstract class AbstractCRUDController extends AbstractWebController
}
$this->addViewDatas('entity', $entity);
$action = __FUNCTION__;
+ //FormService에서 필요한 기존 데이터를 $entity에서 추출해서 넘김
$this->action_init_process($action, $entity->toArray());
return $this->modify_form_result_process($action);
} catch (\Throwable $e) {
diff --git a/app/Controllers/AbstractWebController.php b/app/Controllers/AbstractWebController.php
index 9aa9d3c..a771dbe 100644
--- a/app/Controllers/AbstractWebController.php
+++ b/app/Controllers/AbstractWebController.php
@@ -118,6 +118,8 @@ abstract class AbstractWebController extends Controller
if ($template_path) {
$view_path .= '/' . $template_path;
}
+ //최종 ViewPath
+ $viewDatas['view_path'] = $view_path;
$full_path = $view_path . '/' . $view_file;
// echo $full_path;
// exit;
diff --git a/app/Controllers/Admin/Customer/ServiceController.php b/app/Controllers/Admin/Customer/ServiceController.php
index 774a6e4..2dabcdd 100644
--- a/app/Controllers/Admin/Customer/ServiceController.php
+++ b/app/Controllers/Admin/Customer/ServiceController.php
@@ -27,6 +27,7 @@ class ServiceController extends CustomerController
//Custom 추가 함수
public function create_form_process(array $formDatas = []): array
{
+ $formDatas = parent::create_form_process($formDatas);
$formDatas['location'] = 'chiba';
$formDatas['rack'] = '100000';
$formDatas['line'] = '300000';
diff --git a/app/Controllers/Admin/Equipment/ServerController.php b/app/Controllers/Admin/Equipment/ServerController.php
index 3cc43ad..32d7a2f 100644
--- a/app/Controllers/Admin/Equipment/ServerController.php
+++ b/app/Controllers/Admin/Equipment/ServerController.php
@@ -27,6 +27,7 @@ class ServerController extends EquipmentController
//Custom 추가 함수
public function create_form_process(array $formDatas = []): array
{
+ $formDatas = parent::create_form_process($formDatas);
$formDatas['code'] = sprintf("%d%dXX-M%d", date("y"), ceil((int)date("m") / 3), $this->service->getNextPK());
return $formDatas;
}
diff --git a/app/Controllers/Admin/PaymentController.php b/app/Controllers/Admin/PaymentController.php
index 1f86c17..252cc4c 100644
--- a/app/Controllers/Admin/PaymentController.php
+++ b/app/Controllers/Admin/PaymentController.php
@@ -2,7 +2,10 @@
namespace App\Controllers\Admin;
+use App\Entities\Customer\ClientEntity;
+use App\Entities\Customer\ServiceEntity;
use App\Entities\PaymentEntity;
+use CodeIgniter\HTTP\RedirectResponse;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;
@@ -24,4 +27,77 @@ class PaymentController extends AdminController
}
//기본 함수 작업
//Custom 추가 함수
+ //일회성 추가용
+ public function create_form_process(array $formDatas = []): array
+ {
+ $formDatas = parent::create_form_process($formDatas);
+ $formDatas['billing'] = PAYMENT['BILLING']['ONETIME'];
+ $formDatas['billing_at'] = date('Y-m-d');
+ $formDatas['pay'] = PAYMENT['PAY']['ACCOUNT'];
+ $formDatas['status'] = STATUS['UNPAID'];
+ return $formDatas;
+ }
+ //청구서 발행관련
+ private function invoice_pre_process(): array
+ {
+ $postDatas = $this->request->getPost();
+ $uids = $postDatas['batchjob_uids'] ?? [];
+ if (empty($uids)) {
+ throw new \Exception("청구서에 적용될 리스트를 선택하셔야합니다");
+ }
+ return $uids;
+ }
+ private function invoice_result_process(string $action): string|RedirectResponse
+ {
+ return $this->action_render_process($action, $this->getViewDatas(), $this->request->getVar('ActionTemplate') ?? 'payment');
+ }
+ public function invoice(): string|RedirectResponse
+ {
+ try {
+ $action = __FUNCTION__;
+ $this->action_init_process($action);
+ //변경할 UIDS
+ $uids = $this->invoice_pre_process();
+ $rows = [];
+ $clientEntities = [];
+ $serviceEntities = [];
+ foreach ($uids as $uid) {
+ //기존 Entity 가져오기
+ $entity = $this->service->getEntity($uid);
+ if (!$entity instanceof PaymentEntity) {
+ throw new \Exception(__METHOD__ . "에서 {$uid}에 대한 결제정보를 찾을수 없습니다.");
+ }
+ //지급기한일이 오늘보다 작거나 같고 미지급인경우
+ if ($entity->getBillingAt() <= date("Y-m-d") && $entity->getStatus() === STATUS['UNPAID']) {
+ //고객 정보가져오기
+ if (array_key_exists($entity->getClientInfoUID(), $clientEntities)) {
+ $clientEntity = $clientEntities[$entity->getClientInfoUID()];
+ } else {
+ $clientEntity = service('customer_clientservice')->getEntity($entity->getClientInfoUID());
+ if (!$clientEntity instanceof ClientEntity) {
+ throw new \Exception(__METHOD__ . "에서 오류발생:{$entity->getClientInfoUID()}에 대한 고객정보를 찾을수 없습니다.");
+ }
+ $clientEntities[$entity->getClientInfoUID()] = $clientEntity;
+ }
+ //서비스 정보가져오기
+ if (array_key_exists($entity->getServiceInfoUid(), $serviceEntities)) {
+ $serviceEntity = $serviceEntities[$entity->getServiceInfoUid()];
+ } else {
+ $serviceEntity = service('customer_serviceservice')->getEntity($entity->getServiceInfoUid());
+ if (!$serviceEntity instanceof ServiceEntity) {
+ throw new \Exception(__METHOD__ . "에서 오류발생:{$entity->getServiceInfoUid()}에 대한 서비스정보를 찾을수 없습니다.");
+ }
+ $serviceEntities[$entity->getServiceInfoUid()] = $serviceEntity;
+ }
+ //Invoice Data 가져오기
+ $rows = $this->service->getInvoices($clientEntity, $serviceEntity, $entity, $rows);
+ }
+ }
+ // dd($rows);
+ $this->addViewDatas('rows', $rows);
+ return $this->invoice_result_process($action);
+ } catch (\Throwable $e) {
+ return $this->action_redirect_process('error', "{$this->getTitle()}에서 청구서발행 오류:" . $e->getMessage());
+ }
+ }
}
diff --git a/app/Controllers/CommonController.php b/app/Controllers/CommonController.php
index 96f961f..21af014 100644
--- a/app/Controllers/CommonController.php
+++ b/app/Controllers/CommonController.php
@@ -5,7 +5,6 @@ namespace App\Controllers;
use App\Entities\CommonEntity;
use CodeIgniter\HTTP\DownloadResponse;
use CodeIgniter\HTTP\RedirectResponse;
-use CodeIgniter\Validation\Exceptions\ValidationException;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Reader\Html;
use PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf;
@@ -21,22 +20,17 @@ abstract class CommonController extends AbstractCRUDController
protected function batchjob_pre_process(array $postDatas = []): array
{
$postDatas = $this->request->getPost();
-
// 1. postDatas에서 선택된 uids 정보 추출
$uids = $postDatas['batchjob_uids'] ?? [];
if (empty($uids)) {
throw new \Exception("적용할 리스트을 선택하셔야합니다.");
}
-
// 2. 변경할 데이터 추출 및 정리
- unset($postDatas['batchjob_uids'], $postDatas['batchjob_submit']);
-
+ unset($postDatas['batchjob_uids'], $postDatas['batchjob_submit']); //formDatas에 포함되지 않게하기위함
$formDatas = array_filter($postDatas, fn($value) => $value !== "" && $value !== null);
-
if (empty($formDatas)) {
throw new \Exception("변경할 조건항목을 선택하셔야합니다.");
}
-
// 3. 데이터가 있는 필드 추출
$selectedFields = array_keys($formDatas);
return array($uids, $selectedFields, $formDatas);
@@ -89,11 +83,9 @@ abstract class CommonController extends AbstractCRUDController
{
$postDatas = $this->request->getPost();
$uids = $postDatas['batchjob_uids'] ?? [];
-
if (empty($uids)) {
throw new \Exception("삭제할 리스트을 선택하셔야합니다.");
}
- // $uids는 배열로 반환
return $uids;
}
diff --git a/app/Forms/Equipment/ServerForm.php b/app/Forms/Equipment/ServerForm.php
index c935659..01a2b3c 100644
--- a/app/Forms/Equipment/ServerForm.php
+++ b/app/Forms/Equipment/ServerForm.php
@@ -89,6 +89,7 @@ class ServerForm extends EquipmentForm
$tempOptions[$tempEntity->getTitle()] = $tempEntity->getTitle();
// $options['attributes'][$tempEntity->getPK()] = ['data-role' => implode(DEFAULTS['DELIMITER_ROLE'], $tempEntity->getRole())];
}
+ //formDatas에 값이 있고, $tempOptions에 없다면 추가(VPN의 경우)
if (array_key_exists($field, $formDatas) && $formDatas[$field]) {
if (!array_key_exists($formDatas[$field], $tempOptions)) {
$tempOptions[$formDatas[$field]] = $formDatas[$field];
diff --git a/app/Services/CommonService.php b/app/Services/CommonService.php
index 395f1a1..5569321 100644
--- a/app/Services/CommonService.php
+++ b/app/Services/CommonService.php
@@ -336,7 +336,9 @@ abstract class CommonService
public function setOrderBy(mixed $field = null, mixed $value = null): void
{
if ($field !== null && $value !== null) {
- $this->model->orderBy(sprintf(" %s.%s %s", $this->model->getTable(), $field, $value));
+ $this->model->orderBy(sprintf("%s.%s %s", $this->model->getTable(), $field, $value));
+ } else {
+ $this->model->orderBy(sprintf("%s.%s %s", $this->model->getTable(), $this->model->getPKField(), "DESC"));
}
}
}
diff --git a/app/Services/Customer/AccountService.php b/app/Services/Customer/AccountService.php
index 588d45c..ac1bca0 100644
--- a/app/Services/Customer/AccountService.php
+++ b/app/Services/Customer/AccountService.php
@@ -86,7 +86,16 @@ class AccountService extends CustomerService
break;
case 'index':
case 'download':
- $fields = [...$fields, 'created_at'];
+ $fields = [
+ "clientinfo_uid",
+ "bank",
+ "title",
+ "alias",
+ "issue_at",
+ "amount",
+ "status",
+ 'created_at',
+ ];
break;
}
$this->getFormService()->setFormFields($fields);
diff --git a/app/Services/Customer/CouponService.php b/app/Services/Customer/CouponService.php
index b3af376..2688630 100644
--- a/app/Services/Customer/CouponService.php
+++ b/app/Services/Customer/CouponService.php
@@ -80,7 +80,13 @@ class CouponService extends CustomerService
break;
case 'index':
case 'download':
- $fields = [...$fields, 'created_at'];
+ $fields = [
+ "clientinfo_uid",
+ "title",
+ "cnt",
+ "status",
+ 'created_at'
+ ];
break;
}
$this->getFormService()->setFormFields($fields);
diff --git a/app/Services/Customer/PointService.php b/app/Services/Customer/PointService.php
index f612376..544ac0a 100644
--- a/app/Services/Customer/PointService.php
+++ b/app/Services/Customer/PointService.php
@@ -59,9 +59,9 @@ class PointService extends CustomerService
$fields = [
"clientinfo_uid",
"title",
- "content",
"amount",
"status",
+ "content",
];
$filters = [
"clientinfo_uid",
@@ -80,7 +80,13 @@ class PointService extends CustomerService
break;
case 'index':
case 'download':
- $fields = [...$fields, 'created_at'];
+ $fields = [
+ "clientinfo_uid",
+ "title",
+ "amount",
+ "status",
+ 'created_at'
+ ];
break;
}
$this->getFormService()->setFormFields($fields);
diff --git a/app/Services/Equipment/LineService.php b/app/Services/Equipment/LineService.php
index 1bc8e6a..90012c1 100644
--- a/app/Services/Equipment/LineService.php
+++ b/app/Services/Equipment/LineService.php
@@ -64,7 +64,7 @@ class LineService extends EquipmentService
"end_at",
];
$filters = [
- "clientinfo_uid",
+ "type",
"status",
];
$indexFilter = $filters;
diff --git a/app/Services/Equipment/ServerService.php b/app/Services/Equipment/ServerService.php
index 897e6d5..7055cbf 100644
--- a/app/Services/Equipment/ServerService.php
+++ b/app/Services/Equipment/ServerService.php
@@ -169,7 +169,7 @@ class ServerService extends EquipmentService
// dd($totalCounts);
return $totalCounts;
}
- //검색어에 따른 서버정보를 검색 후 해당하는 서비스리스트를 가져온다.
+ //전체 검색어에 따른 서버정보를 검색 후 해당하는 서비스리스트를 가져온다.
final public function getSearchServices(string $keyword): array
{
$builder = $this->model->distinct()->select('serverinfo.serviceinfo_uid AS serviceinfo_uid')
@@ -227,4 +227,14 @@ class ServerService extends EquipmentService
// $this->getServiceService()->setAmount($serviceEntity, $this->getCalculatedAmount($entity));
// return $entity;
// }
+
+ //List 검색용
+ //FormFilter 조건절 처리
+ //검색어조건절처리
+ public function setSearchWord(string $word): void
+ {
+ $this->model->orLike($this->model->getTable() . '.ip', $word, 'both');
+ parent::setSearchWord($word);
+ }
+ //OrderBy 처리
}
diff --git a/app/Services/PaymentService.php b/app/Services/PaymentService.php
index f5aecfb..28644f2 100644
--- a/app/Services/PaymentService.php
+++ b/app/Services/PaymentService.php
@@ -3,6 +3,9 @@
namespace App\Services;
use App\DTOs\PaymentDTO;
+use App\Entities\Customer\ClientEntity;
+use App\Entities\Customer\ServiceEntity;
+use App\Entities\Equipment\ServerEntity;
use App\Entities\PaymentEntity;
use App\Forms\PaymentForm;
use App\Helpers\PaymentHelper;
@@ -62,27 +65,20 @@ class PaymentService extends CommonService
"amount",
"billing",
"billing_at",
+ "pay",
+ "status",
"content",
];
$filters = ['user_uid', 'clientinfo_uid', 'serviceinfo_uid', 'status', 'billing', 'pay'];
$indexFilter = ['clientinfo_uid', 'serviceinfo_uid', 'status', 'billing'];
$batchjobFilters = ['status'];
+ $batchjobButtons = ['batchjob' => '일괄결제', 'invoice' => '청구서발행'];
switch ($action) {
case 'create':
case 'create_form':
break;
case 'modify':
case 'modify_form':
- $fields = [
- "serviceinfo_uid",
- "title",
- "amount",
- "billing",
- "billing_at",
- "pay",
- "status",
- "content"
- ];
break;
case 'view':
$fields = [
@@ -125,6 +121,7 @@ class PaymentService extends CommonService
$this->getFormService()->setFormOptions($action, $filters, $formDatas);
$this->getFormService()->setIndexFilters($indexFilter);
$this->getFormService()->setBatchjobFilters($batchjobFilters);
+ $this->getFormService()->setBatchjobButtons($batchjobButtons);
}
//기본 기능부분
protected function getEntity_process(mixed $entity): PaymentEntity
@@ -178,4 +175,37 @@ class PaymentService extends CommonService
}
return $unPaids;
}
+
+ //청구서 관련
+ public function getInvoices(ClientEntity $clientEntity, ServiceEntity $serviceEntity, PaymentEntity $entity, array $rows): array
+ {
+ if (!array_key_exists($clientEntity->getPK(), $rows)) {
+ $rows[$clientEntity->getPK()] = [
+ 'name' => $clientEntity->getName(),
+ 'total_amount' => 0,
+ 'services' => [],
+ ];
+ }
+ if (!array_key_exists($serviceEntity->getPK(), $rows[$clientEntity->getPK()]['services'])) {
+ $serverEntity = service('equipment_serverservice')->getEntity($serviceEntity->getServerInfoUID());
+ if (!$serverEntity instanceof ServerEntity) {
+ dd($serverEntity);
+ throw new \Exception(__METHOD__ . "에서 오류발생:[{$serviceEntity->getServerInfoUID()}]에 대한 서버정보를 찾을 수 없습니다.");
+ }
+ $rows[$clientEntity->getPK()]['services'][$serviceEntity->getPK()] = [
+ 'ip' => $serverEntity->getIP(),
+ 'billing_at' => $serviceEntity->getBillingAt(),
+ 'amount' => 0,
+ 'items' => [],
+ ];
+ }
+ //entities에 총 결제금액 설정
+ $rows[$clientEntity->getPK()]['services'][$serviceEntity->getPK()]['items'][] = [
+ 'title' => $entity->getTitle(),
+ 'amount' => $entity->getAmount()
+ ];
+ $rows[$clientEntity->getPK()]['services'][$serviceEntity->getPK()]['amount'] += $entity->getAmount();
+ $rows[$clientEntity->getPK()]['total_amount'] += $entity->getAmount();
+ return $rows;
+ }
}
diff --git a/app/Views/admin/create_form.php b/app/Views/admin/create_form.php
index 83ef1b2..55537cd 100644
--- a/app/Views/admin/create_form.php
+++ b/app/Views/admin/create_form.php
@@ -5,6 +5,9 @@
= $this->include("{$viewDatas['layout']['template']}/form_content_top"); ?>
= form_open(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
+
+ | = $viewDatas['title'] ?> |
+
$label): ?>
| = $viewDatas['helper']->getFieldLabel($field, $label, $viewDatas) ?> |
diff --git a/app/Views/admin/modify_form.php b/app/Views/admin/modify_form.php
index bae98a4..3b7ac34 100644
--- a/app/Views/admin/modify_form.php
+++ b/app/Views/admin/modify_form.php
@@ -5,6 +5,9 @@
= $this->include("{$viewDatas['layout']['template']}/form_content_top"); ?>
= form_open(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
+
+ | = $viewDatas['title'] ?> |
+
$label): ?>
| = $viewDatas['helper']->getFieldLabel($field, $label, $viewDatas) ?> |
diff --git a/app/Views/admin/payment/invoice.php b/app/Views/admin/payment/invoice.php
new file mode 100644
index 0000000..5568c9d
--- /dev/null
+++ b/app/Views/admin/payment/invoice.php
@@ -0,0 +1,56 @@
+= $this->extend($viewDatas['layout']['layout']) ?>
+= $this->section('content') ?>
+
+= $this->endSection() ?>
\ No newline at end of file
diff --git a/app/Views/admin/payment/invoice_info.php b/app/Views/admin/payment/invoice_info.php
new file mode 100644
index 0000000..c138a99
--- /dev/null
+++ b/app/Views/admin/payment/invoice_info.php
@@ -0,0 +1,74 @@
+
+※ 청구서를 받으셨던 서버인 경우에도 발행하는 시점까지 미납인 경우 재 발행됩니다.
+ 입금을 하신 경우에는 연락 부탁드립니다. 입금 하실 계좌 번호 입니다.
+
+ 은행명 : 국민은행
+ 계좌번호 : 331301-04-217387
+ 예금주 : 주)듀나미스
+
+고객명과 입금자명이 상이한 경우 반드시 확인 연락이 필요합니다.
+입금 시 당 청구서에 기재되어 있는 고객명으로 입금해주시면 별도의 입금 확인
+전화가 필요없습니다.
+
+※ 기타 서비스 요금 안내
+- 도메인 구매 대행 서비스 : 도메인 1개당 3만원 (1회성 비용으로 구매를
+ 요청하신 달에만 요금이 청구됩니다)
+- IP 추가 : 일반회선 10만원 / 보안회선 10만원(추가 하신 날로 부터 사용을 중지
+ 하시는 달까지 매월 요금이 청구 됩니다.)
+- IP 변경
+- 단순 IP 변경의 경우(오래 사용하여 변경, 정기적인 변경, 관리자 변경 등)에는
+ 무료로 변경 해 드리고 있습니다.
+- IP에 문제(KCSC로 연결, 접근(원격접속) 차단, 공격을 받아 다른 IP로 변경 등)가
+ 있어 변경 하실 경우에는 요금이 청구 됩니다.
+* 청구비용 10만원 (1회성 비용으로 구매를 요청하신 달에만 요금이 청구 됩니다)
+- 위 서비스는 선입금으로 제공 해 드리고 있습니다.
+- VPN 결제일의 자정까지 결제처리가 안될시 자동차단처리가 되게됩니다.
+ 이점 양해 부탁드리겠습니다.
+※ 이용 해지시에는 사용하셨던 IP에 연결 되어 있는 도메인들은 꼭 연결 해제를
+ 해 주시기 바랍니다.
+보장 트래픽 : 기본 트래픽 사용량은 IN 10Mbps / OUT 10Mbps 입니다
+보장 트래픽 이상을 사용할 경우 트래픽 과금이 발생할 수 있습니다
+※ 알림(필히 숙지 하여 주시기 바랍니다.)
+
+1. 에 등록 하신 고객명 / 전화번호 / 메일 주소는 차후 고객님 확인을 위해
+사용되오니고객님께서도 필히 알고 계셔야 합니다.
+또한 전화번호와 메일주소 또는 메신저는 고객님에게 연락을 취해야 할 경우
+사용됩니다.변동사항이 있을 경우에는 반드시 연락을 하여 변경해 주시기 바랍니다.
+
+변동사항을 에게 알려 주시지 않거나, 에 등록된 연락처로 연락을 해도 연결이 안되어
+발생하는 피해에 대해서는 책임을 지지 않습니다.
+
+2. 결제는 납부기한내에 해 주셔야 합니다.
+혹시라도 납부기한내에 결제를 하지 못하실 경우는 미리 연락을 주시면 납부기한 후
+최대 3일간은 서버 접속이 유지됩니다.
+하지만 납부기한까지 연락을 안주시거나 연락을 하셨더라도 납부기한을
+3일 초과하시면 서버 접속이 차단되고 차단후에도 3일동안 연락이 없을 경우
+자동 해지 처리 되고 데이터는 삭제처리 되오니 주의 하시기 바랍니다.
+
+3. 환불정책
+월단위 계약(계산)이므로 중도 환불(일할계산)은 안됩니다.
+단, 셋팅에 문제가 있거나 기타 문제가 있을 경우 서버를 인계 받으시고 3일 안으로는
+환불 요청을 하실 수 있습니다.
+
+4. 서버 운영중 해킹으로 발생한 피해는 저희 에서 책임을 지지 않습니다.
+서버운영에 있어서 보안에 각별히 주의 부탁드리겠습니다.
+<해킹 대비 및 보안조치사항>
+- 주기적인 window 보안 업데이트
+- linux ,mysql , php, jsp 보안권고
+- 서버 원격 접속 패스워드 및 mssql 패스워드 변경
+* 영문,숫자,특수문자 8자리 이상 조합하여 사용 권고
+* 매월 주기적으로 패스워드 변경
+* 패스워드 노출 시 즉각 변경
+- 서버내 방화벽에서 특정IP만 서버에 접속할 수 있도록 방화벽 설정
+- 원격접속 포트 기본포트에서 변경 설정 (기본 포트 window : 3389 / linux : 22 )
+* 무료 설치 : Microsoft Security Essential 설치
+- 웹서비스 보안을 위한 웹방화벽 설치 대행서비스(유료)
+
+# 원격포트 변경 및 원격접속 제한 설정은 홈페이지에 등록되어 있습니다.
+자세한 사항은 센터로 문의주시기 바랍니다.
+
+5. 서버 운영중 장비부품 문제(예:하드디스크의 고장 등)로 발생한 피해는
+ 책임을 지지 않습니다.
+ (요청하시면 백업을 위해 무료로 추가 하드를 제공해 드리고 있지만, 추가가 불가능한
+ 경우도 있습니다. 번거로우시더라도 주기적인 데이터백업을 부탁드리겠습니다.)
+
\ No newline at end of file
diff --git a/app/Views/admin/payment/invoice_items.php b/app/Views/admin/payment/invoice_items.php
new file mode 100644
index 0000000..6189828
--- /dev/null
+++ b/app/Views/admin/payment/invoice_items.php
@@ -0,0 +1,13 @@
+
+
+
+
+ | = $cnt++ ?>. = $item['title'] ?> |
+ = number_format($item['amount']) ?>원 |
+
+
+
+ | 총계 |
+ = number_format($service['amount']) ?>원 |
+
+
\ No newline at end of file
diff --git a/app/Views/admin/payment/invoice_mobile.php b/app/Views/admin/payment/invoice_mobile.php
new file mode 100644
index 0000000..62181ee
--- /dev/null
+++ b/app/Views/admin/payment/invoice_mobile.php
@@ -0,0 +1,22 @@
+
+
+
\ No newline at end of file
diff --git a/app/Views/admin/popup/create_form.php b/app/Views/admin/popup/create_form.php
index 83ef1b2..55537cd 100644
--- a/app/Views/admin/popup/create_form.php
+++ b/app/Views/admin/popup/create_form.php
@@ -5,6 +5,9 @@
= $this->include("{$viewDatas['layout']['template']}/form_content_top"); ?>
= form_open(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
+
+ | = $viewDatas['title'] ?> |
+
$label): ?>
| = $viewDatas['helper']->getFieldLabel($field, $label, $viewDatas) ?> |
diff --git a/app/Views/admin/popup/modify_form.php b/app/Views/admin/popup/modify_form.php
index bae98a4..3b7ac34 100644
--- a/app/Views/admin/popup/modify_form.php
+++ b/app/Views/admin/popup/modify_form.php
@@ -5,6 +5,9 @@
= $this->include("{$viewDatas['layout']['template']}/form_content_top"); ?>
= form_open(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
+
+ | = $viewDatas['title'] ?> |
+
$label): ?>
| = $viewDatas['helper']->getFieldLabel($field, $label, $viewDatas) ?> |
diff --git a/app/Views/admin/popup/view.php b/app/Views/admin/popup/view.php
index c6ba660..e8fac79 100644
--- a/app/Views/admin/popup/view.php
+++ b/app/Views/admin/popup/view.php
@@ -4,6 +4,9 @@
= $this->include("{$viewDatas['layout']['template']}/form_content_top"); ?>
+
+ | = $viewDatas['title'] ?> |
+
$label): ?>
| = $viewDatas['helper']->getFieldLabel($field, $label, $viewDatas) ?> |
diff --git a/app/Views/admin/server/modify_form.php b/app/Views/admin/server/modify_form.php
index 2e3f08a..2078e22 100644
--- a/app/Views/admin/server/modify_form.php
+++ b/app/Views/admin/server/modify_form.php
@@ -7,7 +7,7 @@
| 서버정보[= $viewDatas['entity']->getCode() ?>] |
- 추가정보 |
+ 부가서비스 |
diff --git a/app/Views/admin/view.php b/app/Views/admin/view.php
index c6ba660..e8fac79 100644
--- a/app/Views/admin/view.php
+++ b/app/Views/admin/view.php
@@ -4,6 +4,9 @@
= $this->include("{$viewDatas['layout']['template']}/form_content_top"); ?>
+
+ | = $viewDatas['title'] ?> |
+
$label): ?>
| = $viewDatas['helper']->getFieldLabel($field, $label, $viewDatas) ?> |
|