show coupon codes in back office

This commit is contained in:
Etienne Roudeix
2013-12-19 14:50:45 +01:00
parent d7c1ecf09a
commit 5773922314
6 changed files with 44 additions and 14 deletions

View File

@@ -37,6 +37,7 @@ use Thelia\Condition\ConditionCollection;
use Thelia\Coupon\Type\CouponInterface; use Thelia\Coupon\Type\CouponInterface;
use Thelia\Model\Coupon as CouponModel; use Thelia\Model\Coupon as CouponModel;
use Thelia\Model\CouponQuery; use Thelia\Model\CouponQuery;
use Thelia\Model\OrderCoupon;
/** /**
* Created by JetBrains PhpStorm. * Created by JetBrains PhpStorm.
@@ -129,6 +130,11 @@ class Coupon extends BaseAction implements EventSubscriberInterface
->getCart() ->getCart()
->setDiscount($totalDiscount) ->setDiscount($totalDiscount)
->save(); ->save();
$request
->getSession()
->getOrder()
->setDiscount($totalDiscount)
->save();
} }
} }
@@ -222,7 +228,7 @@ class Coupon extends BaseAction implements EventSubscriberInterface
/** /**
* @param \Thelia\Core\Event\Order\OrderEvent $event * @param \Thelia\Core\Event\Order\OrderEvent $event
*/ */
public function decreaseCouponQuantity(OrderEvent $event) public function afterOrder(OrderEvent $event)
{ {
$request = $this->container->get('request'); $request = $this->container->get('request');
@@ -233,10 +239,31 @@ class Coupon extends BaseAction implements EventSubscriberInterface
if (is_array($consumedCoupons)) { if (is_array($consumedCoupons)) {
foreach($consumedCoupons as $couponCode) { foreach($consumedCoupons as $couponCode) {
// Decrement coupon quantity
$couponQuery = CouponQuery::create(); $couponQuery = CouponQuery::create();
$couponModel = $couponQuery->findOneByCode($couponCode); $couponModel = $couponQuery->findOneByCode($couponCode);
$couponModel->setLocale($request->getSession()->getLang()->getLocale());
/* decrease coupon quantity */
$couponManager->decrementQuantity($couponModel); $couponManager->decrementQuantity($couponModel);
/* memorize coupon */
$orderCoupon = new OrderCoupon();
$orderCoupon->setOrder($event->getOrder())
->setCode($couponModel->getCode())
->setType($couponModel->getType())
->setAmount($couponModel->getAmount())
->setTitle($couponModel->getTitle())
->setShortDescription($couponModel->getShortDescription())
->setDescription($couponModel->getDescription())
->setExpirationDate($couponModel->getExpirationDate())
->setIsCumulative($couponModel->getIsCumulative())
->setIsRemovingPostage($couponModel->getIsRemovingPostage())
->setIsAvailableOnSpecialOffers($couponModel->getIsAvailableOnSpecialOffers())
->setSerializedConditions($couponModel->getSerializedConditions())
;
$orderCoupon->save();
} }
} }
} }
@@ -269,7 +296,7 @@ class Coupon extends BaseAction implements EventSubscriberInterface
TheliaEvents::COUPON_CONSUME => array("consume", 128), TheliaEvents::COUPON_CONSUME => array("consume", 128),
TheliaEvents::COUPON_CONDITION_UPDATE => array("updateCondition", 128), TheliaEvents::COUPON_CONDITION_UPDATE => array("updateCondition", 128),
TheliaEvents::ORDER_SET_POSTAGE => array("testFreePostage", 256), TheliaEvents::ORDER_SET_POSTAGE => array("testFreePostage", 256),
TheliaEvents::ORDER_BEFORE_PAYMENT => array("decreaseCouponQuantity", 128), TheliaEvents::ORDER_BEFORE_PAYMENT => array("afterOrder", 128),
); );
} }
} }

View File

