/** * 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; }