public function testGetTotalRate() { $tax = \XLite\Core\Database::getRepo('XLite\\Module\\CDev\\VAT\\Model\\Tax')->getTax(); foreach ($tax->getRates() as $rate) { \XLite\Core\Database::getEM()->remove($rate); } $tax->getRates()->clear(); $tax->setEnabled(true); $rate = new \XLite\Module\CDev\VAT\Model\Tax\Rate(); $rate->setValue(10); $rate->setPosition(1); \XLite\Core\Database::getEM()->persist($rate); $tax->addRates($rate); $rate->setTax($tax); $rate = new \XLite\Module\CDev\VAT\Model\Tax\Rate(); $rate->setValue(20); $rate->setPosition(0); \XLite\Core\Database::getEM()->persist($rate); $tax->addRates($rate); $rate->setTax($tax); $memberships = \XLite\Core\Database::getRepo('XLite\\Model\\Membership')->findAll(); $membership = array_shift($memberships); $rate->setMembership($membership); $tax->setVATMembership($membership); \XLite\Core\Database::getEM()->flush(); $method = new \XLite\Model\Shipping\Method(); $method->setEnabled(true); $rate = new \XLite\Model\Shipping\Rate(); $rate->setBaseRate(10); $rate->setMarkupRate(10); $rate->setMethod($method); $this->assertEquals(16.67, \XLite::getInstance()->getCurrency()->formatValue($rate->getTotalRate()), 'check cost'); }
/** * testCreate * * @return void * @access public * @see ____func_see____ * @since 1.0.0 */ public function testCreate() { // Prepare data for rate $method = $this->getMethodByName('Courier'); $methodName = $method->getName(); $markups = \XLite\Core\Database::getRepo('XLite\\Model\\Shipping\\Markup')->findAll(); $this->assertTrue(0 < count($markups), 'markups list length checking'); $markup = array_shift($markups); $markupId = $markup->getMarkupId(); unset($markups); $extraData = new \XLite\Core\CommonCell(); $extraData->testparam1 = 'test value 1'; $extraData->testparam2 = 'test value 2'; $newRate = new \XLite\Model\Shipping\Rate(); $newRate->setMethod($method); $newRate->setBaseRate(100); $newRate->setMarkup($markup); $newRate->setMarkupRate(200); $newRate->setExtraData($extraData); // Check all parameters $this->assertEquals($markupId, $newRate->getMarkup()->getMarkupId(), 'Markup wrong'); $this->assertEquals(100, $newRate->getBaseRate(), 'Base rate wrong'); $this->assertEquals(200, $newRate->getMarkupRate(), 'Markup rate wrong'); $this->assertEquals(300, $newRate->getTotalRate(), 'Total rate wrong'); $this->assertEquals('test value 1', $newRate->getExtraData()->testparam1, 'Extra data #1 wrong'); $this->assertEquals('test value 2', $newRate->getExtraData()->testparam2, 'Extra data #2 wrong'); $this->assertEquals($methodName, $newRate->getMethodName(), 'getMethodName() returned wrong value'); }
/** * Returns offline shipping rates * * @param \XLite\Logic\Order\Modifier\Shipping $modifier Shipping order modifier * @param boolean $ignoreCache Flag: if true then do not get rates from cache (not used in offline processor) OPTIONAL * * @return array */ public function getRates($modifier, $ignoreCache = false) { $rates = array(); if ($modifier instanceof \XLite\Logic\Order\Modifier\Shipping) { // Find markups for all enabled offline shipping methods $markups = \XLite\Core\Database::getRepo('XLite\\Model\\Shipping\\Markup')->findMarkupsByProcessor($this->getProcessorId(), $modifier); if (!empty($markups)) { // Create shipping rates list foreach ($markups as $markup) { $rate = new \XLite\Model\Shipping\Rate(); $rate->setMethod($markup->getShippingMethod()); $rate->setBaseRate(self::PROCESSOR_DEFAULT_BASE_RATE); $rate->setMarkup($markup); $rate->setMarkupRate($markup->getMarkupValue()); $rates[] = $rate; } } } // Return shipping rates list return $rates; }
/** * Restore rates * * @return \XLite\Model\Shipping\Rate[] */ protected function restoreRates() { $rates = array(); if ($this->order->getShippingId()) { /** @var \XLite\Model\Shipping\Method $method */ $method = \XLite\Core\Database::getRepo('XLite\\Model\\Shipping\\Method')->find($this->order->getShippingId()); if ($method) { $rate = new \XLite\Model\Shipping\Rate(); $rate->setMethod($method); $rate->setBaseRate(0); $rate->setMarkupRate($this->order->getSurchargeSumByType($this->type)); $rates[] = $rate; } } return $rates; }
/** * Map single quote * * @param mixed $quote Single quote line * * @return \XLite\Model\Shipping\Rate */ protected function mapSingleQuote($quote) { $rate = null; if (isset($quote->total->value)) { $rate = new \XLite\Model\Shipping\Rate(); $rate->setBaseRate($this->getBaseRate($quote)); $method = Processor\PitneyBowes::getMethod($this->getMethodCode($quote)); $rate->setMethod($method); $rate->setMarkupRate($this->getMarkupRate($quote)); if (isset($quote->totalTransportation->minDays) || isset($quote->totalTransportation->maxDays)) { $extraData = new \XLite\Core\CommonCell(); $extraData->deliveryMinDays = $quote->totalTransportation->minDays + intval($this->config->min_delivery_adjustment); $extraData->deliveryMaxDays = $quote->totalTransportation->maxDays + intval($this->config->max_delivery_adjustment); $rate->setExtraData($extraData); } } if (isset($quote->errors)) { foreach ($quote->errors as $error) { \XLite\Logger::logCustom("PitneyBowes", $error->error, false); } } return $rate; }