Inital commit
This commit is contained in:
@@ -40,7 +40,6 @@ use Thelia\Model\Tools\ModelEventDispatcherTrait;
|
||||
*/
|
||||
class Coupon extends BaseCoupon
|
||||
{
|
||||
|
||||
// Define the value of an unlimited coupon usage.
|
||||
const UNLIMITED_COUPON_USE = -1;
|
||||
|
||||
@@ -49,32 +48,47 @@ class Coupon extends BaseCoupon
|
||||
/**
|
||||
* Create or Update this Coupon
|
||||
*
|
||||
* @param string $code Coupon Code
|
||||
* @param string $title Coupon title
|
||||
* @param array $effects Ready to be serialized in JSON effect params
|
||||
* @param string $type Coupon type
|
||||
* @param bool $isRemovingPostage Is removing Postage
|
||||
* @param string $shortDescription Coupon short description
|
||||
* @param string $description Coupon description
|
||||
* @param boolean $isEnabled Enable/Disable
|
||||
* @param \DateTime $expirationDate Coupon expiration date
|
||||
* @param boolean $isAvailableOnSpecialOffers Is available on special offers
|
||||
* @param boolean $isCumulative Is cumulative
|
||||
* @param int $maxUsage Coupon quantity
|
||||
* @param string $defaultSerializedRule Serialized default rule added if none found
|
||||
* @param string $locale Coupon Language code ISO (ex: fr_FR)
|
||||
* @param array $freeShippingForCountries ID of Countries to which shipping is free
|
||||
* @param array $freeShippingForMethods ID of Shipping modules for which shipping is free
|
||||
* @param bool $perCustomerUsageCount True if usage coiunt is per customer
|
||||
* @param string $code Coupon Code
|
||||
* @param string $title Coupon title
|
||||
* @param array $effects Ready to be serialized in JSON effect params
|
||||
* @param string $type Coupon type
|
||||
* @param bool $isRemovingPostage Is removing Postage
|
||||
* @param string $shortDescription Coupon short description
|
||||
* @param string $description Coupon description
|
||||
* @param boolean $isEnabled Enable/Disable
|
||||
* @param \DateTime $expirationDate Coupon expiration date
|
||||
* @param boolean $isAvailableOnSpecialOffers Is available on special offers
|
||||
* @param boolean $isCumulative Is cumulative
|
||||
* @param int $maxUsage Coupon quantity
|
||||
* @param string $defaultSerializedRule Serialized default rule added if none found
|
||||
* @param string $locale Coupon Language code ISO (ex: fr_FR)
|
||||
* @param array $freeShippingForCountries ID of Countries to which shipping is free
|
||||
* @param array $freeShippingForMethods ID of Shipping modules for which shipping is free
|
||||
* @param bool $perCustomerUsageCount True if usage coiunt is per customer
|
||||
* @param $startDate
|
||||
*
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function createOrUpdate(
|
||||
$code, $title, array $effects, $type, $isRemovingPostage, $shortDescription, $description,
|
||||
$isEnabled, $expirationDate, $isAvailableOnSpecialOffers, $isCumulative, $maxUsage, $defaultSerializedRule,
|
||||
$locale, $freeShippingForCountries, $freeShippingForMethods,
|
||||
$perCustomerUsageCount)
|
||||
{
|
||||
$code,
|
||||
$title,
|
||||
array $effects,
|
||||
$type,
|
||||
$isRemovingPostage,
|
||||
$shortDescription,
|
||||
$description,
|
||||
$isEnabled,
|
||||
$expirationDate,
|
||||
$isAvailableOnSpecialOffers,
|
||||
$isCumulative,
|
||||
$maxUsage,
|
||||
$defaultSerializedRule,
|
||||
$locale,
|
||||
$freeShippingForCountries,
|
||||
$freeShippingForMethods,
|
||||
$perCustomerUsageCount,
|
||||
$startDate = null
|
||||
) {
|
||||
$con = Propel::getWriteConnection(CouponTableMap::DATABASE_NAME);
|
||||
|
||||
$con->beginTransaction();
|
||||
@@ -86,6 +100,7 @@ class Coupon extends BaseCoupon
|
||||
->setEffects($effects)
|
||||
->setIsRemovingPostage($isRemovingPostage)
|
||||
->setIsEnabled($isEnabled)
|
||||
->setStartDate($startDate)
|
||||
->setExpirationDate($expirationDate)
|
||||
->setIsAvailableOnSpecialOffers($isAvailableOnSpecialOffers)
|
||||
->setIsCumulative($isCumulative)
|
||||
@@ -109,8 +124,9 @@ class Coupon extends BaseCoupon
|
||||
CouponModuleQuery::create()->filterByCouponId($this->id)->delete();
|
||||
|
||||
foreach ($freeShippingForCountries as $countryId) {
|
||||
|
||||
if ($countryId <= 0) continue;
|
||||
if ($countryId <= 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$couponCountry = new CouponCountry();
|
||||
|
||||
@@ -122,8 +138,9 @@ class Coupon extends BaseCoupon
|
||||
}
|
||||
|
||||
foreach ($freeShippingForMethods as $moduleId) {
|
||||
|
||||
if ($moduleId <= 0) continue;
|
||||
if ($moduleId <= 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$couponModule = new CouponModule();
|
||||
|
||||
@@ -135,9 +152,7 @@ class Coupon extends BaseCoupon
|
||||
}
|
||||
|
||||
$con->commit();
|
||||
|
||||
} catch (\Exception $ex) {
|
||||
|
||||
$con->rollback();
|
||||
|
||||
throw $ex;
|
||||
@@ -284,14 +299,12 @@ class Coupon extends BaseCoupon
|
||||
$usageLeft = $this->getMaxUsage();
|
||||
|
||||
if ($this->getPerCustomerUsageCount()) {
|
||||
|
||||
// Get usage left for current customer. If the record is not found,
|
||||
// Get usage left for current customer. If the record is not found,
|
||||
// it means that the customer has not yes used this coupon.
|
||||
if (null !== $couponCustomerCount = CouponCustomerCountQuery::create()
|
||||
->filterByCouponId($this->getId())
|
||||
->filterByCustomerId($customerId)
|
||||
->findOne()) {
|
||||
|
||||
// The coupon has already been used -> remove this customer's usage count
|
||||
$usageLeft -= $couponCustomerCount->getCount();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user