From 3d12829dcb9482b3adf1d164f7da2218c006d4ca Mon Sep 17 00:00:00 2001 From: pro Date: Thu, 29 Jan 2026 16:38:44 +0900 Subject: [PATCH] =?UTF-8?q?feat:=EC=98=81=EC=97=85=20=EC=8B=9C=EB=82=98?= =?UTF-8?q?=EB=A6=AC=EC=98=A4=20=EA=B3=84=EC=95=BD=EC=B2=B4=EA=B2=B0=20?= =?UTF-8?q?=ED=83=AD=EC=97=90=20=EC=83=81=ED=92=88=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EC=97=B0=EB=8F=99=20(registratio?= =?UTF-8?q?n=5Ffee=20=EC=82=AC=EC=9A=A9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Sales/SalesContractController.php | 4 ++-- app/Models/Sales/SalesContractProduct.php | 12 ++++++------ .../modals/partials/product-selection.blade.php | 15 +++++++++------ 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/app/Http/Controllers/Sales/SalesContractController.php b/app/Http/Controllers/Sales/SalesContractController.php index acbb91c2..f1ed494b 100644 --- a/app/Http/Controllers/Sales/SalesContractController.php +++ b/app/Http/Controllers/Sales/SalesContractController.php @@ -24,7 +24,7 @@ public function saveProducts(Request $request): JsonResponse 'products' => 'required|array', 'products.*.product_id' => 'required|exists:sales_products,id', 'products.*.category_id' => 'required|exists:sales_product_categories,id', - 'products.*.development_fee' => 'required|numeric|min:0', + 'products.*.registration_fee' => 'required|numeric|min:0', 'products.*.subscription_fee' => 'required|numeric|min:0', ]); @@ -45,7 +45,7 @@ public function saveProducts(Request $request): JsonResponse 'management_id' => $management->id, 'category_id' => $product['category_id'], 'product_id' => $product['product_id'], - 'development_fee' => $product['development_fee'], + 'registration_fee' => $product['registration_fee'], 'subscription_fee' => $product['subscription_fee'], 'discount_rate' => 0, 'created_by' => auth()->id(), diff --git a/app/Models/Sales/SalesContractProduct.php b/app/Models/Sales/SalesContractProduct.php index 1158c34e..0a49b66c 100644 --- a/app/Models/Sales/SalesContractProduct.php +++ b/app/Models/Sales/SalesContractProduct.php @@ -15,7 +15,7 @@ * @property int $management_id * @property int $category_id * @property int $product_id - * @property float|null $development_fee + * @property float|null $registration_fee * @property float|null $subscription_fee * @property float $discount_rate * @property string|null $notes @@ -30,7 +30,7 @@ class SalesContractProduct extends Model 'management_id', 'category_id', 'product_id', - 'development_fee', + 'registration_fee', 'subscription_fee', 'discount_rate', 'notes', @@ -42,7 +42,7 @@ class SalesContractProduct extends Model 'management_id' => 'integer', 'category_id' => 'integer', 'product_id' => 'integer', - 'development_fee' => 'decimal:2', + 'registration_fee' => 'decimal:2', 'subscription_fee' => 'decimal:2', 'discount_rate' => 'decimal:2', 'created_by' => 'integer', @@ -89,11 +89,11 @@ public function creator(): BelongsTo } /** - * 테넌트별 총 개발비 + * 테넌트별 총 가입비 */ - public static function getTotalDevelopmentFee(int $tenantId): float + public static function getTotalRegistrationFee(int $tenantId): float { - return self::where('tenant_id', $tenantId)->sum('development_fee') ?? 0; + return self::where('tenant_id', $tenantId)->sum('registration_fee') ?? 0; } /** diff --git a/resources/views/sales/modals/partials/product-selection.blade.php b/resources/views/sales/modals/partials/product-selection.blade.php index 34328de1..2ad42d2c 100644 --- a/resources/views/sales/modals/partials/product-selection.blade.php +++ b/resources/views/sales/modals/partials/product-selection.blade.php @@ -63,7 +63,7 @@ class="px-4 py-2 text-sm font-medium rounded-lg whitespace-nowrap transition-col
{{-- 체크박스 --}}
@@ -155,7 +158,7 @@ function productSelection() { @foreach($category->products as $product) this.productData[{{ $product->id }}] = { categoryId: {{ $product->category_id }}, - devFee: {{ $product->development_fee }}, + regFee: {{ $product->registration_fee }}, subFee: {{ $product->subscription_fee }}, isRequired: {{ $product->is_required ? 'true' : 'false' }}, }; @@ -167,7 +170,7 @@ function productSelection() { this.calculateTotals(); }, - toggleProduct(productId, categoryId, devFee, subFee, isRequired) { + toggleProduct(productId, categoryId, regFee, subFee, isRequired) { if (isRequired) return; // 필수 상품은 토글 불가 const index = this.selectedProducts.indexOf(productId); @@ -185,7 +188,7 @@ function productSelection() { this.selectedProducts.forEach(id => { const product = this.productData[id]; if (product) { - this.totalDevFee += product.devFee; + this.totalDevFee += product.regFee; this.totalSubFee += product.subFee; } }); @@ -201,7 +204,7 @@ function productSelection() { const products = this.selectedProducts.map(id => ({ product_id: id, category_id: this.productData[id].categoryId, - development_fee: this.productData[id].devFee, + registration_fee: this.productData[id].regFee, subscription_fee: this.productData[id].subFee, }));