Magento2: Заказать успех создать купон


Я хочу сгенерировать купон на успех заказа ниже приведен код, который я собираюсь сгенерировать в Observer

public function __construct(
        \Psr\Log\LoggerInterface $logger,
        \Magento\SalesRule\Model\Rule $rule
    )
    {
        $this->logger = $logger;
        $this->rule = $rule;        
    }    
public function execute(\Magento\Framework\Event\Observer $observer)
        {
            $order = $observer->getEvent()->getOrder();
            $orderId = $order->getId();
            $coupon = [];
            $coupon['name'] = 'vip_signup';
            $coupon['desc'] = 'Discount for vip signup coupon.';
            $coupon['start'] = date('Y-m-d');
            $coupon['end'] = '';
            $coupon['max_redemptions'] = 1;
            $coupon['discount_type'] ='by_percent';
            $coupon['discount_amount'] = 15;
            $coupon['flag_is_free_shipping'] = 'no';
            $coupon['redemptions'] = 1;
            $coupon['code'] ='NL01-1234'; 

        //this code will normally be autogenetated but i am hard coding for testing purposes

        $shoppingCartPriceRule =  $this->rule->create('Magento\SalesRule\Model\Rule');
        $shoppingCartPriceRule->setName($coupon['name'])
                ->setDescription($coupon['desc'])
                ->setFromDate($coupon['start'])
                ->setToDate($coupon['end'])
                ->setUsesPerCustomer($coupon['max_redemptions'])
                ->setCustomerGroupIds(array('0','1','2','3',))
                ->setIsActive(1)
                ->setSimpleAction($coupon['discount_type'])
                ->setDiscountAmount($coupon['discount_amount'])
                ->setDiscountQty(1)
                ->setApplyToShipping($coupon['flag_is_free_shipping'])
                ->setTimesUsed($coupon['redemptions'])
                ->setWebsiteIds(array('1'))
                ->setCouponType(2)
                ->setCouponCode($coupon['code'])
                ->setUsesPerCoupon(NULL);
        $shoppingCartPriceRule->save();

        }

Events.xml

<event name="sales_order_save_after">
        <observer name="vendor_coupon_order_save_after" instance="Vendor\Coupon\Observer\GiftcardSave" />
    </event>
Author: Paras Arora, 2019-06-25

1 answers

Изменение

Magento\SalesRule\Model\Rule

Чтобы

Magento\SalesRule\Model\RuleFactory

И измениться

 $this->rule->create('Magento\SalesRule\Model\Rule')

До

 $this->rule->create()

Если вы хотите воспользоваться контактом службы, перейдите по ссылке .

 1
Author: Amit Bera, 2019-06-25 11:07:58