Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
All Data Structures Namespaces Files Functions Variables Pages
Public Member Functions | Protected Member Functions | Protected Attributes
InvoiceService Class Reference
Inheritance diagram for InvoiceService:
InvoiceManagementInterface

Public Member Functions

 __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)
 
 setCapture ($id)
 
 getCommentsList ($id)
 
 notify ($id)
 
 setVoid ($id)
 
 prepareInvoice (Order $order, array $qtys=[])
 

Protected Member Functions

 _canInvoiceItem (\Magento\Sales\Api\Data\OrderItemInterface $item, array $qtys=[])
 
 setInvoiceItemQuantity (\Magento\Sales\Api\Data\InvoiceItemInterface $item, $qty)
 

Protected Attributes

 $repository
 
 $commentRepository
 
 $criteriaBuilder
 
 $filterBuilder
 
 $invoiceNotifier
 
 $orderRepository
 
 $orderConverter
 

Detailed Description

Class InvoiceService

Definition at line 14 of file InvoiceService.php.

Constructor & Destructor Documentation

◆ __construct()

Constructor

Parameters
\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

Definition at line 72 of file InvoiceService.php.

80  {
81  $this->repository = $repository;
82  $this->commentRepository = $commentRepository;
83  $this->criteriaBuilder = $criteriaBuilder;
84  $this->filterBuilder = $filterBuilder;
85  $this->invoiceNotifier = $notifier;
86  $this->orderRepository = $orderRepository;
87  $this->orderConverter = $orderConverter;
88  }

Member Function Documentation

◆ _canInvoiceItem()

_canInvoiceItem ( \Magento\Sales\Api\Data\OrderItemInterface  $item,
array  $qtys = [] 
)
protected

Check if order item can be invoiced.

Parameters
\Magento\Sales\Api\Data\OrderItemInterface$item
array$qtys
Returns
bool @SuppressWarnings(PHPMD.CyclomaticComplexity)

Definition at line 204 of file InvoiceService.php.

205  {
206  if ($item->getLockedDoInvoice()) {
207  return false;
208  }
209  if ($item->isDummy()) {
210  if ($item->getHasChildren()) {
211  foreach ($item->getChildrenItems() as $child) {
212  if (empty($qtys)) {
213  if ($child->getQtyToInvoice() > 0) {
214  return true;
215  }
216  } else {
217  if (isset($qtys[$child->getId()]) && $qtys[$child->getId()] > 0) {
218  return true;
219  }
220  }
221  }
222  return false;
223  } elseif ($item->getParentItem()) {
224  $parent = $item->getParentItem();
225  if (empty($qtys)) {
226  return $parent->getQtyToInvoice() > 0;
227  } else {
228  return isset($qtys[$parent->getId()]) && $qtys[$parent->getId()] > 0;
229  }
230  }
231  } else {
232  return $item->getQtyToInvoice() > 0;
233  }
234  }
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17

◆ getCommentsList()

getCommentsList (   $id)

Lists comments for a specified invoice.

Parameters
int$idThe invoice ID.
Returns
\Magento\Sales\Api\Data\InvoiceCommentSearchResultInterface Invoice comment search result interface.

Implements InvoiceManagementInterface.

Definition at line 101 of file InvoiceService.php.

102  {
103  $this->criteriaBuilder->addFilters(
104  [$this->filterBuilder->setField('parent_id')->setValue($id)->setConditionType('eq')->create()]
105  );
106  $searchCriteria = $this->criteriaBuilder->create();
107  return $this->commentRepository->getList($searchCriteria);
108  }
$id
Definition: fieldset.phtml:14
$searchCriteria

◆ notify()

notify (   $id)

Emails a user a specified invoice.

Parameters
int$idThe invoice ID.
Returns
bool

Implements InvoiceManagementInterface.

Definition at line 113 of file InvoiceService.php.

114  {
115  $invoice = $this->repository->get($id);
116  return $this->invoiceNotifier->notify($invoice);
117  }
$id
Definition: fieldset.phtml:14
$invoice

