예제 #1
0
파일: Rate.php 프로젝트: kingsj/core
 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');
 }
예제 #2
0
파일: Rate.php 프로젝트: kingsj/core
 /**
  * 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');
 }
예제 #3
0
 /**
  * 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;
 }
예제 #4
0
 /**
  * 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;
 }
예제 #5
0
 /**
  * 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;
 }