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'])) {