0

I want to SET gift message programmatically in current order(one message for whole order) during Checkout. Currently, I trying using sales_order_save_after event to edit order but didn't get succeed.

any another approach to do the same?

1

Finally, I got the easiest way.

public function __construct(
    \Magento\Checkout\Model\Session $session,
    \Magento\Quote\Model\QuoteRepository $quoteRepository,
    \Magento\GiftMessage\Model\MessageFactory $messageFactory
) {
    $this->session = $session;
    $this->quoteRepository = $quoteRepository;
    $this->messageFactory = $messageFactory;
}
public function test(){
  $quoteId = $this->session->getQuote()->getId();
  $giftMessage = $this->messageFactory->create();
  $giftMessage->setMessage('your text');
  $giftObj = $giftMessage->save();
  $quote->setGiftMessageId($giftObj->getId());
  $quote->save();
}
0

if you want to add information after placing order then you may use "checkout_onepage_controller_success_action" this event to add your custom data

0

You can get Gift message for order item using this code.

public function __construct(
    \Magento\GiftMessage\Api\OrderItemRepositoryInterface $orderItemGiftRepo
) {
    $this->orderItemGiftRepo = $orderItemGiftRepo;
}

public function getGiftMessage($orderId, $orderItemId)
{ 
    $giftMessage = $this->orderItemGiftRepo->get($orderId, $orderItemId);
    $giftMessage->getMessage(); // This will give you message
}

public function setGiftMessage($orderId)
{
 $giftMessage = $this->orderItemGiftRepo->get($orderId);
 $giftMessage->setMessage('custommessage'); 
}

Hope this will help you !!

  • how do I set gift message for the whole order? – Tirth Patel Sep 30 at 8:32
  • you don't need to pass order item id then, skip that field. – Oscprofessionals Sep 30 at 8:34
  • how can I set my message $giftMessage = $this->orderGiftRepo->get($order); $giftMessage->setMessage('custommessage'); – Tirth Patel Sep 30 at 9:39
  • code updated, please check – Oscprofessionals Sep 30 at 10:11
  • this is not working as I try to do this just after order place and got below error No item with the provided ID was found in the Order. Verify the ID and try again – Tirth Patel Sep 30 at 10:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.