85 $this->invoiceNotifier = $notifier;
95 return (
bool)$this->repository->get(
$id)->capture();
103 $this->criteriaBuilder->addFilters(
104 [$this->filterBuilder->setField(
'parent_id')->setValue(
$id)->setConditionType(
'eq')->create()]
116 return $this->invoiceNotifier->notify(
$invoice);
124 return (
bool)$this->repository->get(
$id)->void();
139 $qtys = $this->prepareItemsQty(
$order, $qtys);
171 private function prepareItemsQty(
Order $order, array $qtys = [])
179 foreach (
$orderItem->getChildrenItems() as $child) {
180 if (!isset($qtys[$child->getId()])) {
181 $qtys[$child->getId()] = $child->getQtyToInvoice();
186 if (!isset($qtys[$parent->getId()])) {
187 $qtys[$parent->getId()] = $parent->getQtyToInvoice();
206 if (
$item->getLockedDoInvoice()) {
209 if (
$item->isDummy()) {
210 if (
$item->getHasChildren()) {
211 foreach (
$item->getChildrenItems() as $child) {
213 if ($child->getQtyToInvoice() > 0) {
217 if (isset($qtys[$child->getId()]) && $qtys[$child->getId()] > 0) {
224 $parent =
$item->getParentItem();
226 return $parent->getQtyToInvoice() > 0;
228 return isset($qtys[$parent->getId()]) && $qtys[$parent->getId()] > 0;
232 return $item->getQtyToInvoice() > 0;
246 $qty = (
$item->getOrderItem()->getIsQtyDecimal()) ? (
double) $qty : (int) $qty;
247 $qty = $qty > 0 ? $qty : 0;
252 $qtyToInvoice = sprintf(
"%F",
$item->getOrderItem()->getQtyToInvoice());
253 $qty = sprintf(
"%F", $qty);
254 if ($qty > $qtyToInvoice && !
$item->getOrderItem()->isDummy()) {
255 throw new \Magento\Framework\Exception\LocalizedException(
256 __(
'We found an invalid quantity to invoice item "%1".',
$item->getName())
elseif(isset( $params[ 'redirect_parent']))
__construct(\Magento\Sales\Api\InvoiceRepositoryInterface $repository, \Magento\Sales\Api\InvoiceCommentRepositoryInterface $commentRepository, \Magento\Framework\Api\SearchCriteriaBuilder $criteriaBuilder, \Magento\Framework\Api\FilterBuilder $filterBuilder, \Magento\Sales\Model\Order\InvoiceNotifier $notifier, \Magento\Sales\Api\OrderRepositoryInterface $orderRepository, \Magento\Sales\Model\Convert\Order $orderConverter)
setInvoiceItemQuantity(\Magento\Sales\Api\Data\InvoiceItemInterface $item, $qty)
_canInvoiceItem(\Magento\Sales\Api\Data\OrderItemInterface $item, array $qtys=[])
prepareInvoice(Order $order, array $qtys=[])