@@ -30,6 +30,7 @@ use Thelia\Core\Event\Cart\CartEvent;
use Thelia\Core\Event\Order\OrderAddressEvent; use Thelia\Core\Event\Order\OrderAddressEvent;
use Thelia\Core\Event\Order\OrderEvent; use Thelia\Core\Event\Order\OrderEvent;
use Thelia\Core\Event\TheliaEvents; use Thelia\Core\Event\TheliaEvents;
use Thelia\Coupon\CouponManager;
use Thelia\Exception\TheliaProcessException; use Thelia\Exception\TheliaProcessException;
use Thelia\Model\AddressQuery; use Thelia\Model\AddressQuery;
use Thelia\Model\ConfigQuery; use Thelia\Model\ConfigQuery;
@@ -189,8 +190,6 @@ class Order extends BaseAction implements EventSubscriberInterface
OrderStatusQuery::create()->findOneByCode(OrderStatus::CODE_NOT_PAID)->getId() OrderStatusQuery::create()->findOneByCode(OrderStatus::CODE_NOT_PAID)->getId()
); );
/* refresh discount @todo */
/* memorize discount */ /* memorize discount */
$placedOrder->setDiscount( $placedOrder->setDiscount(
$cart->getDiscount() $cart->getDiscount()
@@ -280,8 +279,6 @@ class Order extends BaseAction implements EventSubscriberInterface
} }
} }
/* memorize coupons @todo */
$con->commit(); $con->commit();
$this->getDispatcher()->dispatch(TheliaEvents::ORDER_BEFORE_PAYMENT, new OrderEvent($placedOrder)); $this->getDispatcher()->dispatch(TheliaEvents::ORDER_BEFORE_PAYMENT, new OrderEvent($placedOrder));

View File

@@ -211,6 +211,8 @@ class DataAccessFunctions extends AbstractSmartyPlugin
switch ($attribute) { switch ($attribute) {
case 'postage': case 'postage':
return $order->getPostage(); return $order->getPostage();
case 'discount':
return $order->getDiscount();
case 'delivery_address': case 'delivery_address':
return $order->chosenDeliveryAddress; return $order->chosenDeliveryAddress;
case 'invoice_address': case 'invoice_address':

View File

@@ -1275,7 +1275,6 @@
<column name="short_description" required="true" type="LONGVARCHAR" /> <column name="short_description" required="true" type="LONGVARCHAR" />
<column name="description" required="true" type="CLOB" /> <column name="description" required="true" type="CLOB" />
<column name="expiration_date" required="true" type="TIMESTAMP" /> <column name="expiration_date" required="true" type="TIMESTAMP" />
<column name="max_usage" required="true" type="INTEGER" />
<column name="is_cumulative" required="true" type="BOOLEAN" /> <column name="is_cumulative" required="true" type="BOOLEAN" />
<column name="is_removing_postage" required="true" type="BOOLEAN" /> <column name="is_removing_postage" required="true" type="BOOLEAN" />
<column name="is_available_on_special_offers" required="true" type="BOOLEAN" /> <column name="is_available_on_special_offers" required="true" type="BOOLEAN" />

View File

@@ -118,13 +118,9 @@
<td colspan="2" class="td-unstyled"></td> <td colspan="2" class="td-unstyled"></td>
<td colspan="3"><strong>{intl l="Coupon code"}</strong></td> <td colspan="3"><strong>{intl l="Coupon code"}</strong></td>
<td> <td>
{ifloop rel="couponcode"}
<ul>
{loop type="order_coupon" name="couponcode" order=$ID} {loop type="order_coupon" name="couponcode" order=$ID}
<li>{$CODE}</li> {$CODE}{if $LOOP_COUNT != $LOOP_TOTAL}, {/if}
{/loop} {/loop}
</ul>
{/ifloop}
{elseloop rel="couponcode"} {elseloop rel="couponcode"}
<strong>Ø</strong> <strong>Ø</strong>
{/elseloop} {/elseloop}

View File

@@ -122,8 +122,17 @@
</tbody> </tbody>
<tfoot> <tfoot>
<tr >
<td rowspan="4" colspan="3" class="empty">&nbsp;</td>
<th class="shipping">{intl l="Discount"}</th>
<td class="shipping">
<div class="shipping-price">
<span class="price">{order attr="discount"} {currency attr="symbol"}</span>
</div>
</td>
</tr>
<tr > <tr >
<td rowspan="3" colspan="3" class="empty">&nbsp;</td>
<th class="shipping">{intl l="Shipping Tax"}</th> <th class="shipping">{intl l="Shipping Tax"}</th>
<td class="shipping"> <td class="shipping">
<div class="shipping-price"> <div class="shipping-price">