Skip to content

Commit

Permalink
Merge pull request #165 from bold-commerce/Q1-612
Browse files Browse the repository at this point in the history
Q1-612: Fix BoldDiscountsExtensionAttribute when no discounts are applied.
  • Loading branch information
nmalevanec authored Oct 26, 2023
2 parents 57e2594 + 0eecd75 commit 0d3cb3f
Showing 1 changed file with 30 additions and 19 deletions.
49 changes: 30 additions & 19 deletions Model/Quote/Result/Builder/AddBoldDiscountsExtensionAttribute.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,24 +44,35 @@ public function __construct(
*/
public function addExtensionAttribute(Item $item): void
{
$data = [
'amount' => $item->getDiscountAmount(),
'base_amount' => $item->getBaseDiscountAmount(),
'original_amount' => $item->getOriginalDiscountAmount(),
'base_original_amount' => $item->getBaseOriginalDiscountAmount()
];
$itemDiscount = $this->discountDataInterfaceFactory->create(['data' => $data]);
$appliedRuleIds = is_array($item->getAppliedRuleIds())
? $item->getAppliedRuleIds()
: explode(',', $item->getAppliedRuleIds());
$ruleLabel = $item->getQuote()->getCouponCode() ?: __('Discount');
$data = [
'discount' => $itemDiscount,
'rule' => $ruleLabel,
'rule_id' => implode(',', $appliedRuleIds),
];
/** @var RuleDiscountInterface $itemDiscount */
$ruleDiscount = $this->discountInterfaceFactory->create(['data' => $data]);
$item->getExtensionAttributes()->setBoldDiscounts([$ruleDiscount]);
$appliedRules = $item->getQuote()->getAppliedRuleIds();
$appliedRuleIds =
is_array($appliedRules)
? $appliedRules
: (
is_string($appliedRules) && !empty($appliedRules)
? explode(',', $appliedRules)
: []
);
$result = [];
if (!empty($appliedRuleIds)) {
$data = [
'amount' => $item->getDiscountAmount(),
'base_amount' => $item->getBaseDiscountAmount(),
'original_amount' => $item->getOriginalDiscountAmount(),
'base_original_amount' => $item->getBaseOriginalDiscountAmount()
];
$itemDiscount = $this->discountDataInterfaceFactory->create(['data' => $data]);
$ruleLabel = $item->getQuote()->getCouponCode() ?: __('Discount');
$data = [
'discount' => $itemDiscount,
'rule' => $ruleLabel,
'rule_id' => implode(',', $appliedRuleIds),
];
/** @var RuleDiscountInterface $itemDiscount */
$ruleDiscount = $this->discountInterfaceFactory->create(['data' => $data]);
$result[] = $ruleDiscount;
}

$item->getExtensionAttributes()->setBoldDiscounts($result);
}
}

0 comments on commit 0d3cb3f

Please sign in to comment.