Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Data Fields | Protected Member Functions | Protected Attributes
Cart Class Reference
Inheritance diagram for Cart:
Cart

Public Member Functions

 __construct (\Magento\Payment\Model\Cart\SalesModel\Factory $salesModelFactory, \Magento\Framework\Event\ManagerInterface $eventManager, $salesModel)
 
 getSalesModel ()
 
 addTax ($taxAmount)
 
 setTax ($taxAmount)
 
 getTax ()
 
 addDiscount ($discountAmount)
 
 setDiscount ($discountAmount)
 
 getDiscount ()
 
 addShipping ($shippingAmount)
 
 setShipping ($shippingAmount)
 
 getShipping ()
 
 addSubtotal ($subtotalAmount)
 
 getSubtotal ()
 
 addCustomItem ($name, $qty, $amount, $identifier=null)
 
 getAllItems ()
 
 getAmounts ()
 
 setTransferShippingAsItem ()
 
 setTransferDiscountAsItem ()
 

Data Fields

const AMOUNT_TAX = 'tax'
 
const AMOUNT_SHIPPING = 'shipping'
 
const AMOUNT_DISCOUNT = 'discount'
 
const AMOUNT_SUBTOTAL = 'subtotal'
 

Protected Member Functions

 _collectItemsAndAmounts ()
 
 _importItemsFromSalesModel ()
 
 _calculateCustomItemsSubtotal ()
 
 _setTransferFlag ($flagType, $value)
 
 _setAmount ($amountType, $amount)
 
 _addAmount ($amountType, $amount)
 
 _getAmount ($amountType)
 
 _createItemFromData ($name, $qty, $amount, $identifier=null)
 
 _resetAmounts ()
 

Protected Attributes

 $_salesModel
 
 $_eventManager
 
 $_amounts
 
 $_customItems = []
 
 $_salesModelItems = []
 
 $_transferFlags = []
 
 $_itemsCollectingRequired = true
 

Detailed Description

Provide methods for collecting cart items information of specific sales model entity

@api

Since
100.0.2

Definition at line 14 of file Cart.php.

Constructor & Destructor Documentation

◆ __construct()

__construct ( \Magento\Payment\Model\Cart\SalesModel\Factory  $salesModelFactory,
\Magento\Framework\Event\ManagerInterface  $eventManager,
  $salesModel 
)
Parameters
\Magento\Payment\Model\Cart\SalesModel\Factory$salesModelFactory
\Magento\Framework\Event\ManagerInterface$eventManager
\Magento\Quote\Api\Data\CartInterface$salesModel

Definition at line 78 of file Cart.php.

82  {
83  $this->_eventManager = $eventManager;
84  $this->_salesModel = $salesModelFactory->create($salesModel);
85  $this->_resetAmounts();
86  }

Member Function Documentation

◆ _addAmount()

_addAmount (   $amountType,
  $amount 
)
protected
Parameters
string$amountType
float$amount
Returns
void

Definition at line 389 of file Cart.php.

390  {
391  $this->_amounts[$amountType] += (double)$amount;
392  }
$amount
Definition: order.php:14

◆ _calculateCustomItemsSubtotal()

_calculateCustomItemsSubtotal ( )
protected

Calculate subtotal from custom items

Returns
void

Definition at line 346 of file Cart.php.

347  {
348  if (!empty($this->_transferFlags[self::AMOUNT_DISCOUNT]) && $this->getDiscount()) {
349  $this->addCustomItem(__('Discount'), 1, -1.00 * $this->getDiscount());
350  $this->setDiscount(0);
351  }
352 
353  if (!empty($this->_transferFlags[self::AMOUNT_SHIPPING]) && $this->getShipping()) {
354  $this->addCustomItem(__('Shipping'), 1, $this->getShipping());
355  $this->setShipping(0);
356  }
357 
358  foreach ($this->_customItems as $item) {
359  $this->_amounts[self::AMOUNT_SUBTOTAL] += $item->getAmount();
360  }
361  }
__()
Definition: __.php:13
addCustomItem($name, $qty, $amount, $identifier=null)
Definition: Cart.php:237
setDiscount($discountAmount)
Definition: Cart.php:153
setShipping($shippingAmount)
Definition: Cart.php:188

◆ _collectItemsAndAmounts()

_collectItemsAndAmounts ( )
protected

Collect all items, discounts, taxes, shipping to cart

Returns
void

Definition at line 294 of file Cart.php.

295  {
296  if (!$this->_itemsCollectingRequired) {
297  return;
298  }
299 
300  $this->_itemsCollectingRequired = false;
301 
302  $this->_salesModelItems = [];
303  $this->_customItems = [];
304 
305  $this->_resetAmounts();
306 
307  $this->_eventManager->dispatch('payment_cart_collect_items_and_amounts', ['cart' => $this]);
308 
311  }

◆ _createItemFromData()

_createItemFromData (   $name,
  $qty,
  $amount,
  $identifier = null 
)
protected

Create item object from item data

Parameters
string$name
int$qty
float$amount
null | string$identifier
Returns
\Magento\Framework\DataObject

