QuoteFilling.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\InstantPurchase\Model\QuoteManagement;
  7. use Magento\Catalog\Model\Product;
  8. use Magento\Framework\DataObject;
  9. use Magento\Framework\Exception\LocalizedException;
  10. use Magento\Quote\Model\Quote;
  11. /**
  12. * Fill quote with products for instant purchase.
  13. *
  14. * @api May be used for pluginization.
  15. * @since 100.2.0
  16. */
  17. class QuoteFilling
  18. {
  19. /**
  20. * Adds products to quote according to request.
  21. *
  22. * @param Quote $quote
  23. * @param Product $product
  24. * @param array $productRequest
  25. * @return Quote
  26. * @throws LocalizedException if product can not be added to quote.
  27. * @since 100.2.0
  28. */
  29. public function fillQuote(
  30. Quote $quote,
  31. Product $product,
  32. array $productRequest
  33. ): Quote {
  34. $normalizedProductRequest = array_merge(
  35. ['qty' => 1],
  36. $productRequest
  37. );
  38. $result = $quote->addProduct(
  39. $product,
  40. new DataObject($normalizedProductRequest)
  41. );
  42. if (is_string($result)) {
  43. throw new LocalizedException(__($result));
  44. }
  45. return $quote;
  46. }
  47. }