diff --git a/src/QUI/ERP/Order/Basket/Basket.php b/src/QUI/ERP/Order/Basket/Basket.php index 28dc01939f7340f29177a4cb356ab4c6b2af16f4..94a4eda1d0fee5a6ee6e0feb99f7ef125a8e5e74 100644 --- a/src/QUI/ERP/Order/Basket/Basket.php +++ b/src/QUI/ERP/Order/Basket/Basket.php @@ -237,10 +237,17 @@ public function save(): void $products = $this->List->getProducts(); foreach ($products as $Product) { - /* @var $Product Product */ + if ( + !method_exists($Product, 'getUuid') + || !method_exists($Product, 'getProductSetParentUuid') + || !method_exists($Product, 'getQuantity') + || !method_exists($Product, 'toArticle') + ) { + continue; + } + $fields = $Product->getFields(); - /* @var $Field UniqueField */ foreach ($fields as $Field) { $Field->setChangeableStatus(false); } @@ -255,7 +262,6 @@ public function save(): void 'fields' => [] ]; - /* @var $Field UniqueField */ foreach ($fields as $Field) { if ($Field->isCustomField()) { $productData['fields'][] = $Field->getAttributes(); @@ -293,11 +299,17 @@ public function toArray(): array $products = $Products->getProducts(); $result = []; - /* @var $Product Product */ foreach ($products as $Product) { + if ( + !method_exists($Product, 'getUuid') + || !method_exists($Product, 'getProductSetParentUuid') + || !method_exists($Product, 'getQuantity') + ) { + continue; + } + $fields = []; - /* @var $Field UniqueField */ foreach ($Product->getFields() as $Field) { if (!$Field->isPublic() && !$Field->isCustomField()) { continue; @@ -456,8 +468,11 @@ public function toOrder(QUI\ERP\Order\AbstractOrder $Order): void $Order->clear(); foreach ($products as $Product) { + if (!method_exists($Product, 'toArticle')) { + continue; + } + try { - /* @var QUI\ERP\Order\Basket\Product $Product */ $Order->addArticle($Product->toArticle(null, false)); } catch (QUI\Users\Exception $Exception) { QUI\System\Log::writeDebugException($Exception); @@ -503,7 +518,7 @@ protected function createNewOrder(): QUI\ERP\Order\OrderInProcess try { // select the last order in processing return $Orders->getLastOrderInProcessFromUser($User); - } catch (QUI\Erp\Order\Exception) { + } catch (QUI\ERP\Order\Exception) { } return QUI\ERP\Order\Factory::getInstance()->createOrderInProcess(); diff --git a/src/QUI/ERP/Order/Basket/BasketGuest.php b/src/QUI/ERP/Order/Basket/BasketGuest.php index 57d6ed3aa5a4eb0b3fd72ad302471f4b4353987d..a96a05dd8b17ed8db52b3f3ef48bfb6c45e4911e 100644 --- a/src/QUI/ERP/Order/Basket/BasketGuest.php +++ b/src/QUI/ERP/Order/Basket/BasketGuest.php @@ -84,13 +84,13 @@ public function addProduct(Product $Product): void //endregion - /** + /** * Import the products to the basket * * @param array|null $products * @throws ExceptionStack */ - public function import(array|null $products = []): void + public function import(array | null $products = []): void { $this->clear(); @@ -164,11 +164,13 @@ public function toArray(): array $products = $Products->getProducts(); $result = []; - /* @var $Product Product */ foreach ($products as $Product) { + if (!method_exists($Product, 'getQuantity')) { + continue; + } + $fields = []; - /* @var $Field UniqueField */ foreach ($Product->getFields() as $Field) { if (!$Field->isPublic()) { continue; diff --git a/src/QUI/ERP/Order/Basket/BasketOrder.php b/src/QUI/ERP/Order/Basket/BasketOrder.php index 790d4aa00ce7e2a191ce36e3a0c06f2e81519b92..af63280076f0edd3e2f24bb50f21e89c9a542791 100644 --- a/src/QUI/ERP/Order/Basket/BasketOrder.php +++ b/src/QUI/ERP/Order/Basket/BasketOrder.php @@ -212,6 +212,16 @@ public function addProduct(Product $Product): void $foundProduct = false; foreach ($Products as $P) { + if ( + !method_exists($Product, 'toArray') + || !method_exists($Product, 'getQuantity') + || !method_exists($P, 'toArray') + || !method_exists($P, 'getQuantity') + || !method_exists($P, 'setQuantity') + ) { + continue; + } + $p1 = OrderProductUtils::getCompareProductArray($Product->toArray()); $p2 = OrderProductUtils::getCompareProductArray($P->toArray()); @@ -352,7 +362,6 @@ public function toArray(): array $products = $Products->getProducts(); $result = []; - /* @var $Product Product */ foreach ($products as $Product) { $fields = []; @@ -371,7 +380,7 @@ public function toArray(): array $attributes = [ 'id' => $Product->getId(), - 'quantity' => $Product->getQuantity(), + 'quantity' => method_exists($Product, 'getQuantity') ? $Product->getQuantity() : 1, 'fields' => $fields ]; @@ -457,8 +466,9 @@ public function updateOrder(): void foreach ($products as $Product) { try { - /* @var QUI\ERP\Order\Basket\Product $Product */ - $this->Order->addArticle($Product->toArticle(null, false)); + if (method_exists($Product, 'toArticle')) { + $this->Order->addArticle($Product->toArticle(null, false)); + } } catch (QUI\Users\Exception $Exception) { QUI\System\Log::writeDebugException($Exception); } diff --git a/src/QUI/ERP/Order/Basket/Product.php b/src/QUI/ERP/Order/Basket/Product.php index 5ce005691c3abc042294ddbb308a5fd09e0d6d5f..96e7e7049e04476601a1b5d0559c0a00730a687b 100644 --- a/src/QUI/ERP/Order/Basket/Product.php +++ b/src/QUI/ERP/Order/Basket/Product.php @@ -90,9 +90,8 @@ public function __construct(int $pid, array $attributes = []) // set missing fields $productFields = $Product->getFields(); - /* @var $Field QUI\ERP\Products\Field\Field */ foreach ($productFields as $Field) { - if (!isset($fieldList[$Field->getId()])) { + if (!isset($fieldList[$Field->getId()]) && method_exists($Field, 'getAttributesForUniqueField')) { $fieldList[$Field->getId()] = $Field->getAttributesForUniqueField(); } } @@ -108,7 +107,7 @@ public function __construct(int $pid, array $attributes = []) * @param $fieldValue * @return null|QUI\ERP\Products\Field\Field|UniqueField */ - protected function importFieldData($fieldId, $fieldValue): QUI\ERP\Products\Field\Field|UniqueField|null + protected function importFieldData($fieldId, $fieldValue): QUI\ERP\Products\Field\Field | UniqueField | null { try { if (is_array($fieldValue) && isset($fieldValue['identifier'])) {