diff --git a/app/Services/Equipment/ServerService.php b/app/Services/Equipment/ServerService.php index 315d63b..66e46b7 100644 --- a/app/Services/Equipment/ServerService.php +++ b/app/Services/Equipment/ServerService.php @@ -188,7 +188,7 @@ class ServerService extends EquipmentService return $rows; } //총서버금액 - final public function getCacluatedAmount(int $uid): int + final public function getCalculatedAmount(int $uid): int { $entity = $this->getEntity($uid); if (!$entity instanceof ServerEntity) { diff --git a/app/Services/PaymentService.php b/app/Services/PaymentService.php index dbc0264..e8ac59d 100644 --- a/app/Services/PaymentService.php +++ b/app/Services/PaymentService.php @@ -268,16 +268,23 @@ class PaymentService extends CommonService } public function modifyByService(ServiceEntity $serviceEntity): PaymentEntity { - //서비스정보의 지급기한일과 같은 결제정보 가져와서 결제정보 수정 - $entity = $this->getEntity(['serviceinfo_uid' => $serviceEntity->getPK(), 'billing_at' => $serviceEntity->getBillingAt()]); - if (!$entity instanceof PaymentEntity) { - throw new \Exception(__METHOD__ . "에서 오류발생: [{$serviceEntity->getPK()}]{$serviceEntity->getTitle()}에 해당하는 결제정보을 찾을수 없습니다."); + //서비스정보의 청구방식이 Month이고 지급기한일과 같고,상태가 UNPAID인 결제정보 가져와서 결제정보 수정 + $entity = $this->getEntity([ + 'serviceinfo_uid' => $serviceEntity->getPK(), + 'billing' => PAYMENT['BILLING']['MONTH'], + 'billing_at' => $serviceEntity->getBillingAt(), + 'status' => STATUS['UNPAID'] + ]); + if (!$entity instanceof PaymentEntity) { //해당조건에 맞는게 없으면 생성 + $entity = $this->createByService($serviceEntity); + } else { + $formDatas = $this->getFormDatasByService($serviceEntity); + $fields = array_keys($formDatas); + $this->getFormService()->setFormFields($fields); + $this->getFormService()->setFormRules('modify', $fields); + $entity = parent::modify_process($entity, $formDatas); } - $formDatas = $this->getFormDatasByService($serviceEntity); - $fields = array_keys($formDatas); - $this->getFormService()->setFormFields($fields); - $this->getFormService()->setFormRules('modify', $fields); - return parent::modify_process($entity, $formDatas); + return $entity; } //서버파트별 일회성 관련 private function getFormDatasByServerPart(ServerPartEntity $serverPartEntity, array $formDatas = []): array @@ -308,15 +315,22 @@ class PaymentService extends CommonService if ($serverPartEntity->getServiceInfoUID() === null) { throw new RuntimeException(__METHOD__ . "에서 오류발생: 서비스정보가 정의되지 않아 일회성 상품을 설정하실수 없습니다."); } - //서비스정보의 지급기한일과 같은 결제정보 가져와서 결제정보 수정 - $entity = $this->getEntity(['serverpartinfo_uid' => $serverPartEntity->getPK()]); + //서버파트정보의 서비스번호가 같고, 청구방식이 onetime이고 상태가 UNPAID인 결제정보 가져와서 결제정보 수정 + $entity = $this->getEntity([ + 'serverpartinfo_uid' => $serverPartEntity->getPK(), + 'serviceinfo_uid' => $serverPartEntity->getServiceInfoUID(), + 'billing' => PAYMENT['BILLING']['ONETIME'], + 'status' => STATUS['UNPAID'] + ]); if (!$entity instanceof PaymentEntity) { - throw new \Exception(__METHOD__ . "에서 오류발생: [{$serverPartEntity->getPK()}]{$serverPartEntity->getTitle()}에 해당하는 결제정보을 찾을수 없습니다."); + $entity = $this->createByServerPart($serverPartEntity); + } else { + $formDatas = $this->getFormDatasByServerPart($serverPartEntity); + $fields = array_keys($formDatas); + $this->getFormService()->setFormFields($fields); + $this->getFormService()->setFormRules('modify', $fields); + $entity = parent::modify_process($entity, $formDatas); } - $formDatas = $this->getFormDatasByServerPart($serverPartEntity); - $fields = array_keys($formDatas); - $this->getFormService()->setFormFields($fields); - $this->getFormService()->setFormRules('modify', $fields); - return parent::modify_process($entity, $formDatas); + return $entity; } } diff --git a/app/Views/cells/payment/detail.php b/app/Views/cells/payment/detail.php index 60168cc..3abece8 100644 --- a/app/Views/cells/payment/detail.php +++ b/app/Views/cells/payment/detail.php @@ -6,7 +6,7 @@ 날자 결제금액 항목 - 내용 + 청구방식 처리자 @@ -16,9 +16,12 @@ getFieldView('create_at', $entity->getCreatedAt(), $serviceCellDatas) ?> getFieldView('amount', $entity->getAmount(), $serviceCellDatas) ?> getFieldView('title', $entity->getTitle(), $serviceCellDatas) ?> - getFieldView('content', $entity->getContent(), $serviceCellDatas) ?> + getFieldView('billing', $entity->getBilling(), $serviceCellDatas) ?> getFieldView('user_uid', $entity->getUserUID(), $serviceCellDatas) ?> + + getFieldView('content', $entity->getTitle(), $serviceCellDatas) ?> + \ No newline at end of file