Skip to content

Commit

Permalink
Merge pull request #115 from dnadesign/master
Browse files Browse the repository at this point in the history
FIX: Field reference and defensive checks
  • Loading branch information
wilr authored Feb 1, 2024
2 parents f0d3e2e + 8876fe9 commit 4d4ba79
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 18 deletions.
4 changes: 3 additions & 1 deletion src/Checkout/CouponCheckoutComponent.php
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,9 @@ public function getData(Order $order)

public function setData(Order $order, array $data)
{
Controller::curr()->getRequest()->getSession()->set('cart.couponcode', strtoupper($data['Code']));
if ($data['Code']) {
Controller::curr()->getRequest()->getSession()->set('cart.couponcode', strtoupper($data['Code']));
}

$order->getModifier(OrderDiscountModifier::class, true);
}
Expand Down
42 changes: 27 additions & 15 deletions src/Model/Discount.php
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ public function getCMSFields($params = null)
TextField::create('Title'),
CheckboxField::create('Active', 'Active')
->setDescription('Enable/disable all use of this discount.'),
HeaderField::create('ActionTitle', 'Action', 3),
$actionfield = HeaderField::create('ActionTitle', 'Action', 3),
$typefield = SelectionGroup::create(
'Type',
[
Expand Down Expand Up @@ -249,14 +249,14 @@ public function getCMSFields($params = null)
$valuefield = $this->Type === 'Percent' ? $percentfield : $amountfield;

$fields->makeFieldReadonly('Type');
$fields->insertAfter($valuefield, 'ActionTitle');
$fields->insertAfter($valuefield, $actionfield);
$fields->replaceField(
$this->Type,
$valuefield->performReadonlyTransformation()
);

if ($this->Type === 'Percent') {
$fields->insertAfter($maxamountfield, 'Percent');
$fields->insertAfter($maxamountfield, $percentfield);
}
}

Expand Down Expand Up @@ -515,10 +515,14 @@ public function getAppliedOrders($includeunpaid = false)
{
$orders = Order::get()
->innerJoin('SilverShop_OrderAttribute', '"SilverShop_OrderAttribute"."OrderID" = "SilverShop_Order"."ID"')
->leftJoin('SilverShop_OrderItem_Discounts',
'"SilverShop_OrderItem_Discounts"."SilverShop_OrderItemID" = "SilverShop_OrderAttribute"."ID"')
->leftJoin('SilverShop_OrderDiscountModifier_Discounts',
'"SilverShop_OrderDiscountModifier_Discounts"."SilverShop_OrderDiscountModifierID" = "SilverShop_OrderAttribute"."ID"')
->leftJoin(
'SilverShop_OrderItem_Discounts',
'"SilverShop_OrderItem_Discounts"."SilverShop_OrderItemID" = "SilverShop_OrderAttribute"."ID"'
)
->leftJoin(
'SilverShop_OrderDiscountModifier_Discounts',
'"SilverShop_OrderDiscountModifier_Discounts"."SilverShop_OrderDiscountModifierID" = "SilverShop_OrderAttribute"."ID"'
)
->where(
"SilverShop_OrderItem_Discounts.SilverShop_DiscountID = $this->ID OR SilverShop_OrderDiscountModifier_Discounts.SilverShop_DiscountID = $this->ID
"
Expand Down Expand Up @@ -550,13 +554,17 @@ public function getAppliedOrders($includeunpaid = false)
public function getSavingsTotal()
{
$itemsavings = $this->OrderItems()
->innerJoin('SilverShop_Order',
'"SilverShop_OrderAttribute"."OrderID" = "SilverShop_Order"."ID"')
->innerJoin(
'SilverShop_Order',
'"SilverShop_OrderAttribute"."OrderID" = "SilverShop_Order"."ID"'
)
->where('"SilverShop_Order"."Paid" IS NOT NULL')
->sum('DiscountAmount');
$modifiersavings = $this->DiscountModifiers()
->innerJoin('SilverShop_Order',
'"SilverShop_OrderAttribute"."OrderID" = "SilverShop_Order"."ID"')
->innerJoin(
'SilverShop_Order',
'"SilverShop_OrderAttribute"."OrderID" = "SilverShop_Order"."ID"'
)
->where('"SilverShop_Order"."Paid" IS NOT NULL')
->sum('DiscountAmount');

Expand All @@ -572,15 +580,19 @@ public function getSavingsTotal()
public function getSavingsForOrder(Order $order)
{
$itemsavings = OrderAttribute::get()
->innerJoin('SilverShop_OrderItem_Discounts',
'"SilverShop_OrderAttribute"."ID" = "SilverShop_OrderItem_Discounts"."SilverShop_OrderItemID"')
->innerJoin(
'SilverShop_OrderItem_Discounts',
'"SilverShop_OrderAttribute"."ID" = "SilverShop_OrderItem_Discounts"."SilverShop_OrderItemID"'
)
->filter('SilverShop_OrderItem_Discounts.DiscountID', $this->ID)
->filter('OrderAttribute.OrderID', $order->ID)
->sum('DiscountAmount');

$modifiersavings = OrderAttribute::get()
->innerJoin('SilverShop_OrderDiscountModifier_Discounts',
'"SilverShop_OrderAttribute"."ID" = "SilverShop_OrderDiscountModifier_Discounts"."SilverShop_OrderDiscountModifierID"')
->innerJoin(
'SilverShop_OrderDiscountModifier_Discounts',
'"SilverShop_OrderAttribute"."ID" = "SilverShop_OrderDiscountModifier_Discounts"."SilverShop_OrderDiscountModifierID"'
)
->filter('SilverShop_OrderDiscountModifier_Discounts.DiscountID', $this->ID)
->filter('OrderAttribute.OrderID', $order->ID)
->sum('DiscountAmount');
Expand Down
6 changes: 4 additions & 2 deletions src/Model/OrderCoupon.php
Original file line number Diff line number Diff line change
Expand Up @@ -131,8 +131,10 @@ protected function onBeforeWrite()
*/
public function setCode($code)
{
$code = trim(preg_replace('/[^0-9a-zA-Z]+/', '', $code));
$this->setField('Code', strtoupper($code));
if ($code) {
$code = trim(preg_replace('/[^0-9a-zA-Z]+/', '', $code));
$this->setField('Code', strtoupper($code));
}

return $this;
}
Expand Down

0 comments on commit 4d4ba79

Please sign in to comment.