dbmsv4 init...1
This commit is contained in:
parent
6ab2ad8b9f
commit
6bc04300a0
@ -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 관련
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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];
|
||||
|
||||
@ -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"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -64,7 +64,7 @@ class LineService extends EquipmentService
|
||||
"end_at",
|
||||
];
|
||||
$filters = [
|
||||
"clientinfo_uid",
|
||||
"type",
|
||||
"status",
|
||||
];
|
||||
$indexFilter = $filters;
|
||||
|
||||
@ -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 처리
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,6 +5,9 @@
|
||||
<div class="form_top"><?= $this->include("{$viewDatas['layout']['template']}/form_content_top"); ?></div>
|
||||
<?= form_open(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th class="bg-light" colspan="2"><?= $viewDatas['title'] ?></th>
|
||||
</tr>
|
||||
<?php foreach ($viewDatas['formFields'] as $field => $label): ?>
|
||||
<tr>
|
||||
<th nowrap class="text-end bg-light" width="20%"><?= $viewDatas['helper']->getFieldLabel($field, $label, $viewDatas) ?></th>
|
||||
|
||||
@ -5,6 +5,9 @@
|
||||
<div class="form_top"><?= $this->include("{$viewDatas['layout']['template']}/form_content_top"); ?></div>
|
||||
<?= form_open(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th class="bg-light" colspan="2"><?= $viewDatas['title'] ?></th>
|
||||
</tr>
|
||||
<?php foreach ($viewDatas['formFields'] as $field => $label): ?>
|
||||
<tr>
|
||||
<th nowrap class="text-end bg-light" width="20%"><?= $viewDatas['helper']->getFieldLabel($field, $label, $viewDatas) ?></th>
|
||||
|
||||
56
app/Views/admin/payment/invoice.php
Normal file
56
app/Views/admin/payment/invoice.php
Normal file
@ -0,0 +1,56 @@
|
||||
<?= $this->extend($viewDatas['layout']['layout']) ?>
|
||||
<?= $this->section('content') ?>
|
||||
<div id="container" class="content">
|
||||
<link href="/css/<?= $viewDatas['layout']['path'] ?>/form.css" media="screen" rel="stylesheet" type="text/css" />
|
||||
<div class="action_form" style="width:700px;">
|
||||
<!-- 청구서 정보 -->
|
||||
<table class=" table table-bordered text-center">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="p-0">메일 제목</th>
|
||||
<td colspan="3">서비스 요금 청구서 </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="p-0">발신자</th>
|
||||
<td class="p-0">support@prime-idc.jp</td>
|
||||
<th class="p-0">발행일</th>
|
||||
<td class="p-0"><?= date("Y-m-d") ?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- 서비스 테이블 -->
|
||||
<?php foreach ($viewDatas['rows'] as $row): ?>
|
||||
<table class="table table-sm table-bordered text-center">
|
||||
<tr>
|
||||
<th class="p-0">고객명</th>
|
||||
<th class="p-0">총 결제 금액</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="p-0"><?= $row['name'] ?></td>
|
||||
<td class="p-0"><?= number_format($row['total_amount']) ?>원</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<table class="table table-sm table-bordered">
|
||||
<?php foreach ($row['services'] as $service): ?>
|
||||
<tr>
|
||||
<th class="p-0">서버 IP</th>
|
||||
<th class="p-0">항목</th>
|
||||
<th class="p-0">결제일</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="p-0"><?= $service['ip'] ?></td>
|
||||
<td class="p-0" nowrap><?= view("{$viewDatas['view_path']}/invoice_items", ['service' => $service]); ?></td>
|
||||
<td class="p-0 text-nowrap"><?= $service['billing_at'] ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php endforeach; ?>
|
||||
<?= $this->include("{$viewDatas['view_path']}/invoice_info"); ?>
|
||||
<?= $this->include("{$viewDatas['view_path']}/invoice_mobile"); ?>
|
||||
</div>
|
||||
</div>
|
||||
<?= $this->endSection() ?>
|
||||
74
app/Views/admin/payment/invoice_info.php
Normal file
74
app/Views/admin/payment/invoice_info.php
Normal file
@ -0,0 +1,74 @@
|
||||
<pre class="border border-1 text-start">
|
||||
※ 청구서를 받으셨던 서버인 경우에도 발행하는 시점까지 미납인 경우 재 발행됩니다.
|
||||
입금을 하신 경우에는 연락 부탁드립니다. 입금 하실 계좌 번호 입니다.
|
||||
<div class="text-danger">
|
||||
은행명 : 국민은행
|
||||
계좌번호 : 331301-04-217387
|
||||
예금주 : 주)듀나미스
|
||||
</div>
|
||||
고객명과 입금자명이 상이한 경우 반드시 확인 연락이 필요합니다.
|
||||
입금 시 당 청구서에 기재되어 있는 고객명으로 입금해주시면 별도의 입금 확인
|
||||
전화가 필요없습니다.
|
||||
|
||||
※ 기타 서비스 요금 안내
|
||||
- 도메인 구매 대행 서비스 : 도메인 1개당 3만원 (1회성 비용으로 구매를
|
||||
<span class="text-danger">요청하신 달에만 요금이 청구</span>됩니다)
|
||||
- IP 추가 : 일반회선 10만원 / 보안회선 10만원(추가 하신 날로 부터 사용을 중지
|
||||
하시는 달까지 <span class="text-danger">매월 요금이 청구</span> 됩니다.)
|
||||
- IP 변경
|
||||
- 단순 IP 변경의 경우(오래 사용하여 변경, 정기적인 변경, 관리자 변경 등)에는
|
||||
무료로 변경 해 드리고 있습니다.
|
||||
- IP에 문제(<span class="text-danger">KCSC로 연결, 접근(원격접속) 차단, 공격을 받아 다른 IP로 변경 등</span>)가
|
||||
있어 변경 하실 경우에는 요금이 청구 됩니다.
|
||||
* 청구비용 10만원 (1회성 비용으로 구매를 요청하신 달에만 요금이 청구 됩니다)
|
||||
- 위 서비스는 선입금으로 제공 해 드리고 있습니다.
|
||||
- VPN 결제일의 자정까지 결제처리가 안될시 자동차단처리가 되게됩니다.
|
||||
이점 양해 부탁드리겠습니다.
|
||||
<span class="text-danger">※ 이용 해지시에는 사용하셨던 IP에 연결 되어 있는 도메인들은 꼭 연결 해제를
|
||||
해 주시기 바랍니다.</span>
|
||||
보장 트래픽 : 기본 트래픽 사용량은 IN 10Mbps / OUT 10Mbps 입니다
|
||||
보장 트래픽 이상을 사용할 경우 트래픽 과금이 발생할 수 있습니다
|
||||
※ 알림(필히 숙지 하여 주시기 바랍니다.)
|
||||
|
||||
1. 에 등록 하신 고객명 / 전화번호 / 메일 주소는 차후 고객님 확인을 위해
|
||||
사용되오니고객님께서도 필히 알고 계셔야 합니다.
|
||||
또한 전화번호와 메일주소 또는 메신저는 고객님에게 연락을 취해야 할 경우
|
||||
사용됩니다.변동사항이 있을 경우에는 반드시 연락을 하여 변경해 주시기 바랍니다.
|
||||
|
||||
변동사항을 에게 알려 주시지 않거나, 에 등록된 연락처로 연락을 해도 연결이 안되어
|
||||
발생하는 피해에 대해서는 책임을 지지 않습니다.
|
||||
|
||||
2. 결제는 납부기한내에 해 주셔야 합니다.
|
||||
혹시라도 납부기한내에 결제를 하지 못하실 경우는 미리 연락을 주시면 납부기한 후
|
||||
최대 3일간은 서버 접속이 유지됩니다.
|
||||
하지만 납부기한까지 연락을 안주시거나 연락을 하셨더라도 납부기한을
|
||||
3일 초과하시면 서버 접속이 차단되고 차단후에도 3일동안 연락이 없을 경우
|
||||
자동 해지 처리 되고 데이터는 삭제처리 되오니 주의 하시기 바랍니다.
|
||||
|
||||
3. 환불정책
|
||||
월단위 계약(계산)이므로 중도 <span class="text-danger">환불(일할계산)은 안됩니다.</span>
|
||||
단, 셋팅에 문제가 있거나 기타 문제가 있을 경우 서버를 인계 받으시고 <span class="text-danger">3일 안으로는
|
||||
환불 요청을 하실 수 있습니다.</span>
|
||||
|
||||
4. 서버 운영중 해킹으로 발생한 피해는 저희 에서 책임을 지지 않습니다.
|
||||
서버운영에 있어서 보안에 각별히 주의 부탁드리겠습니다.
|
||||
<해킹 대비 및 보안조치사항>
|
||||
- 주기적인 window 보안 업데이트
|
||||
- linux ,mysql , php, jsp 보안권고
|
||||
- 서버 원격 접속 패스워드 및 mssql 패스워드 변경
|
||||
* 영문,숫자,특수문자 8자리 이상 조합하여 사용 권고
|
||||
* 매월 주기적으로 패스워드 변경
|
||||
* 패스워드 노출 시 즉각 변경
|
||||
- 서버내 방화벽에서 특정IP만 서버에 접속할 수 있도록 방화벽 설정
|
||||
- 원격접속 포트 기본포트에서 변경 설정 (기본 포트 window : 3389 / linux : 22 )
|
||||
* 무료 설치 : Microsoft Security Essential 설치
|
||||
- 웹서비스 보안을 위한 웹방화벽 설치 대행서비스(유료)
|
||||
|
||||
# 원격포트 변경 및 원격접속 제한 설정은 홈페이지에 등록되어 있습니다.
|
||||
자세한 사항은 센터로 문의주시기 바랍니다.
|
||||
|
||||
5. 서버 운영중 장비부품 문제(예:하드디스크의 고장 등)로 발생한 피해는
|
||||
책임을 지지 않습니다.
|
||||
(요청하시면 백업을 위해 무료로 추가 하드를 제공해 드리고 있지만, 추가가 불가능한
|
||||
경우도 있습니다. 번거로우시더라도 주기적인 데이터백업을 부탁드리겠습니다.)
|
||||
</pre>
|
||||
13
app/Views/admin/payment/invoice_items.php
Normal file
13
app/Views/admin/payment/invoice_items.php
Normal file
@ -0,0 +1,13 @@
|
||||
<table class="table table-sm">
|
||||
<?php $cnt = 1 ?>
|
||||
<?php foreach ($service['items'] as $item): ?>
|
||||
<tr>
|
||||
<td class="p-0 text-nowrap text-start" width="80%"><?= $cnt++ ?>. <?= $item['title'] ?></td>
|
||||
<td class="p-0 text-nowrap text-end"><?= number_format($item['amount']) ?>원</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
<tr>
|
||||
<td class="p-0 text-nowrap text-end">총계</td>
|
||||
<td class="p-0 text-nowrap text-end"><?= number_format($service['amount']) ?>원</td>
|
||||
</tr>
|
||||
</table>
|
||||
22
app/Views/admin/payment/invoice_mobile.php
Normal file
22
app/Views/admin/payment/invoice_mobile.php
Normal file
@ -0,0 +1,22 @@
|
||||
<?php foreach ($viewDatas['rows'] as $row): ?>
|
||||
<div class="action_form" style="background-color:azure; width:600px; margin-bottom:20px;">
|
||||
안녕하세요 Prime IDC 입니다.<BR>
|
||||
항상 저희 IDC를 이용해 주셔서 감사합니다.<BR>
|
||||
서버비 안내 드립니다.<BR>
|
||||
<div class="p-0">고객명: <?= $row['name'] ?> , 총 결제금액: <?= number_format($row['total_amount']) ?>원</div>
|
||||
===========================<BR>
|
||||
<ol>
|
||||
<?php foreach ($row['services'] as $service): ?>
|
||||
<li class="p-0">서버IP:<?= $service['ip'] ?> , 결제금:<?= number_format($service['amount']) ?>원 , 결제일:<?= $service['billing_at'] ?></li>
|
||||
<?php endforeach; ?>
|
||||
</ol>
|
||||
===========================<BR>
|
||||
■ Prime IDC 계좌<BR>
|
||||
예금주 : 주)듀나미스<BR>
|
||||
은행명 : 국민은행<BR>
|
||||
계좌번호 : 331301-04-217387<BR>
|
||||
===========================<BR>
|
||||
결제담당자분 확인 후 말씀 한번 부탁 드립니다.<BR>
|
||||
감사합니다.<BR>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
@ -5,6 +5,9 @@
|
||||
<div class="form_top"><?= $this->include("{$viewDatas['layout']['template']}/form_content_top"); ?></div>
|
||||
<?= form_open(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th class="bg-light" colspan="2"><?= $viewDatas['title'] ?></th>
|
||||
</tr>
|
||||
<?php foreach ($viewDatas['formFields'] as $field => $label): ?>
|
||||
<tr>
|
||||
<th nowrap class="text-end bg-light" width="20%"><?= $viewDatas['helper']->getFieldLabel($field, $label, $viewDatas) ?></th>
|
||||
|
||||
@ -5,6 +5,9 @@
|
||||
<div class="form_top"><?= $this->include("{$viewDatas['layout']['template']}/form_content_top"); ?></div>
|
||||
<?= form_open(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th class="bg-light" colspan="2"><?= $viewDatas['title'] ?></th>
|
||||
</tr>
|
||||
<?php foreach ($viewDatas['formFields'] as $field => $label): ?>
|
||||
<tr>
|
||||
<th nowrap class="text-end bg-light" width="20%"><?= $viewDatas['helper']->getFieldLabel($field, $label, $viewDatas) ?></th>
|
||||
|
||||
@ -4,6 +4,9 @@
|
||||
<div id="container" class="content">
|
||||
<div class="form_top"><?= $this->include("{$viewDatas['layout']['template']}/form_content_top"); ?></div>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th class="bg-light" colspan="2"><?= $viewDatas['title'] ?></th>
|
||||
</tr>
|
||||
<?php foreach ($viewDatas['formFields'] as $field => $label): ?>
|
||||
<tr>
|
||||
<th nowrap class="text-end bg-light" width="20%"><?= $viewDatas['helper']->getFieldLabel($field, $label, $viewDatas) ?></th>
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th class="bg-light">서버정보[<?= $viewDatas['entity']->getCode() ?>]</th>
|
||||
<th class="bg-light">추가정보</th>
|
||||
<th class="bg-light">부가서비스</th>
|
||||
</tr>
|
||||
<td>
|
||||
<table class="table table-bordered">
|
||||
|
||||
@ -4,6 +4,9 @@
|
||||
<div id="container" class="content">
|
||||
<div class="form_top"><?= $this->include("{$viewDatas['layout']['template']}/form_content_top"); ?></div>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th class="bg-light" colspan="2"><?= $viewDatas['title'] ?></th>
|
||||
</tr>
|
||||
<?php foreach ($viewDatas['formFields'] as $field => $label): ?>
|
||||
<tr>
|
||||
<th nowrap class="text-end bg-light" width="20%"><?= $viewDatas['helper']->getFieldLabel($field, $label, $viewDatas) ?></th>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user