/** * @param oxBasket $basket */ private function checkContents(\OxidEsales\EshopCommunity\Application\Model\Basket $basket, $expectedAmount) { $basketArticles = $basket->getBasketArticles(); $keys = array_keys($basketArticles); $this->assertTrue(is_array($basketArticles)); $this->assertEquals(1, count($basketArticles)); $this->assertTrue(is_a($basketArticles[$keys[0]], 'OxidEsales\\EshopCommunity\\Application\\Model\\Article')); $this->assertEquals($this->testArticleId, $basketArticles[$keys[0]]->getId()); $basketContents = $basket->getContents(); $keys = array_keys($basketContents); $this->assertTrue(is_array($basketContents)); $this->assertEquals(1, count($basketArticles)); $this->assertTrue(is_a($basketContents[$keys[0]], 'OxidEsales\\EshopCommunity\\Application\\Model\\BasketItem')); $basketItem = $basketContents[$keys[0]]; $this->assertEquals($this->testArticleId, $basketItem->getProductId()); $this->assertEquals($expectedAmount, $basketItem->getAmount()); }
/** * compute difference of reserved amounts vs basket items * * @param Basket $oBasket basket object * * @return array */ protected function _basketDifference(\OxidEsales\EshopCommunity\Application\Model\Basket $oBasket) { $aDiff = $this->_getReservedItems(); // refreshing history foreach ($oBasket->getContents() as $oItem) { $sProdId = $oItem->getProductId(); if (!isset($aDiff[$sProdId])) { $aDiff[$sProdId] = -$oItem->getAmount(); } else { $aDiff[$sProdId] -= $oItem->getAmount(); } } return $aDiff; }
/** * Validate loaded from session basket content. Check for language change. * * @param oxBasket $oBasket Basket object loaded from session. * * @return null */ protected function _validateBasket(\OxidEsales\EshopCommunity\Application\Model\Basket $oBasket) { $aCurrContent = $oBasket->getContents(); if (empty($aCurrContent)) { return; } $iCurrLang = oxRegistry::getLang()->getBaseLanguage(); foreach ($aCurrContent as $oContent) { if ($oContent->getLanguageId() != $iCurrLang) { $oContent->setLanguageId($iCurrLang); } } }
/** * Gathers and assigns to new oxOrder object customer data, payment, delivery * and shipping info, customer order remark, currency, voucher, language data. * Additionally stores general discount and wrapping. Sets order status to "error" * and creates oxOrderArticle objects and assigns to them basket articles. * * @param Basket $oBasket Shopping basket object */ protected function _loadFromBasket(Basket $oBasket) { $myConfig = $this->getConfig(); // store IP Address - default must be FALSE as it is illegal to store if ($myConfig->getConfigParam('blStoreIPs') && $this->oxorder__oxip->value === null) { $this->oxorder__oxip = new oxField(oxRegistry::get("oxUtilsServer")->getRemoteAddress(), oxField::T_RAW); } //setting view mode $this->oxorder__oxisnettomode = new oxField($oBasket->isCalculationModeNetto()); // copying main price info $this->oxorder__oxtotalnetsum = new oxField($oBasket->getNettoSum()); $this->oxorder__oxtotalbrutsum = new oxField($oBasket->getBruttoSum()); $this->oxorder__oxtotalordersum = new oxField($oBasket->getPrice()->getBruttoPrice(), oxField::T_RAW); // copying discounted VAT info $this->_resetVats(); $iVatIndex = 1; foreach ($oBasket->getProductVats(false) as $iVat => $dPrice) { $this->{"oxorder__oxartvat{$iVatIndex}"} = new oxField($this->_convertVat($iVat), oxField::T_RAW); $this->{"oxorder__oxartvatprice{$iVatIndex}"} = new oxField($dPrice, oxField::T_RAW); $iVatIndex++; } // payment costs if available if ($oPaymentCost = $oBasket->getCosts('oxpayment')) { $this->oxorder__oxpaycost = new oxField($oPaymentCost->getBruttoPrice(), oxField::T_RAW); $this->oxorder__oxpayvat = new oxField($oPaymentCost->getVAT(), oxField::T_RAW); } // delivery info if ($oDeliveryCost = $oBasket->getCosts('oxdelivery')) { $this->oxorder__oxdelcost = new oxField($oDeliveryCost->getBruttoPrice(), oxField::T_RAW); //V #M382: Save VAT, not VAT value for delivery costs $this->oxorder__oxdelvat = new oxField($oDeliveryCost->getVAT(), oxField::T_RAW); //V #M382 $this->oxorder__oxdeltype = new oxField($oBasket->getShippingId(), oxField::T_RAW); } // user remark if (!isset($this->oxorder__oxremark) || $this->oxorder__oxremark->value === null) { $this->oxorder__oxremark = new oxField(oxRegistry::getSession()->getVariable('ordrem'), oxField::T_RAW); } // currency $oCur = $myConfig->getActShopCurrencyObject(); $this->oxorder__oxcurrency = new oxField($oCur->name); $this->oxorder__oxcurrate = new oxField($oCur->rate, oxField::T_RAW); // store voucher discount if ($oVoucherDiscount = $oBasket->getVoucherDiscount()) { $this->oxorder__oxvoucherdiscount = new oxField($oVoucherDiscount->getBruttoPrice(), oxField::T_RAW); } // general discount if ($this->_blReloadDiscount) { $dDiscount = 0; $aDiscounts = $oBasket->getDiscounts(); if (count($aDiscounts) > 0) { foreach ($aDiscounts as $oDiscount) { $dDiscount += $oDiscount->dDiscount; } } $this->oxorder__oxdiscount = new oxField($dDiscount, oxField::T_RAW); } //order language $this->oxorder__oxlang = new oxField($this->getOrderLanguage()); // initial status - 'ERROR' $this->oxorder__oxtransstatus = new oxField('ERROR', oxField::T_RAW); // copies basket product info ... $this->_setOrderArticles($oBasket->getContents()); // copies wrapping info $this->_setWrapping($oBasket); }