Definition at line 414 of file Cart.php.

415  {
416  $item = new \Magento\Framework\DataObject(['name' => $name, 'qty' => $qty, 'amount' => (double)$amount]);
417 
418  if ($identifier) {
419  $item->setData('id', $identifier);
420  }
421 
422  return $item;
423  }
$amount
Definition: order.php:14
if(!isset($_GET['name'])) $name
Definition: log.php:14

◆ _getAmount()

_getAmount (   $amountType)
protected

Get amount of specified type

Parameters
string$amountType
Returns
float

Definition at line 400 of file Cart.php.

401  {
402  return $this->_amounts[$amountType];
403  }

◆ _importItemsFromSalesModel()

_importItemsFromSalesModel ( )
protected

Import items from sales model

Returns
void

Definition at line 318 of file Cart.php.

319  {
320  $this->_salesModelItems = [];
321 
322  foreach ($this->_salesModel->getAllItems() as $item) {
323  if ($item->getParentItem()) {
324  continue;
325  }
326 
327  $this->_salesModelItems[] = $this->_createItemFromData(
328  $item->getName(),
329  $item->getQty(),
330  $item->getPrice(),
331  $item->getOriginalItem()->getId()
332  );
333  }
334 
335  $this->addSubtotal($this->_salesModel->getBaseSubtotal());
336  $this->addTax($this->_salesModel->getBaseTaxAmount());
337  $this->addShipping($this->_salesModel->getBaseShippingAmount());
338  $this->addDiscount(abs($this->_salesModel->getBaseDiscountAmount()));
339  }
addShipping($shippingAmount)
Definition: Cart.php:176
_createItemFromData($name, $qty, $amount, $identifier=null)
Definition: Cart.php:414
addDiscount($discountAmount)
Definition: Cart.php:141
addTax($taxAmount)
Definition: Cart.php:106
addSubtotal($subtotalAmount)
Definition: Cart.php:211

◆ _resetAmounts()

_resetAmounts ( )
protected

Set all amount types to zero

Returns
void

Definition at line 430 of file Cart.php.

431  {
432  $this->_amounts = [
433  self::AMOUNT_DISCOUNT => 0,
434  self::AMOUNT_SHIPPING => 0,
435  self::AMOUNT_SUBTOTAL => 0,
436  self::AMOUNT_TAX => 0,
437  ];
438  }

◆ _setAmount()

_setAmount (   $amountType,
  $amount 
)
protected
Parameters
string$amountType
float$amount
Returns
void

Definition at line 379 of file Cart.php.

380  {
381  $this->_amounts[$amountType] = (double)$amount;
382  }
$amount
Definition: order.php:14

◆ _setTransferFlag()

_setTransferFlag (   $flagType,
  $value 
)
protected
Parameters
string$flagType
bool$value
Returns
void

Definition at line 368 of file Cart.php.

369  {
370  $this->_transferFlags[$flagType] = (bool)$value;
371  $this->_itemsCollectingRequired = true;
372  }
$value
Definition: gender.phtml:16

◆ addCustomItem()

addCustomItem (   $name,
  $qty,
  $amount,
  $identifier = null 
)

Add custom item (such as discount as line item, shipping as line item, etc)

Parameters
string$name
int$qty
float$amount
string | null$identifier
Returns
void @api

Definition at line 237 of file Cart.php.

238  {
239  $this->_customItems[] = $this->_createItemFromData($name, $qty, $amount, $identifier);
240  }
$amount
Definition: order.php:14
_createItemFromData($name, $qty, $amount, $identifier=null)
Definition: Cart.php:414
if(!isset($_GET['name'])) $name
Definition: log.php:14

◆ addDiscount()

addDiscount (   $discountAmount)

Add amount to existing discount amount

Parameters
float$discountAmount
Returns
void @api

Definition at line 141 of file Cart.php.

142  {
143  $this->_addAmount(self::AMOUNT_DISCOUNT, $discountAmount);
144  }
_addAmount($amountType, $amount)
Definition: Cart.php:389

◆ addShipping()

addShipping (   $shippingAmount)

Add amount to existing shipping amount

Parameters
float$shippingAmount
Returns
void @api

Definition at line 176 of file Cart.php.

177  {
178  $this->_addAmount(self::AMOUNT_SHIPPING, $shippingAmount);
179  }
_addAmount($amountType, $amount)
Definition: Cart.php:389

◆ addSubtotal()

addSubtotal (   $subtotalAmount)

Add amount to existing subtotal amount

Parameters
float$subtotalAmount
Returns
void @api

Definition at line 211 of file Cart.php.

212  {
213  $this->_addAmount(self::AMOUNT_SUBTOTAL, $subtotalAmount);
214  }
_addAmount($amountType, $amount)
Definition: Cart.php:389

◆ addTax()

addTax (   $taxAmount)

Add amount to existing tax amount

Parameters
float$taxAmount
Returns
void @api

Definition at line 106 of file Cart.php.

107  {
108  $this->_addAmount(self::AMOUNT_TAX, $taxAmount);
109  }
_addAmount($amountType, $amount)
Definition: Cart.php:389

