/** * Return a boolean indicating whether the condition has been met * * @return bool */ public function met() { $currency = $this->currencyService->getActiveCurrency(); $activeCurrencyCode = $currency->getCurrencyCode(); if (isset($this->amounts[$activeCurrencyCode])) { $total = $this->dealHandler->getPurchasablesTotalWithDiscounts($this->purchasableHolder->getPurchasables()); $amount = \Heystack\Ecommerce\convertStringToMoney($this->amounts[$activeCurrencyCode], $currency); return $total->greaterThanOrEqual($amount); } return false; }
/** * @return \SebastianBergmann\Money\Money */ public function getDiscountPrice() { $currency = $this->getCurrencyService()->getActiveCurrency(); return \Heystack\Ecommerce\convertStringToMoney($this->{$currency->getCurrencyCode() . 'PriceDiscounted'}, $currency); }
/** * @return \SebastianBergmann\Money\Money */ public function getCost() { $currency = $this->currencyService->getActiveCurrency(); $currencyCode = $currency->getCurrencyCode(); if ($this->config && isset($this->config[$currencyCode][self::CONFIG_PRICE_KEY])) { return \Heystack\Ecommerce\convertStringToMoney($this->config[$currencyCode][self::CONFIG_PRICE_KEY], $currency); } else { return $this->currencyService->getZeroMoney(); } }
/** * @param \Heystack\Deals\Interfaces\DealPurchasableInterface $purchasable * @return \SebastianBergmann\Money\Money */ protected function getDealDiscountForPurchasable(DealPurchasableInterface $purchasable) { $purchasableTotal = $purchasable->getTotal(); $purchasableCurrentDiscount = $purchasable->getDealDiscountWithExclusions([$this->getDealHandler()->getIdentifier()->getFull()]); if (is_array($this->discountAmounts) && count($this->discountAmounts)) { $currency = $this->currencyService->getActiveCurrency(); $currencyCode = $currency->getCurrencyCode(); if ($this->discountAmounts[$currencyCode]) { $purchasableDiscount = \Heystack\Ecommerce\convertStringToMoney($this->discountAmounts[$currencyCode], $currency); $purchasableDiscount = $purchasableDiscount->multiply($purchasable->getQuantity()); } else { $purchasableDiscount = $this->currencyService->getZeroMoney(); } } elseif ($this->discountPercentage) { list($purchasableDiscount, ) = $purchasableTotal->allocateByRatios([$this->discountPercentage, 100 - $this->discountPercentage]); } else { $purchasableDiscount = $this->currencyService->getZeroMoney(); } if ($purchasableCurrentDiscount->add($purchasableDiscount)->greaterThan($purchasableTotal)) { $dealDiscount = $purchasableTotal->subtract($purchasableCurrentDiscount); } else { $dealDiscount = $purchasableDiscount; } return $dealDiscount; }
/** * @return \SebastianBergmann\Money\Money */ public function getPrice() { $currency = $this->getCurrencyService()->getActiveCurrency(); return \Heystack\Ecommerce\convertStringToMoney($this->getField($currency->getCurrencyCode() . 'Price'), $currency); }
/** * @return \SebastianBergmann\Money\Money */ protected function getTotal() { $discount = $this->currencyService->getZeroMoney(); $total = $this->dealHandler->getPurchasablesTotalWithDiscounts($this->purchasableHolder->getPurchasables()); if ($this->discountAmounts) { $currency = $this->currencyService->getActiveCurrency(); $currencyCode = $currency->getCurrencyCode(); if (isset($this->discountAmounts[$currencyCode])) { $discount = \Heystack\Ecommerce\convertStringToMoney($this->discountAmounts[$currencyCode], $currency); } // This ensures that we aren't taking off more than the allowed amount if ($discount->greaterThan($total)) { $discount = $total; } } if ($this->discountPercentage) { list($discount, ) = $total->allocateByRatios([$this->discountPercentage, 100 - $this->discountPercentage]); } if ($discount instanceof Money) { $purchasables = $this->purchasableHolder->getPurchasables(); $dealIdentifier = $this->getDealHandler()->getIdentifier(); $dealIdentifierFull = $dealIdentifier->getFull(); foreach ($purchasables as $purchasable) { if ($purchasable instanceof DealPurchasableInterface) { $purchasableAmount = $purchasable->getTotal()->subtract($purchasable->getDealDiscountWithExclusions([$dealIdentifierFull])); $discountRatio = $purchasableAmount->getAmount() / $total->getAmount(); list($purchasableDiscount, ) = $discount->allocateByRatios([$discountRatio, 1 - $discountRatio]); $purchasable->setDealDiscount($dealIdentifier, $purchasableDiscount); } } return $discount; } return $this->currencyService->getZeroMoney(); }
/** * @return \SebastianBergmann\Money\Money */ protected function getTotal() { $total = $this->shippingHandler->getTotal(); if ($this->isFree) { return $total; } if ($this->discountAmounts) { $currency = $this->currencyService->getActiveCurrency(); $currencyCode = $currency->getCurrencyCode(); if (isset($this->discountAmounts[$currencyCode])) { $newTotal = \Heystack\Ecommerce\convertStringToMoney($this->discountAmounts[$currencyCode], $currency); if ($newTotal->greaterThan($total)) { return $total; } else { return $newTotal; } } else { return $this->currencyService->getZeroMoney(); } } if ($this->discountPercentage) { list($newTotal, ) = $total->allocateByRatios([$this->discountPercentage, 100 - $this->discountPercentage]); return $newTotal; } return $this->currencyService->getZeroMoney(); }