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