added updated price

A1Gard 5 months ago
parent e08df2e4fe
commit 215095fccd

@ -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');
}
}

@ -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;
}

@ -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(),

@ -0,0 +1,77 @@
<?php
namespace App\Observers;
use App\Models\Product;
use App\Models\Setting;
class SettingObsever
{
/**
* Handle the Setting "created" event.
*/
public function created(Setting $setting): void
{
//
}
/**
* Handle the Setting "updated" event.
*/
public function updated(Setting $setting): void
{
if ($setting->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
{
//
}
}

@ -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);
}

@ -192,7 +192,8 @@ return [
'payment' => [
'gateway' => env('PAY_GATEWAY',''),
'merchant_id' => env('MERCHANT_ID',''),
]
],
'vat' => 0.09
],

@ -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',

Loading…
Cancel
Save