diff --git a/app/Services/CommonService.php b/app/Services/CommonService.php index 1bb00d9..ab6a1c0 100644 --- a/app/Services/CommonService.php +++ b/app/Services/CommonService.php @@ -217,10 +217,6 @@ abstract class CommonService $errorMsg = is_array($errors) ? implode(", ", $errors) : "DB 저장 작업이 실패했습니다."; throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: " . $errorMsg); } - // CodeIgniter 모델의 getInsertID()를 사용하여 새로 생성된 PK를 확실히 가져옵니다. - if ($this->model->useAutoIncrement()) { - $entity->{$this->getPKField()} = $this->model->getInsertID(); - } return $entity; } catch (\Throwable $e) { log_message('debug', __FUNCTION__ . ":" . var_export($entity, true)); @@ -255,7 +251,12 @@ abstract class CommonService throw new RuntimeException("Return Type은 {$entityClass}만 가능"); } $entity->fill($formDatas); - return $this->save_process($entity); + $entity = $this->save_process($entity); + //생성PK 설정 + if ($this->model->useAutoIncrement()) { + $entity->{$this->getPKField()} = $this->model->getInsertID(); + } + return $entity; } catch (FormValidationException $e) { throw $e; // ✅ 감싸지 말고 그대로 } catch (\Throwable $e) { @@ -289,7 +290,8 @@ abstract class CommonService if (!$entity->hasChanged()) { return $entity; } - return $this->save_process($entity); + $entity = $this->save_process($entity); + return $entity; } catch (FormValidationException $e) { throw $e; // ✅ 감싸지 말고 그대로 } catch (\Throwable $e) { diff --git a/app/Services/Equipment/ServerService.php b/app/Services/Equipment/ServerService.php index 169f9b9..2f5dc60 100644 --- a/app/Services/Equipment/ServerService.php +++ b/app/Services/Equipment/ServerService.php @@ -171,16 +171,18 @@ class ServerService extends EquipmentService } } - // ✅ 서비스 유지중이면 정상 동기화 (해지 시는 detachFromService에서 따로 처리) - if ($entity->getServiceInfoUid() !== null) { - $serviceService = service('customer_serviceservice'); - $serviceEntity = $serviceService->getEntity($entity->getServiceInfoUid()); - if (!$serviceEntity instanceof ServiceEntity) { - throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: {$entity->getServiceInfoUid()}에 해당하는 서비스정보을 찾을수 없습니다."); + //가격 변동이 있는 경우 + if ($oldEntity->getPrice() !== $entity->getPrice()) { + // ✅ 서비스 유지중이면 정상 동기화 (해지 시는 detachFromService에서 따로 처리) + if ($entity->getServiceInfoUid() !== null) { + $serviceService = service('customer_serviceservice'); + $serviceEntity = $serviceService->getEntity($entity->getServiceInfoUid()); + if (!$serviceEntity instanceof ServiceEntity) { + throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: {$entity->getServiceInfoUid()}에 해당하는 서비스정보을 찾을수 없습니다."); + } + $serviceService->recalcAmountAndSyncPayment($serviceEntity); } - $serviceService->recalcAmountAndSyncPayment($serviceEntity); } - return $entity; } diff --git a/app/Services/Part/PartType3Service.php b/app/Services/Part/PartType3Service.php index 92f62de..d06d594 100644 --- a/app/Services/Part/PartType3Service.php +++ b/app/Services/Part/PartType3Service.php @@ -17,9 +17,9 @@ abstract class PartType3Service extends PartType2Service public function attachToServer(ServerEntity $serverEntity, array $formDatas = []): PartEntity { $formDatas = []; - $formDatas['clientinfo_uid'] = $serverEntity->getClientInfoUid(); + $formDatas['clientinfo_uid'] = $serverEntity->getClientInfoUid(); $formDatas['serviceinfo_uid'] = $serverEntity->getServiceInfoUid(); - $formDatas['serverinfo_uid'] = $serverEntity->getPK(); + $formDatas['serverinfo_uid'] = $serverEntity->getPK(); $formDatas['status'] = STATUS['OCCUPIED']; //파트정보가져오기 $entity = $this->getPartEntityByServer($serverEntity); @@ -27,17 +27,21 @@ abstract class PartType3Service extends PartType2Service throw new \Exception(static::class . '->' . __FUNCTION__ . ":에서 오류발생: {$entity->getTitle()}는 사용중입니다."); } //파트정보 수정 - return parent::modify_process($entity, $formDatas); + $entity = parent::modify_process($entity, $formDatas); + // dd($entity); + return $entity; } public function detachFromServer(ServerEntity $serverEntity, array $formDatas = []): PartEntity { - $formDatas['clientinfo_uid'] = null; - $formDatas['serviceinfo_uid'] = null; - $formDatas['serverinfo_uid'] = null; - $formDatas['status'] = STATUS['AVAILABLE']; + $formDatas['clientinfo_uid'] = null; + $formDatas['serviceinfo_uid'] = null; + $formDatas['serverinfo_uid'] = null; + $formDatas['status'] = STATUS['AVAILABLE']; //파트정보가져오기 $entity = $this->getPartEntityByServer($serverEntity); - return parent::modify_process($entity, $formDatas); + $entity = parent::modify_process($entity, $formDatas); + // dd($entity); + return $entity; } }