![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/Ecombricks/InventoryQuote/Model/Quote/ |
<?php /** * Copyright © eComBricks. All rights reserved. * See LICENSE.txt for license details. */ namespace Ecombricks\InventoryQuote\Model\Quote; /** * Quote source trait */ trait SourceTrait { /** * Get source codes * * @return array */ public function getSourceCodes() { $sourceCodes = []; foreach ($this->getAllItems() as $item) { $sourceCode = $item->getSourceCode(); if (empty($sourceCode)) { continue; } if (in_array($sourceCode, $sourceCodes)) { continue; } $sourceCodes[] = $sourceCode; } return $sourceCodes; } /** * Reset source items collection * * @return $this */ protected function resetSourceItemsCollection() { $sourceCode = $this->getSourceCode(); if (empty($sourceCode)) { return $this; } $itemsCollection = $this->getItemsCollection(); $sourceItemsCollection = clone $itemsCollection; foreach ($itemsCollection as $itemKey => $item) { $sourceItemsCollection->removeItemByKey($itemKey); } foreach ($itemsCollection as $item) { if ($item->getSourceCode() !== $sourceCode || $item->getParentItem()) { continue; } $sourceItem = clone $item; $sourceItem->setId($item->getId()); $sourceItem->setQuote($this); foreach ($item->getChildren() as $childItem) { if ($childItem->getSourceCode() !== $sourceCode) { continue; } $sourceChildItem = clone $childItem; $sourceChildItem->setId($childItem->getId()); $sourceChildItem->setQuote($this); $sourceChildItem->setParentItem($sourceItem); $sourceItemsCollection->addItem($sourceChildItem); } $sourceItemsCollection->addItem($sourceItem); } $sourceItemsCollection->setQuote($this); $this->unsetData(['items_collection', 'all_items_qty', 'virtual_items_qty']); $this->shippingAddressesItems = null; $this->_items = $sourceItemsCollection; return $this; } /** * Reset source addresses collection * * @return $this */ protected function resetSourceAddressesCollection() { $sourceCode = $this->getSourceCode(); if (empty($sourceCode)) { return $this; } $this->getBillingAddress(); $this->getShippingAddress(); $addressesCollection = $this->getAddressesCollection(); $sourceAddressesCollection = clone $addressesCollection; foreach ($addressesCollection as $addressKey => $address) { $sourceAddressesCollection->removeItemByKey($addressKey); $sourceAddress = clone $address; $sourceAddress->setId($address->getId()); $sourceAddress->setQuote($this); $sourceAddress->setSourceCode($sourceCode); $sourceAddressesCollection->addItem($sourceAddress); } $this->_addresses = $sourceAddressesCollection; return $this; } /** * Set source code * * @param string $sourceCode * @return $this */ public function setSourceCode($sourceCode) { $this->setData('source_code', $sourceCode); $this->resetSourceItemsCollection(); $this->resetSourceAddressesCollection(); $this->setTotalsCollectedFlag(false); $this->collectTotals(); return $this; } /** * Create source clone * * @param string $sourceCode * @return \Magento\Quote\Api\Data\CartInterface */ public function createSourceClone($sourceCode) { $sourceQuote = clone $this; $sourceQuote->setId($this->getId()); $sourceQuote->setSourceCode($sourceCode); return $sourceQuote; } }