diff --git a/Layout/default/Product/Index.php b/Layout/default/Product/Index.php index 25a0e0dbd..dfc84dc25 100644 --- a/Layout/default/Product/Index.php +++ b/Layout/default/Product/Index.php @@ -158,8 +158,8 @@ ivt_id?> $product->id])?>"> - $product->id])?>"> - $product->id])?>" class="text-danger" onclick="if(!confirm('Berechtigungen wirklich löschen?')) return false;" title="Produkt Löschen"> + $product->id])?>" onclick="if(!confirm('Wirklich Kopie erstellen?')) return false;"> + $product->id])?>" class="text-danger" onclick="if(!confirm('Produkt wirklich löschen?')) return false;" title="Produkt Löschen"> diff --git a/application/OrderProduct/OrderProductModel.php b/application/OrderProduct/OrderProductModel.php index 0af892007..898f5fec8 100644 --- a/application/OrderProduct/OrderProductModel.php +++ b/application/OrderProduct/OrderProductModel.php @@ -100,7 +100,25 @@ class OrderProductModel } return null; } + + public static function count($filter) { + $db = FronkDB::singleton(); + $where = self::getSqlFilter($filter); + $sql = "SELECT COUNT(*) as cnt FROM OrderProduct + WHERE $where + "; + + mfLoghandler::singleton()->debug($sql); + + $res = $db->query($sql); + if($db->num_rows($res)) { + $data = $db->fetch_object($res); + return $data->cnt; + } + return 0; + } + public static function search($filter) { $items = []; diff --git a/application/Preorder/PreorderModel.php b/application/Preorder/PreorderModel.php index f63475731..a294f6847 100644 --- a/application/Preorder/PreorderModel.php +++ b/application/Preorder/PreorderModel.php @@ -544,6 +544,20 @@ class PreorderModel { } } + if(array_key_exists("product_id", $filter)) { + $product_id = $filter['product_id']; + if(is_numeric($product_id)) { + $where .= " AND tt_preorder.product_id=$product_id"; + } + } + + if(array_key_exists("setup_product_id", $filter)) { + $setup_product_id = $filter['setup_product_id']; + if(is_numeric($setup_product_id)) { + $where .= " AND tt_preorder.setup_product_id=$setup_product_id"; + } + } + if(array_key_exists("address_created", $filter)) { $address_created = $filter['address_created']; if($address_created === true) { @@ -610,6 +624,8 @@ class PreorderModel { } } + + if(array_key_exists("extref", $filter)) { $extref = FronkDB::singleton()->escape($filter['extref']); if($extref) { diff --git a/application/Product/ProductController.php b/application/Product/ProductController.php index 731d17f62..ef758bd55 100644 --- a/application/Product/ProductController.php +++ b/application/Product/ProductController.php @@ -312,8 +312,39 @@ class ProductController extends mfBaseController { $this->redirect("Product"); } - // check if Product is unused + // check if product is in use + if(OrderProductModel::count(["product_id" => $product->id])) { + $this->layout()->setFlash("Produkt kann nicht gelöscht werden, da es in Verwendung ist!", "error"); + $this->redirect("Product"); + } + + if(ContractModel::count(["product_id" => $product->id])) { + $this->layout()->setFlash("Produkt kann nicht gelöscht werden, da es in Verwendung ist!", "error"); + $this->redirect("Product"); + } + + if(ContractqueueModel::count(["product_id" => $product->id])) { + $this->layout()->setFlash("Produkt kann nicht gelöscht werden, da es in Verwendung ist!", "error"); + $this->redirect("Product"); + } + + if(PreorderModel::count(["product_id" => $product->id]) || PreorderModel::count(["setup_product_id" => $product->id])) { + $this->layout()->setFlash("Produkt kann nicht gelöscht werden, da es in Verwendung ist!", "error"); + $this->redirect("Product"); + } + + // delete attributes + foreach($product->attributes as $attrib) { + $attrib->delete(); + } + // delete networks + foreach(ProductNetworkModel::search(['product_id' => $product->id]) as $pn) { + $pn->delete(); + } + + // delete product $product->delete(); + $this->layout()->setFlash("Produkt erfolgreich gelöscht", "success"); $this->redirect("Product"); }