Update with new price management

This commit is contained in:
Ludovic CANDELLIER
2021-03-22 00:47:44 +01:00
parent 083d358fbd
commit 37ffaa938b
64 changed files with 1118 additions and 984 deletions

View File

@@ -1,28 +0,0 @@
<?php
namespace App\DataTables\Shop;
use Yajra\DataTables\Html\Column;
use App\DataTables\ParentDataTable as DataTable;
use App\Models\Shop\ArticleAttributeValue;
class ArticleAttributeValuesDataTable extends DataTable
{
public $model_name = 'ArticleAttributeValues';
public function query(ArticleAttributeValue $model)
{
$model = $model::with(['article_attribute_family']);
return self::buildQuery($model);
}
protected function getColumns()
{
return [
Column::make('value')->title('Attributs'),
Column::make('article_attribute_family.name')->title('Famille d\'attributs')->sortable(false),
self::makeColumnButtons(),
];
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\DataTables\Shop;
use Yajra\DataTables\Html\Column;
use App\DataTables\ParentDataTable as DataTable;
use App\Models\Shop\Unity;
class UnitiesDataTable extends DataTable
{
public $model_name = 'Unity';
public function query(Unity $model)
{
$model = $model::with(['price_family']);
return self::buildQuery($model);
}
protected function getColumns()
{
return [
Column::make('value')->title('Attributs'),
Column::make('price_family.name')->title('Famille')->orderable(false),
self::makeColumnButtons(),
];
}
}

View File

@@ -1,86 +0,0 @@
<?php
namespace App\Http\Controllers\Shop\Admin;
use App\Model\Shop\ArticleAttribute;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class ArticleAttributeController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param \App\ArticleAttribute $ArticleAttribute
* @return \Illuminate\Http\Response
*/
public function show(ArticleAttribute $ArticleAttribute)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\ArticleAttribute $ArticleAttribute
* @return \Illuminate\Http\Response
*/
public function edit(ArticleAttribute $ArticleAttribute)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\ArticleAttribute $ArticleAttribute
* @return \Illuminate\Http\Response
*/
public function update(Request $request, ArticleAttribute $ArticleAttribute)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\ArticleAttribute $ArticleAttribute
* @return \Illuminate\Http\Response
*/
public function destroy(ArticleAttribute $ArticleAttribute)
{
//
}
}

View File

@@ -1,64 +0,0 @@
<?php
namespace App\Http\Controllers\Shop\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Repositories\Shop\ArticleAttributeFamilies;
use App\Repositories\Shop\ArticleAttributeValues;
use App\DataTables\Shop\ArticleAttributeValuesDataTable;
class ArticleAttributeValueController extends Controller
{
public function index(ArticleAttributeValuesDataTable $dataTable)
{
$data['families'] = ArticleAttributeFamilies::getOptions();
return $dataTable->render('Shop.Admin.ArticleAttributeValues.list', $data);
}
public function getDatatable(Request $request)
{
return ArticleAttributeValues::getTables($request->all());
}
public function getOptionsByFamily(Request $request)
{
$id = $request->input('family_id');
return response()->json(ArticleAttributeValues::getSelectByFamily($id));
}
public function create()
{
return view('Shop.Admin.ArticleAttributeValues.create');
}
public function store(Request $request)
{
$ret = ArticleAttributeValues::store($request->all());
return redirect()->route('Shop.Admin.ArticleAttributeValues.index');
}
public function show($id)
{
$data = ArticleAttributeValues::get($id);
return view('Shop.Admin.ArticleAttributeValues.view', $data);
}
public function edit($id)
{
$data = ArticleAttributeValues::get($id);
return view('Shop.Admin.ArticleAttributeValues.edit', $data);
}
public function update(Request $request)
{
//
}
public function destroy($id)
{
return ArticleAttributeValues::destroy($id);
}
}

View File

@@ -1,56 +0,0 @@
<?php
namespace App\Http\Controllers\Shop\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Repositories\Shop\PriceFamilies;
use App\DataTables\Shop\PriceFamiliesDataTable;
class PriceFamilyController extends Controller
{
public function index(PriceFamiliesDataTable $dataTable)
{
return $dataTable->render('Shop.Admin.PriceFamilies.list');
}
public function getDatatable(Request $request)
{
return PriceFamilies::getTables($request->all());
}
public function create()
{
return view('Shop.Admin.PriceFamilies.create');
}
public function store(Request $request)
{
$ret = PriceFamilies::store($request->all());
return redirect()->route('Shop.Admin.PriceFamilies.index');
}
public function show($id)
{
$data = PriceFamilies::get($id);
return view('Shop.Admin.PriceFamilies.view', $data);
}
public function edit($id)
{
$data = PriceFamilies::get($id);
return view('Shop.Admin.PriceFamilies.edit', $data);
}
public function update(Request $request)
{
//
}
public function destroy($id)
{
return PriceFamilies::destroy($id);
}
}

View File

@@ -1,64 +0,0 @@
<?php
namespace App\Http\Controllers\Shop\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Repositories\Shop\PriceFamilies;
use App\Repositories\Shop\PriceFamilyValues;
use App\DataTables\Shop\PriceFamilyValuesDataTable;
class PriceFamilyValueController extends Controller
{
public function index(PriceFamilyValuesDataTable $dataTable)
{
$data['families'] = PriceFamilies::getOptions();
return $dataTable->render('Shop.Admin.PriceFamilyValues.list', $data);
}
public function getDatatable(Request $request)
{
return PriceFamilyValues::getTables($request->all());
}
public function getOptionsByFamily(Request $request)
{
$id = $request->input('family_id');
return response()->json(PriceFamilyValues::getSelectByFamily($id));
}
public function create()
{
return view('Shop.Admin.PriceFamilyValues.create');
}
public function store(Request $request)
{
$ret = PriceFamilyValues::store($request->all());
return redirect()->route('Shop.Admin.PriceFamilyValues.index');
}
public function show($id)
{
$data = PriceFamilyValues::get($id);
return view('Shop.Admin.PriceFamilyValues.view', $data);
}
public function edit($id)
{
$data = PriceFamilyValues::get($id);
return view('Shop.Admin.PriceFamilyValues.edit', $data);
}
public function update(Request $request)
{
//
}
public function destroy($id)
{
return PriceFamilyValues::destroy($id);
}
}

View File

@@ -5,50 +5,50 @@ namespace App\Http\Controllers\Shop\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Repositories\Shop\PriceFamilies;
use App\Repositories\Shop\UnityValues;
use App\DataTables\Shop\UnityValuesDataTable;
use App\Repositories\Shop\ArticleFamilies;
use App\Repositories\Shop\Unities;
use App\DataTables\Shop\UnitiesDataTable;
class UnityValueController extends Controller
{
public function index(UnityValuesDataTable $dataTable)
public function index(UnitiesDataTable $dataTable)
{
$data['families'] = PriceFamilies::getOptions();
return $dataTable->render('Shop.Admin.UnityValues.list', $data);
$data['families'] = ArticleFamilies::getOptions();
return $dataTable->render('Shop.Admin.Unities.list', $data);
}
public function getDatatable(Request $request)
{
return UnityValues::getTables($request->all());
return Unities::getTables($request->all());
}
public function getOptionsByFamily(Request $request)
{
$id = $request->input('family_id');
return response()->json(UnityValues::getSelectByFamily($id));
return response()->json(Unities::getSelectByFamily($id));
}
public function create()
{
return view('Shop.Admin.UnityValues.create');
return view('Shop.Admin.Unities.create');
}
public function store(Request $request)
{
$ret = UnityValues::store($request->all());
return redirect()->route('Shop.Admin.UnityValues.index');
$ret = Unities::store($request->all());
return redirect()->route('Shop.Admin.Unities.index');
}
public function show($id)
{
$data = UnityValues::get($id);
return view('Shop.Admin.UnityValues.view', $data);
$data = Unities::get($id);
return view('Shop.Admin.Unities.view', $data);
}
public function edit($id)
{
$data = UnityValues::get($id);
return view('Shop.Admin.UnityValues.edit', $data);
$data = Unities::get($id);
return view('Shop.Admin.Unities.edit', $data);
}
public function update(Request $request)
@@ -58,7 +58,7 @@ class UnityValueController extends Controller
public function destroy($id)
{
return UnityValues::destroy($id);
return Unities::destroy($id);
}
}

View File

@@ -3,9 +3,12 @@
namespace App\Models\Shop;
use Illuminate\Database\Eloquent\Model;
use Staudenmeir\EloquentHasManyDeep\HasRelationships;
class ArticleFamily extends Model
{
use HasRelationships;
protected $guarded = ['id'];
protected $table = 'shop_article_families';
@@ -13,4 +16,14 @@ class ArticleFamily extends Model
{
return $this->hasMany('App\Models\Shop\Article');
}
public function prices()
{
return $this->hasMany('App\Models\Shop\Price');
}
public function unities()
{
return $this->hasMany('App\Models\Shop\Unity');
}
}

View File

@@ -17,9 +17,9 @@ class ArticlePrice extends Model
return $this->hasOne('App\Models\Price');
}
public function priceFamilyValue()
public function article_family()
{
return $this->belongsTo('App\Models\PriceFamilyValue');
return $this->belongsTo('App\Models\ArticleFamily');
}
public function scopeByQuantity($query, $quantity)
@@ -27,8 +27,8 @@ class ArticlePrice extends Model
return $query->orderBy('quantity', 'desc')->where('quantity', '<', $quantity)->first();
}
public function scopeByPriceFamilyValue($query, $id)
public function scopeByFamily($query, $id)
{
return $query->where('price_family_value_id', $id);
return $query->where('article_family_value_id', $id);
}
}

