WIP Coupon

Refactor
This commit is contained in:
gmorel
2013-08-23 20:00:32 +02:00
parent 73677b7c1a
commit eae86cd797
50 changed files with 1723 additions and 676 deletions

View File

@@ -23,6 +23,9 @@
namespace Thelia\Coupon;
use Thelia\Coupon\Type\CouponInterface;
use Thelia\Model\Coupon;
/**
* Created by JetBrains PhpStorm.
* Date: 8/19/13
@@ -93,4 +96,22 @@ interface CouponAdapterInterface
*/
public function getCurrentCoupons();
/**
* Find one Coupon in the database from its code
*
* @param string $code Coupon code
*
* @return Coupon
*/
public function findOneCouponByCode($code);
/**
* Save a Coupon in the database
*
* @param CouponInterface $coupon Coupon
*
* @return $this
*/
public function saveCoupon(CouponInterface $coupon);
}

View File

@@ -23,6 +23,10 @@
namespace Thelia\Coupon;
use Thelia\Coupon\Type\CouponInterface;
use Thelia\Model\Coupon;
use Thelia\Model\CouponQuery;
/**
* Created by JetBrains PhpStorm.
* Date: 8/19/13
@@ -30,6 +34,7 @@ namespace Thelia\Coupon;
*
* @package Coupon
* @author Guillaume MOREL <gmorel@openstudio.fr>
* @todo implements
*
*/
class CouponBaseAdapter implements CouponAdapterInterface
@@ -111,7 +116,7 @@ class CouponBaseAdapter implements CouponAdapterInterface
*/
public function getCurrentCoupons()
{
$couponFactory = new CouponFactory();
$couponFactory = new CouponFactory($this);
// @todo Get from Session
$couponCodes = array('XMAS', 'SPRINGBREAK');
@@ -124,5 +129,46 @@ class CouponBaseAdapter implements CouponAdapterInterface
return $coupons;
}
/**
* Find one Coupon in the database from its code
*
* @param string $code Coupon code
*
* @return Coupon
*/
public function findOneCouponByCode($code)
{
$couponQuery = CouponQuery::create();
return $couponQuery->findOneByCode($code);
}
/**
* Save a Coupon in the database
*
* @param CouponInterface $coupon Coupon
*
* @return $this
*/
public function saveCoupon(CouponInterface $coupon)
{
// $couponModel = new Coupon();
// $couponModel->setCode($coupon->getCode());
// $couponModel->setType(get_class($coupon));
// $couponModel->setTitle($coupon->getTitle());
// $couponModel->setShortDescription($coupon->getShortDescription());
// $couponModel->setDescription($coupon->getDescription());
// $couponModel->setAmount($coupon->getEffect());
// $couponModel->setIsUsed(0);
// $couponModel->setIsEnabled(1);
// $couponModel->set
// $couponModel->set
// $couponModel->set
// $couponModel->set
// $couponModel->set
// $couponModel->set
// $couponModel->set
}
}

View File

