/**
  * @param int $productIdMage
  * @param \Praxigento\Odoo\Data\Odoo\Inventory\Product\IWarehouse[] $warehouses
  */
 public function processWarehouses($productIdMage, $warehouses)
 {
     /* get all stock items and create map by stock id (warehouse ID)*/
     $stockItems = $this->_getStockItems($productIdMage);
     $mapItemsByStock = $this->_mapStockIds($stockItems);
     $stocksFound = [];
     // array of the replicated warehouses with correspondence in $stockItems
     foreach ($warehouses as $warehouse) {
         $stockIdOdoo = $warehouse->getIdOdoo();
         $pvWarehouse = $warehouse->getPvWarehouse();
         $priceWarehouse = $warehouse->getPriceWarehouse();
         /* get warehouse data by Odoo ID */
         $stockIdMage = $this->_repoRegistry->getWarehouseMageIdByOdooId($stockIdOdoo);
         /* create or update product data for warehouse (stock)*/
         if (isset($mapItemsByStock[$stockIdMage])) {
             /* there is item for the stock, update item data */
             $stocksFound[] = $stockIdMage;
             /* get stock item ID by stock ID */
             $stockItemIdMage = $mapItemsByStock[$stockIdMage];
             $stockItem = $stockItems[$stockItemIdMage];
             /* update warehouse price & PV */
             $this->_subDataHandler->updateWarehouseData($stockItemIdMage, $priceWarehouse, $pvWarehouse);
         } else {
             /* there is no item for the stock, create new item */
             $stockItem = $this->_subDataHandler->createWarehouseData($productIdMage, $stockIdMage, $priceWarehouse, $pvWarehouse);
         }
         /* create or update lot/quantity data */
         $lots = $warehouse->getLots();
         $this->_subDataHandler->processLots($lots, $stockItem);
     }
 }