/** * Initialize model comments and return comment collection * * @return \Magento\Sales\Model\Resource\Order\Comment\Collection\AbstractCollection * @throws \Magento\Framework\Exception\LocalizedException */ public function getComments() { if ($this->_commentCollection === null) { $entity = $this->getEntity(); if ($entity instanceof \Magento\Sales\Model\Order\Invoice) { $this->_commentCollection = $this->_invoiceCollectionFactory->create(); } elseif ($entity instanceof \Magento\Sales\Model\Order\Creditmemo) { $this->_commentCollection = $this->_memoCollectionFactory->create(); } elseif ($entity instanceof \Magento\Sales\Model\Order\Shipment) { $this->_commentCollection = $this->_shipmentCollectionFactory->create(); } else { throw new \Magento\Framework\Exception\LocalizedException(__('We found an invalid entity model.')); } $this->_commentCollection->setParentFilter($entity)->setCreatedAtOrder()->addVisibleOnFrontFilter(); } return $this->_commentCollection; }
/** * Return invoice comments * * @return \Magento\Sales\Api\Data\InvoiceCommentInterface[] */ public function getComments() { if ($this->getData(InvoiceInterface::COMMENTS) === null && $this->getId()) { $collection = $this->_commentCollectionFactory->create()->setInvoiceFilter($this->getId()); foreach ($collection as $comment) { $comment->setInvoice($this); } $this->setData(InvoiceInterface::COMMENTS, $collection->getItems()); } return $this->getData(InvoiceInterface::COMMENTS); }
/** * @param bool $reload * @return \Magento\Sales\Model\Resource\Order\Invoice\Comment\Collection */ public function getCommentsCollection($reload = false) { if (is_null($this->_comments) || $reload) { $this->_comments = $this->_commentCollectionFactory->create()->setInvoiceFilter($this->getId())->setCreatedAtOrder(); /** * When invoice created with adding comment, comments collection * must be loaded before we added this comment. */ $this->_comments->load(); if ($this->getId()) { foreach ($this->_comments as $comment) { $comment->setInvoice($this); } } } return $this->_comments; }