2849a91f by Vo Van Khoa

Fix cannot get Qty of configable product

1 parent 3fcb9a31
......@@ -8,10 +8,6 @@
namespace FGCT\OverrideCreateInvoice\Block\Adminhtml\Items\Renderer;
use Magento\Sales\Model\Order\CreditMemo\Item as CreditMemoItem;
use Magento\Sales\Model\Order\Invoice\Item as InvoiceItem;
use Magento\Sales\Model\Order\Item as OrderItem;
/**
* Order item render block
*
......@@ -21,6 +17,7 @@ use Magento\Sales\Model\Order\Item as OrderItem;
class DefaultRenderer extends \Magento\Sales\Block\Adminhtml\Items\Renderer\DefaultRenderer {
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Magento\Catalog\Model\Product $product,
\Magento\CatalogInventory\Api\StockRegistryInterface $stockRegistry,
\Magento\CatalogInventory\Api\StockConfigurationInterface $stockConfiguration,
\Magento\CatalogInventory\Model\Stock\StockItemRepository $stockItemRepository,
......@@ -28,12 +25,15 @@ class DefaultRenderer extends \Magento\Sales\Block\Adminhtml\Items\Renderer\Defa
array $data = []
) {
$this->_coreRegistry = $registry;
$this->_product = $product;
$this->_stockItemRepository = $stockItemRepository;
parent::__construct($context, $stockRegistry, $stockConfiguration, $registry, $data);
}
public function getErrorOutStock($item) {
$productId = $item->getProductId();
//$productId = $item->getProductId();
$sku = $item->getSku();
$productId = $this->_product->getIdBySku($sku);
$_productStock = $this->_stockItemRepository->get($productId);
$qtySelected = intval($item->getQty());
$qtyProduct = $_productStock->getQty();
......
......@@ -54,6 +54,7 @@ class Save extends \Magento\Sales\Controller\Adminhtml\Order\Invoice\Save {
ShipmentSender $shipmentSender,
ShipmentFactory $shipmentFactory,
InvoiceService $invoiceService,
\Magento\Catalog\Model\Product $product,
\Magento\CatalogInventory\Model\Stock\StockItemRepository $stockItemRepository
) {
$this->registry = $registry;
......@@ -61,6 +62,7 @@ class Save extends \Magento\Sales\Controller\Adminhtml\Order\Invoice\Save {
$this->shipmentSender = $shipmentSender;
$this->shipmentFactory = $shipmentFactory;
$this->invoiceService = $invoiceService;
$this->_product = $product;
$this->_stockItemRepository = $stockItemRepository;
parent::__construct($context, $registry, $invoiceSender, $shipmentSender, $shipmentFactory, $invoiceService);
}
......@@ -100,7 +102,10 @@ class Save extends \Magento\Sales\Controller\Adminhtml\Order\Invoice\Save {
$invoice = $this->invoiceService->prepareInvoice($order, $invoiceItems);
foreach ($invoice->getAllItems() as $item) {
$_productStock = $this->_stockItemRepository->get($item->getProductId());
$sku = $item->getSku();
//$productId = $item->getProductId(); // parent
$productId = $this->_product->getIdBySku($sku);
$_productStock = $this->_stockItemRepository->get($productId);
$qtySelected = intval($item->getQty());
$qtyProduct = $_productStock->getQty();
if(!$_productStock->getIsInStock() || ($qtySelected > $qtyProduct)) {
......@@ -109,7 +114,7 @@ class Save extends \Magento\Sales\Controller\Adminhtml\Order\Invoice\Save {
return $resultRedirect->setPath('sales/order_invoice/new/*', ['order_id' => $order->getId()]);
}
}
$invoice = false;
//$invoice = false;
if (!$invoice) {
throw new LocalizedException(__('We can\'t save the invoice right now.'));
}
......