示例#1
0
$compare2 = new Cart\DiscountConditionCompare();
$compare2->setOp('or')->setSourceEntityType('items')->addCondition($condition2);
//create 'container' for conditions
$compare3 = new Cart\DiscountConditionCompare();
$compare3->setOp('and')->setSourceEntityType('items')->addCondition($condition3)->addCondition($condition4);
//create the discount, but don't add the discount unless the conditions are met
//in this example, there is only a target criteria; no pre-requisite criteria
$discountA = new Cart\Discount();
$discountA->setId(1)->setName('Free UPS Ground')->setValue('1.00')->setAs(Cart\Discount::$asPercent)->setIsPreTax(true)->setTo(Cart\Discount::$toSpecified)->setTargetConditionCompare($compare1);
// Buy 2 ToothBrush, Get 1 ToothPaste free
$discountB = new Cart\Discount();
$discountB->setId(2)->setName('Buy 2 ToothBrush, Get 1 ToothPaste free')->setTo(Cart\Discount::$toSpecified)->setValue('1.00')->setMaxQty(1)->setIsMaxPerItem(false)->setAs(Cart\Discount::$asPercent)->setIsPreTax(true)->setPreConditionCompare($compare3)->setTargetConditionCompare($compare2);
//apply the automatic discount, if pre-conditions validate
if ($compare1->isValid($shipmentA)) {
    $discountA->setShipment($shipmentA);
    $cart->setDiscount($discountA);
}
//check pre-conditions and target conditions
if ($compare3->isValid($itemA) && $compare2->isValid($itemB)) {
    $discountB->setItem($itemB);
    $cart->setDiscount($discountB);
}
echo print_r($cart->getTotals(), 1);
echo "==============" . PHP_EOL;
echo print_r($cart->getDiscountedTotals(), 1);
echo print_r($cart->getDiscountGrid());
$cart2 = new Cart\Cart();
$cart2->importJson($cart->toJson());
echo "\n{$cart2}\n";
echo print_r($cart2->getTotals(), 1);
echo print_r($cart2->getDiscountedTotals(), 1);