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 @@
include("{$viewDatas['layout']['template']}/form_content_top"); ?>
+ + + $label): ?> 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 @@
include("{$viewDatas['layout']['template']}/form_content_top"); ?>
getFieldLabel($field, $label, $viewDatas) ?>
+ + + $label): ?> 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 @@ +extend($viewDatas['layout']['layout']) ?> +section('content') ?> +
+ +
+ +
getFieldLabel($field, $label, $viewDatas) ?>
+ + + + + + + + + + + + +
메일 제목서비스 요금 청구서
발신자support@prime-idc.jp발행일
+ + + + + + + + + + + + + + +
고객명총 결제 금액
+ + + + + + + + + + + + + +
서버 IP항목결제일
$service]); ?>
+
+ + include("{$viewDatas['view_path']}/invoice_info"); ?> + include("{$viewDatas['view_path']}/invoice_mobile"); ?> + + +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 @@ + + + + + + + + + + + + +
.
총계
\ 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 @@ + +
+ 안녕하세요 Prime IDC 입니다.
+ 항상 저희 IDC를 이용해 주셔서 감사합니다.
+ 서버비 안내 드립니다.
+
고객명: , 총 결제금액:
+ ===========================
+
    + +
  1. 서버IP: , 결제금:원 , 결제일:
  2. + +
+ ===========================
+ ■ Prime IDC 계좌
+ 예금주 : 주)듀나미스
+ 은행명 : 국민은행
+ 계좌번호 : 331301-04-217387
+ ===========================
+ 결제담당자분 확인 후 말씀 한번 부탁 드립니다.
+ 감사합니다.
+
+ \ 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 @@
include("{$viewDatas['layout']['template']}/form_content_top"); ?>
+ + + $label): ?> 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 @@
include("{$viewDatas['layout']['template']}/form_content_top"); ?>
getFieldLabel($field, $label, $viewDatas) ?>
+ + + $label): ?> 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 @@
include("{$viewDatas['layout']['template']}/form_content_top"); ?>
getFieldLabel($field, $label, $viewDatas) ?>
+ + + $label): ?> 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 @@
getFieldLabel($field, $label, $viewDatas) ?>
- +
서버정보[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 @@
include("{$viewDatas['layout']['template']}/form_content_top"); ?>
+ + + $label): ?>
getFieldLabel($field, $label, $viewDatas) ?>