View File

@@ -17,9 +17,9 @@ class Price extends Model
return $this->belongsTo('App\Models\Shop\Article');
}
public function price_family()
public function article_family()
{
return $this->belongsTo('App\Models\Shop\PriceFamily');
return $this->belongsTo('App\Models\Shop\ArticleFamily');
}
public function generic()
@@ -29,7 +29,7 @@ class Price extends Model
public function generic_prices()
{
}
public function scopeByArticle($query, $id)
@@ -37,9 +37,9 @@ class Price extends Model
return $query->where('article_id', $id);
}
public function scopeByPriceFamily($query, $id)
public function scopeByArticleFamily($query, $id)
{
return $query->where('price_family_id', $id);
return $query->where('article_family_id', $id);
}
public function scopeGeneric($query)

View File

@@ -1,30 +0,0 @@
<?php
namespace App\Models\Shop;
use Illuminate\Database\Eloquent\Model;
use Staudenmeir\EloquentHasManyDeep\HasRelationships;
class PriceFamily extends Model
{
use HasRelationships;
protected $guarded = ['id'];
protected $table = 'shop_price_families';
public function prices()
{
return $this->hasMany('App\Models\Shop\Price');
}
public function values()
{
return $this->hasMany('App\Models\Shop\PriceFamilyValue');
}
public function articles()
{
return $this->hasManyThrough('App\Models\Shop\Article','App\Models\Shop\Price');
}
}

