From 215095fccdb6a1bad3a82c079b99a47af6984d3e Mon Sep 17 00:00:00 2001 From: A1Gard Date: Mon, 4 Nov 2024 13:24:43 +0330 Subject: [PATCH] added updated price --- app/Console/Commands/GoldPriceUpdate.php | 4 +- app/Helpers/Helper.php | 17 ++++++ app/Models/Product.php | 3 + app/Observers/SettingObsever.php | 77 ++++++++++++++++++++++++ app/Providers/AppServiceProvider.php | 3 + config/app.php | 3 +- database/seeders/SettingSeeder.php | 8 +++ 7 files changed, 112 insertions(+), 3 deletions(-) create mode 100644 app/Observers/SettingObsever.php diff --git a/app/Console/Commands/GoldPriceUpdate.php b/app/Console/Commands/GoldPriceUpdate.php index 3f216d4..51bf3e6 100644 --- a/app/Console/Commands/GoldPriceUpdate.php +++ b/app/Console/Commands/GoldPriceUpdate.php @@ -37,13 +37,13 @@ class GoldPriceUpdate extends Command // print_r($data); if (isset($data->gold)) { $s = Setting::where('key', 'gold')->first(); - $s->value = $data->gold; + $s->value = $data->gold / 10; $s->save(); $this->info('Price updated successfully'); }else{ $this->error('Price update failed'); } - Log::info('updated gold price'); +// Log::info('updated gold price'); } } diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index b53cc50..7b52b21 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -1441,3 +1441,20 @@ function getMainCategory($limit=4,$orderBy = 'id', $asc = 'ASC') { return \App\Models\Category::whereNull('parent_id')->limit($limit)->orderBy($orderBy,$asc)->get(); } + +/** + * calculate gold pice + * @param $gr + * @param $fee + * @return float|int + */ +function CalcPrice($gold,$gr, $fee) +{ + $p = $gold; +// $n = ($p * $gr); + $n1 = $p + ($p * ($fee / 100)); + $n2 = ($n1 + ($n1 * 0.07) - $p) ; + $n3 = ($n2 * config('app.xshop.vat')) + $n2; + $complete = (( $n3 + $p ) * $gr) ; + return floor($complete / 1000) * 1000; +} diff --git a/app/Models/Product.php b/app/Models/Product.php index d6ffcf3..a7b0a22 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -228,6 +228,9 @@ class Product extends Model implements HasMedia $result = []; $i = 0; foreach ($metas as $key => $value) { + if ($result[$key]['data']['type']??null == null){ + continue; + } $result[$key] = [ 'value' => $value, 'data' => Prop::where('name', $key)->first(), diff --git a/app/Observers/SettingObsever.php b/app/Observers/SettingObsever.php new file mode 100644 index 0000000..4798b61 --- /dev/null +++ b/app/Observers/SettingObsever.php @@ -0,0 +1,77 @@ +key == 'gold' && $setting->wasChanged('value')) { +// $p = (float)str_replace(',', '', $setting->value); +// if ($setting->value != $p) { +// $setting->value = $p; +// $setting->save(); +// return; +// } + $pros = Product::where('status', 1)->get(); + foreach ($pros as $pro) { + $low = []; + if ($pro->quantities()->count() > 0) { + foreach ($pro->quantities as $q) { + $data = json_decode($q->data); + $q->price = CalcPrice($setting->value,$data->weight, $pro->wage) + $pro->addon; + $low[] = $q->price; + $q->save(); + } + $pro->price = min($low); + }else{ + $pro->price = 0; + } + if ( ( ($pro->price * (int) getSetting('min') ) / 100) < $pro->buy_price) { + $pro->stock_status = 'OUT_STOCK'; + } else{ + $pro->stock_status = 'IN_STOCK'; + } + $pro->save(); + } + } + } + + /** + * Handle the Setting "deleted" event. + */ + public function deleted(Setting $setting): void + { + // + } + + /** + * Handle the Setting "restored" event. + */ + public function restored(Setting $setting): void + { + // + } + + /** + * Handle the Setting "force deleted" event. + */ + public function forceDeleted(Setting $setting): void + { + // + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 55c1c49..339827e 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -7,7 +7,9 @@ use App\Helpers\TDate; use App\Http\Middleware\Acl; use App\Models\Area; use App\Models\Part; +use App\Models\Setting; use App\Observers\PartObsever; +use App\Observers\SettingObsever; use Carbon\Carbon; use Illuminate\Pagination\Paginator; use Illuminate\Support\Facades\Blade; @@ -64,6 +66,7 @@ class AppServiceProvider extends ServiceProvider }); Part::observe(PartObsever::class); + Setting::observe(SettingObsever::class); } diff --git a/config/app.php b/config/app.php index 5dce2cd..55cf275 100644 --- a/config/app.php +++ b/config/app.php @@ -192,7 +192,8 @@ return [ 'payment' => [ 'gateway' => env('PAY_GATEWAY',''), 'merchant_id' => env('MERCHANT_ID',''), - ] + ], + 'vat' => 0.09 ], diff --git a/database/seeders/SettingSeeder.php b/database/seeders/SettingSeeder.php index 853288b..56e5e62 100644 --- a/database/seeders/SettingSeeder.php +++ b/database/seeders/SettingSeeder.php @@ -24,6 +24,14 @@ class SettingSeeder extends Seeder 'value' => '100000', 'size' => '12', ], + [ + 'title' => __("Minimum percent"), + 'key' => 'min', + 'type' => 'TEXT', + 'ltr' => true, + 'value' => '105', + 'size' => '12', + ], [ 'title' => __("Email"), 'key' => 'email',