/** * @param \Praxigento\Odoo\Data\Odoo\Inventory\Product\Warehouse\Lot[] $lots * @param \Magento\CatalogInventory\Api\Data\StockItemInterface $stockItem */ public function processLots($lots, $stockItem) { $qtyTotal = 0; $stockItemId = $stockItem->getItemId(); foreach ($lots as $lot) { $qtyTotal += $this->_subLot->processLot($stockItemId, $lot); } /* update stock item qty */ $stockItem->setQty($qtyTotal); $isInStock = $qtyTotal > 0; $stockItem->setIsInStock($isInStock); $this->_mageRepoStockItem->save($stockItem); /* cleanup extra lots */ $this->_subLot->cleanupLots($stockItemId, $lots); }
public function test_processLot_update() { /** === Test Data === */ $STOCK_ITEM_ID = 32; $LOT_ID_O1 = 41; $LOT_QTY = 432; $LOT_ID_M1 = 21; $LOT = new \Praxigento\Odoo\Data\Odoo\Inventory\Product\Warehouse\Lot(); $QTY_ITEM = 'some item'; /** === Setup Mocks === */ // $lotIdOdoo = $lot->getId(); $LOT->setId($LOT_ID_O1); // $qty = $lot->getQuantity(); $LOT->setQuantity($LOT_QTY); // $lotIdMage = $this->_repoAggLot->getMageIdByOdooId($lotIdOdoo); $this->mRepoAggLot->shouldReceive('getMageIdByOdooId')->once()->andReturn($LOT_ID_M1); // $qtyItem = $this->_repoWarehouseEntityQuantity->getById($pk); $this->mRepoWrhsEntityQty->shouldReceive('getById')->once()->andReturn($QTY_ITEM); // $this->_repoWarehouseEntityQuantity->updateById($bind, $pk); $this->mRepoWrhsEntityQty->shouldReceive('updateById')->once()->andReturn(); /** === Call and asserts === */ $this->obj->processLot($STOCK_ITEM_ID, $LOT); }