@@ -23,13 +23,12 @@
namespace Thelia\Coupon;
use Symfony\Component\Translation\Exception\NotFoundResourceException;
use Thelia\Coupon\Type\CouponInterface;
use Thelia\Coupon\Type\RemoveXAmount;
use Thelia\Model\Base\CouponQuery;
use Thelia\Exception\CouponExpiredException;
use Thelia\Model\Coupon;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer;
/**
* Created by JetBrains PhpStorm.
@@ -44,18 +43,41 @@ use Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer;
*/
class CouponFactory
{
/** @var CouponAdapterInterface Provide necessary value from Thelia*/
protected $adapter;
/**
* Constructor
*
* @param CouponAdapterInterface $adapter Provide necessary value from Thelia
*/
function __construct(CouponAdapterInterface $adapter)
{
$this->adapter = $adapter;
}
/**
* Build a CouponInterface from its database data
*
* @param string $couponCode Coupon code ex: XMAS
*
* @throws \Thelia\Exception\CouponExpiredException
* @throws \Symfony\Component\Translation\Exception\NotFoundResourceException
* @return CouponInterface ready to be processed
*/
public function buildCouponFromCode($couponCode)
{
/** @var Coupon $couponModel */
$couponModel = $this->adapter->findOneCouponByCode($couponCode);
if ($couponModel === null) {
throw new NotFoundResourceException(
'Coupon ' . $couponCode . ' not found in Database'
);
}
$couponQuery = CouponQuery::create();
$couponModel = $couponQuery->findByCode($couponCode);
if ($couponModel->getExpirationDate() < new \DateTime()) {
throw new CouponExpiredException($couponCode);
}
return $this->buildCouponInterfacFromModel($couponModel);
}
@@ -74,37 +96,22 @@ class CouponFactory
$couponClass = $model->getType();
/** @var CouponInterface $coupon*/
$coupon = new $$couponClass(
$coupon = new $couponClass(
$model->getCode(),
$model->getTitle(),
$model->getShortDescription(),
$model->getDescription(),
$model->getAmount(),
$isCumulative,
$isRemovingPostage
$isRemovingPostage,
$model->getIsAvailableOnSpecialOffers(),
$model->getIsEnabled(),
$model->getMaxUsage(),
$model->getExpirationDate()
);
$normalizer = new GetSetMethodNormalizer();
$encoder = new JsonEncoder();
$serializer = new Serializer(array($normalizer), array($encoder));
$o = new \ArrayObject();
$unserializedRuleTypes = $o->unserialize(
$model->getSerializedRulesType()
);
$unserializedRuleContents = $o->unserialize(
$model->getSerializedRulesContent()
);
$rules = array();
foreach ($unserializedRuleTypes as $key => $unserializedRuleType) {
$rules[] = $serializer->deserialize(
$unserializedRuleContents[$key],
$unserializedRuleType,
'json'
);
}
/** @var CouponRuleCollection $rules */
$rules = unserialize(base64_decode($model->getSerializedRules()));
$coupon->setRules($rules);

View File

@@ -51,7 +51,7 @@ class CouponManager
*
* @param CouponAdapterInterface $adapter Provide necessary value from Thelia
*/
function __construct($adapter)
function __construct(CouponAdapterInterface $adapter)
{
$this->adapter = $adapter;
$this->coupons = $this->adapter->getCurrentCoupons();
@@ -69,7 +69,7 @@ class CouponManager
$discount = 0.00;
if (count($this->coupons) > 0) {
$couponsKept = $this->sortCoupons();
$couponsKept = $this->sortCoupons($this->coupons);
$isRemovingPostage = $this->isCouponRemovingPostage($couponsKept);
if ($isRemovingPostage) {
@@ -111,17 +111,36 @@ class CouponManager
* Sort Coupon to keep
* Coupon not cumulative cancels previous
*
* @param array $coupons CouponInterface to process
*
* @return array Array of CouponInterface sorted
*/
protected function sortCoupons()
protected function sortCoupons(array $coupons)
{
$couponsKept = array();
/** @var CouponInterface $coupon */
foreach ($this->coupons as $coupon) {
if (!$coupon->isCumulative()) {
$couponsKept = array();
foreach ($coupons as $coupon) {
if (!$coupon->isExpired()) {
if ($coupon->isCumulative()) {
if (isset($couponsKept[0])) {
/** @var CouponInterface $previousCoupon */
$previousCoupon = $couponsKept[0];
if ($previousCoupon->isCumulative()) {
// Add Coupon
$couponsKept[] = $coupon;
} else {
// Reset Coupons, add last
$couponsKept = array($coupon);
}
} else {
// Reset Coupons, add last
$couponsKept = array($coupon);
}
} else {
// Reset Coupons, add last
$couponsKept = array($coupon);
}
}
}

View File

@@ -0,0 +1,88 @@
<?php
/**********************************************************************************/
/* */
/* Thelia */
/* */
/* Copyright (c) OpenStudio */
/* email : info@thelia.net */
/* web : http://www.thelia.net */
/* */
/* This program is free software; you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 3 of the License */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* */
/**********************************************************************************/
namespace Thelia\Coupon;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Thelia\Coupon\Rule\CouponRuleInterface;
use Thelia\Exception\InvalidRuleException;
/**
* Created by JetBrains PhpStorm.
* Date: 8/19/13
* Time: 3:24 PM
*
* Manage a set of v
*
* @package Coupon
* @author Guillaume MOREL <gmorel@openstudio.fr>
*
*/
class CouponRuleCollection
{
/** @var array Array of CouponRuleInterface */
protected $rules = array();
/**
* Constructor
*
* @param array $rules Array of CouponRuleInterface
*
* @throws \Thelia\Exception\InvalidRuleException
*/
function __construct(array $rules)
{
foreach ($rules as $rule) {
if (!$rule instanceof CouponRuleInterface) {
throw new InvalidRuleException(get_class());
}
}
$this->rules = $rules;
}
/**
* Get Rules
*
* @return array Array of CouponRuleInterface
*/
public function getRules()
{
return $this->rules;
}
/**
* Add a CouponRuleInterface to the Collection
*
* @param CouponRuleInterface $rule Rule
*
* @return $this
*/
public function add(CouponRuleInterface $rule)
{
$this->rules[] = $rule;
return $this;
}
}

View File

@@ -23,6 +23,8 @@
namespace Thelia\Coupon\Rule;
use Thelia\Coupon\CouponAdapterInterface;
/**
* Created by JetBrains PhpStorm.
* Date: 8/19/13
@@ -34,31 +36,26 @@ namespace Thelia\Coupon\Rule;
*/
class AvailableForDate extends AvailableForPeriod
{
/**
* Generate current Rule validator from adapter
* Check if backoffice inputs are relevant or not
*
* @param CouponAdapterInterface $adapter allowing to gather
* all necessary Thelia variables
*
* @throws \Symfony\Component\Intl\Exception\NotImplementedException
* @return $this
* @return bool
*/
protected function setValidators(CouponAdapterInterface $adapter)
public function checkBackOfficeInput()
{
parent::setValidators($adapter); // TODO: Change the autogenerated stub
// TODO: Implement checkBackOfficeInput() method.
}
/**
* Generate current Rule param to be validated from adapter
* Check if Checkout inputs are relevant or not
*
* @param CouponAdapterInterface $adapter allowing to gather
* all necessary Thelia variables
*
* @throws \Symfony\Component\Intl\Exception\NotImplementedException
* @return $this
* @return bool
*/
protected function setParametersToValidate(CouponAdapterInterface $adapter)
public function checkCheckoutInput()
{
parent::setParametersToValidate($adapter); // TODO: Change the autogenerated stub
// TODO: Implement checkCheckoutInput() method.
}
}

View File

@@ -34,31 +34,26 @@ namespace Thelia\Coupon\Rule;
*/
class AvailableForLocationX extends CouponRuleAbstract
{
/**
* Generate current Rule validator from adapter
* Check if backoffice inputs are relevant or not
*
* @param CouponAdapterInterface $adapter allowing to gather
* all necessary Thelia variables
*
* @throws \Symfony\Component\Intl\Exception\NotImplementedException
* @return $this
* @return bool
*/
protected function setValidators(CouponAdapterInterface $adapter)
public function checkBackOfficeInput()
{
parent::setValidators($adapter); // TODO: Change the autogenerated stub
// TODO: Implement checkBackOfficeInput() method.
}
/**
* Generate current Rule param to be validated from adapter
* Check if Checkout inputs are relevant or not
*
* @param CouponAdapterInterface $adapter allowing to gather
* all necessary Thelia variables
*
* @throws \Symfony\Component\Intl\Exception\NotImplementedException
* @return $this
* @return bool
*/
protected function setParametersToValidate(CouponAdapterInterface $adapter)
public function checkCheckoutInput()
{
parent::setParametersToValidate($adapter); // TODO: Change the autogenerated stub
// TODO: Implement checkCheckoutInput() method.
}
}

View File

@@ -34,31 +34,24 @@ namespace Thelia\Coupon\Rule;
*/
class AvailableForPeriod extends CouponRuleAbstract
{
/**
* Generate current Rule validator from adapter
* Check if backoffice inputs are relevant or not
*
* @param CouponAdapterInterface $adapter allowing to gather
* all necessary Thelia variables
*
* @throws \Symfony\Component\Intl\Exception\NotImplementedException
* @return $this
* @return bool
*/
protected function setValidators(CouponAdapterInterface $adapter)
public function checkBackOfficeInput()
{
parent::setValidators($adapter); // TODO: Change the autogenerated stub
// TODO: Implement checkBackOfficeInput() method.
}
/**
* Generate current Rule param to be validated from adapter
* Check if Checkout inputs are relevant or not
*
* @param CouponAdapterInterface $adapter allowing to gather
* all necessary Thelia variables
*
* @throws \Symfony\Component\Intl\Exception\NotImplementedException
* @return $this
* @return bool
*/
protected function setParametersToValidate(CouponAdapterInterface $adapter)
public function checkCheckoutInput()
{
parent::setParametersToValidate($adapter); // TODO: Change the autogenerated stub
// TODO: Implement checkCheckoutInput() method.
}
}

View File

@@ -34,31 +34,24 @@ namespace Thelia\Coupon\Rule;
*/
class AvailableForRepeatedDate extends AvailableForDate
{
/**
* Generate current Rule validator from adapter
* Check if backoffice inputs are relevant or not
*
* @param CouponAdapterInterface $adapter allowing to gather
* all necessary Thelia variables
*
* @throws \Symfony\Component\Intl\Exception\NotImplementedException
* @return $this
* @return bool
*/
protected function setValidators(CouponAdapterInterface $adapter)
public function checkBackOfficeInput()
{
parent::setValidators($adapter); // TODO: Change the autogenerated stub
// TODO: Implement checkBackOfficeInput() method.
}
/**
* Generate current Rule param to be validated from adapter
* Check if Checkout inputs are relevant or not
*
* @param CouponAdapterInterface $adapter allowing to gather
* all necessary Thelia variables
*
* @throws \Symfony\Component\Intl\Exception\NotImplementedException
* @return $this
* @return bool
*/
protected function setParametersToValidate(CouponAdapterInterface $adapter)
public function checkCheckoutInput()
{
parent::setParametersToValidate($adapter); // TODO: Change the autogenerated stub
// TODO: Implement checkCheckoutInput() method.
}
}

View File

@@ -23,6 +23,8 @@
namespace Thelia\Coupon\Rule;
use Thelia\Coupon\CouponAdapterInterface;
/**
* Created by JetBrains PhpStorm.
* Date: 8/19/13
@@ -34,19 +36,6 @@ namespace Thelia\Coupon\Rule;
*/
class AvailableForRepeatedPeriod extends AvailableForPeriod
{
/**
* Generate current Rule validator from adapter
*
* @param CouponAdapterInterface $adapter allowing to gather
* all necessary Thelia variables
*
* @throws \Symfony\Component\Intl\Exception\NotImplementedException
* @return $this
*/
protected function setValidators(CouponAdapterInterface $adapter)
{
parent::setValidators($adapter); // TODO: Change the autogenerated stub
}
/**
* Generate current Rule param to be validated from adapter
@@ -61,4 +50,24 @@ class AvailableForRepeatedPeriod extends AvailableForPeriod
{
parent::setParametersToValidate($adapter); // TODO: Change the autogenerated stub
}
/**
* Check if backoffice inputs are relevant or not
*
* @return bool
*/
public function checkBackOfficeInput()
{
// TODO: Implement checkBackOfficeInput() method.
}
/**
* Check if Checkout inputs are relevant or not
*
* @return bool
*/
public function checkCheckoutInput()
{
// TODO: Implement checkCheckoutInput() method.
}
}

View File

@@ -166,7 +166,8 @@ class AvailableForTotalAmount extends CouponRuleAbstract
*/
protected function setValidatorsFromAdapter(CouponAdapterInterface $adapter)
{
$adapter->getRule($this);
// $adapter->getRule($this);
// @todo implement
}
/**

View File

@@ -34,31 +34,5 @@ namespace Thelia\Coupon\Rule;
*/
class AvailableForTotalAmountForCategoryY extends AvailableForTotalAmount
{
/**
* Generate current Rule validator from adapter
*
* @param CouponAdapterInterface $adapter allowing to gather
* all necessary Thelia variables
*
* @throws \Symfony\Component\Intl\Exception\NotImplementedException
* @return $this
*/
protected function setValidators(CouponAdapterInterface $adapter)
{
parent::setValidators($adapter); // TODO: Change the autogenerated stub
}
/**
* Generate current Rule param to be validated from adapter
*
* @param CouponAdapterInterface $adapter allowing to gather
* all necessary Thelia variables
*
* @throws \Symfony\Component\Intl\Exception\NotImplementedException
* @return $this
*/
protected function setParametersToValidate(CouponAdapterInterface $adapter)
{
parent::setParametersToValidate($adapter); // TODO: Change the autogenerated stub
}
}

View File

@@ -23,8 +23,6 @@
namespace Thelia\Coupon\Rule;
use Thelia\Type\IntType;
/**
* Created by JetBrains PhpStorm.
* Date: 8/19/13
@@ -38,32 +36,25 @@ use Thelia\Type\IntType;
*/
class AvailableForXArticles extends CouponRuleAbstract
{
/**
* Generate current Rule validator from adapter
* Check if backoffice inputs are relevant or not
*
* @param CouponAdapterInterface $adapter allowing to gather
* all necessary Thelia variables
*
* @throws \Symfony\Component\Intl\Exception\NotImplementedException
* @return $this
* @return bool
*/
protected function setValidators(CouponAdapterInterface $adapter)
public function checkBackOfficeInput()
{
parent::setValidators($adapter); // TODO: Change the autogenerated stub
// TODO: Implement checkBackOfficeInput() method.
}
/**
* Generate current Rule param to be validated from adapter
* Check if Checkout inputs are relevant or not
*
* @param CouponAdapterInterface $adapter allowing to gather
* all necessary Thelia variables
*
* @throws \Symfony\Component\Intl\Exception\NotImplementedException
* @return $this
* @return bool
*/
protected function setParametersToValidate(CouponAdapterInterface $adapter)
public function checkCheckoutInput()
{
parent::setParametersToValidate($adapter); // TODO: Change the autogenerated stub
// TODO: Implement checkCheckoutInput() method.
}
}

View File

@@ -23,8 +23,6 @@
namespace Thelia\Coupon\Rule;
use Thelia\Coupon\CouponAdapterInterface;
/**
* Created by JetBrains PhpStorm.
* Date: 8/19/13

View File

@@ -26,6 +26,7 @@ namespace Thelia\Coupon\Type;
use Symfony\Component\Intl\Exception\NotImplementedException;
use Thelia\Coupon\CouponAdapterInterface;
use Thelia\Coupon\Rule\CouponRuleInterface;
use Thelia\Coupon\CouponRuleCollection;
use Thelia\Coupon\RuleOrganizerInterface;
use Thelia\Exception\InvalidRuleException;
@@ -48,7 +49,7 @@ abstract class CouponAbstract implements CouponInterface
/** @var RuleOrganizerInterface */
protected $organizer = null;
/** @var array Array of CouponRuleInterface */
/** @var CouponRuleCollection Array of CouponRuleInterface */
protected $rules = null;
/** @var string Coupon code (ex: XMAS) */
@@ -63,6 +64,12 @@ abstract class CouponAbstract implements CouponInterface
/** @var string Coupon description */
protected $description = null;
/** @var bool if Coupon is enabled */
protected $isEnabled = false;
/** @var \DateTime Coupon expiration date */
protected $expirationDate = null;
/** @var bool if Coupon is cumulative */
protected $isCumulative = false;
@@ -72,6 +79,12 @@ abstract class CouponAbstract implements CouponInterface
/** @var float Amount that will be removed from the Checkout (Coupon Effect) */
protected $amount = 0;
/** @var int Max time a Coupon can be used (-1 = unlimited) */
protected $maxUsage = -1;
/** @var bool if Coupon is available for Products already on special offers */
protected $isAvailableOnSpecialOffers = false;
/**
* Set Adapter containing all relevant data
*
@@ -176,13 +189,11 @@ abstract class CouponAbstract implements CouponInterface
/**
* Return condition to validate the Coupon or not
*
* @return array An array of CouponRuleInterface
* @return CouponRuleCollection
*/
public function getRules()
{
$arrayObject = new \ArrayObject($this->rules);
return $arrayObject->getArrayCopy();
return clone $this->rules;
}
/**
@@ -195,7 +206,7 @@ abstract class CouponAbstract implements CouponInterface
*/
public function addRule(CouponRuleInterface $rule)
{
$this->rules[] = $rule;
$this->rules->add($rule);
return $this;
}
@@ -204,22 +215,14 @@ abstract class CouponAbstract implements CouponInterface
* Replace the existing Rules by those given in parameter
* If one Rule is badly implemented, no Rule will be added
*
* @param array $rules CouponRuleInterface to add
* @param CouponRuleCollection $rules CouponRuleInterface to add
*
* @return $this
* @throws \Thelia\Exception\InvalidRuleException
*/
public function setRules(array $rules)
public function setRules(CouponRuleCollection $rules)
{
foreach ($rules as $rule) {
if (!$rule instanceof CouponRuleInterface) {
throw new InvalidRuleException(get_class());
}
}
$this->rules = array();
foreach ($rules as $rule) {
$this->addRule($rule);
}
$this->rules = $rules;
return $this;
}
@@ -236,7 +239,7 @@ abstract class CouponAbstract implements CouponInterface
$isMatching = true;
/** @var CouponRuleInterface $rule */
foreach ($this->rules as $rule) {
foreach ($this->rules->getRules() as $rule) {
if (!$rule->isMatching()) {
$isMatching = false;
}
@@ -245,5 +248,65 @@ abstract class CouponAbstract implements CouponInterface
return $isMatching;
}
/**
* Return Coupon expiration date
*
* @return \DateTime
*/
public function getExpirationDate()
{
return clone $this->expirationDate;
}
/**
* Check if the Coupon can be used against a
* product already with a special offer price
*
* @return boolean
*/
public function isAvailableOnSpecialOffers()
{
return $this->isAvailableOnSpecialOffers;
}
/**
* Check if Coupon has been disabled by admin
*
* @return boolean
*/
public function isEnabled()
{
return $this->isEnabled;
}
/**
* Return how many time the Coupon can be used again
* Ex : -1 unlimited
*
* @return int
*/
public function getMaxUsage()
{
return $this->maxUsage;
}
/**
* Check if the Coupon is already Expired
*
* @return bool
*/
public function isExpired()
{
$ret = true;
if ($this->expirationDate < new \DateTime()) {
$ret = false;
}
return $ret;
}
}

View File

@@ -23,6 +23,8 @@
namespace Thelia\Coupon\Type;
use Thelia\Coupon\CouponRuleCollection;
/**
* Created by JetBrains PhpStorm.
* Date: 8/19/13
@@ -114,10 +116,48 @@ interface CouponInterface
* Replace the existing Rules by those given in parameter
* If one Rule is badly implemented, no Rule will be added
*
* @param array $rules CouponRuleInterface to add
* @param CouponRuleCollection $rules CouponRuleInterface to add
*
* @return $this
* @throws \Thelia\Exception\InvalidRuleException
*/
public function setRules(array $rules);
public function setRules(CouponRuleCollection $rules);
/**
* Return Coupon expiration date
*
* @return \DateTime
*/
public function getExpirationDate();
/**
* Check if the Coupon can be used against a
* product already with a special offer price
*
* @return boolean
*/
public function isAvailableOnSpecialOffers();
/**
* Check if Coupon has been disabled by admin
*
* @return boolean
*/
public function isEnabled();
/**
* Return how many time the Coupon can be used again
* Ex : -1 unlimited
*
* @return int
*/
public function getMaxUsage();
/**
* Check if the Coupon is already Expired
*
* @return bool
*/
public function isExpired();
}

View File

@@ -46,10 +46,15 @@ class RemoveXAmount extends CouponAbstract
* @param string $shortDescription Coupon short description
* @param string $description Coupon description
* @param float $amount Coupon amount to deduce
* @param bool $isCumulative if Coupon is cumulative
* @param bool $isRemovingPostage if Coupon is removing postage
* @param bool $isCumulative If Coupon is cumulative
* @param bool $isRemovingPostage If Coupon is removing postage
* @param bool $isAvailableOnSpecialOffers If available on Product already
* on special offer price
* @param bool $isEnabled False if Coupon is disabled by admin
* @param int $maxUsage How many usage left
* @param \Datetime $expirationDate When the Code is expiring
*/
function __construct($code, $title, $shortDescription, $description, $amount, $isCumulative, $isRemovingPostage)
function __construct($code, $title, $shortDescription, $description, $amount, $isCumulative, $isRemovingPostage, $isAvailableOnSpecialOffers, $isEnabled, $maxUsage, \DateTime $expirationDate)
{
$this->code = $code;
$this->title = $title;
@@ -60,6 +65,11 @@ class RemoveXAmount extends CouponAbstract
$this->isRemovingPostage = $isRemovingPostage;
$this->amount = $amount;
$this->isAvailableOnSpecialOffers = $isAvailableOnSpecialOffers;
$this->isEnabled = $isEnabled;
$this->maxUsage = $maxUsage;
$this->expirationDate = $expirationDate;
}
}

View File

@@ -0,0 +1,53 @@
<?php
/**********************************************************************************/
/* */
/* Thelia */
/* */
/* Copyright (c) OpenStudio */
/* email : info@thelia.net */
/* web : http://www.thelia.net */
/* */
/* This program is free software; you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 3 of the License */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* */
/**********************************************************************************/
namespace Thelia\Exception;
use Thelia\Log\Tlog;
/**
* Created by JetBrains PhpStorm.
* Date: 8/19/13
* Time: 3:24 PM
*
* Thrown when an Expired Coupon is tried
*
* @package Coupon
* @author Guillaume MOREL <gmorel@openstudio.fr>
*
*/
class CouponExpiredException extends \Exception
{
/**
* CouponExpiredException thrown when a Coupon is expired
*
* @param string $couponCode Coupon code
*/
public function __construct($couponCode)
{
$message = 'Expired Coupon ' . $couponCode . 'attempt';
Tlog::getInstance()->addInfo($message);
parent::__construct($message);
}
}

View File

@@ -42,9 +42,9 @@ class InvalidRuleException extends \RuntimeException
* InvalidRuleOperatorException thrown when a Rule is badly implemented
*
* @param string $className Class name
* @param string $parameter array key parameter
*/
public function __construct($className) {
public function __construct($className)
{
$message = 'Invalid Rule given to ' . $className;
Tlog::getInstance()->addError($message);

View File

@@ -44,7 +44,8 @@ class InvalidRuleOperatorException extends \RuntimeException
* @param string $className Class name
* @param string $parameter array key parameter
*/
public function __construct($className, $parameter) {
public function __construct($className, $parameter)
{
$message = 'Invalid Operator for Rule ' . $className . ' on parameter ' . $parameter;
Tlog::getInstance()->addError($message);

View File

@@ -44,7 +44,8 @@ class InvalidRuleValueException extends \RuntimeException
* @param string $className Class name
* @param string $parameter array key parameter
*/
public function __construct($className, $parameter) {
public function __construct($className, $parameter)
{
$message = 'Invalid Parameter for Rule ' . $className . ' on parameter ' . $parameter;
Tlog::getInstance()->addError($message);

View File

@@ -123,16 +123,10 @@ abstract class Coupon implements ActiveRecordInterface
protected $expiration_date;
/**
* The value for the serialized_rules_type field.
* The value for the serialized_rules field.
* @var string
*/
protected $serialized_rules_type;
/**
* The value for the serialized_rules_content field.
* @var string
*/
protected $serialized_rules_content;
protected $serialized_rules;
/**
* The value for the is_cumulative field.
@@ -146,6 +140,18 @@ abstract class Coupon implements ActiveRecordInterface
*/
protected $is_removing_postage;
/**
* The value for the max_usage field.
* @var int
*/
protected $max_usage;
/**
* The value for the is_available_on_special_offers field.
* @var boolean
*/
protected $is_available_on_special_offers;
/**
* The value for the created_at field.
* @var string
@@ -618,25 +624,14 @@ abstract class Coupon implements ActiveRecordInterface
}
/**
* Get the [serialized_rules_type] column value.
* Get the [serialized_rules] column value.
*
* @return string
*/
public function getSerializedRulesType()
public function getSerializedRules()
{
return $this->serialized_rules_type;
}
/**
* Get the [serialized_rules_content] column value.
*
* @return string
*/
public function getSerializedRulesContent()
{
return $this->serialized_rules_content;
return $this->serialized_rules;
}
/**
@@ -661,6 +656,28 @@ abstract class Coupon implements ActiveRecordInterface
return $this->is_removing_postage;
}
/**
* Get the [max_usage] column value.
*
* @return int
*/
public function getMaxUsage()
{
return $this->max_usage;
}
/**
* Get the [is_available_on_special_offers] column value.
*
* @return boolean
*/
public function getIsAvailableOnSpecialOffers()
{
return $this->is_available_on_special_offers;
}
/**
* Get the [optionally formatted] temporal [created_at] column value.
*
@@ -923,46 +940,25 @@ abstract class Coupon implements ActiveRecordInterface
} // setExpirationDate()
/**
* Set the value of [serialized_rules_type] column.
* Set the value of [serialized_rules] column.
*
* @param string $v new value
* @return \Thelia\Model\Coupon The current object (for fluent API support)
*/
public function setSerializedRulesType($v)
public function setSerializedRules($v)
{
if ($v !== null) {
$v = (string) $v;
}
if ($this->serialized_rules_type !== $v) {
$this->serialized_rules_type = $v;
$this->modifiedColumns[] = CouponTableMap::SERIALIZED_RULES_TYPE;
if ($this->serialized_rules !== $v) {
$this->serialized_rules = $v;
$this->modifiedColumns[] = CouponTableMap::SERIALIZED_RULES;
}
return $this;
} // setSerializedRulesType()
/**
* Set the value of [serialized_rules_content] column.
*
* @param string $v new value
* @return \Thelia\Model\Coupon The current object (for fluent API support)
*/
public function setSerializedRulesContent($v)
{
if ($v !== null) {
$v = (string) $v;
}
if ($this->serialized_rules_content !== $v) {
$this->serialized_rules_content = $v;
$this->modifiedColumns[] = CouponTableMap::SERIALIZED_RULES_CONTENT;
}
return $this;
} // setSerializedRulesContent()
} // setSerializedRules()
/**
* Set the value of [is_cumulative] column.
@@ -1006,6 +1002,56 @@ abstract class Coupon implements ActiveRecordInterface
return $this;
} // setIsRemovingPostage()
/**
* Set the value of [max_usage] column.
*
* @param int $v new value
* @return \Thelia\Model\Coupon The current object (for fluent API support)
*/
public function setMaxUsage($v)
{
if ($v !== null) {
$v = (int) $v;
}
if ($this->max_usage !== $v) {
$this->max_usage = $v;
$this->modifiedColumns[] = CouponTableMap::MAX_USAGE;
}
return $this;
} // setMaxUsage()
/**
* Sets the value of the [is_available_on_special_offers] column.
* Non-boolean arguments are converted using the following rules:
* * 1, '1', 'true', 'on', and 'yes' are converted to boolean true
* * 0, '0', 'false', 'off', and 'no' are converted to boolean false
* Check on string values is case insensitive (so 'FaLsE' is seen as 'false').
*
* @param boolean|integer|string $v The new value
* @return \Thelia\Model\Coupon The current object (for fluent API support)
*/
public function setIsAvailableOnSpecialOffers($v)
{
if ($v !== null) {
if (is_string($v)) {
$v = in_array(strtolower($v), array('false', 'off', '-', 'no', 'n', '0', '')) ? false : true;
} else {
$v = (boolean) $v;
}
}
if ($this->is_available_on_special_offers !== $v) {
$this->is_available_on_special_offers = $v;
$this->modifiedColumns[] = CouponTableMap::IS_AVAILABLE_ON_SPECIAL_OFFERS;
}
return $this;
} // setIsAvailableOnSpecialOffers()
/**
* Sets the value of [created_at] column to a normalized version of the date/time value specified.
*
@@ -1143,31 +1189,34 @@ abstract class Coupon implements ActiveRecordInterface
}
$this->expiration_date = (null !== $col) ? PropelDateTime::newInstance($col, null, '\DateTime') : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 10 + $startcol : CouponTableMap::translateFieldName('SerializedRulesType', TableMap::TYPE_PHPNAME, $indexType)];
$this->serialized_rules_type = (null !== $col) ? (string) $col : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 10 + $startcol : CouponTableMap::translateFieldName('SerializedRules', TableMap::TYPE_PHPNAME, $indexType)];
$this->serialized_rules = (null !== $col) ? (string) $col : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 11 + $startcol : CouponTableMap::translateFieldName('SerializedRulesContent', TableMap::TYPE_PHPNAME, $indexType)];
$this->serialized_rules_content = (null !== $col) ? (string) $col : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 12 + $startcol : CouponTableMap::translateFieldName('IsCumulative', TableMap::TYPE_PHPNAME, $indexType)];
$col = $row[TableMap::TYPE_NUM == $indexType ? 11 + $startcol : CouponTableMap::translateFieldName('IsCumulative', TableMap::TYPE_PHPNAME, $indexType)];
$this->is_cumulative = (null !== $col) ? (int) $col : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 13 + $startcol : CouponTableMap::translateFieldName('IsRemovingPostage', TableMap::TYPE_PHPNAME, $indexType)];
$col = $row[TableMap::TYPE_NUM == $indexType ? 12 + $startcol : CouponTableMap::translateFieldName('IsRemovingPostage', TableMap::TYPE_PHPNAME, $indexType)];
$this->is_removing_postage = (null !== $col) ? (int) $col : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 14 + $startcol : CouponTableMap::translateFieldName('CreatedAt', TableMap::TYPE_PHPNAME, $indexType)];
$col = $row[TableMap::TYPE_NUM == $indexType ? 13 + $startcol : CouponTableMap::translateFieldName('MaxUsage', TableMap::TYPE_PHPNAME, $indexType)];
$this->max_usage = (null !== $col) ? (int) $col : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 14 + $startcol : CouponTableMap::translateFieldName('IsAvailableOnSpecialOffers', TableMap::TYPE_PHPNAME, $indexType)];
$this->is_available_on_special_offers = (null !== $col) ? (boolean) $col : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 15 + $startcol : CouponTableMap::translateFieldName('CreatedAt', TableMap::TYPE_PHPNAME, $indexType)];
if ($col === '0000-00-00 00:00:00') {
$col = null;
}
$this->created_at = (null !== $col) ? PropelDateTime::newInstance($col, null, '\DateTime') : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 15 + $startcol : CouponTableMap::translateFieldName('UpdatedAt', TableMap::TYPE_PHPNAME, $indexType)];
$col = $row[TableMap::TYPE_NUM == $indexType ? 16 + $startcol : CouponTableMap::translateFieldName('UpdatedAt', TableMap::TYPE_PHPNAME, $indexType)];
if ($col === '0000-00-00 00:00:00') {
$col = null;
}
$this->updated_at = (null !== $col) ? PropelDateTime::newInstance($col, null, '\DateTime') : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 16 + $startcol : CouponTableMap::translateFieldName('Version', TableMap::TYPE_PHPNAME, $indexType)];
$col = $row[TableMap::TYPE_NUM == $indexType ? 17 + $startcol : CouponTableMap::translateFieldName('Version', TableMap::TYPE_PHPNAME, $indexType)];
$this->version = (null !== $col) ? (int) $col : null;
$this->resetModified();
@@ -1177,7 +1226,7 @@ abstract class Coupon implements ActiveRecordInterface
$this->ensureConsistency();
}
return $startcol + 17; // 17 = CouponTableMap::NUM_HYDRATE_COLUMNS.
return $startcol + 18; // 18 = CouponTableMap::NUM_HYDRATE_COLUMNS.
} catch (Exception $e) {
throw new PropelException("Error populating \Thelia\Model\Coupon object", 0, $e);
@@ -1493,11 +1542,8 @@ abstract class Coupon implements ActiveRecordInterface
if ($this->isColumnModified(CouponTableMap::EXPIRATION_DATE)) {
$modifiedColumns[':p' . $index++] = 'EXPIRATION_DATE';
}
if ($this->isColumnModified(CouponTableMap::SERIALIZED_RULES_TYPE)) {
$modifiedColumns[':p' . $index++] = 'SERIALIZED_RULES_TYPE';
}
if ($this->isColumnModified(CouponTableMap::SERIALIZED_RULES_CONTENT)) {
$modifiedColumns[':p' . $index++] = 'SERIALIZED_RULES_CONTENT';
if ($this->isColumnModified(CouponTableMap::SERIALIZED_RULES)) {
$modifiedColumns[':p' . $index++] = 'SERIALIZED_RULES';
}
if ($this->isColumnModified(CouponTableMap::IS_CUMULATIVE)) {
$modifiedColumns[':p' . $index++] = 'IS_CUMULATIVE';
@@ -1505,6 +1551,12 @@ abstract class Coupon implements ActiveRecordInterface
if ($this->isColumnModified(CouponTableMap::IS_REMOVING_POSTAGE)) {
$modifiedColumns[':p' . $index++] = 'IS_REMOVING_POSTAGE';
}
if ($this->isColumnModified(CouponTableMap::MAX_USAGE)) {
$modifiedColumns[':p' . $index++] = 'MAX_USAGE';
}
if ($this->isColumnModified(CouponTableMap::IS_AVAILABLE_ON_SPECIAL_OFFERS)) {
$modifiedColumns[':p' . $index++] = 'IS_AVAILABLE_ON_SPECIAL_OFFERS';
}
if ($this->isColumnModified(CouponTableMap::CREATED_AT)) {
$modifiedColumns[':p' . $index++] = 'CREATED_AT';
}
@@ -1555,11 +1607,8 @@ abstract class Coupon implements ActiveRecordInterface
case 'EXPIRATION_DATE':
$stmt->bindValue($identifier, $this->expiration_date ? $this->expiration_date->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
break;
case 'SERIALIZED_RULES_TYPE':
$stmt->bindValue($identifier, $this->serialized_rules_type, PDO::PARAM_STR);
break;
case 'SERIALIZED_RULES_CONTENT':
$stmt->bindValue($identifier, $this->serialized_rules_content, PDO::PARAM_STR);
case 'SERIALIZED_RULES':
$stmt->bindValue($identifier, $this->serialized_rules, PDO::PARAM_STR);
break;
case 'IS_CUMULATIVE':
$stmt->bindValue($identifier, $this->is_cumulative, PDO::PARAM_INT);
@@ -1567,6 +1616,12 @@ abstract class Coupon implements ActiveRecordInterface
case 'IS_REMOVING_POSTAGE':
$stmt->bindValue($identifier, $this->is_removing_postage, PDO::PARAM_INT);
break;
case 'MAX_USAGE':
$stmt->bindValue($identifier, $this->max_usage, PDO::PARAM_INT);
break;
case 'IS_AVAILABLE_ON_SPECIAL_OFFERS':
$stmt->bindValue($identifier, (int) $this->is_available_on_special_offers, PDO::PARAM_INT);
break;
case 'CREATED_AT':
$stmt->bindValue($identifier, $this->created_at ? $this->created_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
break;
@@ -1669,24 +1724,27 @@ abstract class Coupon implements ActiveRecordInterface
return $this->getExpirationDate();
break;
case 10:
return $this->getSerializedRulesType();
return $this->getSerializedRules();
break;
case 11:
return $this->getSerializedRulesContent();
break;
case 12:
return $this->getIsCumulative();
break;
case 13:
case 12:
return $this->getIsRemovingPostage();
break;
case 13:
return $this->getMaxUsage();
break;
case 14:
return $this->getCreatedAt();
return $this->getIsAvailableOnSpecialOffers();
break;
case 15:
return $this->getUpdatedAt();
return $this->getCreatedAt();
break;
case 16:
return $this->getUpdatedAt();
break;
case 17:
return $this->getVersion();
break;
default:
@@ -1728,13 +1786,14 @@ abstract class Coupon implements ActiveRecordInterface
$keys[7] => $this->getIsUsed(),
$keys[8] => $this->getIsEnabled(),
$keys[9] => $this->getExpirationDate(),
$keys[10] => $this->getSerializedRulesType(),
$keys[11] => $this->getSerializedRulesContent(),
$keys[12] => $this->getIsCumulative(),
$keys[13] => $this->getIsRemovingPostage(),
$keys[14] => $this->getCreatedAt(),
$keys[15] => $this->getUpdatedAt(),
$keys[16] => $this->getVersion(),
$keys[10] => $this->getSerializedRules(),
$keys[11] => $this->getIsCumulative(),
$keys[12] => $this->getIsRemovingPostage(),
$keys[13] => $this->getMaxUsage(),
$keys[14] => $this->getIsAvailableOnSpecialOffers(),
$keys[15] => $this->getCreatedAt(),
$keys[16] => $this->getUpdatedAt(),
$keys[17] => $this->getVersion(),
);
$virtualColumns = $this->virtualColumns;
foreach($virtualColumns as $key => $virtualColumn)
@@ -1817,24 +1876,27 @@ abstract class Coupon implements ActiveRecordInterface
$this->setExpirationDate($value);
break;
case 10:
$this->setSerializedRulesType($value);
$this->setSerializedRules($value);
break;
case 11:
$this->setSerializedRulesContent($value);
break;
case 12:
$this->setIsCumulative($value);
break;
case 13:
case 12:
$this->setIsRemovingPostage($value);
break;
case 13:
$this->setMaxUsage($value);
break;
case 14:
$this->setCreatedAt($value);
$this->setIsAvailableOnSpecialOffers($value);
break;
case 15:
$this->setUpdatedAt($value);
$this->setCreatedAt($value);
break;
case 16:
$this->setUpdatedAt($value);
break;
case 17:
$this->setVersion($value);
break;
} // switch()
@@ -1871,13 +1933,14 @@ abstract class Coupon implements ActiveRecordInterface
if (array_key_exists($keys[7], $arr)) $this->setIsUsed($arr[$keys[7]]);
if (array_key_exists($keys[8], $arr)) $this->setIsEnabled($arr[$keys[8]]);
if (array_key_exists($keys[9], $arr)) $this->setExpirationDate($arr[$keys[9]]);
if (array_key_exists($keys[10], $arr)) $this->setSerializedRulesType($arr[$keys[10]]);
if (array_key_exists($keys[11], $arr)) $this->setSerializedRulesContent($arr[$keys[11]]);
if (array_key_exists($keys[12], $arr)) $this->setIsCumulative($arr[$keys[12]]);
if (array_key_exists($keys[13], $arr)) $this->setIsRemovingPostage($arr[$keys[13]]);
if (array_key_exists($keys[14], $arr)) $this->setCreatedAt($arr[$keys[14]]);
if (array_key_exists($keys[15], $arr)) $this->setUpdatedAt($arr[$keys[15]]);
if (array_key_exists($keys[16], $arr)) $this->setVersion($arr[$keys[16]]);
if (array_key_exists($keys[10], $arr)) $this->setSerializedRules($arr[$keys[10]]);
if (array_key_exists($keys[11], $arr)) $this->setIsCumulative($arr[$keys[11]]);
if (array_key_exists($keys[12], $arr)) $this->setIsRemovingPostage($arr[$keys[12]]);
if (array_key_exists($keys[13], $arr)) $this->setMaxUsage($arr[$keys[13]]);
if (array_key_exists($keys[14], $arr)) $this->setIsAvailableOnSpecialOffers($arr[$keys[14]]);
if (array_key_exists($keys[15], $arr)) $this->setCreatedAt($arr[$keys[15]]);
if (array_key_exists($keys[16], $arr)) $this->setUpdatedAt($arr[$keys[16]]);
if (array_key_exists($keys[17], $arr)) $this->setVersion($arr[$keys[17]]);
}
/**
@@ -1899,10 +1962,11 @@ abstract class Coupon implements ActiveRecordInterface
if ($this->isColumnModified(CouponTableMap::IS_USED)) $criteria->add(CouponTableMap::IS_USED, $this->is_used);
if ($this->isColumnModified(CouponTableMap::IS_ENABLED)) $criteria->add(CouponTableMap::IS_ENABLED, $this->is_enabled);
if ($this->isColumnModified(CouponTableMap::EXPIRATION_DATE)) $criteria->add(CouponTableMap::EXPIRATION_DATE, $this->expiration_date);
if ($this->isColumnModified(CouponTableMap::SERIALIZED_RULES_TYPE)) $criteria->add(CouponTableMap::SERIALIZED_RULES_TYPE, $this->serialized_rules_type);
if ($this->isColumnModified(CouponTableMap::SERIALIZED_RULES_CONTENT)) $criteria->add(CouponTableMap::SERIALIZED_RULES_CONTENT, $this->serialized_rules_content);
if ($this->isColumnModified(CouponTableMap::SERIALIZED_RULES)) $criteria->add(CouponTableMap::SERIALIZED_RULES, $this->serialized_rules);
if ($this->isColumnModified(CouponTableMap::IS_CUMULATIVE)) $criteria->add(CouponTableMap::IS_CUMULATIVE, $this->is_cumulative);
if ($this->isColumnModified(CouponTableMap::IS_REMOVING_POSTAGE)) $criteria->add(CouponTableMap::IS_REMOVING_POSTAGE, $this->is_removing_postage);
if ($this->isColumnModified(CouponTableMap::MAX_USAGE)) $criteria->add(CouponTableMap::MAX_USAGE, $this->max_usage);
if ($this->isColumnModified(CouponTableMap::IS_AVAILABLE_ON_SPECIAL_OFFERS)) $criteria->add(CouponTableMap::IS_AVAILABLE_ON_SPECIAL_OFFERS, $this->is_available_on_special_offers);
if ($this->isColumnModified(CouponTableMap::CREATED_AT)) $criteria->add(CouponTableMap::CREATED_AT, $this->created_at);
if ($this->isColumnModified(CouponTableMap::UPDATED_AT)) $criteria->add(CouponTableMap::UPDATED_AT, $this->updated_at);
if ($this->isColumnModified(CouponTableMap::VERSION)) $criteria->add(CouponTableMap::VERSION, $this->version);
@@ -1978,10 +2042,11 @@ abstract class Coupon implements ActiveRecordInterface
$copyObj->setIsUsed($this->getIsUsed());
$copyObj->setIsEnabled($this->getIsEnabled());
$copyObj->setExpirationDate($this->getExpirationDate());
$copyObj->setSerializedRulesType($this->getSerializedRulesType());
$copyObj->setSerializedRulesContent($this->getSerializedRulesContent());
$copyObj->setSerializedRules($this->getSerializedRules());
$copyObj->setIsCumulative($this->getIsCumulative());
$copyObj->setIsRemovingPostage($this->getIsRemovingPostage());
$copyObj->setMaxUsage($this->getMaxUsage());
$copyObj->setIsAvailableOnSpecialOffers($this->getIsAvailableOnSpecialOffers());
$copyObj->setCreatedAt($this->getCreatedAt());
$copyObj->setUpdatedAt($this->getUpdatedAt());
$copyObj->setVersion($this->getVersion());
@@ -2765,10 +2830,11 @@ abstract class Coupon implements ActiveRecordInterface
$this->is_used = null;
$this->is_enabled = null;
$this->expiration_date = null;
$this->serialized_rules_type = null;
$this->serialized_rules_content = null;
$this->serialized_rules = null;
$this->is_cumulative = null;
$this->is_removing_postage = null;
$this->max_usage = null;
$this->is_available_on_special_offers = null;
$this->created_at = null;
$this->updated_at = null;
$this->version = null;
@@ -3008,10 +3074,11 @@ abstract class Coupon implements ActiveRecordInterface
$version->setIsUsed($this->getIsUsed());
$version->setIsEnabled($this->getIsEnabled());
$version->setExpirationDate($this->getExpirationDate());
$version->setSerializedRulesType($this->getSerializedRulesType());
$version->setSerializedRulesContent($this->getSerializedRulesContent());
$version->setSerializedRules($this->getSerializedRules());
$version->setIsCumulative($this->getIsCumulative());
$version->setIsRemovingPostage($this->getIsRemovingPostage());
$version->setMaxUsage($this->getMaxUsage());
$version->setIsAvailableOnSpecialOffers($this->getIsAvailableOnSpecialOffers());
$version->setCreatedAt($this->getCreatedAt());
$version->setUpdatedAt($this->getUpdatedAt());
$version->setVersion($this->getVersion());
@@ -3062,10 +3129,11 @@ abstract class Coupon implements ActiveRecordInterface
$this->setIsUsed($version->getIsUsed());
$this->setIsEnabled($version->getIsEnabled());
$this->setExpirationDate($version->getExpirationDate());
$this->setSerializedRulesType($version->getSerializedRulesType());
$this->setSerializedRulesContent($version->getSerializedRulesContent());
$this->setSerializedRules($version->getSerializedRules());
$this->setIsCumulative($version->getIsCumulative());
$this->setIsRemovingPostage($version->getIsRemovingPostage());
$this->setMaxUsage($version->getMaxUsage());
$this->setIsAvailableOnSpecialOffers($version->getIsAvailableOnSpecialOffers());
$this->setCreatedAt($version->getCreatedAt());
$this->setUpdatedAt($version->getUpdatedAt());
$this->setVersion($version->getVersion());

View File

@@ -32,10 +32,11 @@ use Thelia\Model\Map\CouponTableMap;
* @method ChildCouponQuery orderByIsUsed($order = Criteria::ASC) Order by the is_used column
* @method ChildCouponQuery orderByIsEnabled($order = Criteria::ASC) Order by the is_enabled column
* @method ChildCouponQuery orderByExpirationDate($order = Criteria::ASC) Order by the expiration_date column
* @method ChildCouponQuery orderBySerializedRulesType($order = Criteria::ASC) Order by the serialized_rules_type column
* @method ChildCouponQuery orderBySerializedRulesContent($order = Criteria::ASC) Order by the serialized_rules_content column
* @method ChildCouponQuery orderBySerializedRules($order = Criteria::ASC) Order by the serialized_rules column
* @method ChildCouponQuery orderByIsCumulative($order = Criteria::ASC) Order by the is_cumulative column
* @method ChildCouponQuery orderByIsRemovingPostage($order = Criteria::ASC) Order by the is_removing_postage column
* @method ChildCouponQuery orderByMaxUsage($order = Criteria::ASC) Order by the max_usage column
* @method ChildCouponQuery orderByIsAvailableOnSpecialOffers($order = Criteria::ASC) Order by the is_available_on_special_offers column
* @method ChildCouponQuery orderByCreatedAt($order = Criteria::ASC) Order by the created_at column
* @method ChildCouponQuery orderByUpdatedAt($order = Criteria::ASC) Order by the updated_at column
* @method ChildCouponQuery orderByVersion($order = Criteria::ASC) Order by the version column
@@ -50,10 +51,11 @@ use Thelia\Model\Map\CouponTableMap;
* @method ChildCouponQuery groupByIsUsed() Group by the is_used column
* @method ChildCouponQuery groupByIsEnabled() Group by the is_enabled column
* @method ChildCouponQuery groupByExpirationDate() Group by the expiration_date column
* @method ChildCouponQuery groupBySerializedRulesType() Group by the serialized_rules_type column
* @method ChildCouponQuery groupBySerializedRulesContent() Group by the serialized_rules_content column
* @method ChildCouponQuery groupBySerializedRules() Group by the serialized_rules column
* @method ChildCouponQuery groupByIsCumulative() Group by the is_cumulative column
* @method ChildCouponQuery groupByIsRemovingPostage() Group by the is_removing_postage column
* @method ChildCouponQuery groupByMaxUsage() Group by the max_usage column
* @method ChildCouponQuery groupByIsAvailableOnSpecialOffers() Group by the is_available_on_special_offers column
* @method ChildCouponQuery groupByCreatedAt() Group by the created_at column
* @method ChildCouponQuery groupByUpdatedAt() Group by the updated_at column
* @method ChildCouponQuery groupByVersion() Group by the version column
@@ -87,10 +89,11 @@ use Thelia\Model\Map\CouponTableMap;
* @method ChildCoupon findOneByIsUsed(int $is_used) Return the first ChildCoupon filtered by the is_used column
* @method ChildCoupon findOneByIsEnabled(int $is_enabled) Return the first ChildCoupon filtered by the is_enabled column
* @method ChildCoupon findOneByExpirationDate(string $expiration_date) Return the first ChildCoupon filtered by the expiration_date column
* @method ChildCoupon findOneBySerializedRulesType(string $serialized_rules_type) Return the first ChildCoupon filtered by the serialized_rules_type column
* @method ChildCoupon findOneBySerializedRulesContent(string $serialized_rules_content) Return the first ChildCoupon filtered by the serialized_rules_content column
* @method ChildCoupon findOneBySerializedRules(string $serialized_rules) Return the first ChildCoupon filtered by the serialized_rules column
* @method ChildCoupon findOneByIsCumulative(int $is_cumulative) Return the first ChildCoupon filtered by the is_cumulative column
* @method ChildCoupon findOneByIsRemovingPostage(int $is_removing_postage) Return the first ChildCoupon filtered by the is_removing_postage column
* @method ChildCoupon findOneByMaxUsage(int $max_usage) Return the first ChildCoupon filtered by the max_usage column
* @method ChildCoupon findOneByIsAvailableOnSpecialOffers(boolean $is_available_on_special_offers) Return the first ChildCoupon filtered by the is_available_on_special_offers column
* @method ChildCoupon findOneByCreatedAt(string $created_at) Return the first ChildCoupon filtered by the created_at column
* @method ChildCoupon findOneByUpdatedAt(string $updated_at) Return the first ChildCoupon filtered by the updated_at column
* @method ChildCoupon findOneByVersion(int $version) Return the first ChildCoupon filtered by the version column
@@ -105,10 +108,11 @@ use Thelia\Model\Map\CouponTableMap;
* @method array findByIsUsed(int $is_used) Return ChildCoupon objects filtered by the is_used column
* @method array findByIsEnabled(int $is_enabled) Return ChildCoupon objects filtered by the is_enabled column
* @method array findByExpirationDate(string $expiration_date) Return ChildCoupon objects filtered by the expiration_date column
* @method array findBySerializedRulesType(string $serialized_rules_type) Return ChildCoupon objects filtered by the serialized_rules_type column
* @method array findBySerializedRulesContent(string $serialized_rules_content) Return ChildCoupon objects filtered by the serialized_rules_content column
* @method array findBySerializedRules(string $serialized_rules) Return ChildCoupon objects filtered by the serialized_rules column
* @method array findByIsCumulative(int $is_cumulative) Return ChildCoupon objects filtered by the is_cumulative column
* @method array findByIsRemovingPostage(int $is_removing_postage) Return ChildCoupon objects filtered by the is_removing_postage column
* @method array findByMaxUsage(int $max_usage) Return ChildCoupon objects filtered by the max_usage column
* @method array findByIsAvailableOnSpecialOffers(boolean $is_available_on_special_offers) Return ChildCoupon objects filtered by the is_available_on_special_offers column
* @method array findByCreatedAt(string $created_at) Return ChildCoupon objects filtered by the created_at column
* @method array findByUpdatedAt(string $updated_at) Return ChildCoupon objects filtered by the updated_at column
* @method array findByVersion(int $version) Return ChildCoupon objects filtered by the version column
@@ -207,7 +211,7 @@ abstract class CouponQuery extends ModelCriteria
*/
protected function findPkSimple($key, $con)
{
$sql = 'SELECT ID, CODE, TYPE, TITLE, SHORT_DESCRIPTION, DESCRIPTION, AMOUNT, IS_USED, IS_ENABLED, EXPIRATION_DATE, SERIALIZED_RULES_TYPE, SERIALIZED_RULES_CONTENT, IS_CUMULATIVE, IS_REMOVING_POSTAGE, CREATED_AT, UPDATED_AT, VERSION FROM coupon WHERE ID = :p0';
$sql = 'SELECT ID, CODE, TYPE, TITLE, SHORT_DESCRIPTION, DESCRIPTION, AMOUNT, IS_USED, IS_ENABLED, EXPIRATION_DATE, SERIALIZED_RULES, IS_CUMULATIVE, IS_REMOVING_POSTAGE, MAX_USAGE, IS_AVAILABLE_ON_SPECIAL_OFFERS, CREATED_AT, UPDATED_AT, VERSION FROM coupon WHERE ID = :p0';
try {
$stmt = $con->prepare($sql);
$stmt->bindValue(':p0', $key, PDO::PARAM_INT);
@@ -649,61 +653,32 @@ abstract class CouponQuery extends ModelCriteria
}
/**
* Filter the query on the serialized_rules_type column
* Filter the query on the serialized_rules column
*
* Example usage:
* <code>
* $query->filterBySerializedRulesType('fooValue'); // WHERE serialized_rules_type = 'fooValue'
* $query->filterBySerializedRulesType('%fooValue%'); // WHERE serialized_rules_type LIKE '%fooValue%'
* $query->filterBySerializedRules('fooValue'); // WHERE serialized_rules = 'fooValue'
* $query->filterBySerializedRules('%fooValue%'); // WHERE serialized_rules LIKE '%fooValue%'
* </code>
*
* @param string $serializedRulesType The value to use as filter.
* @param string $serializedRules The value to use as filter.
* Accepts wildcards (* and % trigger a LIKE)
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
*
* @return ChildCouponQuery The current query, for fluid interface
*/
public function filterBySerializedRulesType($serializedRulesType = null, $comparison = null)
public function filterBySerializedRules($serializedRules = null, $comparison = null)
{
if (null === $comparison) {
if (is_array($serializedRulesType)) {
if (is_array($serializedRules)) {
$comparison = Criteria::IN;
} elseif (preg_match('/[\%\*]/', $serializedRulesType)) {
$serializedRulesType = str_replace('*', '%', $serializedRulesType);
} elseif (preg_match('/[\%\*]/', $serializedRules)) {
$serializedRules = str_replace('*', '%', $serializedRules);
$comparison = Criteria::LIKE;
}
}
return $this->addUsingAlias(CouponTableMap::SERIALIZED_RULES_TYPE, $serializedRulesType, $comparison);
}
/**
* Filter the query on the serialized_rules_content column
*
* Example usage:
* <code>
* $query->filterBySerializedRulesContent('fooValue'); // WHERE serialized_rules_content = 'fooValue'
* $query->filterBySerializedRulesContent('%fooValue%'); // WHERE serialized_rules_content LIKE '%fooValue%'
* </code>
*
* @param string $serializedRulesContent The value to use as filter.
* Accepts wildcards (* and % trigger a LIKE)
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
*
* @return ChildCouponQuery The current query, for fluid interface
*/
public function filterBySerializedRulesContent($serializedRulesContent = null, $comparison = null)
{
if (null === $comparison) {
if (is_array($serializedRulesContent)) {
$comparison = Criteria::IN;
} elseif (preg_match('/[\%\*]/', $serializedRulesContent)) {
$serializedRulesContent = str_replace('*', '%', $serializedRulesContent);
$comparison = Criteria::LIKE;
}
}
return $this->addUsingAlias(CouponTableMap::SERIALIZED_RULES_CONTENT, $serializedRulesContent, $comparison);
return $this->addUsingAlias(CouponTableMap::SERIALIZED_RULES, $serializedRules, $comparison);
}
/**
@@ -788,6 +763,74 @@ abstract class CouponQuery extends ModelCriteria
return $this->addUsingAlias(CouponTableMap::IS_REMOVING_POSTAGE, $isRemovingPostage, $comparison);
}
/**
* Filter the query on the max_usage column
*
* Example usage:
* <code>
* $query->filterByMaxUsage(1234); // WHERE max_usage = 1234
* $query->filterByMaxUsage(array(12, 34)); // WHERE max_usage IN (12, 34)
* $query->filterByMaxUsage(array('min' => 12)); // WHERE max_usage > 12
* </code>
*
* @param mixed $maxUsage The value to use as filter.
* Use scalar values for equality.
* Use array values for in_array() equivalent.
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
*
* @return ChildCouponQuery The current query, for fluid interface
*/
public function filterByMaxUsage($maxUsage = null, $comparison = null)
{
if (is_array($maxUsage)) {
$useMinMax = false;
if (isset($maxUsage['min'])) {
$this->addUsingAlias(CouponTableMap::MAX_USAGE, $maxUsage['min'], Criteria::GREATER_EQUAL);
$useMinMax = true;
}
if (isset($maxUsage['max'])) {
$this->addUsingAlias(CouponTableMap::MAX_USAGE, $maxUsage['max'], Criteria::LESS_EQUAL);
$useMinMax = true;
}
if ($useMinMax) {
return $this;
}
if (null === $comparison) {
$comparison = Criteria::IN;
}
}
return $this->addUsingAlias(CouponTableMap::MAX_USAGE, $maxUsage, $comparison);
}
/**
* Filter the query on the is_available_on_special_offers column
*
* Example usage:
* <code>
* $query->filterByIsAvailableOnSpecialOffers(true); // WHERE is_available_on_special_offers = true
* $query->filterByIsAvailableOnSpecialOffers('yes'); // WHERE is_available_on_special_offers = true
* </code>
*
* @param boolean|string $isAvailableOnSpecialOffers The value to use as filter.
* Non-boolean arguments are converted using the following rules:
* * 1, '1', 'true', 'on', and 'yes' are converted to boolean true
* * 0, '0', 'false', 'off', and 'no' are converted to boolean false
* Check on string values is case insensitive (so 'FaLsE' is seen as 'false').
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
*
* @return ChildCouponQuery The current query, for fluid interface
*/
public function filterByIsAvailableOnSpecialOffers($isAvailableOnSpecialOffers = null, $comparison = null)
{
if (is_string($isAvailableOnSpecialOffers)) {
$is_available_on_special_offers = in_array(strtolower($isAvailableOnSpecialOffers), array('false', 'off', '-', 'no', 'n', '0', '')) ? false : true;
}
return $this->addUsingAlias(CouponTableMap::IS_AVAILABLE_ON_SPECIAL_OFFERS, $isAvailableOnSpecialOffers, $comparison);
}
/**
* Filter the query on the created_at column
*

View File

@@ -116,16 +116,10 @@ abstract class CouponVersion implements ActiveRecordInterface
protected $expiration_date;
/**
* The value for the serialized_rules_type field.
* The value for the serialized_rules field.
* @var string
*/
protected $serialized_rules_type;
/**
* The value for the serialized_rules_content field.
* @var string
*/
protected $serialized_rules_content;
protected $serialized_rules;
/**
* The value for the is_cumulative field.
@@ -139,6 +133,18 @@ abstract class CouponVersion implements ActiveRecordInterface
*/
protected $is_removing_postage;
/**
* The value for the max_usage field.
* @var int
*/
protected $max_usage;
/**
* The value for the is_available_on_special_offers field.
* @var boolean
*/
protected $is_available_on_special_offers;
/**
* The value for the created_at field.
* @var string
@@ -558,25 +564,14 @@ abstract class CouponVersion implements ActiveRecordInterface
}
/**
* Get the [serialized_rules_type] column value.
* Get the [serialized_rules] column value.
*
* @return string
*/
public function getSerializedRulesType()
public function getSerializedRules()
{
return $this->serialized_rules_type;
}
/**
* Get the [serialized_rules_content] column value.
*
* @return string
*/
public function getSerializedRulesContent()
{
return $this->serialized_rules_content;
return $this->serialized_rules;
}
/**
@@ -601,6 +596,28 @@ abstract class CouponVersion implements ActiveRecordInterface
return $this->is_removing_postage;
}
/**
* Get the [max_usage] column value.
*
* @return int
*/
public function getMaxUsage()
{
return $this->max_usage;
}
/**
* Get the [is_available_on_special_offers] column value.
*
* @return boolean
*/
public function getIsAvailableOnSpecialOffers()
{
return $this->is_available_on_special_offers;
}
/**
* Get the [optionally formatted] temporal [created_at] column value.
*
@@ -867,46 +884,25 @@ abstract class CouponVersion implements ActiveRecordInterface
} // setExpirationDate()
/**
* Set the value of [serialized_rules_type] column.
* Set the value of [serialized_rules] column.
*
* @param string $v new value
* @return \Thelia\Model\CouponVersion The current object (for fluent API support)
*/
public function setSerializedRulesType($v)
public function setSerializedRules($v)
{
if ($v !== null) {
$v = (string) $v;
}
if ($this->serialized_rules_type !== $v) {
$this->serialized_rules_type = $v;
$this->modifiedColumns[] = CouponVersionTableMap::SERIALIZED_RULES_TYPE;
if ($this->serialized_rules !== $v) {
$this->serialized_rules = $v;
$this->modifiedColumns[] = CouponVersionTableMap::SERIALIZED_RULES;
}
return $this;
} // setSerializedRulesType()
/**
* Set the value of [serialized_rules_content] column.
*
* @param string $v new value
* @return \Thelia\Model\CouponVersion The current object (for fluent API support)
*/
public function setSerializedRulesContent($v)
{
if ($v !== null) {
$v = (string) $v;
}
if ($this->serialized_rules_content !== $v) {
$this->serialized_rules_content = $v;
$this->modifiedColumns[] = CouponVersionTableMap::SERIALIZED_RULES_CONTENT;
}
return $this;
} // setSerializedRulesContent()
} // setSerializedRules()
/**
* Set the value of [is_cumulative] column.
@@ -950,6 +946,56 @@ abstract class CouponVersion implements ActiveRecordInterface
return $this;
} // setIsRemovingPostage()
/**
* Set the value of [max_usage] column.
*
* @param int $v new value
* @return \Thelia\Model\CouponVersion The current object (for fluent API support)
*/
public function setMaxUsage($v)
{
if ($v !== null) {
$v = (int) $v;
}
if ($this->max_usage !== $v) {
$this->max_usage = $v;
$this->modifiedColumns[] = CouponVersionTableMap::MAX_USAGE;
}
return $this;
} // setMaxUsage()
/**
* Sets the value of the [is_available_on_special_offers] column.
* Non-boolean arguments are converted using the following rules:
* * 1, '1', 'true', 'on', and 'yes' are converted to boolean true
* * 0, '0', 'false', 'off', and 'no' are converted to boolean false
* Check on string values is case insensitive (so 'FaLsE' is seen as 'false').
*
* @param boolean|integer|string $v The new value
* @return \Thelia\Model\CouponVersion The current object (for fluent API support)
*/
public function setIsAvailableOnSpecialOffers($v)
{
if ($v !== null) {
if (is_string($v)) {
$v = in_array(strtolower($v), array('false', 'off', '-', 'no', 'n', '0', '')) ? false : true;
} else {
$v = (boolean) $v;
}
}
if ($this->is_available_on_special_offers !== $v) {
$this->is_available_on_special_offers = $v;
$this->modifiedColumns[] = CouponVersionTableMap::IS_AVAILABLE_ON_SPECIAL_OFFERS;
}
return $this;
} // setIsAvailableOnSpecialOffers()
/**
* Sets the value of [created_at] column to a normalized version of the date/time value specified.
*
@@ -1087,31 +1133,34 @@ abstract class CouponVersion implements ActiveRecordInterface
}
$this->expiration_date = (null !== $col) ? PropelDateTime::newInstance($col, null, '\DateTime') : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 10 + $startcol : CouponVersionTableMap::translateFieldName('SerializedRulesType', TableMap::TYPE_PHPNAME, $indexType)];
$this->serialized_rules_type = (null !== $col) ? (string) $col : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 10 + $startcol : CouponVersionTableMap::translateFieldName('SerializedRules', TableMap::TYPE_PHPNAME, $indexType)];
$this->serialized_rules = (null !== $col) ? (string) $col : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 11 + $startcol : CouponVersionTableMap::translateFieldName('SerializedRulesContent', TableMap::TYPE_PHPNAME, $indexType)];
$this->serialized_rules_content = (null !== $col) ? (string) $col : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 12 + $startcol : CouponVersionTableMap::translateFieldName('IsCumulative', TableMap::TYPE_PHPNAME, $indexType)];
$col = $row[TableMap::TYPE_NUM == $indexType ? 11 + $startcol : CouponVersionTableMap::translateFieldName('IsCumulative', TableMap::TYPE_PHPNAME, $indexType)];
$this->is_cumulative = (null !== $col) ? (int) $col : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 13 + $startcol : CouponVersionTableMap::translateFieldName('IsRemovingPostage', TableMap::TYPE_PHPNAME, $indexType)];
$col = $row[TableMap::TYPE_NUM == $indexType ? 12 + $startcol : CouponVersionTableMap::translateFieldName('IsRemovingPostage', TableMap::TYPE_PHPNAME, $indexType)];
$this->is_removing_postage = (null !== $col) ? (int) $col : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 14 + $startcol : CouponVersionTableMap::translateFieldName('CreatedAt', TableMap::TYPE_PHPNAME, $indexType)];
$col = $row[TableMap::TYPE_NUM == $indexType ? 13 + $startcol : CouponVersionTableMap::translateFieldName('MaxUsage', TableMap::TYPE_PHPNAME, $indexType)];
$this->max_usage = (null !== $col) ? (int) $col : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 14 + $startcol : CouponVersionTableMap::translateFieldName('IsAvailableOnSpecialOffers', TableMap::TYPE_PHPNAME, $indexType)];
$this->is_available_on_special_offers = (null !== $col) ? (boolean) $col : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 15 + $startcol : CouponVersionTableMap::translateFieldName('CreatedAt', TableMap::TYPE_PHPNAME, $indexType)];
if ($col === '0000-00-00 00:00:00') {
$col = null;
}
$this->created_at = (null !== $col) ? PropelDateTime::newInstance($col, null, '\DateTime') : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 15 + $startcol : CouponVersionTableMap::translateFieldName('UpdatedAt', TableMap::TYPE_PHPNAME, $indexType)];
$col = $row[TableMap::TYPE_NUM == $indexType ? 16 + $startcol : CouponVersionTableMap::translateFieldName('UpdatedAt', TableMap::TYPE_PHPNAME, $indexType)];
if ($col === '0000-00-00 00:00:00') {
$col = null;
}
$this->updated_at = (null !== $col) ? PropelDateTime::newInstance($col, null, '\DateTime') : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 16 + $startcol : CouponVersionTableMap::translateFieldName('Version', TableMap::TYPE_PHPNAME, $indexType)];
$col = $row[TableMap::TYPE_NUM == $indexType ? 17 + $startcol : CouponVersionTableMap::translateFieldName('Version', TableMap::TYPE_PHPNAME, $indexType)];
$this->version = (null !== $col) ? (int) $col : null;
$this->resetModified();
@@ -1121,7 +1170,7 @@ abstract class CouponVersion implements ActiveRecordInterface
$this->ensureConsistency();
}
return $startcol + 17; // 17 = CouponVersionTableMap::NUM_HYDRATE_COLUMNS.
return $startcol + 18; // 18 = CouponVersionTableMap::NUM_HYDRATE_COLUMNS.
} catch (Exception $e) {
throw new PropelException("Error populating \Thelia\Model\CouponVersion object", 0, $e);
@@ -1372,11 +1421,8 @@ abstract class CouponVersion implements ActiveRecordInterface
if ($this->isColumnModified(CouponVersionTableMap::EXPIRATION_DATE)) {
$modifiedColumns[':p' . $index++] = 'EXPIRATION_DATE';
}
if ($this->isColumnModified(CouponVersionTableMap::SERIALIZED_RULES_TYPE)) {
$modifiedColumns[':p' . $index++] = 'SERIALIZED_RULES_TYPE';
}
if ($this->isColumnModified(CouponVersionTableMap::SERIALIZED_RULES_CONTENT)) {
$modifiedColumns[':p' . $index++] = 'SERIALIZED_RULES_CONTENT';
if ($this->isColumnModified(CouponVersionTableMap::SERIALIZED_RULES)) {
$modifiedColumns[':p' . $index++] = 'SERIALIZED_RULES';
}
if ($this->isColumnModified(CouponVersionTableMap::IS_CUMULATIVE)) {
$modifiedColumns[':p' . $index++] = 'IS_CUMULATIVE';
@@ -1384,6 +1430,12 @@ abstract class CouponVersion implements ActiveRecordInterface
if ($this->isColumnModified(CouponVersionTableMap::IS_REMOVING_POSTAGE)) {
$modifiedColumns[':p' . $index++] = 'IS_REMOVING_POSTAGE';
}
if ($this->isColumnModified(CouponVersionTableMap::MAX_USAGE)) {
$modifiedColumns[':p' . $index++] = 'MAX_USAGE';
}
if ($this->isColumnModified(CouponVersionTableMap::IS_AVAILABLE_ON_SPECIAL_OFFERS)) {
$modifiedColumns[':p' . $index++] = 'IS_AVAILABLE_ON_SPECIAL_OFFERS';
}
if ($this->isColumnModified(CouponVersionTableMap::CREATED_AT)) {
$modifiedColumns[':p' . $index++] = 'CREATED_AT';
}
@@ -1434,11 +1486,8 @@ abstract class CouponVersion implements ActiveRecordInterface
case 'EXPIRATION_DATE':
$stmt->bindValue($identifier, $this->expiration_date ? $this->expiration_date->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
break;
case 'SERIALIZED_RULES_TYPE':
$stmt->bindValue($identifier, $this->serialized_rules_type, PDO::PARAM_STR);
break;
case 'SERIALIZED_RULES_CONTENT':
$stmt->bindValue($identifier, $this->serialized_rules_content, PDO::PARAM_STR);
case 'SERIALIZED_RULES':
$stmt->bindValue($identifier, $this->serialized_rules, PDO::PARAM_STR);
break;
case 'IS_CUMULATIVE':
$stmt->bindValue($identifier, $this->is_cumulative, PDO::PARAM_INT);
@@ -1446,6 +1495,12 @@ abstract class CouponVersion implements ActiveRecordInterface
case 'IS_REMOVING_POSTAGE':
$stmt->bindValue($identifier, $this->is_removing_postage, PDO::PARAM_INT);
break;
case 'MAX_USAGE':
$stmt->bindValue($identifier, $this->max_usage, PDO::PARAM_INT);
break;
case 'IS_AVAILABLE_ON_SPECIAL_OFFERS':
$stmt->bindValue($identifier, (int) $this->is_available_on_special_offers, PDO::PARAM_INT);
break;
case 'CREATED_AT':
$stmt->bindValue($identifier, $this->created_at ? $this->created_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
break;
@@ -1541,24 +1596,27 @@ abstract class CouponVersion implements ActiveRecordInterface
return $this->getExpirationDate();
break;
case 10:
return $this->getSerializedRulesType();
return $this->getSerializedRules();
break;
case 11:
return $this->getSerializedRulesContent();
break;
case 12:
return $this->getIsCumulative();
break;
case 13:
case 12:
return $this->getIsRemovingPostage();
break;
case 13:
return $this->getMaxUsage();
break;
case 14:
return $this->getCreatedAt();
return $this->getIsAvailableOnSpecialOffers();
break;
case 15:
return $this->getUpdatedAt();
return $this->getCreatedAt();
break;
case 16:
return $this->getUpdatedAt();
break;
case 17:
return $this->getVersion();
break;
default:
@@ -1600,13 +1658,14 @@ abstract class CouponVersion implements ActiveRecordInterface
$keys[7] => $this->getIsUsed(),
$keys[8] => $this->getIsEnabled(),
$keys[9] => $this->getExpirationDate(),
$keys[10] => $this->getSerializedRulesType(),
$keys[11] => $this->getSerializedRulesContent(),
$keys[12] => $this->getIsCumulative(),
$keys[13] => $this->getIsRemovingPostage(),
$keys[14] => $this->getCreatedAt(),
$keys[15] => $this->getUpdatedAt(),
$keys[16] => $this->getVersion(),
$keys[10] => $this->getSerializedRules(),
$keys[11] => $this->getIsCumulative(),
$keys[12] => $this->getIsRemovingPostage(),
$keys[13] => $this->getMaxUsage(),
$keys[14] => $this->getIsAvailableOnSpecialOffers(),
$keys[15] => $this->getCreatedAt(),
$keys[16] => $this->getUpdatedAt(),
$keys[17] => $this->getVersion(),
);
$virtualColumns = $this->virtualColumns;
foreach($virtualColumns as $key => $virtualColumn)
@@ -1683,24 +1742,27 @@ abstract class CouponVersion implements ActiveRecordInterface
$this->setExpirationDate($value);
break;
case 10:
$this->setSerializedRulesType($value);
$this->setSerializedRules($value);
break;
case 11:
$this->setSerializedRulesContent($value);
break;
case 12:
$this->setIsCumulative($value);
break;
case 13:
case 12:
$this->setIsRemovingPostage($value);
break;
case 13:
$this->setMaxUsage($value);
break;
case 14:
$this->setCreatedAt($value);
$this->setIsAvailableOnSpecialOffers($value);
break;
case 15:
$this->setUpdatedAt($value);
$this->setCreatedAt($value);
break;
case 16:
$this->setUpdatedAt($value);
break;
case 17:
$this->setVersion($value);
break;
} // switch()
@@ -1737,13 +1799,14 @@ abstract class CouponVersion implements ActiveRecordInterface
if (array_key_exists($keys[7], $arr)) $this->setIsUsed($arr[$keys[7]]);
if (array_key_exists($keys[8], $arr)) $this->setIsEnabled($arr[$keys[8]]);
if (array_key_exists($keys[9], $arr)) $this->setExpirationDate($arr[$keys[9]]);
if (array_key_exists($keys[10], $arr)) $this->setSerializedRulesType($arr[$keys[10]]);
if (array_key_exists($keys[11], $arr)) $this->setSerializedRulesContent($arr[$keys[11]]);
if (array_key_exists($keys[12], $arr)) $this->setIsCumulative($arr[$keys[12]]);
if (array_key_exists($keys[13], $arr)) $this->setIsRemovingPostage($arr[$keys[13]]);
if (array_key_exists($keys[14], $arr)) $this->setCreatedAt($arr[$keys[14]]);
if (array_key_exists($keys[15], $arr)) $this->setUpdatedAt($arr[$keys[15]]);
if (array_key_exists($keys[16], $arr)) $this->setVersion($arr[$keys[16]]);
if (array_key_exists($keys[10], $arr)) $this->setSerializedRules($arr[$keys[10]]);
if (array_key_exists($keys[11], $arr)) $this->setIsCumulative($arr[$keys[11]]);
if (array_key_exists($keys[12], $arr)) $this->setIsRemovingPostage($arr[$keys[12]]);
if (array_key_exists($keys[13], $arr)) $this->setMaxUsage($arr[$keys[13]]);
if (array_key_exists($keys[14], $arr)) $this->setIsAvailableOnSpecialOffers($arr[$keys[14]]);
if (array_key_exists($keys[15], $arr)) $this->setCreatedAt($arr[$keys[15]]);
if (array_key_exists($keys[16], $arr)) $this->setUpdatedAt($arr[$keys[16]]);
if (array_key_exists($keys[17], $arr)) $this->setVersion($arr[$keys[17]]);
}
/**
@@ -1765,10 +1828,11 @@ abstract class CouponVersion implements ActiveRecordInterface
if ($this->isColumnModified(CouponVersionTableMap::IS_USED)) $criteria->add(CouponVersionTableMap::IS_USED, $this->is_used);
if ($this->isColumnModified(CouponVersionTableMap::IS_ENABLED)) $criteria->add(CouponVersionTableMap::IS_ENABLED, $this->is_enabled);
if ($this->isColumnModified(CouponVersionTableMap::EXPIRATION_DATE)) $criteria->add(CouponVersionTableMap::EXPIRATION_DATE, $this->expiration_date);
if ($this->isColumnModified(CouponVersionTableMap::SERIALIZED_RULES_TYPE)) $criteria->add(CouponVersionTableMap::SERIALIZED_RULES_TYPE, $this->serialized_rules_type);
if ($this->isColumnModified(CouponVersionTableMap::SERIALIZED_RULES_CONTENT)) $criteria->add(CouponVersionTableMap::SERIALIZED_RULES_CONTENT, $this->serialized_rules_content);
if ($this->isColumnModified(CouponVersionTableMap::SERIALIZED_RULES)) $criteria->add(CouponVersionTableMap::SERIALIZED_RULES, $this->serialized_rules);
if ($this->isColumnModified(CouponVersionTableMap::IS_CUMULATIVE)) $criteria->add(CouponVersionTableMap::IS_CUMULATIVE, $this->is_cumulative);
if ($this->isColumnModified(CouponVersionTableMap::IS_REMOVING_POSTAGE)) $criteria->add(CouponVersionTableMap::IS_REMOVING_POSTAGE, $this->is_removing_postage);
if ($this->isColumnModified(CouponVersionTableMap::MAX_USAGE)) $criteria->add(CouponVersionTableMap::MAX_USAGE, $this->max_usage);
if ($this->isColumnModified(CouponVersionTableMap::IS_AVAILABLE_ON_SPECIAL_OFFERS)) $criteria->add(CouponVersionTableMap::IS_AVAILABLE_ON_SPECIAL_OFFERS, $this->is_available_on_special_offers);
if ($this->isColumnModified(CouponVersionTableMap::CREATED_AT)) $criteria->add(CouponVersionTableMap::CREATED_AT, $this->created_at);
if ($this->isColumnModified(CouponVersionTableMap::UPDATED_AT)) $criteria->add(CouponVersionTableMap::UPDATED_AT, $this->updated_at);
if ($this->isColumnModified(CouponVersionTableMap::VERSION)) $criteria->add(CouponVersionTableMap::VERSION, $this->version);
@@ -1852,10 +1916,11 @@ abstract class CouponVersion implements ActiveRecordInterface
$copyObj->setIsUsed($this->getIsUsed());
$copyObj->setIsEnabled($this->getIsEnabled());
$copyObj->setExpirationDate($this->getExpirationDate());
$copyObj->setSerializedRulesType($this->getSerializedRulesType());
$copyObj->setSerializedRulesContent($this->getSerializedRulesContent());
$copyObj->setSerializedRules($this->getSerializedRules());
$copyObj->setIsCumulative($this->getIsCumulative());
$copyObj->setIsRemovingPostage($this->getIsRemovingPostage());
$copyObj->setMaxUsage($this->getMaxUsage());
$copyObj->setIsAvailableOnSpecialOffers($this->getIsAvailableOnSpecialOffers());
$copyObj->setCreatedAt($this->getCreatedAt());
$copyObj->setUpdatedAt($this->getUpdatedAt());
$copyObj->setVersion($this->getVersion());
@@ -1952,10 +2017,11 @@ abstract class CouponVersion implements ActiveRecordInterface
$this->is_used = null;
$this->is_enabled = null;
$this->expiration_date = null;
$this->serialized_rules_type = null;
$this->serialized_rules_content = null;
$this->serialized_rules = null;
$this->is_cumulative = null;
$this->is_removing_postage = null;
$this->max_usage = null;
$this->is_available_on_special_offers = null;
$this->created_at = null;
$this->updated_at = null;
$this->version = null;

View File

@@ -31,10 +31,11 @@ use Thelia\Model\Map\CouponVersionTableMap;
* @method ChildCouponVersionQuery orderByIsUsed($order = Criteria::ASC) Order by the is_used column
* @method ChildCouponVersionQuery orderByIsEnabled($order = Criteria::ASC) Order by the is_enabled column
* @method ChildCouponVersionQuery orderByExpirationDate($order = Criteria::ASC) Order by the expiration_date column
* @method ChildCouponVersionQuery orderBySerializedRulesType($order = Criteria::ASC) Order by the serialized_rules_type column
* @method ChildCouponVersionQuery orderBySerializedRulesContent($order = Criteria::ASC) Order by the serialized_rules_content column
* @method ChildCouponVersionQuery orderBySerializedRules($order = Criteria::ASC) Order by the serialized_rules column
* @method ChildCouponVersionQuery orderByIsCumulative($order = Criteria::ASC) Order by the is_cumulative column
* @method ChildCouponVersionQuery orderByIsRemovingPostage($order = Criteria::ASC) Order by the is_removing_postage column
* @method ChildCouponVersionQuery orderByMaxUsage($order = Criteria::ASC) Order by the max_usage column
* @method ChildCouponVersionQuery orderByIsAvailableOnSpecialOffers($order = Criteria::ASC) Order by the is_available_on_special_offers column
* @method ChildCouponVersionQuery orderByCreatedAt($order = Criteria::ASC) Order by the created_at column
* @method ChildCouponVersionQuery orderByUpdatedAt($order = Criteria::ASC) Order by the updated_at column
* @method ChildCouponVersionQuery orderByVersion($order = Criteria::ASC) Order by the version column
@@ -49,10 +50,11 @@ use Thelia\Model\Map\CouponVersionTableMap;
* @method ChildCouponVersionQuery groupByIsUsed() Group by the is_used column
* @method ChildCouponVersionQuery groupByIsEnabled() Group by the is_enabled column
* @method ChildCouponVersionQuery groupByExpirationDate() Group by the expiration_date column
* @method ChildCouponVersionQuery groupBySerializedRulesType() Group by the serialized_rules_type column
* @method ChildCouponVersionQuery groupBySerializedRulesContent() Group by the serialized_rules_content column
* @method ChildCouponVersionQuery groupBySerializedRules() Group by the serialized_rules column
* @method ChildCouponVersionQuery groupByIsCumulative() Group by the is_cumulative column
* @method ChildCouponVersionQuery groupByIsRemovingPostage() Group by the is_removing_postage column
* @method ChildCouponVersionQuery groupByMaxUsage() Group by the max_usage column
* @method ChildCouponVersionQuery groupByIsAvailableOnSpecialOffers() Group by the is_available_on_special_offers column
* @method ChildCouponVersionQuery groupByCreatedAt() Group by the created_at column
* @method ChildCouponVersionQuery groupByUpdatedAt() Group by the updated_at column
* @method ChildCouponVersionQuery groupByVersion() Group by the version column
@@ -78,10 +80,11 @@ use Thelia\Model\Map\CouponVersionTableMap;
* @method ChildCouponVersion findOneByIsUsed(int $is_used) Return the first ChildCouponVersion filtered by the is_used column
* @method ChildCouponVersion findOneByIsEnabled(int $is_enabled) Return the first ChildCouponVersion filtered by the is_enabled column
* @method ChildCouponVersion findOneByExpirationDate(string $expiration_date) Return the first ChildCouponVersion filtered by the expiration_date column
* @method ChildCouponVersion findOneBySerializedRulesType(string $serialized_rules_type) Return the first ChildCouponVersion filtered by the serialized_rules_type column
* @method ChildCouponVersion findOneBySerializedRulesContent(string $serialized_rules_content) Return the first ChildCouponVersion filtered by the serialized_rules_content column
* @method ChildCouponVersion findOneBySerializedRules(string $serialized_rules) Return the first ChildCouponVersion filtered by the serialized_rules column
* @method ChildCouponVersion findOneByIsCumulative(int $is_cumulative) Return the first ChildCouponVersion filtered by the is_cumulative column
* @method ChildCouponVersion findOneByIsRemovingPostage(int $is_removing_postage) Return the first ChildCouponVersion filtered by the is_removing_postage column
* @method ChildCouponVersion findOneByMaxUsage(int $max_usage) Return the first ChildCouponVersion filtered by the max_usage column
* @method ChildCouponVersion findOneByIsAvailableOnSpecialOffers(boolean $is_available_on_special_offers) Return the first ChildCouponVersion filtered by the is_available_on_special_offers column
* @method ChildCouponVersion findOneByCreatedAt(string $created_at) Return the first ChildCouponVersion filtered by the created_at column
* @method ChildCouponVersion findOneByUpdatedAt(string $updated_at) Return the first ChildCouponVersion filtered by the updated_at column
* @method ChildCouponVersion findOneByVersion(int $version) Return the first ChildCouponVersion filtered by the version column
@@ -96,10 +99,11 @@ use Thelia\Model\Map\CouponVersionTableMap;
* @method array findByIsUsed(int $is_used) Return ChildCouponVersion objects filtered by the is_used column
* @method array findByIsEnabled(int $is_enabled) Return ChildCouponVersion objects filtered by the is_enabled column
* @method array findByExpirationDate(string $expiration_date) Return ChildCouponVersion objects filtered by the expiration_date column
* @method array findBySerializedRulesType(string $serialized_rules_type) Return ChildCouponVersion objects filtered by the serialized_rules_type column
* @method array findBySerializedRulesContent(string $serialized_rules_content) Return ChildCouponVersion objects filtered by the serialized_rules_content column
* @method array findBySerializedRules(string $serialized_rules) Return ChildCouponVersion objects filtered by the serialized_rules column
* @method array findByIsCumulative(int $is_cumulative) Return ChildCouponVersion objects filtered by the is_cumulative column
* @method array findByIsRemovingPostage(int $is_removing_postage) Return ChildCouponVersion objects filtered by the is_removing_postage column
* @method array findByMaxUsage(int $max_usage) Return ChildCouponVersion objects filtered by the max_usage column
* @method array findByIsAvailableOnSpecialOffers(boolean $is_available_on_special_offers) Return ChildCouponVersion objects filtered by the is_available_on_special_offers column
* @method array findByCreatedAt(string $created_at) Return ChildCouponVersion objects filtered by the created_at column
* @method array findByUpdatedAt(string $updated_at) Return ChildCouponVersion objects filtered by the updated_at column
* @method array findByVersion(int $version) Return ChildCouponVersion objects filtered by the version column
@@ -191,7 +195,7 @@ abstract class CouponVersionQuery extends ModelCriteria
*/
protected function findPkSimple($key, $con)
{
$sql = 'SELECT ID, CODE, TYPE, TITLE, SHORT_DESCRIPTION, DESCRIPTION, AMOUNT, IS_USED, IS_ENABLED, EXPIRATION_DATE, SERIALIZED_RULES_TYPE, SERIALIZED_RULES_CONTENT, IS_CUMULATIVE, IS_REMOVING_POSTAGE, CREATED_AT, UPDATED_AT, VERSION FROM coupon_version WHERE ID = :p0 AND VERSION = :p1';
$sql = 'SELECT ID, CODE, TYPE, TITLE, SHORT_DESCRIPTION, DESCRIPTION, AMOUNT, IS_USED, IS_ENABLED, EXPIRATION_DATE, SERIALIZED_RULES, IS_CUMULATIVE, IS_REMOVING_POSTAGE, MAX_USAGE, IS_AVAILABLE_ON_SPECIAL_OFFERS, CREATED_AT, UPDATED_AT, VERSION FROM coupon_version WHERE ID = :p0 AND VERSION = :p1';
try {
$stmt = $con->prepare($sql);
$stmt->bindValue(':p0', $key[0], PDO::PARAM_INT);
@@ -647,61 +651,32 @@ abstract class CouponVersionQuery extends ModelCriteria
}
/**
* Filter the query on the serialized_rules_type column
* Filter the query on the serialized_rules column
*
* Example usage:
* <code>
* $query->filterBySerializedRulesType('fooValue'); // WHERE serialized_rules_type = 'fooValue'
* $query->filterBySerializedRulesType('%fooValue%'); // WHERE serialized_rules_type LIKE '%fooValue%'
* $query->filterBySerializedRules('fooValue'); // WHERE serialized_rules = 'fooValue'
* $query->filterBySerializedRules('%fooValue%'); // WHERE serialized_rules LIKE '%fooValue%'
* </code>
*
* @param string $serializedRulesType The value to use as filter.
* @param string $serializedRules The value to use as filter.
* Accepts wildcards (* and % trigger a LIKE)
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
*
* @return ChildCouponVersionQuery The current query, for fluid interface
*/
public function filterBySerializedRulesType($serializedRulesType = null, $comparison = null)
public function filterBySerializedRules($serializedRules = null, $comparison = null)
{
if (null === $comparison) {
if (is_array($serializedRulesType)) {
if (is_array($serializedRules)) {
$comparison = Criteria::IN;
} elseif (preg_match('/[\%\*]/', $serializedRulesType)) {
$serializedRulesType = str_replace('*', '%', $serializedRulesType);
} elseif (preg_match('/[\%\*]/', $serializedRules)) {
$serializedRules = str_replace('*', '%', $serializedRules);
$comparison = Criteria::LIKE;
}
}
return $this->addUsingAlias(CouponVersionTableMap::SERIALIZED_RULES_TYPE, $serializedRulesType, $comparison);
}
/**
* Filter the query on the serialized_rules_content column
*
* Example usage:
* <code>
* $query->filterBySerializedRulesContent('fooValue'); // WHERE serialized_rules_content = 'fooValue'
* $query->filterBySerializedRulesContent('%fooValue%'); // WHERE serialized_rules_content LIKE '%fooValue%'
* </code>
*
* @param string $serializedRulesContent The value to use as filter.
* Accepts wildcards (* and % trigger a LIKE)
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
*
* @return ChildCouponVersionQuery The current query, for fluid interface
*/
public function filterBySerializedRulesContent($serializedRulesContent = null, $comparison = null)
{
if (null === $comparison) {
if (is_array($serializedRulesContent)) {
$comparison = Criteria::IN;
} elseif (preg_match('/[\%\*]/', $serializedRulesContent)) {
$serializedRulesContent = str_replace('*', '%', $serializedRulesContent);
$comparison = Criteria::LIKE;
}
}
return $this->addUsingAlias(CouponVersionTableMap::SERIALIZED_RULES_CONTENT, $serializedRulesContent, $comparison);
return $this->addUsingAlias(CouponVersionTableMap::SERIALIZED_RULES, $serializedRules, $comparison);
}
/**
@@ -786,6 +761,74 @@ abstract class CouponVersionQuery extends ModelCriteria
return $this->addUsingAlias(CouponVersionTableMap::IS_REMOVING_POSTAGE, $isRemovingPostage, $comparison);
}
/**
* Filter the query on the max_usage column
*
* Example usage:
* <code>
* $query->filterByMaxUsage(1234); // WHERE max_usage = 1234
* $query->filterByMaxUsage(array(12, 34)); // WHERE max_usage IN (12, 34)
* $query->filterByMaxUsage(array('min' => 12)); // WHERE max_usage > 12
* </code>
*
* @param mixed $maxUsage The value to use as filter.
* Use scalar values for equality.
* Use array values for in_array() equivalent.
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
*
* @return ChildCouponVersionQuery The current query, for fluid interface
*/
public function filterByMaxUsage($maxUsage = null, $comparison = null)
{
if (is_array($maxUsage)) {
$useMinMax = false;
if (isset($maxUsage['min'])) {
$this->addUsingAlias(CouponVersionTableMap::MAX_USAGE, $maxUsage['min'], Criteria::GREATER_EQUAL);
$useMinMax = true;
}
if (isset($maxUsage['max'])) {
$this->addUsingAlias(CouponVersionTableMap::MAX_USAGE, $maxUsage['max'], Criteria::LESS_EQUAL);
$useMinMax = true;
}
if ($useMinMax) {
return $this;
}
if (null === $comparison) {
$comparison = Criteria::IN;
}
}
return $this->addUsingAlias(CouponVersionTableMap::MAX_USAGE, $maxUsage, $comparison);
}
/**
* Filter the query on the is_available_on_special_offers column
*
* Example usage:
* <code>
* $query->filterByIsAvailableOnSpecialOffers(true); // WHERE is_available_on_special_offers = true
* $query->filterByIsAvailableOnSpecialOffers('yes'); // WHERE is_available_on_special_offers = true
* </code>
*
* @param boolean|string $isAvailableOnSpecialOffers The value to use as filter.
* Non-boolean arguments are converted using the following rules:
* * 1, '1', 'true', 'on', and 'yes' are converted to boolean true
* * 0, '0', 'false', 'off', and 'no' are converted to boolean false
* Check on string values is case insensitive (so 'FaLsE' is seen as 'false').
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
*
* @return ChildCouponVersionQuery The current query, for fluid interface
*/
public function filterByIsAvailableOnSpecialOffers($isAvailableOnSpecialOffers = null, $comparison = null)
{
if (is_string($isAvailableOnSpecialOffers)) {
$is_available_on_special_offers = in_array(strtolower($isAvailableOnSpecialOffers), array('false', 'off', '-', 'no', 'n', '0', '')) ? false : true;
}
return $this->addUsingAlias(CouponVersionTableMap::IS_AVAILABLE_ON_SPECIAL_OFFERS, $isAvailableOnSpecialOffers, $comparison);
}
/**
* Filter the query on the created_at column
*

View File

@@ -57,7 +57,7 @@ class CouponTableMap extends TableMap
/**
* The total number of columns
*/
const NUM_COLUMNS = 17;
const NUM_COLUMNS = 18;
/**
* The number of lazy-loaded columns
@@ -67,7 +67,7 @@ class CouponTableMap extends TableMap
/**
* The number of columns to hydrate (NUM_COLUMNS - NUM_LAZY_LOAD_COLUMNS)
*/
const NUM_HYDRATE_COLUMNS = 17;
const NUM_HYDRATE_COLUMNS = 18;
/**
* the column name for the ID field
@@ -120,14 +120,9 @@ class CouponTableMap extends TableMap
const EXPIRATION_DATE = 'coupon.EXPIRATION_DATE';
/**
* the column name for the SERIALIZED_RULES_TYPE field
* the column name for the SERIALIZED_RULES field
*/
const SERIALIZED_RULES_TYPE = 'coupon.SERIALIZED_RULES_TYPE';
/**
* the column name for the SERIALIZED_RULES_CONTENT field
*/
const SERIALIZED_RULES_CONTENT = 'coupon.SERIALIZED_RULES_CONTENT';
const SERIALIZED_RULES = 'coupon.SERIALIZED_RULES';
/**
* the column name for the IS_CUMULATIVE field
@@ -139,6 +134,16 @@ class CouponTableMap extends TableMap
*/
const IS_REMOVING_POSTAGE = 'coupon.IS_REMOVING_POSTAGE';
/**
* the column name for the MAX_USAGE field
*/
const MAX_USAGE = 'coupon.MAX_USAGE';
/**
* the column name for the IS_AVAILABLE_ON_SPECIAL_OFFERS field
*/
const IS_AVAILABLE_ON_SPECIAL_OFFERS = 'coupon.IS_AVAILABLE_ON_SPECIAL_OFFERS';
/**
* the column name for the CREATED_AT field
*/
@@ -175,12 +180,12 @@ class CouponTableMap extends TableMap
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
*/
protected static $fieldNames = array (
self::TYPE_PHPNAME => array('Id', 'Code', 'Type', 'Title', 'ShortDescription', 'Description', 'Amount', 'IsUsed', 'IsEnabled', 'ExpirationDate', 'SerializedRulesType', 'SerializedRulesContent', 'IsCumulative', 'IsRemovingPostage', 'CreatedAt', 'UpdatedAt', 'Version', ),
self::TYPE_STUDLYPHPNAME => array('id', 'code', 'type', 'title', 'shortDescription', 'description', 'amount', 'isUsed', 'isEnabled', 'expirationDate', 'serializedRulesType', 'serializedRulesContent', 'isCumulative', 'isRemovingPostage', 'createdAt', 'updatedAt', 'version', ),
self::TYPE_COLNAME => array(CouponTableMap::ID, CouponTableMap::CODE, CouponTableMap::TYPE, CouponTableMap::TITLE, CouponTableMap::SHORT_DESCRIPTION, CouponTableMap::DESCRIPTION, CouponTableMap::AMOUNT, CouponTableMap::IS_USED, CouponTableMap::IS_ENABLED, CouponTableMap::EXPIRATION_DATE, CouponTableMap::SERIALIZED_RULES_TYPE, CouponTableMap::SERIALIZED_RULES_CONTENT, CouponTableMap::IS_CUMULATIVE, CouponTableMap::IS_REMOVING_POSTAGE, CouponTableMap::CREATED_AT, CouponTableMap::UPDATED_AT, CouponTableMap::VERSION, ),
self::TYPE_RAW_COLNAME => array('ID', 'CODE', 'TYPE', 'TITLE', 'SHORT_DESCRIPTION', 'DESCRIPTION', 'AMOUNT', 'IS_USED', 'IS_ENABLED', 'EXPIRATION_DATE', 'SERIALIZED_RULES_TYPE', 'SERIALIZED_RULES_CONTENT', 'IS_CUMULATIVE', 'IS_REMOVING_POSTAGE', 'CREATED_AT', 'UPDATED_AT', 'VERSION', ),
self::TYPE_FIELDNAME => array('id', 'code', 'type', 'title', 'short_description', 'description', 'amount', 'is_used', 'is_enabled', 'expiration_date', 'serialized_rules_type', 'serialized_rules_content', 'is_cumulative', 'is_removing_postage', 'created_at', 'updated_at', 'version', ),
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, )
self::TYPE_PHPNAME => array('Id', 'Code', 'Type', 'Title', 'ShortDescription', 'Description', 'Amount', 'IsUsed', 'IsEnabled', 'ExpirationDate', 'SerializedRules', 'IsCumulative', 'IsRemovingPostage', 'MaxUsage', 'IsAvailableOnSpecialOffers', 'CreatedAt', 'UpdatedAt', 'Version', ),
self::TYPE_STUDLYPHPNAME => array('id', 'code', 'type', 'title', 'shortDescription', 'description', 'amount', 'isUsed', 'isEnabled', 'expirationDate', 'serializedRules', 'isCumulative', 'isRemovingPostage', 'maxUsage', 'isAvailableOnSpecialOffers', 'createdAt', 'updatedAt', 'version', ),
self::TYPE_COLNAME => array(CouponTableMap::ID, CouponTableMap::CODE, CouponTableMap::TYPE, CouponTableMap::TITLE, CouponTableMap::SHORT_DESCRIPTION, CouponTableMap::DESCRIPTION, CouponTableMap::AMOUNT, CouponTableMap::IS_USED, CouponTableMap::IS_ENABLED, CouponTableMap::EXPIRATION_DATE, CouponTableMap::SERIALIZED_RULES, CouponTableMap::IS_CUMULATIVE, CouponTableMap::IS_REMOVING_POSTAGE, CouponTableMap::MAX_USAGE, CouponTableMap::IS_AVAILABLE_ON_SPECIAL_OFFERS, CouponTableMap::CREATED_AT, CouponTableMap::UPDATED_AT, CouponTableMap::VERSION, ),
self::TYPE_RAW_COLNAME => array('ID', 'CODE', 'TYPE', 'TITLE', 'SHORT_DESCRIPTION', 'DESCRIPTION', 'AMOUNT', 'IS_USED', 'IS_ENABLED', 'EXPIRATION_DATE', 'SERIALIZED_RULES', 'IS_CUMULATIVE', 'IS_REMOVING_POSTAGE', 'MAX_USAGE', 'IS_AVAILABLE_ON_SPECIAL_OFFERS', 'CREATED_AT', 'UPDATED_AT', 'VERSION', ),
self::TYPE_FIELDNAME => array('id', 'code', 'type', 'title', 'short_description', 'description', 'amount', 'is_used', 'is_enabled', 'expiration_date', 'serialized_rules', 'is_cumulative', 'is_removing_postage', 'max_usage', 'is_available_on_special_offers', 'created_at', 'updated_at', 'version', ),
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, )
);
/**
@@ -190,12 +195,12 @@ class CouponTableMap extends TableMap
* e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0
*/
protected static $fieldKeys = array (
self::TYPE_PHPNAME => array('Id' => 0, 'Code' => 1, 'Type' => 2, 'Title' => 3, 'ShortDescription' => 4, 'Description' => 5, 'Amount' => 6, 'IsUsed' => 7, 'IsEnabled' => 8, 'ExpirationDate' => 9, 'SerializedRulesType' => 10, 'SerializedRulesContent' => 11, 'IsCumulative' => 12, 'IsRemovingPostage' => 13, 'CreatedAt' => 14, 'UpdatedAt' => 15, 'Version' => 16, ),
self::TYPE_STUDLYPHPNAME => array('id' => 0, 'code' => 1, 'type' => 2, 'title' => 3, 'shortDescription' => 4, 'description' => 5, 'amount' => 6, 'isUsed' => 7, 'isEnabled' => 8, 'expirationDate' => 9, 'serializedRulesType' => 10, 'serializedRulesContent' => 11, 'isCumulative' => 12, 'isRemovingPostage' => 13, 'createdAt' => 14, 'updatedAt' => 15, 'version' => 16, ),
self::TYPE_COLNAME => array(CouponTableMap::ID => 0, CouponTableMap::CODE => 1, CouponTableMap::TYPE => 2, CouponTableMap::TITLE => 3, CouponTableMap::SHORT_DESCRIPTION => 4, CouponTableMap::DESCRIPTION => 5, CouponTableMap::AMOUNT => 6, CouponTableMap::IS_USED => 7, CouponTableMap::IS_ENABLED => 8, CouponTableMap::EXPIRATION_DATE => 9, CouponTableMap::SERIALIZED_RULES_TYPE => 10, CouponTableMap::SERIALIZED_RULES_CONTENT => 11, CouponTableMap::IS_CUMULATIVE => 12, CouponTableMap::IS_REMOVING_POSTAGE => 13, CouponTableMap::CREATED_AT => 14, CouponTableMap::UPDATED_AT => 15, CouponTableMap::VERSION => 16, ),
self::TYPE_RAW_COLNAME => array('ID' => 0, 'CODE' => 1, 'TYPE' => 2, 'TITLE' => 3, 'SHORT_DESCRIPTION' => 4, 'DESCRIPTION' => 5, 'AMOUNT' => 6, 'IS_USED' => 7, 'IS_ENABLED' => 8, 'EXPIRATION_DATE' => 9, 'SERIALIZED_RULES_TYPE' => 10, 'SERIALIZED_RULES_CONTENT' => 11, 'IS_CUMULATIVE' => 12, 'IS_REMOVING_POSTAGE' => 13, 'CREATED_AT' => 14, 'UPDATED_AT' => 15, 'VERSION' => 16, ),
self::TYPE_FIELDNAME => array('id' => 0, 'code' => 1, 'type' => 2, 'title' => 3, 'short_description' => 4, 'description' => 5, 'amount' => 6, 'is_used' => 7, 'is_enabled' => 8, 'expiration_date' => 9, 'serialized_rules_type' => 10, 'serialized_rules_content' => 11, 'is_cumulative' => 12, 'is_removing_postage' => 13, 'created_at' => 14, 'updated_at' => 15, 'version' => 16, ),
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, )
self::TYPE_PHPNAME => array('Id' => 0, 'Code' => 1, 'Type' => 2, 'Title' => 3, 'ShortDescription' => 4, 'Description' => 5, 'Amount' => 6, 'IsUsed' => 7, 'IsEnabled' => 8, 'ExpirationDate' => 9, 'SerializedRules' => 10, 'IsCumulative' => 11, 'IsRemovingPostage' => 12, 'MaxUsage' => 13, 'IsAvailableOnSpecialOffers' => 14, 'CreatedAt' => 15, 'UpdatedAt' => 16, 'Version' => 17, ),
self::TYPE_STUDLYPHPNAME => array('id' => 0, 'code' => 1, 'type' => 2, 'title' => 3, 'shortDescription' => 4, 'description' => 5, 'amount' => 6, 'isUsed' => 7, 'isEnabled' => 8, 'expirationDate' => 9, 'serializedRules' => 10, 'isCumulative' => 11, 'isRemovingPostage' => 12, 'maxUsage' => 13, 'isAvailableOnSpecialOffers' => 14, 'createdAt' => 15, 'updatedAt' => 16, 'version' => 17, ),
self::TYPE_COLNAME => array(CouponTableMap::ID => 0, CouponTableMap::CODE => 1, CouponTableMap::TYPE => 2, CouponTableMap::TITLE => 3, CouponTableMap::SHORT_DESCRIPTION => 4, CouponTableMap::DESCRIPTION => 5, CouponTableMap::AMOUNT => 6, CouponTableMap::IS_USED => 7, CouponTableMap::IS_ENABLED => 8, CouponTableMap::EXPIRATION_DATE => 9, CouponTableMap::SERIALIZED_RULES => 10, CouponTableMap::IS_CUMULATIVE => 11, CouponTableMap::IS_REMOVING_POSTAGE => 12, CouponTableMap::MAX_USAGE => 13, CouponTableMap::IS_AVAILABLE_ON_SPECIAL_OFFERS => 14, CouponTableMap::CREATED_AT => 15, CouponTableMap::UPDATED_AT => 16, CouponTableMap::VERSION => 17, ),
self::TYPE_RAW_COLNAME => array('ID' => 0, 'CODE' => 1, 'TYPE' => 2, 'TITLE' => 3, 'SHORT_DESCRIPTION' => 4, 'DESCRIPTION' => 5, 'AMOUNT' => 6, 'IS_USED' => 7, 'IS_ENABLED' => 8, 'EXPIRATION_DATE' => 9, 'SERIALIZED_RULES' => 10, 'IS_CUMULATIVE' => 11, 'IS_REMOVING_POSTAGE' => 12, 'MAX_USAGE' => 13, 'IS_AVAILABLE_ON_SPECIAL_OFFERS' => 14, 'CREATED_AT' => 15, 'UPDATED_AT' => 16, 'VERSION' => 17, ),
self::TYPE_FIELDNAME => array('id' => 0, 'code' => 1, 'type' => 2, 'title' => 3, 'short_description' => 4, 'description' => 5, 'amount' => 6, 'is_used' => 7, 'is_enabled' => 8, 'expiration_date' => 9, 'serialized_rules' => 10, 'is_cumulative' => 11, 'is_removing_postage' => 12, 'max_usage' => 13, 'is_available_on_special_offers' => 14, 'created_at' => 15, 'updated_at' => 16, 'version' => 17, ),
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, )
);
/**
@@ -224,10 +229,11 @@ class CouponTableMap extends TableMap
$this->addColumn('IS_USED', 'IsUsed', 'TINYINT', true, null, null);
$this->addColumn('IS_ENABLED', 'IsEnabled', 'TINYINT', true, null, null);
$this->addColumn('EXPIRATION_DATE', 'ExpirationDate', 'TIMESTAMP', true, null, null);
$this->addColumn('SERIALIZED_RULES_TYPE', 'SerializedRulesType', 'LONGVARCHAR', true, null, null);
$this->addColumn('SERIALIZED_RULES_CONTENT', 'SerializedRulesContent', 'LONGVARCHAR', true, null, null);
$this->addColumn('SERIALIZED_RULES', 'SerializedRules', 'LONGVARCHAR', true, null, null);
$this->addColumn('IS_CUMULATIVE', 'IsCumulative', 'TINYINT', true, null, null);
$this->addColumn('IS_REMOVING_POSTAGE', 'IsRemovingPostage', 'TINYINT', true, null, null);
$this->addColumn('MAX_USAGE', 'MaxUsage', 'INTEGER', true, null, null);
$this->addColumn('IS_AVAILABLE_ON_SPECIAL_OFFERS', 'IsAvailableOnSpecialOffers', 'BOOLEAN', true, 1, null);
$this->addColumn('CREATED_AT', 'CreatedAt', 'TIMESTAMP', false, null, null);
$this->addColumn('UPDATED_AT', 'UpdatedAt', 'TIMESTAMP', false, null, null);
$this->addColumn('VERSION', 'Version', 'INTEGER', false, null, 0);
@@ -416,10 +422,11 @@ class CouponTableMap extends TableMap
$criteria->addSelectColumn(CouponTableMap::IS_USED);
$criteria->addSelectColumn(CouponTableMap::IS_ENABLED);
$criteria->addSelectColumn(CouponTableMap::EXPIRATION_DATE);
$criteria->addSelectColumn(CouponTableMap::SERIALIZED_RULES_TYPE);
$criteria->addSelectColumn(CouponTableMap::SERIALIZED_RULES_CONTENT);
$criteria->addSelectColumn(CouponTableMap::SERIALIZED_RULES);
$criteria->addSelectColumn(CouponTableMap::IS_CUMULATIVE);
$criteria->addSelectColumn(CouponTableMap::IS_REMOVING_POSTAGE);
$criteria->addSelectColumn(CouponTableMap::MAX_USAGE);
$criteria->addSelectColumn(CouponTableMap::IS_AVAILABLE_ON_SPECIAL_OFFERS);
$criteria->addSelectColumn(CouponTableMap::CREATED_AT);
$criteria->addSelectColumn(CouponTableMap::UPDATED_AT);
$criteria->addSelectColumn(CouponTableMap::VERSION);
@@ -434,10 +441,11 @@ class CouponTableMap extends TableMap
$criteria->addSelectColumn($alias . '.IS_USED');
$criteria->addSelectColumn($alias . '.IS_ENABLED');
$criteria->addSelectColumn($alias . '.EXPIRATION_DATE');
$criteria->addSelectColumn($alias . '.SERIALIZED_RULES_TYPE');
$criteria->addSelectColumn($alias . '.SERIALIZED_RULES_CONTENT');
$criteria->addSelectColumn($alias . '.SERIALIZED_RULES');
$criteria->addSelectColumn($alias . '.IS_CUMULATIVE');
$criteria->addSelectColumn($alias . '.IS_REMOVING_POSTAGE');
$criteria->addSelectColumn($alias . '.MAX_USAGE');
$criteria->addSelectColumn($alias . '.IS_AVAILABLE_ON_SPECIAL_OFFERS');
$criteria->addSelectColumn($alias . '.CREATED_AT');
$criteria->addSelectColumn($alias . '.UPDATED_AT');
$criteria->addSelectColumn($alias . '.VERSION');

View File

@@ -57,7 +57,7 @@ class CouponVersionTableMap extends TableMap
/**
* The total number of columns
*/
const NUM_COLUMNS = 17;
const NUM_COLUMNS = 18;
/**
* The number of lazy-loaded columns
@@ -67,7 +67,7 @@ class CouponVersionTableMap extends TableMap
/**
* The number of columns to hydrate (NUM_COLUMNS - NUM_LAZY_LOAD_COLUMNS)
*/
const NUM_HYDRATE_COLUMNS = 17;
const NUM_HYDRATE_COLUMNS = 18;
/**
* the column name for the ID field
@@ -120,14 +120,9 @@ class CouponVersionTableMap extends TableMap
const EXPIRATION_DATE = 'coupon_version.EXPIRATION_DATE';
/**
* the column name for the SERIALIZED_RULES_TYPE field
* the column name for the SERIALIZED_RULES field
*/
const SERIALIZED_RULES_TYPE = 'coupon_version.SERIALIZED_RULES_TYPE';
/**
* the column name for the SERIALIZED_RULES_CONTENT field
*/
const SERIALIZED_RULES_CONTENT = 'coupon_version.SERIALIZED_RULES_CONTENT';
const SERIALIZED_RULES = 'coupon_version.SERIALIZED_RULES';
/**
* the column name for the IS_CUMULATIVE field
@@ -139,6 +134,16 @@ class CouponVersionTableMap extends TableMap
*/
const IS_REMOVING_POSTAGE = 'coupon_version.IS_REMOVING_POSTAGE';
/**
* the column name for the MAX_USAGE field
*/
const MAX_USAGE = 'coupon_version.MAX_USAGE';
/**
* the column name for the IS_AVAILABLE_ON_SPECIAL_OFFERS field
*/
const IS_AVAILABLE_ON_SPECIAL_OFFERS = 'coupon_version.IS_AVAILABLE_ON_SPECIAL_OFFERS';
/**
* the column name for the CREATED_AT field
*/
@@ -166,12 +171,12 @@ class CouponVersionTableMap extends TableMap
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
*/
protected static $fieldNames = array (
self::TYPE_PHPNAME => array('Id', 'Code', 'Type', 'Title', 'ShortDescription', 'Description', 'Amount', 'IsUsed', 'IsEnabled', 'ExpirationDate', 'SerializedRulesType', 'SerializedRulesContent', 'IsCumulative', 'IsRemovingPostage', 'CreatedAt', 'UpdatedAt', 'Version', ),
self::TYPE_STUDLYPHPNAME => array('id', 'code', 'type', 'title', 'shortDescription', 'description', 'amount', 'isUsed', 'isEnabled', 'expirationDate', 'serializedRulesType', 'serializedRulesContent', 'isCumulative', 'isRemovingPostage', 'createdAt', 'updatedAt', 'version', ),
self::TYPE_COLNAME => array(CouponVersionTableMap::ID, CouponVersionTableMap::CODE, CouponVersionTableMap::TYPE, CouponVersionTableMap::TITLE, CouponVersionTableMap::SHORT_DESCRIPTION, CouponVersionTableMap::DESCRIPTION, CouponVersionTableMap::AMOUNT, CouponVersionTableMap::IS_USED, CouponVersionTableMap::IS_ENABLED, CouponVersionTableMap::EXPIRATION_DATE, CouponVersionTableMap::SERIALIZED_RULES_TYPE, CouponVersionTableMap::SERIALIZED_RULES_CONTENT, CouponVersionTableMap::IS_CUMULATIVE, CouponVersionTableMap::IS_REMOVING_POSTAGE, CouponVersionTableMap::CREATED_AT, CouponVersionTableMap::UPDATED_AT, CouponVersionTableMap::VERSION, ),
self::TYPE_RAW_COLNAME => array('ID', 'CODE', 'TYPE', 'TITLE', 'SHORT_DESCRIPTION', 'DESCRIPTION', 'AMOUNT', 'IS_USED', 'IS_ENABLED', 'EXPIRATION_DATE', 'SERIALIZED_RULES_TYPE', 'SERIALIZED_RULES_CONTENT', 'IS_CUMULATIVE', 'IS_REMOVING_POSTAGE', 'CREATED_AT', 'UPDATED_AT', 'VERSION', ),
self::TYPE_FIELDNAME => array('id', 'code', 'type', 'title', 'short_description', 'description', 'amount', 'is_used', 'is_enabled', 'expiration_date', 'serialized_rules_type', 'serialized_rules_content', 'is_cumulative', 'is_removing_postage', 'created_at', 'updated_at', 'version', ),
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, )
self::TYPE_PHPNAME => array('Id', 'Code', 'Type', 'Title', 'ShortDescription', 'Description', 'Amount', 'IsUsed', 'IsEnabled', 'ExpirationDate', 'SerializedRules', 'IsCumulative', 'IsRemovingPostage', 'MaxUsage', 'IsAvailableOnSpecialOffers', 'CreatedAt', 'UpdatedAt', 'Version', ),
self::TYPE_STUDLYPHPNAME => array('id', 'code', 'type', 'title', 'shortDescription', 'description', 'amount', 'isUsed', 'isEnabled', 'expirationDate', 'serializedRules', 'isCumulative', 'isRemovingPostage', 'maxUsage', 'isAvailableOnSpecialOffers', 'createdAt', 'updatedAt', 'version', ),
self::TYPE_COLNAME => array(CouponVersionTableMap::ID, CouponVersionTableMap::CODE, CouponVersionTableMap::TYPE, CouponVersionTableMap::TITLE, CouponVersionTableMap::SHORT_DESCRIPTION, CouponVersionTableMap::DESCRIPTION, CouponVersionTableMap::AMOUNT, CouponVersionTableMap::IS_USED, CouponVersionTableMap::IS_ENABLED, CouponVersionTableMap::EXPIRATION_DATE, CouponVersionTableMap::SERIALIZED_RULES, CouponVersionTableMap::IS_CUMULATIVE, CouponVersionTableMap::IS_REMOVING_POSTAGE, CouponVersionTableMap::MAX_USAGE, CouponVersionTableMap::IS_AVAILABLE_ON_SPECIAL_OFFERS, CouponVersionTableMap::CREATED_AT, CouponVersionTableMap::UPDATED_AT, CouponVersionTableMap::VERSION, ),
self::TYPE_RAW_COLNAME => array('ID', 'CODE', 'TYPE', 'TITLE', 'SHORT_DESCRIPTION', 'DESCRIPTION', 'AMOUNT', 'IS_USED', 'IS_ENABLED', 'EXPIRATION_DATE', 'SERIALIZED_RULES', 'IS_CUMULATIVE', 'IS_REMOVING_POSTAGE', 'MAX_USAGE', 'IS_AVAILABLE_ON_SPECIAL_OFFERS', 'CREATED_AT', 'UPDATED_AT', 'VERSION', ),
self::TYPE_FIELDNAME => array('id', 'code', 'type', 'title', 'short_description', 'description', 'amount', 'is_used', 'is_enabled', 'expiration_date', 'serialized_rules', 'is_cumulative', 'is_removing_postage', 'max_usage', 'is_available_on_special_offers', 'created_at', 'updated_at', 'version', ),
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, )
);
/**
@@ -181,12 +186,12 @@ class CouponVersionTableMap extends TableMap
* e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0
*/
protected static $fieldKeys = array (
self::TYPE_PHPNAME => array('Id' => 0, 'Code' => 1, 'Type' => 2, 'Title' => 3, 'ShortDescription' => 4, 'Description' => 5, 'Amount' => 6, 'IsUsed' => 7, 'IsEnabled' => 8, 'ExpirationDate' => 9, 'SerializedRulesType' => 10, 'SerializedRulesContent' => 11, 'IsCumulative' => 12, 'IsRemovingPostage' => 13, 'CreatedAt' => 14, 'UpdatedAt' => 15, 'Version' => 16, ),
self::TYPE_STUDLYPHPNAME => array('id' => 0, 'code' => 1, 'type' => 2, 'title' => 3, 'shortDescription' => 4, 'description' => 5, 'amount' => 6, 'isUsed' => 7, 'isEnabled' => 8, 'expirationDate' => 9, 'serializedRulesType' => 10, 'serializedRulesContent' => 11, 'isCumulative' => 12, 'isRemovingPostage' => 13, 'createdAt' => 14, 'updatedAt' => 15, 'version' => 16, ),
self::TYPE_COLNAME => array(CouponVersionTableMap::ID => 0, CouponVersionTableMap::CODE => 1, CouponVersionTableMap::TYPE => 2, CouponVersionTableMap::TITLE => 3, CouponVersionTableMap::SHORT_DESCRIPTION => 4, CouponVersionTableMap::DESCRIPTION => 5, CouponVersionTableMap::AMOUNT => 6, CouponVersionTableMap::IS_USED => 7, CouponVersionTableMap::IS_ENABLED => 8, CouponVersionTableMap::EXPIRATION_DATE => 9, CouponVersionTableMap::SERIALIZED_RULES_TYPE => 10, CouponVersionTableMap::SERIALIZED_RULES_CONTENT => 11, CouponVersionTableMap::IS_CUMULATIVE => 12, CouponVersionTableMap::IS_REMOVING_POSTAGE => 13, CouponVersionTableMap::CREATED_AT => 14, CouponVersionTableMap::UPDATED_AT => 15, CouponVersionTableMap::VERSION => 16, ),
self::TYPE_RAW_COLNAME => array('ID' => 0, 'CODE' => 1, 'TYPE' => 2, 'TITLE' => 3, 'SHORT_DESCRIPTION' => 4, 'DESCRIPTION' => 5, 'AMOUNT' => 6, 'IS_USED' => 7, 'IS_ENABLED' => 8, 'EXPIRATION_DATE' => 9, 'SERIALIZED_RULES_TYPE' => 10, 'SERIALIZED_RULES_CONTENT' => 11, 'IS_CUMULATIVE' => 12, 'IS_REMOVING_POSTAGE' => 13, 'CREATED_AT' => 14, 'UPDATED_AT' => 15, 'VERSION' => 16, ),
self::TYPE_FIELDNAME => array('id' => 0, 'code' => 1, 'type' => 2, 'title' => 3, 'short_description' => 4, 'description' => 5, 'amount' => 6, 'is_used' => 7, 'is_enabled' => 8, 'expiration_date' => 9, 'serialized_rules_type' => 10, 'serialized_rules_content' => 11, 'is_cumulative' => 12, 'is_removing_postage' => 13, 'created_at' => 14, 'updated_at' => 15, 'version' => 16, ),
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, )
self::TYPE_PHPNAME => array('Id' => 0, 'Code' => 1, 'Type' => 2, 'Title' => 3, 'ShortDescription' => 4, 'Description' => 5, 'Amount' => 6, 'IsUsed' => 7, 'IsEnabled' => 8, 'ExpirationDate' => 9, 'SerializedRules' => 10, 'IsCumulative' => 11, 'IsRemovingPostage' => 12, 'MaxUsage' => 13, 'IsAvailableOnSpecialOffers' => 14, 'CreatedAt' => 15, 'UpdatedAt' => 16, 'Version' => 17, ),
self::TYPE_STUDLYPHPNAME => array('id' => 0, 'code' => 1, 'type' => 2, 'title' => 3, 'shortDescription' => 4, 'description' => 5, 'amount' => 6, 'isUsed' => 7, 'isEnabled' => 8, 'expirationDate' => 9, 'serializedRules' => 10, 'isCumulative' => 11, 'isRemovingPostage' => 12, 'maxUsage' => 13, 'isAvailableOnSpecialOffers' => 14, 'createdAt' => 15, 'updatedAt' => 16, 'version' => 17, ),
self::TYPE_COLNAME => array(CouponVersionTableMap::ID => 0, CouponVersionTableMap::CODE => 1, CouponVersionTableMap::TYPE => 2, CouponVersionTableMap::TITLE => 3, CouponVersionTableMap::SHORT_DESCRIPTION => 4, CouponVersionTableMap::DESCRIPTION => 5, CouponVersionTableMap::AMOUNT => 6, CouponVersionTableMap::IS_USED => 7, CouponVersionTableMap::IS_ENABLED => 8, CouponVersionTableMap::EXPIRATION_DATE => 9, CouponVersionTableMap::SERIALIZED_RULES => 10, CouponVersionTableMap::IS_CUMULATIVE => 11, CouponVersionTableMap::IS_REMOVING_POSTAGE => 12, CouponVersionTableMap::MAX_USAGE => 13, CouponVersionTableMap::IS_AVAILABLE_ON_SPECIAL_OFFERS => 14, CouponVersionTableMap::CREATED_AT => 15, CouponVersionTableMap::UPDATED_AT => 16, CouponVersionTableMap::VERSION => 17, ),
self::TYPE_RAW_COLNAME => array('ID' => 0, 'CODE' => 1, 'TYPE' => 2, 'TITLE' => 3, 'SHORT_DESCRIPTION' => 4, 'DESCRIPTION' => 5, 'AMOUNT' => 6, 'IS_USED' => 7, 'IS_ENABLED' => 8, 'EXPIRATION_DATE' => 9, 'SERIALIZED_RULES' => 10, 'IS_CUMULATIVE' => 11, 'IS_REMOVING_POSTAGE' => 12, 'MAX_USAGE' => 13, 'IS_AVAILABLE_ON_SPECIAL_OFFERS' => 14, 'CREATED_AT' => 15, 'UPDATED_AT' => 16, 'VERSION' => 17, ),
self::TYPE_FIELDNAME => array('id' => 0, 'code' => 1, 'type' => 2, 'title' => 3, 'short_description' => 4, 'description' => 5, 'amount' => 6, 'is_used' => 7, 'is_enabled' => 8, 'expiration_date' => 9, 'serialized_rules' => 10, 'is_cumulative' => 11, 'is_removing_postage' => 12, 'max_usage' => 13, 'is_available_on_special_offers' => 14, 'created_at' => 15, 'updated_at' => 16, 'version' => 17, ),
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, )
);
/**
@@ -215,10 +220,11 @@ class CouponVersionTableMap extends TableMap
$this->addColumn('IS_USED', 'IsUsed', 'TINYINT', true, null, null);
$this->addColumn('IS_ENABLED', 'IsEnabled', 'TINYINT', true, null, null);
$this->addColumn('EXPIRATION_DATE', 'ExpirationDate', 'TIMESTAMP', true, null, null);
$this->addColumn('SERIALIZED_RULES_TYPE', 'SerializedRulesType', 'LONGVARCHAR', true, null, null);
$this->addColumn('SERIALIZED_RULES_CONTENT', 'SerializedRulesContent', 'LONGVARCHAR', true, null, null);
$this->addColumn('SERIALIZED_RULES', 'SerializedRules', 'LONGVARCHAR', true, null, null);
$this->addColumn('IS_CUMULATIVE', 'IsCumulative', 'TINYINT', true, null, null);
$this->addColumn('IS_REMOVING_POSTAGE', 'IsRemovingPostage', 'TINYINT', true, null, null);
$this->addColumn('MAX_USAGE', 'MaxUsage', 'INTEGER', true, null, null);
$this->addColumn('IS_AVAILABLE_ON_SPECIAL_OFFERS', 'IsAvailableOnSpecialOffers', 'BOOLEAN', true, 1, null);
$this->addColumn('CREATED_AT', 'CreatedAt', 'TIMESTAMP', false, null, null);
$this->addColumn('UPDATED_AT', 'UpdatedAt', 'TIMESTAMP', false, null, null);
$this->addPrimaryKey('VERSION', 'Version', 'INTEGER', true, null, 0);
@@ -299,11 +305,11 @@ class CouponVersionTableMap extends TableMap
public static function getPrimaryKeyHashFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
{
// If the PK cannot be derived from the row, return NULL.
if ($row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)] === null && $row[TableMap::TYPE_NUM == $indexType ? 16 + $offset : static::translateFieldName('Version', TableMap::TYPE_PHPNAME, $indexType)] === null) {
if ($row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)] === null && $row[TableMap::TYPE_NUM == $indexType ? 17 + $offset : static::translateFieldName('Version', TableMap::TYPE_PHPNAME, $indexType)] === null) {
return null;
}
return serialize(array((string) $row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)], (string) $row[TableMap::TYPE_NUM == $indexType ? 16 + $offset : static::translateFieldName('Version', TableMap::TYPE_PHPNAME, $indexType)]));
return serialize(array((string) $row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)], (string) $row[TableMap::TYPE_NUM == $indexType ? 17 + $offset : static::translateFieldName('Version', TableMap::TYPE_PHPNAME, $indexType)]));
}
/**
@@ -429,10 +435,11 @@ class CouponVersionTableMap extends TableMap
$criteria->addSelectColumn(CouponVersionTableMap::IS_USED);
$criteria->addSelectColumn(CouponVersionTableMap::IS_ENABLED);
$criteria->addSelectColumn(CouponVersionTableMap::EXPIRATION_DATE);
$criteria->addSelectColumn(CouponVersionTableMap::SERIALIZED_RULES_TYPE);
$criteria->addSelectColumn(CouponVersionTableMap::SERIALIZED_RULES_CONTENT);
$criteria->addSelectColumn(CouponVersionTableMap::SERIALIZED_RULES);
$criteria->addSelectColumn(CouponVersionTableMap::IS_CUMULATIVE);
$criteria->addSelectColumn(CouponVersionTableMap::IS_REMOVING_POSTAGE);
$criteria->addSelectColumn(CouponVersionTableMap::MAX_USAGE);
$criteria->addSelectColumn(CouponVersionTableMap::IS_AVAILABLE_ON_SPECIAL_OFFERS);
$criteria->addSelectColumn(CouponVersionTableMap::CREATED_AT);
$criteria->addSelectColumn(CouponVersionTableMap::UPDATED_AT);
$criteria->addSelectColumn(CouponVersionTableMap::VERSION);
@@ -447,10 +454,11 @@ class CouponVersionTableMap extends TableMap
$criteria->addSelectColumn($alias . '.IS_USED');
$criteria->addSelectColumn($alias . '.IS_ENABLED');
$criteria->addSelectColumn($alias . '.EXPIRATION_DATE');
$criteria->addSelectColumn($alias . '.SERIALIZED_RULES_TYPE');
$criteria->addSelectColumn($alias . '.SERIALIZED_RULES_CONTENT');
$criteria->addSelectColumn($alias . '.SERIALIZED_RULES');
$criteria->addSelectColumn($alias . '.IS_CUMULATIVE');
$criteria->addSelectColumn($alias . '.IS_REMOVING_POSTAGE');
$criteria->addSelectColumn($alias . '.MAX_USAGE');
$criteria->addSelectColumn($alias . '.IS_AVAILABLE_ON_SPECIAL_OFFERS');
$criteria->addSelectColumn($alias . '.CREATED_AT');
$criteria->addSelectColumn($alias . '.UPDATED_AT');
$criteria->addSelectColumn($alias . '.VERSION');

View File

@@ -28,7 +28,7 @@ namespace Thelia\Coupon;
* Date: 8/19/13
* Time: 3:24 PM
*
* Thrown when a Rule receive an invalid Parameter
* Unit Test CouponBaseAdapter Class
*
* @package Coupon
* @author Guillaume MOREL <gmorel@openstudio.fr>

View File

@@ -23,12 +23,20 @@
namespace Thelia\Coupon;
use Thelia\Coupon\Parameter\PriceParam;
use Thelia\Coupon\Parameter\RuleValidator;
use Thelia\Coupon\Rule\AvailableForTotalAmount;
use Thelia\Coupon\Rule\CouponRuleInterface;
use Thelia\Coupon\Rule\Operators;
use Thelia\Exception\CouponExpiredException;
use Thelia\Model\Coupon;
/**
* Created by JetBrains PhpStorm.
* Date: 8/19/13
* Time: 3:24 PM
*
* Thrown when a Rule receive an invalid Parameter
* Unit Test CouponFactory Class
*
* @package Coupon
* @author Guillaume MOREL <gmorel@openstudio.fr>
@@ -36,10 +44,89 @@ namespace Thelia\Coupon;
*/
class CouponFactoryTest extends \PHPUnit_Framework_TestCase
{
CONST VALID_SHORT_DESCRIPTION = 'Coupon for Christmas removing 10€ if your total checkout is more than 40€';
CONST VALID_DESCRIPTION = '<h3>Lorem ipsum dolor sit amet</h3>Consectetur adipiscing elit. Cras at luctus tellus. Integer turpis mauris, aliquet vitae risus tristique, pellentesque vestibulum urna. Vestibulum sodales laoreet lectus dictum suscipit. Praesent vulputate, sem id varius condimentum, quam magna tempor elit, quis venenatis ligula nulla eget libero. Cras egestas euismod tellus, id pharetra leo suscipit quis. Donec lacinia ac lacus et ultricies. Nunc in porttitor neque. Proin at quam congue, consectetur orci sed, congue nulla. Nulla eleifend nunc ligula, nec pharetra elit tempus quis. Vivamus vel mauris sed est dictum blandit. Maecenas blandit dapibus velit ut sollicitudin. In in euismod mauris, consequat viverra magna. Cras velit velit, sollicitudin commodo tortor gravida, tempus varius nulla.
Donec rhoncus leo mauris, id porttitor ante luctus tempus.
<script type="text/javascript">
alert("I am an XSS attempt!");
</script>
Curabitur quis augue feugiat, ullamcorper mauris ac, interdum mi. Quisque aliquam lorem vitae felis lobortis, id interdum turpis mattis. Vestibulum diam massa, ornare congue blandit quis, facilisis at nisl. In tortor metus, venenatis non arcu nec, sollicitudin ornare nisl. Nunc erat risus, varius nec urna at, iaculis lacinia elit. Aenean ut felis tempus, tincidunt odio non, sagittis nisl. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec vitae hendrerit elit. Nunc sit amet gravida risus, euismod lobortis massa. Nam a erat mauris. Nam a malesuada lorem. Nulla id accumsan dolor, sed rhoncus tellus. Quisque dictum felis sed leo auctor, at volutpat lectus viverra. Morbi rutrum, est ac aliquam imperdiet, nibh sem sagittis justo, ac mattis magna lacus eu nulla.
Duis interdum lectus nulla, nec pellentesque sapien condimentum at. Suspendisse potenti. Sed eu purus tellus. Nunc quis rhoncus metus. Fusce vitae tellus enim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Etiam tempor porttitor erat vitae iaculis. Sed est elit, consequat non ornare vitae, vehicula eget lectus. Etiam consequat sapien mauris, eget consectetur magna imperdiet eget. Nunc sollicitudin luctus velit, in commodo nulla adipiscing fermentum. Fusce nisi sapien, posuere vitae metus sit amet, facilisis sollicitudin dui. Fusce ultricies auctor enim sit amet iaculis. Morbi at vestibulum enim, eget adipiscing eros.
Praesent ligula lorem, faucibus ut metus quis, fermentum iaculis erat. Pellentesque elit erat, lacinia sed semper ac, sagittis vel elit. Nam eu convallis est. Curabitur rhoncus odio vitae consectetur pellentesque. Nam vitae arcu nec ante scelerisque dignissim vel nec neque. Suspendisse augue nulla, mollis eget dui et, tempor facilisis erat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac diam ipsum. Donec convallis dui ultricies velit auctor, non lobortis nulla ultrices. Morbi vitae dignissim ante, sit amet lobortis tortor. Nunc dapibus condimentum augue, in molestie neque congue non.
Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesuada tortor vel erat volutpat tincidunt. In vehicula diam est, a convallis eros scelerisque ut. Donec aliquet venenatis iaculis. Ut a arcu gravida, placerat dui eu, iaculis nisl. Quisque adipiscing orci sit amet dui dignissim lacinia. Sed vulputate lorem non dolor adipiscing ornare. Morbi ornare id nisl id aliquam. Ut fringilla elit ante, nec lacinia enim fermentum sit amet. Aenean rutrum lorem eu convallis pharetra. Cras malesuada varius metus, vitae gravida velit. Nam a varius ipsum, ac commodo dolor. Phasellus nec elementum elit. Etiam vel adipiscing leo.';
/**
* @var CouponFactory
* Generate valid CouponInterface
*
* @param $code
* @param $type
* @param $title
* @param $shortDescription
* @param $description
* @param $amount
* @param $isUsed
* @param $isEnabled
* @param $expirationDate
* @param $rules
* @param $isCumulative
* @param $isRemovingPostage
*
* @return CouponInterface
*/
protected $object;
public function generateValidCoupon(
$code = 'XMAS1',
$type = '\Thelia\Coupon\Type\RemoveXAmount',
$title = 'Christmas coupon',
$shortDescription = self::VALID_SHORT_DESCRIPTION,
$description = self::VALID_DESCRIPTION,
$amount = 10.00,
$isUsed = 1,
$isEnabled = 1,
$expirationDate = null,
$rules = null,
$isCumulative = 1,
$isRemovingPostage = 0
) {
$coupon = new Coupon();
$coupon->setCode($code);
$coupon->setType($type);
$coupon->setTitle($title);
$coupon->setShortDescription($shortDescription);
$coupon->setDescription($description);
$coupon->setAmount($amount);
$coupon->setIsUsed($isUsed);
$coupon->setIsEnabled($isEnabled);
if ($expirationDate === null) {
$date = new \DateTime();
$coupon->setExpirationDate(
$date->setTimestamp(strtotime("today + 2 months"))
);
}
if ($rules === null) {
$rules = $this->generateValidRules();
}
$couponFactory = new CouponFactory(new CouponBaseAdapter());
$serializedData = $couponFactory->convertRulesInstancesIntoSerialized(
$rules
);
$coupon->setSerializedRulesType($serializedData['rulesType']);
$coupon->setSerializedRulesContent($serializedData['rulesContent']);
$coupon->setIsCumulative($isCumulative);
$coupon->setIsRemovingPostage($isRemovingPostage);
return $coupon;
}
/**
* Sets up the fixture, for example, opens a network connection.
@@ -47,7 +134,145 @@ class CouponFactoryTest extends \PHPUnit_Framework_TestCase
*/
protected function setUp()
{
$this->object = new CouponFactory;
}
/**
* Fake CouponQuery->findByCode
*
* @param string $code
* @param string $type
* @param string $title
* @param string $shortDescription
* @param string $description
* @param float $amount
* @param int $isUsed
* @param int $isEnabled
* @param null $expirationDate
* @param null $rules
* @param int $isCumulative
* @param int $isRemovingPostage
* @return Coupon
*/
public function generateCouponModelMock(
$code,
$type,
$title,
$shortDescription,
$description,
$amount,
$isUsed,
$isEnabled,
$expirationDate,
$rules,
$isCumulative,
$isRemovingPostage
) {
$coupon = $this->generateValidCoupon(
$code,
$type,
$title,
$shortDescription,
$description,
$amount,
$isUsed,
$isEnabled,
$expirationDate,
$rules,
$isCumulative,
$isRemovingPostage
);
/** @var CouponAdapterInterface $stubCouponBaseAdapter */
$stubCouponBaseAdapter = $this->getMock(
'Thelia\Coupon\CouponBaseAdapter',
array('findOneCouponByCode'),
array()
);
$stubCouponBaseAdapter->expects($this->any())
->method('findOneCouponByCode')
->will($this->returnValue($coupon));
return $stubCouponBaseAdapter;
}
/**
* @covers Thelia\Coupon\CouponFactory::buildCouponFromCode
* @expectedException Thelia\Exception\CouponExpiredException
*/
public function testBuildCouponFromCodeExpiredDateBefore()
{
$date = new \DateTime();
$date->setTimestamp(strtotime("today - 2 months"));
/** @var CouponAdapterInterface $mockAdapter */
$mockAdapter = $this->generateCouponModelMock(null, null, null, null, null, null, null, null, $date);
$couponFactory = new CouponFactory($mockAdapter);
$coupon = $couponFactory->buildCouponFromCode('XMAS1');
}
/**
* @covers Thelia\Coupon\CouponFactory::buildCouponFromCode
* @expectedException Thelia\Exception\CouponExpiredException
*/
public function testBuildCouponFromCodeExpiredDateEquals()
{
$date = new \DateTime();
/** @var CouponAdapterInterface $mockAdapter */
$mockAdapter = $this->generateCouponModelMock(null, null, null, null, null, null, null, null, $date);
$couponFactory = new CouponFactory($mockAdapter);
$coupon = $couponFactory->buildCouponFromCode('XMAS1');
}
/**
* @covers Thelia\Coupon\CouponFactory::buildCouponFromCode
*/
public function testBuildCouponFromCode()
{
/** @var CouponAdapterInterface $mockAdapter */
$mockAdapter = $this->generateCouponModelMock();
$couponFactory = new CouponFactory($mockAdapter);
$coupon = $couponFactory->buildCouponFromCode('XMAS1');
$CouponManager = new CouponManager($mockAdapter)
}
/**
* Generate valid CouponRuleInterfaces
*
* @return array Array of CouponRuleInterface
*/
protected function generateValidRules()
{
$rule1 = new AvailableForTotalAmount(
array(
AvailableForTotalAmount::PARAM1_PRICE => new RuleValidator(
Operators::SUPERIOR,
new PriceParam(
40.00,
'EUR'
)
)
)
);
$rule2 = new AvailableForTotalAmount(
array(
AvailableForTotalAmount::PARAM1_PRICE => new RuleValidator(
Operators::INFERIOR,
new PriceParam(
400.00,
'EUR'
)
)
)
);
$rules = array($rule1, $rule2);
return $rules;
}
/**
@@ -57,16 +282,4 @@ class CouponFactoryTest extends \PHPUnit_Framework_TestCase
protected function tearDown()
{
}
/**
* @covers Thelia\Coupon\CouponFactory::buildCouponFromId
* @todo Implement testBuildCouponFromId().
*/
public function testBuildCouponFromId()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
}

View File

@@ -23,12 +23,20 @@
namespace Thelia\Coupon;
use Thelia\Coupon\Parameter\PriceParam;
use Thelia\Coupon\Parameter\RuleValidator;
use Thelia\Coupon\Rule\AvailableForTotalAmount;
use Thelia\Coupon\Rule\Operators;
use Thelia\Coupon\Type\RemoveXAmount;
use Thelia\Model\Coupon;
use Thelia\Tools\PhpUnitUtils;
/**
* Created by JetBrains PhpStorm.
* Date: 8/19/13
* Time: 3:24 PM
*
* Thrown when a Rule receive an invalid Parameter
* Unit Test CouponManager Class
*
* @package Coupon
* @author Guillaume MOREL <gmorel@openstudio.fr>
@@ -36,10 +44,21 @@ namespace Thelia\Coupon;
*/
class CouponManagerTest extends \PHPUnit_Framework_TestCase
{
/**
* @var CouponManager
*/
protected $object;
CONST VALID_SHORT_DESCRIPTION = 'Coupon for Christmas removing 10€ if your total checkout is more than 40€';
CONST VALID_DESCRIPTION = '<h3>Lorem ipsum dolor sit amet</h3>Consectetur adipiscing elit. Cras at luctus tellus. Integer turpis mauris, aliquet vitae risus tristique, pellentesque vestibulum urna. Vestibulum sodales laoreet lectus dictum suscipit. Praesent vulputate, sem id varius condimentum, quam magna tempor elit, quis venenatis ligula nulla eget libero. Cras egestas euismod tellus, id pharetra leo suscipit quis. Donec lacinia ac lacus et ultricies. Nunc in porttitor neque. Proin at quam congue, consectetur orci sed, congue nulla. Nulla eleifend nunc ligula, nec pharetra elit tempus quis. Vivamus vel mauris sed est dictum blandit. Maecenas blandit dapibus velit ut sollicitudin. In in euismod mauris, consequat viverra magna. Cras velit velit, sollicitudin commodo tortor gravida, tempus varius nulla.
Donec rhoncus leo mauris, id porttitor ante luctus tempus.
<script type="text/javascript">
alert("I am an XSS attempt!");
</script>
Curabitur quis augue feugiat, ullamcorper mauris ac, interdum mi. Quisque aliquam lorem vitae felis lobortis, id interdum turpis mattis. Vestibulum diam massa, ornare congue blandit quis, facilisis at nisl. In tortor metus, venenatis non arcu nec, sollicitudin ornare nisl. Nunc erat risus, varius nec urna at, iaculis lacinia elit. Aenean ut felis tempus, tincidunt odio non, sagittis nisl. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec vitae hendrerit elit. Nunc sit amet gravida risus, euismod lobortis massa. Nam a erat mauris. Nam a malesuada lorem. Nulla id accumsan dolor, sed rhoncus tellus. Quisque dictum felis sed leo auctor, at volutpat lectus viverra. Morbi rutrum, est ac aliquam imperdiet, nibh sem sagittis justo, ac mattis magna lacus eu nulla.
Duis interdum lectus nulla, nec pellentesque sapien condimentum at. Suspendisse potenti. Sed eu purus tellus. Nunc quis rhoncus metus. Fusce vitae tellus enim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Etiam tempor porttitor erat vitae iaculis. Sed est elit, consequat non ornare vitae, vehicula eget lectus. Etiam consequat sapien mauris, eget consectetur magna imperdiet eget. Nunc sollicitudin luctus velit, in commodo nulla adipiscing fermentum. Fusce nisi sapien, posuere vitae metus sit amet, facilisis sollicitudin dui. Fusce ultricies auctor enim sit amet iaculis. Morbi at vestibulum enim, eget adipiscing eros.
Praesent ligula lorem, faucibus ut metus quis, fermentum iaculis erat. Pellentesque elit erat, lacinia sed semper ac, sagittis vel elit. Nam eu convallis est. Curabitur rhoncus odio vitae consectetur pellentesque. Nam vitae arcu nec ante scelerisque dignissim vel nec neque. Suspendisse augue nulla, mollis eget dui et, tempor facilisis erat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac diam ipsum. Donec convallis dui ultricies velit auctor, non lobortis nulla ultrices. Morbi vitae dignissim ante, sit amet lobortis tortor. Nunc dapibus condimentum augue, in molestie neque congue non.
Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesuada tortor vel erat volutpat tincidunt. In vehicula diam est, a convallis eros scelerisque ut. Donec aliquet venenatis iaculis. Ut a arcu gravida, placerat dui eu, iaculis nisl. Quisque adipiscing orci sit amet dui dignissim lacinia. Sed vulputate lorem non dolor adipiscing ornare. Morbi ornare id nisl id aliquam. Ut fringilla elit ante, nec lacinia enim fermentum sit amet. Aenean rutrum lorem eu convallis pharetra. Cras malesuada varius metus, vitae gravida velit. Nam a varius ipsum, ac commodo dolor. Phasellus nec elementum elit. Etiam vel adipiscing leo.';
/**
* Sets up the fixture, for example, opens a network connection.
@@ -47,7 +66,211 @@ class CouponManagerTest extends \PHPUnit_Framework_TestCase
*/
protected function setUp()
{
$this->object = new CouponManager;
}
/**
* Generate valid CouponInterface
*
* @param string $code
* @param string $title
* @param string $shortDescription
* @param string $description
* @param float $amount
* @param bool $isEnabled
* @param $expirationDate
* @param $rules
* @param bool $isCumulative
* @param bool $isRemovingPostage
* @param bool $isAvailableOnSpecialOffers
* @param int $maxUsage
*
* @return CouponInterface
*/
public function generateValidCoupon(
$code = 'XMAS1',
$title = 'Christmas coupon',
$shortDescription = self::VALID_SHORT_DESCRIPTION,
$description = self::VALID_DESCRIPTION,
$amount = 10.00,
$isEnabled = true,
$expirationDate = null,
$rules = null,
$isCumulative = true,
$isRemovingPostage = false,
$isAvailableOnSpecialOffers = true,
$maxUsage = 40
) {
if ($expirationDate === null) {
$expirationDate = new \DateTime();
$expirationDate->setTimestamp(strtotime("today + 2 months"));
}
$coupon = new RemoveXAmount($code, $title, $shortDescription, $description, $amount, $isCumulative, $isRemovingPostage, $isAvailableOnSpecialOffers, $isEnabled, $maxUsage, $expirationDate);
if ($rules === null) {
$rules = $this->generateValidRules();
}
$coupon->setRules($rules);
return $coupon;
}
// /**
// * @covers Thelia\Coupon\CouponManager::getDiscount
// * @todo Implement testGetDiscount().
// */
// public function testGetDiscountOneCoupon()
// {
// $this->markTestIncomplete(
// 'This test has not been implemented yet.'
// );
// /** @var CouponInterface $coupon */
// $coupon = $this->generateValidCoupon();
//
//
// /** @var CouponAdapterInterface $stubCouponBaseAdapter */
// $stubCouponBaseAdapter = $this->getMock(
// 'Thelia\Coupon\CouponBaseAdapter',
// array(
// 'getCurrentCoupons',
// 'getCheckoutTotalPriceWithoutDiscountAndPostagePrice'
// ),
// array()
// );
//
// // Returns -10euros not removing postage Coupon
// // If 40 < total amount 400
// $stubCouponBaseAdapter->expects($this->any())
// ->method('getCurrentCoupons')
// ->will($this->returnValue(array($coupon)));
//
// // Return Checkout product amoun = 100euros
// $stubCouponBaseAdapter->expects($this->any())
// ->method('getCheckoutTotalPriceWithoutDiscountAndPostagePrice')
// ->will($this->returnValue(100.00));
//
// $couponManager = new CouponManager($stubCouponBaseAdapter);
// $discount = $couponManager->getDiscount();
//
// $expected = 10.00;
// $actual = $discount;
// $this->assertEquals($expected, $actual);
// }
//
// /**
// * @covers Thelia\Coupon\CouponManager::getDiscount
// * @todo Implement testGetDiscount().
// */
// public function testGetDiscountAlwaysInferiorToPrice()
// {
// // Remove the following lines when you implement this test.
// $this->markTestIncomplete(
// 'This test has not been implemented yet.'
// );
// }
//
// /**
// * @covers Thelia\Coupon\CouponManager::getDiscount
// * @covers Thelia\Coupon\CouponManager::sortCoupons
// * @todo Implement testGetDiscount().
// */
// public function testGetDiscountCouponNotCumulativeCancelOthers()
// {
// // Remove the following lines when you implement this test.
// $this->markTestIncomplete(
// 'This test has not been implemented yet.'
// );
// }
//
// /**
// * @covers Thelia\Coupon\CouponManager::getDiscount
// * @covers Thelia\Coupon\CouponManager::sortCoupons
// * @todo Implement testGetDiscount().
// */
// public function testGetDiscountCouponCumulativeCumulatesWithOthers()
// {
// // Remove the following lines when you implement this test.
// $this->markTestIncomplete(
// 'This test has not been implemented yet.'
// );
// }
//
// /**
// * @covers Thelia\Coupon\CouponManager::isCouponRemovingPostage
// * @covers Thelia\Coupon\CouponManager::sortCoupons
// * @todo Implement testGetDiscount().
// */
// public function testIsCouponRemovingPostage()
// {
// // Remove the following lines when you implement this test.
// $this->markTestIncomplete(
// 'This test has not been implemented yet.'
// );
// }
/**
* @covers Thelia\Coupon\CouponManager::sortCoupons
*/
public function testCouponCumulationOneCouponNotCumulative()
{
// Given
/** @var CouponInterface $coupon */
$couponCumulative1 = $this->generateValidCoupon(null, null, null, null, null, null, null, null, true);
$couponCumulative2 = $this->generateValidCoupon(null, null, null, null, null, null, null, null, true);
$couponNotCumulative1 = $this->generateValidCoupon(null, null, null, null, null, null, null, null, false);
$couponNotCumulative2 = $this->generateValidCoupon(null, null, null, null, null, null, null, null, false);
$coupons = array($couponCumulative1);
// When
$sortedCoupons = PhpUnitUtils::callMethod(
new CouponManager(new CouponBaseAdapter()),
'sortCoupons',
$coupons
);
// Then
$expected = $coupons;
$actual = $sortedCoupons;
$this->assertSame($expected, $actual, 'Array Sorted despite there is only once');
}
/**
* Generate valid CouponRuleInterfaces
*
* @return array Array of CouponRuleInterface
*/
protected function generateValidRules()
{
$rule1 = new AvailableForTotalAmount(
array(
AvailableForTotalAmount::PARAM1_PRICE => new RuleValidator(
Operators::SUPERIOR,
new PriceParam(
40.00,
'EUR'
)
)
)
);
$rule2 = new AvailableForTotalAmount(
array(
AvailableForTotalAmount::PARAM1_PRICE => new RuleValidator(
Operators::INFERIOR,
new PriceParam(
400.00,
'EUR'
)
)
)
);
$rules = new CouponRuleCollection(array($rule1, $rule2));
return $rules;
}
/**
@@ -58,66 +281,4 @@ class CouponManagerTest extends \PHPUnit_Framework_TestCase
{
}
/**
* @covers Thelia\Coupon\CouponManager::getDiscount
* @todo Implement testGetDiscount().
*/
public function testGetDiscount()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* @covers Thelia\Coupon\CouponManager::getDiscount
* @todo Implement testGetDiscount().
*/
public function testGetDiscountAlwaysInferiorToPrice()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* @covers Thelia\Coupon\CouponManager::getDiscount
* @covers Thelia\Coupon\CouponManager::sortCoupons
* @todo Implement testGetDiscount().
*/
public function testGetDiscountCouponNotCumulativeCancelOthers()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* @covers Thelia\Coupon\CouponManager::getDiscount
* @covers Thelia\Coupon\CouponManager::sortCoupons
* @todo Implement testGetDiscount().
*/
public function testGetDiscountCouponCumulativeCumulatesWithOthers()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* @covers Thelia\Coupon\CouponManager::isCouponRemovingPostage
* @covers Thelia\Coupon\CouponManager::sortCoupons
* @todo Implement testGetDiscount().
*/
public function testIsCouponRemovingPostage()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
}

View File

@@ -0,0 +1,81 @@
<?php
/**********************************************************************************/
/* */
/* Thelia */
/* */
/* Copyright (c) OpenStudio */
/* email : info@thelia.net */
/* web : http://www.thelia.net */
/* */
/* This program is free software; you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 3 of the License */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* */
/**********************************************************************************/
namespace Thelia\Coupon;
use Thelia\Coupon\Parameter\PriceParam;
use Thelia\Coupon\Parameter\RuleValidator;
use Thelia\Coupon\Rule\AvailableForTotalAmount;
use Thelia\Coupon\Rule\Operators;
/**
* Created by JetBrains PhpStorm.
* Date: 8/19/13
* Time: 3:24 PM
*
* Unit Test CouponRuleCollection Class
*
* @package Coupon
* @author Guillaume MOREL <gmorel@openstudio.fr>
*
*/
class CouponRuleCollectionTest extends \PHPUnit_Framework_TestCase
{
/**
*
*/
public function testRuleSerialisation()
{
$rule1 = new AvailableForTotalAmount(
array(
AvailableForTotalAmount::PARAM1_PRICE => new RuleValidator(
Operators::SUPERIOR,
new PriceParam(
40.00,
'EUR'
)
)
)
);
$rule2 = new AvailableForTotalAmount(
array(
AvailableForTotalAmount::PARAM1_PRICE => new RuleValidator(
Operators::INFERIOR,
new PriceParam(
400.00,
'EUR'
)
)
)
);
$rules = new CouponRuleCollection(array($rule1, $rule2));
$serializedRules = base64_encode(serialize($rules));
$unserializedRules = unserialize(base64_decode($serializedRules));
$expected = $rules;
$actual = $unserializedRules;
$this->assertEquals($expected, $actual);
}
}

View File

@@ -31,7 +31,7 @@ use Thelia\Coupon\Parameter\DateParam;
* Date: 8/19/13
* Time: 3:24 PM
*
* Thrown when a Rule receive an invalid Parameter
* Unit Test DateParam Class
*
* @package Coupon
* @author Guillaume MOREL <gmorel@openstudio.fr>

View File

@@ -31,7 +31,7 @@ use Thelia\Coupon\Parameter\IntegerParam;
* Date: 8/19/13
* Time: 3:24 PM
*
* Thrown when a Rule receive an invalid Parameter
* Unit Test IntegerParam Class
*
* @package Coupon
* @author Guillaume MOREL <gmorel@openstudio.fr>

View File

@@ -31,7 +31,7 @@ use Thelia\Coupon\Parameter\IntervalParam;
* Date: 8/19/13
* Time: 3:24 PM
*
* Thrown when a Rule receive an invalid Parameter
* Unit Test IntervalParam Class
*
* @package Coupon
* @author Guillaume MOREL <gmorel@openstudio.fr>

View File

@@ -31,7 +31,7 @@ use Thelia\Coupon\Parameter\PriceParam;
* Date: 8/19/13
* Time: 3:24 PM
*
* Thrown when a Rule receive an invalid Parameter
* Unit Test PriceParam Class
*
* @package Coupon
* @author Guillaume MOREL <gmorel@openstudio.fr>

View File

@@ -31,7 +31,7 @@ use Thelia\Coupon\Parameter\QuantityParam;
* Date: 8/19/13
* Time: 3:24 PM
*
* Thrown when a Rule receive an invalid Parameter
* Unit Test QuantityParam Class
*
* @package Coupon
* @author Guillaume MOREL <gmorel@openstudio.fr>

View File

@@ -32,7 +32,7 @@ use Thelia\Coupon\Parameter\RepeatedDateParam;
* Date: 8/19/13
* Time: 3:24 PM
*
* Thrown when a Rule receive an invalid Parameter
* Unit Test RepeatedDateParam Class
*
* @package Coupon
* @author Guillaume MOREL <gmorel@openstudio.fr>

View File

@@ -31,7 +31,7 @@ use Thelia\Coupon\Parameter\RepeatedIntervalParam;
* Date: 8/19/13
* Time: 3:24 PM
*
* Thrown when a Rule receive an invalid Parameter
* Unit Test RepeatedIntervalParam Class
*
* @package Coupon
* @author Guillaume MOREL <gmorel@openstudio.fr>

View File

@@ -35,7 +35,7 @@ use Thelia\Exception\InvalidRuleValueException;
* Date: 8/19/13
* Time: 3:24 PM
*
* Thrown when a Rule receive an invalid Parameter
* Unit Test AvailableForTotalAmount Class
*
* @package Coupon
* @author Guillaume MOREL <gmorel@openstudio.fr>

View File

@@ -30,7 +30,7 @@ use Thelia\Coupon\Rule\AvailableForXArticles;
* Date: 8/19/13
* Time: 3:24 PM
*
* Thrown when a Rule receive an invalid Parameter
* Unit Test AvailableForXArticles Class
*
* @package Coupon
* @author Guillaume MOREL <gmorel@openstudio.fr>

View File

@@ -31,13 +31,13 @@ use Thelia\Coupon\Rule\Operators;
* Date: 8/19/13
* Time: 3:24 PM
*
* Thrown when a Rule receive an invalid Parameter
* Unit Test Operators Class
*
* @package Coupon
* @author Guillaume MOREL <gmorel@openstudio.fr>
*
*/
class OperatorTest extends \PHPUnit_Framework_TestCase
class OperatorsTest extends \PHPUnit_Framework_TestCase
{
/**

View File

@@ -28,7 +28,7 @@ namespace Thelia\Coupon;
* Date: 8/19/13
* Time: 3:24 PM
*
* Thrown when a Rule receive an invalid Parameter
* Unit Test RuleOrganizer Class
*
* @package Coupon
* @author Guillaume MOREL <gmorel@openstudio.fr>

View File

@@ -28,7 +28,7 @@ namespace Thelia\Coupon;
* Date: 8/19/13
* Time: 3:24 PM
*
* Thrown when a Rule receive an invalid Parameter
* Unit Test RemoveXAmountForCategoryY Class
*
* @package Coupon
* @author Guillaume MOREL <gmorel@openstudio.fr>

View File

@@ -33,7 +33,7 @@ use Thelia\Coupon\Type\RemoveXAmount;
* Date: 8/19/13
* Time: 3:24 PM
*
* Thrown when a Rule receive an invalid Parameter
* Unit Test RemoveXAmount Class
*
* @package Coupon
* @author Guillaume MOREL <gmorel@openstudio.fr>

View File

@@ -28,7 +28,7 @@ namespace Thelia\Coupon;
* Date: 8/19/13
* Time: 3:24 PM
*
* Thrown when a Rule receive an invalid Parameter
* Unit Test RemoveXPercenForCategoryY Class
*
* @package Coupon
* @author Guillaume MOREL <gmorel@openstudio.fr>

View File

@@ -31,7 +31,7 @@ use Thelia\Coupon\Type\RemoveXPercent;
* Date: 8/19/13
* Time: 3:24 PM
*
* Thrown when a Rule receive an invalid Parameter
* Unit Test RemoveXPercent Class
*
* @package Coupon
* @author Guillaume MOREL <gmorel@openstudio.fr>

View File

@@ -0,0 +1,55 @@
<?php
/**********************************************************************************/
/* */
/* Thelia */
/* */
/* Copyright (c) OpenStudio */
/* email : info@thelia.net */
/* web : http://www.thelia.net */
/* */
/* This program is free software; you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 3 of the License */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* */
/**********************************************************************************/
namespace Thelia\Tools;
/**
* Created by JetBrains PhpStorm.
* Date: 8/19/13
* Time: 3:24 PM
*
* Helper for Unit Testing
*
* @package Coupon
* @author Guillaume MOREL <gmorel@openstudio.fr>
*
*/
class PhpUnitUtils
{
/**
* Allow to call a protected methods
*
* @param string $obj Class name + namespace
* @param string $name Method name
* @param array $args Method arguments
*
* @return protected method result
*/
public static function callMethod($obj, $name, array $args)
{
$class = new \ReflectionClass(get_class($obj));
$method = $class->getMethod($name);
$method->setAccessible(true);
return $method->invokeArgs($obj, $args);
}
}

View File

@@ -350,19 +350,9 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua
)
)
);
$rules = array($rule1, $rule2);
$rules = new \Thelia\Coupon\CouponRuleCollection(array($rule1, $rule2));
$encoders = array(new XmlEncoder(), new JsonEncoder());
$normalizers = array(new GetSetMethodNormalizer());
$serializer = new Serializer($normalizers, $encoders);
$ruleTypes = array();
/** @var Thelia\Coupon\Rule\CouponRuleInterface $rule */
foreach ($rules as $rule) {
$ruleTypes[] = get_class($rule);
}
$coupon1->setSerializedRulesType($serializer->serialize($ruleTypes, 'json'));
$coupon1->setSerializedRulesContent($serializer->serialize($rules, 'json'));
$coupon1->setSerializedRules(base64_encode(serialize($rules)));
$coupon1->setIsCumulative(1);
$coupon1->setIsRemovingPostage(0);

View File

@@ -1089,10 +1089,11 @@ CREATE TABLE `coupon`
`is_used` TINYINT NOT NULL,
`is_enabled` TINYINT NOT NULL,
`expiration_date` DATETIME NOT NULL,
`serialized_rules_type` TEXT NOT NULL,
`serialized_rules_content` TEXT NOT NULL,
`serialized_rules` TEXT NOT NULL,
`is_cumulative` TINYINT NOT NULL,
`is_removing_postage` TINYINT NOT NULL,
`max_usage` INTEGER NOT NULL,
`is_available_on_special_offers` TINYINT(1) NOT NULL,
`created_at` DATETIME,
`updated_at` DATETIME,
`version` INTEGER DEFAULT 0,
@@ -1104,7 +1105,9 @@ CREATE TABLE `coupon`
INDEX `idx_amount` (`amount`),
INDEX `idx_expiration_date` (`expiration_date`),
INDEX `idx_is_cumulative` (`is_cumulative`),
INDEX `idx_is_removing_postage` (`is_removing_postage`)
INDEX `idx_is_removing_postage` (`is_removing_postage`),
INDEX `idx_max_usage` (`max_usage`),
INDEX `idx_is_available_on_special_offers` (`is_available_on_special_offers`)
) ENGINE=InnoDB;
-- ---------------------------------------------------------------------
@@ -2183,10 +2186,11 @@ CREATE TABLE `coupon_version`
`is_used` TINYINT NOT NULL,
`is_enabled` TINYINT NOT NULL,
`expiration_date` DATETIME NOT NULL,
`serialized_rules_type` TEXT NOT NULL,
`serialized_rules_content` TEXT NOT NULL,
`serialized_rules` TEXT NOT NULL,
`is_cumulative` TINYINT NOT NULL,
`is_removing_postage` TINYINT NOT NULL,
`max_usage` INTEGER NOT NULL,
`is_available_on_special_offers` TINYINT(1) NOT NULL,
`created_at` DATETIME,
`updated_at` DATETIME,
`version` INTEGER DEFAULT 0 NOT NULL,

View File

@@ -799,10 +799,11 @@
<column name="is_used" required="true" type="TINYINT" />
<column name="is_enabled" required="true" type="TINYINT" />
<column name="expiration_date" required="true" type="TIMESTAMP" />
<column name="serialized_rules_type" required="true" type="LONGVARCHAR" />
<column name="serialized_rules_content" required="true" type="LONGVARCHAR" />
<column name="serialized_rules" required="true" type="LONGVARCHAR" />
<column name="is_cumulative" required="true" type="TINYINT" />
<column name="is_removing_postage" required="true" type="TINYINT" />
<column name="max_usage" required="true" type="INTEGER" />
<column name="is_available_on_special_offers" required="true" type="BOOLEAN" />
<unique name="code_UNIQUE">
<unique-column name="code" />
</unique>
@@ -827,6 +828,12 @@
<index name="idx_is_removing_postage">
<index-column name="is_removing_postage" />
</index>
<index name="idx_max_usage">
<index-column name="max_usage" />
</index>
<index name="idx_is_available_on_special_offers">
<index-column name="is_available_on_special_offers" />
</index>
<behavior name="timestampable" />
<behavior name="i18n" />
<behavior name="versionable" />