Estás leyendo la publicación: Cómo disminuir el inventario de existencias de Magento 2 en Factura en lugar de Orden
espacio de nombres Proveedor\Extensión\Observador;
use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\Event\Observer;
utilice Magento\CatalogInventory\Api\StockRegistryInterface;
use Magento\Catálogo\Modelo\ProductRepository;
clase UpdateInventory implementa ObserverInterface
{
$productRepository protegido;
$stockRegistry protegido;
función pública __construct(ProductRepository $productRepository,
StockRegistryInterface $stockRegistry)
{
$this->productRepository = $productRepository;
$this->stockRegistry = $stockRegistry;
}
función pública ejecutar (Observador $ observador)
{
intentar
{
$factura = $observador->getEvent()->getInvoice();
$facturaItems = $factura->getAllItems();
foreach ($invoiceItems como $elemento)
{
$productId = $item->getProductId();
$producto = $este->productRepository->getById($productId);
$sku = $producto->getSku();
$artículo de stock = $this->stockRegistry->getStockItemBySku($sku);
$cantidad = $artículo en stock->getQty() – $artículo->getQty();
$artículo en stock->setQty($qty);
$artículo en stock->setIsInStock((bool)$qty);
$this->stockRegistry->updateStockItemBySku($sku, $stockItem);
}
}
atrapar (\Excepción $e)
{
devuelve $e->getMessage();
}
}
}