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\Model\Coupon as CouponModel;
use Thelia\Model\CouponQuery;
use Thelia\Model\OrderCoupon;
/**
* Created by JetBrains PhpStorm.
@@ -129,6 +130,11 @@ class Coupon extends BaseAction implements EventSubscriberInterface
->getCart()
->setDiscount($totalDiscount)
->save();
$request
->getSession()
->getOrder()
->setDiscount($totalDiscount)
->save();
}
}
@@ -222,7 +228,7 @@ class Coupon extends BaseAction implements EventSubscriberInterface
/**
* @param \Thelia\Core\Event\Order\OrderEvent $event
*/
public function decreaseCouponQuantity(OrderEvent $event)
public function afterOrder(OrderEvent $event)
{
$request = $this->container->get('request');
@@ -233,10 +239,31 @@ class Coupon extends BaseAction implements EventSubscriberInterface
if (is_array($consumedCoupons)) {
foreach($consumedCoupons as $couponCode) {
// Decrement coupon quantity
$couponQuery = CouponQuery::create();
$couponModel = $couponQuery->findOneByCode($couponCode);
$couponModel->setLocale($request->getSession()->getLang()->getLocale());
/* decrease coupon quantity */
$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_CONDITION_UPDATE => array("updateCondition", 128),
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\OrderEvent;
use Thelia\Core\Event\TheliaEvents;
use Thelia\Coupon\CouponManager;
use Thelia\Exception\TheliaProcessException;
use Thelia\Model\AddressQuery;
use Thelia\Model\ConfigQuery;
@@ -189,8 +190,6 @@ class Order extends BaseAction implements EventSubscriberInterface
OrderStatusQuery::create()->findOneByCode(OrderStatus::CODE_NOT_PAID)->getId()
);
/* refresh discount @todo */
/* memorize discount */
$placedOrder->setDiscount(
$cart->getDiscount()
@@ -280,8 +279,6 @@ class Order extends BaseAction implements EventSubscriberInterface
}
}
/* memorize coupons @todo */
$con->commit();
$this->getDispatcher()->dispatch(TheliaEvents::ORDER_BEFORE_PAYMENT, new OrderEvent($placedOrder));

View File

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

View File

@@ -1275,7 +1275,6 @@
<column name="short_description" required="true" type="LONGVARCHAR" />
<column name="description" required="true" type="CLOB" />
<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_removing_postage" 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="3"><strong>{intl l="Coupon code"}</strong></td>
<td>
{ifloop rel="couponcode"}
<ul>
{loop type="order_coupon" name="couponcode" order=$ID}
<li>{$CODE}</li>
{$CODE}{if $LOOP_COUNT != $LOOP_TOTAL}, {/if}
{/loop}
</ul>
{/ifloop}
{elseloop rel="couponcode"}
<strong>Ø</strong>
{/elseloop}

View File

@@ -122,8 +122,17 @@
</tbody>
<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 >
<td rowspan="3" colspan="3" class="empty">&nbsp;</td>
<th class="shipping">{intl l="Shipping Tax"}</th>
<td class="shipping">
<div class="shipping-price">