diff --git a/app/Http/Controllers/Sales/SalesProductController.php b/app/Http/Controllers/Sales/SalesProductController.php
index 46e77dbd..88e33960 100644
--- a/app/Http/Controllers/Sales/SalesProductController.php
+++ b/app/Http/Controllers/Sales/SalesProductController.php
@@ -62,19 +62,14 @@ public function store(Request $request): JsonResponse
'development_fee' => 'required|numeric|min:0',
'registration_fee' => 'required|numeric|min:0',
'subscription_fee' => 'required|numeric|min:0',
+ 'min_development_fee' => 'nullable|numeric|min:0',
+ 'min_subscription_fee' => 'nullable|numeric|min:0',
'partner_commission_rate' => 'nullable|numeric|min:0|max:100',
'manager_commission_rate' => 'nullable|numeric|min:0|max:100',
'allow_flexible_pricing' => 'boolean',
'is_required' => 'boolean',
]);
- // 최저가 검증
- $category = SalesProductCategory::findOrFail($validated['category_id']);
- $minFeeErrors = $this->validateMinFees($category, $validated);
- if ($minFeeErrors) {
- return response()->json(['success' => false, 'message' => $minFeeErrors], 422);
- }
-
// 코드 중복 체크
$exists = SalesProduct::where('category_id', $validated['category_id'])
->where('code', $validated['code'])
@@ -115,6 +110,8 @@ public function update(Request $request, int $id): JsonResponse
'development_fee' => 'sometimes|numeric|min:0',
'registration_fee' => 'sometimes|numeric|min:0',
'subscription_fee' => 'sometimes|numeric|min:0',
+ 'min_development_fee' => 'nullable|numeric|min:0',
+ 'min_subscription_fee' => 'nullable|numeric|min:0',
'partner_commission_rate' => 'nullable|numeric|min:0|max:100',
'manager_commission_rate' => 'nullable|numeric|min:0|max:100',
'allow_flexible_pricing' => 'boolean',
@@ -122,14 +119,6 @@ public function update(Request $request, int $id): JsonResponse
'is_active' => 'boolean',
]);
- // 최저가 검증
- $category = $product->category;
- $checkData = array_merge($product->toArray(), $validated);
- $minFeeErrors = $this->validateMinFees($category, $checkData);
- if ($minFeeErrors) {
- return response()->json(['success' => false, 'message' => $minFeeErrors], 422);
- }
-
$product->update($validated);
return response()->json([
@@ -276,30 +265,6 @@ public function deleteCategory(int $id): JsonResponse
]);
}
- // ==================== 내부 헬퍼 ====================
-
- /**
- * 최저가 검증
- */
- private function validateMinFees(SalesProductCategory $category, array $data): ?string
- {
- $errors = [];
-
- if ($category->min_development_fee > 0 && isset($data['registration_fee'])) {
- if ($data['registration_fee'] < $category->min_development_fee) {
- $errors[] = '개발비(할인가)는 최저 개발비 ₩'.number_format($category->min_development_fee).' 이상이어야 합니다.';
- }
- }
-
- if ($category->min_subscription_fee > 0 && isset($data['subscription_fee'])) {
- if ($data['subscription_fee'] < $category->min_subscription_fee) {
- $errors[] = '월 구독료는 최저 구독료 ₩'.number_format($category->min_subscription_fee).' 이상이어야 합니다.';
- }
- }
-
- return $errors ? implode(' ', $errors) : null;
- }
-
// ==================== API (영업 시나리오용) ====================
/**
diff --git a/app/Models/Sales/SalesProduct.php b/app/Models/Sales/SalesProduct.php
index f89e7072..d7ba663d 100644
--- a/app/Models/Sales/SalesProduct.php
+++ b/app/Models/Sales/SalesProduct.php
@@ -17,6 +17,8 @@
* @property float $development_fee
* @property float $registration_fee
* @property float $subscription_fee
+ * @property float $min_development_fee
+ * @property float $min_subscription_fee
* @property float $partner_commission_rate
* @property float $manager_commission_rate
* @property bool $allow_flexible_pricing
@@ -29,6 +31,7 @@ class SalesProduct extends Model
use SoftDeletes;
protected $connection = 'codebridge';
+
protected $table = 'sales_products';
protected $fillable = [
@@ -39,6 +42,8 @@ class SalesProduct extends Model
'development_fee',
'registration_fee',
'subscription_fee',
+ 'min_development_fee',
+ 'min_subscription_fee',
'partner_commission_rate',
'manager_commission_rate',
'allow_flexible_pricing',
@@ -52,6 +57,8 @@ class SalesProduct extends Model
'development_fee' => 'decimal:2',
'registration_fee' => 'decimal:2',
'subscription_fee' => 'decimal:2',
+ 'min_development_fee' => 'decimal:2',
+ 'min_subscription_fee' => 'decimal:2',
'partner_commission_rate' => 'decimal:2',
'manager_commission_rate' => 'decimal:2',
'allow_flexible_pricing' => 'boolean',
diff --git a/resources/views/sales/products/index.blade.php b/resources/views/sales/products/index.blade.php
index 2993df89..d772b297 100644
--- a/resources/views/sales/products/index.blade.php
+++ b/resources/views/sales/products/index.blade.php
@@ -67,28 +67,6 @@ class="inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-white b
- {{-- 최저가 안내 --}}
-
- 최저가 설정 (이 금액 이하로 절대 내릴 수 없습니다)
최저 구독료 ₩ 이상 필수
-설정된 최저가 이하로는 절대 상품 가격을 내릴 수 없습니다. 영업 할인 협상 시에도 이 금액이 하한선이 됩니다.
-0 입력 시 제한 없음
-0 입력 시 제한 없음
-