◆ prepareInvoice()

prepareInvoice ( Order  $order,
array  $qtys = [] 
)

Creates an invoice based on the order and quantities provided

Parameters
Order$order
array$qtys
Returns
\Magento\Sales\Model\Order\Invoice
Exceptions

Definition at line 135 of file InvoiceService.php.

136  {
137  $invoice = $this->orderConverter->toInvoice($order);
138  $totalQty = 0;
139  $qtys = $this->prepareItemsQty($order, $qtys);
140  foreach ($order->getAllItems() as $orderItem) {
141  if (!$this->_canInvoiceItem($orderItem, $qtys)) {
142  continue;
143  }
144  $item = $this->orderConverter->itemToInvoiceItem($orderItem);
145  if ($orderItem->isDummy()) {
146  $qty = $orderItem->getQtyOrdered() ? $orderItem->getQtyOrdered() : 1;
147  } elseif (isset($qtys[$orderItem->getId()])) {
148  $qty = (double) $qtys[$orderItem->getId()];
149  } elseif (empty($qtys)) {
150  $qty = $orderItem->getQtyToInvoice();
151  } else {
152  $qty = 0;
153  }
154  $totalQty += $qty;
155  $this->setInvoiceItemQuantity($item, $qty);
156  $invoice->addItem($item);
157  }
158  $invoice->setTotalQty($totalQty);
159  $invoice->collectTotals();
160  $order->getInvoiceCollection()->addItem($invoice);
161  return $invoice;
162  }
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
$orderItem
Definition: order.php:30
$order
Definition: order.php:55
$invoice
setInvoiceItemQuantity(\Magento\Sales\Api\Data\InvoiceItemInterface $item, $qty)
_canInvoiceItem(\Magento\Sales\Api\Data\OrderItemInterface $item, array $qtys=[])

◆ setCapture()

setCapture (   $id)

Sets invoice capture.

Parameters
int$id
Returns
string

Implements InvoiceManagementInterface.

Definition at line 93 of file InvoiceService.php.

94  {
95  return (bool)$this->repository->get($id)->capture();
96  }
$id
Definition: fieldset.phtml:14

◆ setInvoiceItemQuantity()

setInvoiceItemQuantity ( \Magento\Sales\Api\Data\InvoiceItemInterface  $item,
  $qty 
)
protected

Set quantity to invoice item

Parameters
\Magento\Sales\Api\Data\InvoiceItemInterface$item
float$qty
Returns
$this
Exceptions

Check qty availability

Definition at line 244 of file InvoiceService.php.

245  {
246  $qty = ($item->getOrderItem()->getIsQtyDecimal()) ? (double) $qty : (int) $qty;
247  $qty = $qty > 0 ? $qty : 0;
248 
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())
257  );
258  }
259 
260  $item->setQty($qty);
261 
262  return $this;
263  }
__()
Definition: __.php:13

◆ setVoid()

setVoid (   $id)

Voids a specified invoice.

Parameters
int$idThe invoice ID.
Returns
bool

Implements InvoiceManagementInterface.

Definition at line 122 of file InvoiceService.php.

123  {
124  return (bool)$this->repository->get($id)->void();
125  }
$id
Definition: fieldset.phtml:14

Field Documentation

◆ $commentRepository

$commentRepository
protected

Definition at line 28 of file InvoiceService.php.

◆ $criteriaBuilder

$criteriaBuilder
protected

Definition at line 35 of file InvoiceService.php.

◆ $filterBuilder

$filterBuilder
protected

Definition at line 42 of file InvoiceService.php.

◆ $invoiceNotifier

$invoiceNotifier
protected

Definition at line 49 of file InvoiceService.php.

◆ $orderConverter

$orderConverter
protected

Definition at line 59 of file InvoiceService.php.

◆ $orderRepository

$orderRepository
protected

Definition at line 54 of file InvoiceService.php.

◆ $repository

$repository
protected

Definition at line 21 of file InvoiceService.php.


The documentation for this class was generated from the following file: