/** * Sets delivery sets parameters to PayPal callback * * @param oePayPalService $oPayPalService PayPal service. * @param oxDeliverySetList $aDeliverySetList Delivery list. * @param oxUser $oUser User object. * @param oxBasket $oBasket Basket object. * * @return int Total amount of deliveries */ protected function _setDeliverySetListForCallbackResponse($oPayPalService, $aDeliverySetList, $oUser, $oBasket) { $dMaxDeliveryAmount = $this->getPayPalConfig()->getMaxPayPalDeliveryAmount(); $oCur = $this->getConfig()->getActShopCurrencyObject(); $dBasketPrice = $oBasket->getPriceForPayment() / $oCur->rate; $sActShipSet = $oBasket->getShippingId(); $blHasActShipSet = false; $iCnt = 0; // VAT for delivery will be calculated always $fDelVATPercent = $oBasket->getAdditionalServicesVatPercent(); foreach ($aDeliverySetList as $sDelSetId => $sDelSetName) { // checking if PayPal is valid payment for selected delivery set if (!$this->_isPayPalInDeliverySet($sDelSetId, $dBasketPrice, $oUser)) { continue; } $oDeliveryList = oxNew('oxDeliveryList'); $aDeliveryList = array(); // list of active delivery costs if ($oDeliveryList->hasDeliveries($oBasket, $oUser, $this->_getUserShippingCountryId($oUser), $sDelSetId)) { $aDeliveryList = $oDeliveryList->getDeliveryList($oBasket, $oUser, $this->_getUserShippingCountryId($oUser), $sDelSetId); } if (count($aDeliveryList) > 0) { $dPrice = 0; if ($this->getConfig()->getConfigParam('bl_perfLoadDelivery')) { foreach ($aDeliveryList as $oDelivery) { $dPrice += $oDelivery->getDeliveryPrice($fDelVATPercent)->getBruttoPrice(); } } if ($dPrice <= $dMaxDeliveryAmount) { $oPayPalService->setParameter("L_SHIPPINGOPTIONNAME{$iCnt}", getStr()->html_entity_decode($sDelSetName)); $oPayPalService->setParameter("L_SHIPPINGOPTIONLABEL{$iCnt}", oxRegistry::getLang()->translateString("OEPAYPAL_PRICE")); $oPayPalService->setParameter("L_SHIPPINGOPTIONAMOUNT{$iCnt}", $this->_formatFloat($dPrice)); //setting active delivery set if ($sDelSetId == $sActShipSet) { $blHasActShipSet = true; $oPayPalService->setParameter("L_SHIPPINGOPTIONISDEFAULT{$iCnt}", "true"); } else { $oPayPalService->setParameter("L_SHIPPINGOPTIONISDEFAULT{$iCnt}", "false"); } if ($oBasket->isCalculationModeNetto()) { $oPayPalService->setParameter("L_TAXAMT{$iCnt}", $this->_formatFloat($oBasket->getPayPalBasketVatValue())); } else { $oPayPalService->setParameter("L_TAXAMT{$iCnt}", $this->_formatFloat(0)); } } $iCnt++; } } //checking if active delivery set was set - if not, setting first in the list if ($iCnt > 0 && !$blHasActShipSet) { $oPayPalService->setParameter("L_SHIPPINGOPTIONISDEFAULT0", "true"); } return $iCnt; }
/** * 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 oxBasket $oBasket Shopping basket object */ protected function _loadFromBasket(oxBasket $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); // copies TS protection info $this->_setTsProtection($oBasket); }