View File

@@ -1,22 +0,0 @@
<?php
namespace App\Models\Shop;
use Illuminate\Database\Eloquent\Model;
class PriceFamilyValue extends Model
{
protected $guarded = ['id'];
protected $table = 'shop_price_family_values';
public function price_family()
{
return $this->belongsTo('App\Models\Shop\PriceFamily');
}
public function scopeByFamily($query, $id)
{
return $query->where('price_family_id');
}
}

View File

@@ -6,8 +6,16 @@ use Illuminate\Database\Eloquent\Model;
class Unity extends Model
{
protected $guarded = ['id'];
protected $table = 'shop_unities';
protected $guarded = ['id'];
protected $table = 'shop_unities';
public function article_family()
{
return $this->belongsTo('App\Models\Shop\ArticleFamily');
}
public function scopeByFamily($query, $id)
{
return $query->where('article_family_id');
}
}

View File

@@ -41,7 +41,7 @@ class Articles
$data['price_generics'] = PriceGenericCategories::getOptionsWithChildrens();
$data['families_options'] = ArticleFamilies::getOptions();
$data['taxes_options'] = Taxes::getOptions();
$data['attribute_families_options'] = PriceFamilies::getOptions();
$data['unities'] = Unities::getSelectByFamily($data['article_family_id']);
$data['tags_list'] = TagGroups::getTreeTags();
$data['models_options'] = ['App\Models\Botanic\Specie' => 'Espèces', 'App\Models\Botanic\Variety' => 'Variétés'];
return $data;

