From b7e3eefed6ff1a476d673c2b43c0b87288fb2e4a Mon Sep 17 00:00:00 2001 From: Valentin Lab Date: Wed, 15 Oct 2025 13:17:54 +0200 Subject: [PATCH] new: allow to delete seuil lines in price-list's pice modal --- .../Admin/Shop/PriceListValueController.php | 5 +- app/Repositories/Shop/PriceListValues.php | 11 ++ app/Repositories/Shop/PriceLists.php | 14 ++- .../partials/row_price.blade.php | 7 +- .../Admin/Shop/PriceLists/modal.blade.php | 104 ++++++++++++++++-- 5 files changed, 126 insertions(+), 15 deletions(-) diff --git a/app/Http/Controllers/Admin/Shop/PriceListValueController.php b/app/Http/Controllers/Admin/Shop/PriceListValueController.php index dc6d9a35..9b42045d 100644 --- a/app/Http/Controllers/Admin/Shop/PriceListValueController.php +++ b/app/Http/Controllers/Admin/Shop/PriceListValueController.php @@ -71,7 +71,10 @@ class PriceListValueController extends Controller public function addPrice($index) { - $data['index'] = $index; + $data = [ + 'index' => $index, + 'taxes' => Taxes::getOptions(), + ]; return view('Admin.Shop.PriceListValues.partials.row_price', $data); } diff --git a/app/Repositories/Shop/PriceListValues.php b/app/Repositories/Shop/PriceListValues.php index 322e66f3..d2ecb698 100644 --- a/app/Repositories/Shop/PriceListValues.php +++ b/app/Repositories/Shop/PriceListValues.php @@ -52,6 +52,17 @@ class PriceListValues } } + public static function purgeRemovedValues($price_list_id, array $ids) + { + if (! count($ids)) { + return; + } + + PriceListValue::byPriceList($price_list_id) + ->whereIn('id', $ids) + ->delete(); + } + protected static function hasPrice($value): bool { if (! array_key_exists('price', $value)) { diff --git a/app/Repositories/Shop/PriceLists.php b/app/Repositories/Shop/PriceLists.php index 1f77e3bc..3a7cb504 100644 --- a/app/Repositories/Shop/PriceLists.php +++ b/app/Repositories/Shop/PriceLists.php @@ -17,7 +17,7 @@ class PriceLists 'taxes' => Taxes::getOptions(), 'price_list' => [ 'tariff_id' => $tariffId, - 'price_list_values' => array_fill(0, 3, ''), + 'price_list_values' => [], ], ]; } @@ -50,9 +50,8 @@ class PriceLists public static function edit($id) { $price_list = self::getFull($id)->toArray(); - $n = count($price_list['price_list_values']); - if ($n <= 3) { - $price_list['price_list_values'] += array_fill($n, 3 - $n, ''); + if (count($price_list['price_list_values']) === 0) { + $price_list['price_list_values'][] = []; } return $price_list; @@ -71,9 +70,14 @@ class PriceLists public static function store($data) { $id = $data['id'] ?? false; - $price_list_values = $data['price_list_values'] ?? false; + $price_list_values = $data['price_list_values'] ?? []; + $deleted_values = array_map('intval', array_filter($data['deleted_price_list_value_ids'] ?? [], function ($value) { + return $value !== null && $value !== ''; + })); unset($data['price_list_values']); + unset($data['deleted_price_list_value_ids']); $price_list = $id ? self::update($data) : self::create($data); + PriceListValues::purgeRemovedValues($price_list->id, $deleted_values); PriceListValues::storePrices($price_list->id, $price_list_values); return $price_list; diff --git a/resources/views/Admin/Shop/PriceListValues/partials/row_price.blade.php b/resources/views/Admin/Shop/PriceListValues/partials/row_price.blade.php index 633612ef..e59545f9 100644 --- a/resources/views/Admin/Shop/PriceListValues/partials/row_price.blade.php +++ b/resources/views/Admin/Shop/PriceListValues/partials/row_price.blade.php @@ -15,4 +15,9 @@ @include('components.form.inputs.money', ['name' => 'price_list_values[' . $index . '][price_taxed]', 'value' => $price_list_value['price_taxed'] ?? null, 'required' => true, 'class' => 'price_taxed']) - \ No newline at end of file + + + + diff --git a/resources/views/Admin/Shop/PriceLists/modal.blade.php b/resources/views/Admin/Shop/PriceLists/modal.blade.php index 84bfa8ed..27bf74a3 100644 --- a/resources/views/Admin/Shop/PriceLists/modal.blade.php +++ b/resources/views/Admin/Shop/PriceLists/modal.blade.php @@ -30,12 +30,18 @@ Unit. HT TVA Unit. TTC + Actions - @foreach ($price_list['price_list_values'] as $price_list_value) - @include('Admin.Shop.PriceListValues.partials.row_price', ['index' => $loop->index]) + @php($priceListValues = $price_list['price_list_values'] ?? []) + @php($nextIndex = count($priceListValues)) + + @foreach ($priceListValues as $index => $price_list_value) + @include('Admin.Shop.PriceListValues.partials.row_price', ['index' => $index, 'price_list_value' => $price_list_value]) @endforeach + + @include('Admin.Shop.PriceListValues.partials.row_price', ['index' => $nextIndex, 'price_list_value' => []]) @@ -49,21 +55,30 @@ @endcomponent - +