fix:수당 정산 레코드 생성 시 파트너 타입별 요율 반영
- updateCommissionDate, updateReferrerCommission의 firstOrCreate에서 partner_rate를 0 고정 → 파트너 타입(개인 20% / 단체 30%)에 따라 설정 - referrer_rate도 파트너 타입에 따라 설정 (개인 5% / 단체 3%) - SalesCommissionService 상수 재사용 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
use App\Models\Sales\SalesTenantManagement;
|
||||
use App\Models\Sales\TenantProspect;
|
||||
use App\Models\User;
|
||||
use App\Services\SalesCommissionService;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\View\View;
|
||||
@@ -407,6 +408,18 @@ public function updateCommissionDate(int $id, Request $request)
|
||||
// 1차 필드 → deposit 레코드, 2차 필드 → balance 레코드
|
||||
$paymentType = $this->getPaymentTypeForField($field);
|
||||
|
||||
// 파트너 resolve → 요율 결정
|
||||
$partner = $management->salesPartner;
|
||||
if (!$partner && $prospect->registered_by) {
|
||||
$partner = SalesPartner::where('user_id', $prospect->registered_by)->first();
|
||||
}
|
||||
$isGroup = $partner?->isGroup() ?? false;
|
||||
$partnerRate = $partner?->commission_rate
|
||||
?? ($isGroup ? SalesCommissionService::DEFAULT_GROUP_RATE : SalesCommissionService::DEFAULT_PARTNER_RATE);
|
||||
$referrerRate = $isGroup
|
||||
? SalesCommissionService::DEFAULT_GROUP_REFERRER_RATE
|
||||
: SalesCommissionService::DEFAULT_INDIVIDUAL_REFERRER_RATE;
|
||||
|
||||
// Commission 레코드 조회 또는 생성 (payment_type별 분리)
|
||||
$commission = SalesCommission::firstOrCreate(
|
||||
['management_id' => $management->id, 'payment_type' => $paymentType],
|
||||
@@ -415,15 +428,15 @@ public function updateCommissionDate(int $id, Request $request)
|
||||
'payment_amount' => 0,
|
||||
'payment_date' => now(),
|
||||
'base_amount' => 0,
|
||||
'partner_rate' => 0,
|
||||
'partner_rate' => $partnerRate,
|
||||
'manager_rate' => 0,
|
||||
'partner_commission' => 0,
|
||||
'manager_commission' => 0,
|
||||
'referrer_rate' => 3,
|
||||
'referrer_rate' => $referrerRate,
|
||||
'referrer_commission' => 0,
|
||||
'scheduled_payment_date' => now()->addMonth()->day(10),
|
||||
'status' => SalesCommission::STATUS_PENDING,
|
||||
'partner_id' => $management->sales_partner_id ?? 0,
|
||||
'partner_id' => $partner?->id ?? $management->sales_partner_id ?? 0,
|
||||
'manager_user_id' => $management->manager_user_id,
|
||||
]
|
||||
);
|
||||
@@ -544,6 +557,9 @@ public function updateReferrerCommission(int $id, Request $request)
|
||||
|
||||
// 단체 파트너는 수동 수정 불가
|
||||
$partner = $management->salesPartner;
|
||||
if (!$partner && $prospect->registered_by) {
|
||||
$partner = SalesPartner::where('user_id', $prospect->registered_by)->first();
|
||||
}
|
||||
if ($partner && $partner->isGroup()) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
@@ -551,6 +567,10 @@ public function updateReferrerCommission(int $id, Request $request)
|
||||
], 422);
|
||||
}
|
||||
|
||||
$isGroup = $partner?->isGroup() ?? false;
|
||||
$partnerRate = $partner?->commission_rate
|
||||
?? ($isGroup ? SalesCommissionService::DEFAULT_GROUP_RATE : SalesCommissionService::DEFAULT_PARTNER_RATE);
|
||||
|
||||
// Commission 레코드 조회 또는 생성
|
||||
$commission = SalesCommission::firstOrCreate(
|
||||
['management_id' => $management->id],
|
||||
@@ -560,15 +580,17 @@ public function updateReferrerCommission(int $id, Request $request)
|
||||
'payment_amount' => 0,
|
||||
'payment_date' => now(),
|
||||
'base_amount' => 0,
|
||||
'partner_rate' => 0,
|
||||
'partner_rate' => $partnerRate,
|
||||
'manager_rate' => 0,
|
||||
'partner_commission' => 0,
|
||||
'manager_commission' => 0,
|
||||
'referrer_rate' => 3,
|
||||
'referrer_rate' => $isGroup
|
||||
? SalesCommissionService::DEFAULT_GROUP_REFERRER_RATE
|
||||
: SalesCommissionService::DEFAULT_INDIVIDUAL_REFERRER_RATE,
|
||||
'referrer_commission' => 0,
|
||||
'scheduled_payment_date' => now()->addMonth()->day(10),
|
||||
'status' => SalesCommission::STATUS_PENDING,
|
||||
'partner_id' => $management->sales_partner_id ?? 0,
|
||||
'partner_id' => $partner?->id ?? $management->sales_partner_id ?? 0,
|
||||
'manager_user_id' => $management->manager_user_id,
|
||||
]
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user