◆ getAllItems()

getAllItems ( )

Get all cart items

Returns
array @api

Definition at line 248 of file Cart.php.

249  {
250  $this->_collectItemsAndAmounts();
251  return array_merge($this->_salesModelItems, $this->_customItems);
252  }

◆ getAmounts()

getAmounts ( )

Get shipping, tax, subtotal and discount amounts all together

Returns
array @api

Definition at line 260 of file Cart.php.

261  {
262  $this->_collectItemsAndAmounts();
263 
264  return $this->_amounts;
265  }

◆ getDiscount()

getDiscount ( )

Get discount amount

Returns
float @api

Definition at line 164 of file Cart.php.

165  {
166  return $this->_getAmount(self::AMOUNT_DISCOUNT);
167  }
_getAmount($amountType)
Definition: Cart.php:400

◆ getSalesModel()

getSalesModel ( )

Return payment cart sales model

Returns
\Magento\Payment\Model\Cart\SalesModel\SalesModelInterface @api

Definition at line 94 of file Cart.php.

95  {
96  return $this->_salesModel;
97  }

◆ getShipping()

getShipping ( )

Get shipping amount

Returns
float @api

Definition at line 199 of file Cart.php.

200  {
201  return $this->_getAmount(self::AMOUNT_SHIPPING);
202  }
_getAmount($amountType)
Definition: Cart.php:400

◆ getSubtotal()

getSubtotal ( )

Get subtotal amount

Returns
float @api

Definition at line 222 of file Cart.php.

223  {
224  return $this->_getAmount(self::AMOUNT_SUBTOTAL);
225  }
_getAmount($amountType)
Definition: Cart.php:400

◆ getTax()

getTax ( )

Get tax amount

Returns
float @api

Definition at line 129 of file Cart.php.

130  {
131  return $this->_getAmount(self::AMOUNT_TAX);
132  }
_getAmount($amountType)
Definition: Cart.php:400

◆ setDiscount()

setDiscount (   $discountAmount)

Set discount. Old value will be overwritten

Parameters
float$discountAmount
Returns
void @api

Definition at line 153 of file Cart.php.

154  {
155  $this->_setAmount(self::AMOUNT_DISCOUNT, $discountAmount);
156  }
_setAmount($amountType, $amount)
Definition: Cart.php:379

◆ setShipping()

setShipping (   $shippingAmount)

Set shipping. Old value will be overwritten

Parameters
float$shippingAmount
Returns
void @api

Definition at line 188 of file Cart.php.

189  {
190  $this->_setAmount(self::AMOUNT_SHIPPING, $shippingAmount);
191  }
_setAmount($amountType, $amount)
Definition: Cart.php:379

◆ setTax()

setTax (   $taxAmount)

Set tax. Old value will be overwritten

Parameters
float$taxAmount
Returns
void @api

Definition at line 118 of file Cart.php.

119  {
120  $this->_setAmount(self::AMOUNT_TAX, $taxAmount);
121  }
_setAmount($amountType, $amount)
Definition: Cart.php:379

◆ setTransferDiscountAsItem()

setTransferDiscountAsItem ( )

Specify that discount should be transferred as cart item

Returns
void @api

Definition at line 284 of file Cart.php.

285  {
286  $this->_setTransferFlag(self::AMOUNT_DISCOUNT, true);
287  }
_setTransferFlag($flagType, $value)
Definition: Cart.php:368

◆ setTransferShippingAsItem()

setTransferShippingAsItem ( )

Specify that shipping should be transferred as cart item

Returns
void @api

Definition at line 273 of file Cart.php.

274  {
275  $this->_setTransferFlag(self::AMOUNT_SHIPPING, true);
276  }
_setTransferFlag($flagType, $value)
Definition: Cart.php:368

Field Documentation

◆ $_amounts

$_amounts
protected

Definition at line 43 of file Cart.php.

◆ $_customItems

$_customItems = []
protected

Definition at line 50 of file Cart.php.

◆ $_eventManager

$_eventManager
protected

Definition at line 36 of file Cart.php.

◆ $_itemsCollectingRequired

$_itemsCollectingRequired = true
protected

Definition at line 71 of file Cart.php.

◆ $_salesModel

$_salesModel
protected

#- #-

Definition at line 29 of file Cart.php.

◆ $_salesModelItems

$_salesModelItems = []
protected

Definition at line 57 of file Cart.php.

◆ $_transferFlags

$_transferFlags = []
protected

Definition at line 64 of file Cart.php.

◆ AMOUNT_DISCOUNT

const AMOUNT_DISCOUNT = 'discount'

Definition at line 23 of file Cart.php.

◆ AMOUNT_SHIPPING

const AMOUNT_SHIPPING = 'shipping'

Definition at line 21 of file Cart.php.

◆ AMOUNT_SUBTOTAL

const AMOUNT_SUBTOTAL = 'subtotal'

Definition at line 25 of file Cart.php.

◆ AMOUNT_TAX

const AMOUNT_TAX = 'tax'

#+ Amounts

Definition at line 19 of file Cart.php.


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