diff --git a/04_Laravel/app/Filament/Pages/IfnexSettingsPage.php b/04_Laravel/app/Filament/Pages/IfnexSettingsPage.php index e97a35c..4b60821 100644 --- a/04_Laravel/app/Filament/Pages/IfnexSettingsPage.php +++ b/04_Laravel/app/Filament/Pages/IfnexSettingsPage.php @@ -3,6 +3,7 @@ namespace App\Filament\Pages; use App\Models\SystemSetting; +use App\Services\ExchangeRateService; use Filament\Pages\Page; class IfnexSettingsPage extends Page @@ -17,10 +18,6 @@ class IfnexSettingsPage extends Page public float $vat_rate = 0.09; public float $packing_cost_default = 100000; public float $profit_margin = 1.25; - public float $aed_to_irr = 455000; - public float $usd_to_irr = 0; - public float $cny_to_irr = 0; - public float $eur_to_irr = 0; public string $kavenegar_api_key = ''; public string $kavenegar_sender = '10008566'; @@ -36,10 +33,6 @@ class IfnexSettingsPage extends Page if (isset($settings['vat_rate'])) $this->vat_rate = (float) $settings['vat_rate']; if (isset($settings['packing_cost_default'])) $this->packing_cost_default = (float) $settings['packing_cost_default']; if (isset($settings['profit_margin'])) $this->profit_margin = (float) $settings['profit_margin']; - if (isset($settings['aed_to_irr'])) $this->aed_to_irr = (float) $settings['aed_to_irr']; - if (isset($settings['usd_to_irr'])) $this->usd_to_irr = (float) $settings['usd_to_irr']; - if (isset($settings['cny_to_irr'])) $this->cny_to_irr = (float) $settings['cny_to_irr']; - if (isset($settings['eur_to_irr'])) $this->eur_to_irr = (float) $settings['eur_to_irr']; if (isset($settings['kavenegar_api_key'])) $this->kavenegar_api_key = (string) $settings['kavenegar_api_key']; if (isset($settings['kavenegar_sender'])) $this->kavenegar_sender = (string) $settings['kavenegar_sender']; @@ -49,6 +42,20 @@ class IfnexSettingsPage extends Page if (isset($settings['kavenegar_send_tracking_update'])) $this->kavenegar_send_tracking_update = (bool) $settings['kavenegar_send_tracking_update']; } + /** + * نرخهای ارز زنده — فقط برای نمایش. + * تغییر نرخ فقط از منوی «نرخ ارز» (با تاریخچه و گردش تأیید) انجام میشود. + */ + public function getCurrentRates(): array + { + $service = app(ExchangeRateService::class); + + return [ + 'AED' => $service->getCurrentRate('AED', 'IRR'), + 'USD' => $service->getCurrentRate('USD', 'IRR'), + ]; + } + public function save(): void { $userId = auth()->id(); @@ -65,22 +72,6 @@ class IfnexSettingsPage extends Page ['key' => 'profit_margin'], ['value' => $this->profit_margin, 'updated_by' => $userId] ); - SystemSetting::updateOrCreate( - ['key' => 'aed_to_irr'], - ['value' => $this->aed_to_irr, 'updated_by' => $userId] - ); - SystemSetting::updateOrCreate( - ['key' => 'usd_to_irr'], - ['value' => $this->usd_to_irr, 'updated_by' => $userId] - ); - SystemSetting::updateOrCreate( - ['key' => 'cny_to_irr'], - ['value' => $this->cny_to_irr, 'updated_by' => $userId] - ); - SystemSetting::updateOrCreate( - ['key' => 'eur_to_irr'], - ['value' => $this->eur_to_irr, 'updated_by' => $userId] - ); SystemSetting::updateOrCreate( ['key' => 'kavenegar_api_key'], diff --git a/04_Laravel/app/Http/Controllers/PricingPageController.php b/04_Laravel/app/Http/Controllers/PricingPageController.php index d4120a1..c5aa9fd 100644 --- a/04_Laravel/app/Http/Controllers/PricingPageController.php +++ b/04_Laravel/app/Http/Controllers/PricingPageController.php @@ -12,7 +12,7 @@ class PricingPageController extends Controller { $countries = Country::orderBy('name')->get(['id', 'name', 'iso_code']); $settings = [ - 'aed_to_irr' => (float) SystemSetting::get('aed_to_irr', 455000), + 'aed_to_irr' => app(\App\Services\ExchangeRateService::class)->getCurrentRate('AED', 'IRR'), 'profit_margin' => (float) SystemSetting::get('profit_margin', 1.25), 'vat_rate' => (float) SystemSetting::get('vat_rate', 0.09), ]; diff --git a/04_Laravel/app/Services/PriceCalculatorService.php b/04_Laravel/app/Services/PriceCalculatorService.php index f231f8f..4e9a3a4 100644 --- a/04_Laravel/app/Services/PriceCalculatorService.php +++ b/04_Laravel/app/Services/PriceCalculatorService.php @@ -123,7 +123,8 @@ class PriceCalculatorService private function calculateFinancials(float $baseRate): array { $profitMargin = (float) SystemSetting::get('profit_margin', 1.25); - $aedToIrr = (float) SystemSetting::get('aed_to_irr', 455000); + // نرخ ارز فقط از ExchangeRateService خوانده میشود (منبع واحد — منوی نرخ ارز) + $aedToIrr = app(ExchangeRateService::class)->getCurrentRate('AED', 'IRR'); $netDirham = $baseRate * $profitMargin; $netRial = $netDirham * $aedToIrr; diff --git a/04_Laravel/resources/views/filament/pages/ifnex-settings.blade.php b/04_Laravel/resources/views/filament/pages/ifnex-settings.blade.php index 767fed7..0637284 100644 --- a/04_Laravel/resources/views/filament/pages/ifnex-settings.blade.php +++ b/04_Laravel/resources/views/filament/pages/ifnex-settings.blade.php @@ -19,25 +19,29 @@
Example: 1.25 for 25% margin
+ -+ تغییر نرخ فقط از منوی «نرخ ارز» انجام میشود — همیشه با تاریخچه، امکان آپدیت از API و گردش تأیید. +
+