Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Protected Member Functions | Protected Attributes
CreditmemoFactory Class Reference

Public Member Functions

 __construct (\Magento\Sales\Model\Convert\OrderFactory $convertOrderFactory, \Magento\Tax\Model\Config $taxConfig, \Magento\Framework\Serialize\Serializer\Json $serializer=null)
 
 createByOrder (\Magento\Sales\Model\Order $order, array $data=[])
 

Protected Member Functions

 canRefundItem ($item, $qtys=[], $invoiceQtysRefundLimits=[])
 
 canRefundNoDummyItem ($item, $invoiceQtysRefundLimits=[])
 
 initData ($creditmemo, $data)
 

Protected Attributes

 $convertor
 
 $taxConfig
 
 $unserialize
 

Detailed Description

Factory class for

See also
\Magento\Sales\Model\Order\Creditmemo

Definition at line 14 of file CreditmemoFactory.php.

Constructor & Destructor Documentation

◆ __construct()

__construct ( \Magento\Sales\Model\Convert\OrderFactory  $convertOrderFactory,
\Magento\Tax\Model\Config  $taxConfig,
\Magento\Framework\Serialize\Serializer\Json  $serializer = null 
)

Factory constructor

Parameters
\Magento\Sales\Model\Convert\OrderFactory$convertOrderFactory
\Magento\Tax\Model\Config$taxConfig
\Magento\Framework\Serialize\Serializer\Json$serializer

Definition at line 46 of file CreditmemoFactory.php.

50  {
51  $this->convertor = $convertOrderFactory->create();
52  $this->taxConfig = $taxConfig;
54  \Magento\Framework\Serialize\Serializer\Json::class
55  );
56  }

Member Function Documentation

◆ canRefundItem()

canRefundItem (   $item,
  $qtys = [],
  $invoiceQtysRefundLimits = [] 
)
protected

Check if order item can be refunded

Parameters
\Magento\Sales\Model\Order\Item$item
array$qtys
array$invoiceQtysRefundLimits
Returns
bool @SuppressWarnings(PHPMD.CyclomaticComplexity)

Definition at line 145 of file CreditmemoFactory.php.

146  {
147  if ($item->isDummy()) {
148  if ($item->getHasChildren()) {
149  foreach ($item->getChildrenItems() as $child) {
150  if (empty($qtys)) {
151  if ($this->canRefundNoDummyItem($child, $invoiceQtysRefundLimits)) {
152  return true;
153  }
154  } else {
155  if (isset($qtys[$child->getId()]) && $qtys[$child->getId()] > 0) {
156  return true;
157  }
158  }
159  }
160  return false;
161  } elseif ($item->getParentItem()) {
162  $parent = $item->getParentItem();
163  if (empty($qtys)) {
164  return $this->canRefundNoDummyItem($parent, $invoiceQtysRefundLimits);
165  } else {
166  return isset($qtys[$parent->getId()]) && $qtys[$parent->getId()] > 0;
167  }
168  }
169  } else {
170  return $this->canRefundNoDummyItem($item, $invoiceQtysRefundLimits);
171  }
172  }
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
canRefundNoDummyItem($item, $invoiceQtysRefundLimits=[])

◆ canRefundNoDummyItem()

canRefundNoDummyItem (   $item,
  $invoiceQtysRefundLimits = [] 
)
protected

Check if no dummy order item can be refunded

Parameters
\Magento\Sales\Model\Order\Item$item
array$invoiceQtysRefundLimits
Returns
bool

Definition at line 181 of file CreditmemoFactory.php.

182  {
183  if ($item->getQtyToRefund() < 0) {
184  return false;
185  }
186  if (isset($invoiceQtysRefundLimits[$item->getId()])) {
187  return $invoiceQtysRefundLimits[$item->getId()] > 0;
188  }
189  return true;
190  }

◆ createByOrder()

createByOrder ( \Magento\Sales\Model\Order  $order,
array  $data = [] 
)

Prepare order creditmemo based on order items and requested params

Parameters
\Magento\Sales\Model\Order$order
array$data
Returns
Creditmemo

Definition at line 65 of file CreditmemoFactory.php.

66  {
67  $totalQty = 0;
68  $creditmemo = $this->convertor->toCreditmemo($order);
69  $qtyList = isset($data['qtys']) ? $data['qtys'] : [];
70 
71  foreach ($order->getAllItems() as $orderItem) {
72  if (!$this->canRefundItem($orderItem, $qtyList)) {
73  continue;
74  }
75 
76  $item = $this->convertor->itemToCreditmemoItem($orderItem);
77  $qty = $this->getQtyToRefund($orderItem, $qtyList);
78  $totalQty += $qty;
79  $item->setQty($qty);
80  $creditmemo->addItem($item);
81  }
82  $creditmemo->setTotalQty($totalQty);
83 
84  $this->initData($creditmemo, $data);
85 
86  $creditmemo->collectTotals();
87  return $creditmemo;
88  }
$orderItem
Definition: order.php:30
$order
Definition: order.php:55
canRefundItem($item, $qtys=[], $invoiceQtysRefundLimits=[])

◆ initData()

initData (   $creditmemo,
  $data 
)
protected

Initialize creditmemo state based on requested parameters

Parameters
Creditmemo$creditmemo
array$data
Returns
void

Definition at line 199 of file CreditmemoFactory.php.

200  {
201  if (isset($data['shipping_amount'])) {
202  $creditmemo->setBaseShippingAmount((double)$data['shipping_amount']);
203  }
204  if (isset($data['adjustment_positive'])) {
205  $creditmemo->setAdjustmentPositive($data['adjustment_positive']);
206  }
207  if (isset($data['adjustment_negative'])) {
208  $creditmemo->setAdjustmentNegative($data['adjustment_negative']);
209  }
210  }

Field Documentation

◆ $convertor

$convertor
protected

Definition at line 21 of file CreditmemoFactory.php.

◆ $taxConfig

$taxConfig
protected

Definition at line 26 of file CreditmemoFactory.php.

◆ $unserialize

$unserialize
protected

Definition at line 32 of file CreditmemoFactory.php.


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