diff --git a/src/Patient/Entity/PatientSession.php b/src/Patient/Entity/PatientSession.php index e5a64b80..c36684cd 100644 --- a/src/Patient/Entity/PatientSession.php +++ b/src/Patient/Entity/PatientSession.php @@ -244,7 +244,7 @@ class PatientSession 'services_total_rials' => $this->servicesTotalRials, 'final_price_rials' => $this->finalPriceRials, 'payment_method' => $this->paymentMethod, - 'is_paid' => $this->paymentMethod !== 'pending', + 'is_paid' => $this->getRemainingRials() === 0, 'discount_type' => $this->discountType, 'discount_value' => $this->discountValue, 'discount_rials' => $this->discountRials, diff --git a/src/Patient/Service/PatientService.php b/src/Patient/Service/PatientService.php index 8ce5cb81..6aafbcc5 100644 --- a/src/Patient/Service/PatientService.php +++ b/src/Patient/Service/PatientService.php @@ -369,6 +369,9 @@ class PatientService $session->setFinalPriceRials($priceCalc['final_price_rials'] + $session->getConsumablesTotalRials()); $this->sessionRepo->save($session); + // پس از تغییر مبلغ، وضعیت تسویه بازمحاسبه شود (افزودن سرویس/پکیج → بدهکار). + $this->recomputeSettlement($session); + // ثبت audit برای فیلدهای تغییرکرده $after = [ 'visit_price_rials' => (string) $session->getVisitPriceRials(), @@ -587,6 +590,8 @@ class PatientService } $this->sessionRepo->save($session); + $this->logSessionChange($session, 'payment', \App\Patient\Entity\SessionAuditLog::OP_CREATE, null, (string) $amountRials, $actor, 'ثبت پرداخت'); + return $payment; } }