View File

@@ -1,55 +0,0 @@
<?php
namespace App\Repositories\Shop;
use Yajra\DataTables\DataTables;
use App\Models\Shop\PriceFamily;
class PriceFamilies
{
public static function getDatatable()
{
$model = PriceFamily::orderBy('name');
return Datatables::of($model)->make(true);
}
public static function getAll()
{
return PriceFamily::orderBy('name','asc')->get();
}
public static function get($id)
{
return PriceFamily::find($id);
}
public static function getOptions()
{
return PriceFamily::get()->pluck('name','id')->toArray();
}
public static function store($data)
{
$id = isset($data['id']) ? $data['id'] : false;
$item = $id ? self::update($data) : self::create($data);
return $item->id;
}
public static function create($data)
{
return PriceFamily::create($data);
}
public static function update($data)
{
return PriceFamily::find($id)->update($data);
}
public static function destroy($id)
{
return PriceFamily::destroy($id);
}
}

View File

@@ -1,67 +0,0 @@
<?php
namespace App\Repositories\Shop;
use Yajra\DataTables\DataTables;
use App\Models\Shop\PriceFamilyValue;
class PriceFamilyValues
{
public static function getDatatable()
{
$model = PriceFamilyValue::orderBy('name');
return Datatables::of($model)->make(true);
}
public static function getAll()
{
return PriceFamilyValue::orderBy('name','asc')->get();
}
public static function get($id)
{
return PriceFamilyValue::find($id);
}
public static function getOptions()
{
return PriceFamilyValue::get()->pluck('value','id')->toArray();
}
public static function getSelectByFamily($family_id)
{
// return PriceFamilyValue::byFamily($attribute_family_id)->get()->pluck('value','id')->toArray();
$values = PriceFamilyValue::byFamily($family_id)->get();
$data = [];
foreach ($values as $value)
{
$data[] = ['id' => $value->id, 'text' => $value->value];
}
return collect($data)->sortBy('text')->values()->all();
}
public static function store($data)
{
$id = isset($data['id']) ? $data['id'] : false;
$item = $id ? self::update($data) : self::create($data);
return $item->id;
}
public static function create($data)
{
return PriceFamilyValue::create($data);
}
public static function update($data)
{
return PriceFamilyValue::find($id)->update($data);
}
public static function destroy($id)
{
return PriceFamilyValue::destroy($id);
}
}

View File

@@ -23,6 +23,17 @@ class Unities
return Unity::orderBy('value','asc')->get()->pluck('value','id')->toArray();
}
public static function getSelectByFamily($family_id)
{
$values = Unity::byFamily($family_id)->get();
$data = [];
foreach ($values as $value)
{
$data[] = ['id' => $value->id, 'text' => $value->value];
}
return collect($data)->sortBy('text')->values()->all();
}
public static function getAll()
{
return Unity::orderBy('value','asc')->get();