How to override model in magento2? Planned maintenance scheduled April 17/18, 2019 at 00:00UTC...
Why did the rest of the Eastern Bloc not invade Yugoslavia?
When were vectors invented?
How much time will it take to get my passport back if I am applying for multiple Schengen visa countries?
How do I stop a creek from eroding my steep embankment?
Output the ŋarâþ crîþ alphabet song without using (m)any letters
Do I really need recursive chmod to restrict access to a folder?
What does this icon in iOS Stardew Valley mean?
What is known about the Ubaid lizard-people figurines?
How to answer "Have you ever been terminated?"
What's the purpose of writing one's academic biography in the third person?
Can an alien society believe that their star system is the universe?
English words in a non-english sci-fi novel
What is the logic behind the Maharil's explanation of why we don't say שעשה ניסים on Pesach?
Apollo command module space walk?
How does the particle を relate to the verb 行く in the structure「A を + B に行く」?
What does the "x" in "x86" represent?
What exactly is a "Meth" in Altered Carbon?
Why is "Consequences inflicted." not a sentence?
How can I make names more distinctive without making them longer?
2001: A Space Odyssey's use of the song "Daisy Bell" (Bicycle Built for Two); life imitates art or vice-versa?
How to bypass password on Windows XP account?
How do I name drop voicings
Storing hydrofluoric acid before the invention of plastics
Why am I getting the error "non-boolean type specified in a context where a condition is expected" for this request?
How to override model in magento2?
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
Announcing the arrival of Valued Associate #679: Cesar Manara
Unicorn Meta Zoo #1: Why another podcast?Unit Test for overwrite collection class in magento2main.CRITICAL: Plugin class doesn't existMagento2 add custom address attributeMagento 2: How to override newsletter Subscriber modelMagento2 interface not found in Model classMagento offline custom Payment method with drop down listMagento 2 Create dynamic array From different Model Collection to use in multi select in gridAdd configure product in Cart using Magento 2 API facing an issueHow to set ui form field value with url-param when loading edit new pageMagento 2.3 Can't view module's front end page output?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}
I want to remove the below lines in MagentoQuoteModelPaymentMethodManagement model file
if (!$this->zeroTotalValidator->isApplicable($payment->getMethodInstance(), $quote)) {
throw new InvalidTransitionException(__('The requested Payment Method is not available.'));
}
In PaymentMethodManagement file:
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace MagentoQuoteModel;
use MagentoFrameworkExceptionStateInvalidTransitionException;
/**
* Class PaymentMethodManagement
*/
class PaymentMethodManagement implements MagentoQuoteApiPaymentMethodManagementInterface
{
/**
* @var MagentoQuoteApiCartRepositoryInterface
*/
protected $quoteRepository;
/**
* @var MagentoPaymentModelChecksZeroTotal
*/
protected $zeroTotalValidator;
/**
* @var MagentoPaymentModelMethodList
*/
protected $methodList;
/**
* Constructor
*
* @param MagentoQuoteApiCartRepositoryInterface $quoteRepository
* @param MagentoPaymentModelChecksZeroTotal $zeroTotalValidator
* @param MagentoPaymentModelMethodList $methodList
*/
public function __construct(
MagentoQuoteApiCartRepositoryInterface $quoteRepository,
MagentoPaymentModelChecksZeroTotal $zeroTotalValidator,
MagentoPaymentModelMethodList $methodList
) {
$this->quoteRepository = $quoteRepository;
$this->zeroTotalValidator = $zeroTotalValidator;
$this->methodList = $methodList;
}
/**
* {@inheritdoc}
*/
public function set($cartId, MagentoQuoteApiDataPaymentInterface $method)
{
/** @var MagentoQuoteModelQuote $quote */
$quote = $this->quoteRepository->get($cartId);
$method->setChecks([
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_CHECKOUT,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_COUNTRY,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_CURRENCY,
MagentoPaymentModelMethodAbstractMethod::CHECK_ORDER_TOTAL_MIN_MAX,
]);
$payment = $quote->getPayment();
$data = $method->getData();
$payment->importData($data);
if ($quote->isVirtual()) {
$quote->getBillingAddress()->setPaymentMethod($payment->getMethod());
} else {
// check if shipping address is set
if ($quote->getShippingAddress()->getCountryId() === null) {
throw new InvalidTransitionException(__('Shipping address is not set'));
}
$quote->getShippingAddress()->setPaymentMethod($payment->getMethod());
}
if (!$quote->isVirtual() && $quote->getShippingAddress()) {
$quote->getShippingAddress()->setCollectShippingRates(true);
}
if (!$this->zeroTotalValidator->isApplicable($payment->getMethodInstance(), $quote)) {
throw new InvalidTransitionException(__('The requested Payment Method is not available.'));
}
$quote->setTotalsCollectedFlag(false)->collectTotals()->save();
return $quote->getPayment()->getId();
}}
How to do this.
Thanks.
magento2 php-7.2
add a comment |
I want to remove the below lines in MagentoQuoteModelPaymentMethodManagement model file
if (!$this->zeroTotalValidator->isApplicable($payment->getMethodInstance(), $quote)) {
throw new InvalidTransitionException(__('The requested Payment Method is not available.'));
}
In PaymentMethodManagement file:
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace MagentoQuoteModel;
use MagentoFrameworkExceptionStateInvalidTransitionException;
/**
* Class PaymentMethodManagement
*/
class PaymentMethodManagement implements MagentoQuoteApiPaymentMethodManagementInterface
{
/**
* @var MagentoQuoteApiCartRepositoryInterface
*/
protected $quoteRepository;
/**
* @var MagentoPaymentModelChecksZeroTotal
*/
protected $zeroTotalValidator;
/**
* @var MagentoPaymentModelMethodList
*/
protected $methodList;
/**
* Constructor
*
* @param MagentoQuoteApiCartRepositoryInterface $quoteRepository
* @param MagentoPaymentModelChecksZeroTotal $zeroTotalValidator
* @param MagentoPaymentModelMethodList $methodList
*/
public function __construct(
MagentoQuoteApiCartRepositoryInterface $quoteRepository,
MagentoPaymentModelChecksZeroTotal $zeroTotalValidator,
MagentoPaymentModelMethodList $methodList
) {
$this->quoteRepository = $quoteRepository;
$this->zeroTotalValidator = $zeroTotalValidator;
$this->methodList = $methodList;
}
/**
* {@inheritdoc}
*/
public function set($cartId, MagentoQuoteApiDataPaymentInterface $method)
{
/** @var MagentoQuoteModelQuote $quote */
$quote = $this->quoteRepository->get($cartId);
$method->setChecks([
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_CHECKOUT,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_COUNTRY,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_CURRENCY,
MagentoPaymentModelMethodAbstractMethod::CHECK_ORDER_TOTAL_MIN_MAX,
]);
$payment = $quote->getPayment();
$data = $method->getData();
$payment->importData($data);
if ($quote->isVirtual()) {
$quote->getBillingAddress()->setPaymentMethod($payment->getMethod());
} else {
// check if shipping address is set
if ($quote->getShippingAddress()->getCountryId() === null) {
throw new InvalidTransitionException(__('Shipping address is not set'));
}
$quote->getShippingAddress()->setPaymentMethod($payment->getMethod());
}
if (!$quote->isVirtual() && $quote->getShippingAddress()) {
$quote->getShippingAddress()->setCollectShippingRates(true);
}
if (!$this->zeroTotalValidator->isApplicable($payment->getMethodInstance(), $quote)) {
throw new InvalidTransitionException(__('The requested Payment Method is not available.'));
}
$quote->setTotalsCollectedFlag(false)->collectTotals()->save();
return $quote->getPayment()->getId();
}}
How to do this.
Thanks.
magento2 php-7.2
add a comment |
I want to remove the below lines in MagentoQuoteModelPaymentMethodManagement model file
if (!$this->zeroTotalValidator->isApplicable($payment->getMethodInstance(), $quote)) {
throw new InvalidTransitionException(__('The requested Payment Method is not available.'));
}
In PaymentMethodManagement file:
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace MagentoQuoteModel;
use MagentoFrameworkExceptionStateInvalidTransitionException;
/**
* Class PaymentMethodManagement
*/
class PaymentMethodManagement implements MagentoQuoteApiPaymentMethodManagementInterface
{
/**
* @var MagentoQuoteApiCartRepositoryInterface
*/
protected $quoteRepository;
/**
* @var MagentoPaymentModelChecksZeroTotal
*/
protected $zeroTotalValidator;
/**
* @var MagentoPaymentModelMethodList
*/
protected $methodList;
/**
* Constructor
*
* @param MagentoQuoteApiCartRepositoryInterface $quoteRepository
* @param MagentoPaymentModelChecksZeroTotal $zeroTotalValidator
* @param MagentoPaymentModelMethodList $methodList
*/
public function __construct(
MagentoQuoteApiCartRepositoryInterface $quoteRepository,
MagentoPaymentModelChecksZeroTotal $zeroTotalValidator,
MagentoPaymentModelMethodList $methodList
) {
$this->quoteRepository = $quoteRepository;
$this->zeroTotalValidator = $zeroTotalValidator;
$this->methodList = $methodList;
}
/**
* {@inheritdoc}
*/
public function set($cartId, MagentoQuoteApiDataPaymentInterface $method)
{
/** @var MagentoQuoteModelQuote $quote */
$quote = $this->quoteRepository->get($cartId);
$method->setChecks([
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_CHECKOUT,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_COUNTRY,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_CURRENCY,
MagentoPaymentModelMethodAbstractMethod::CHECK_ORDER_TOTAL_MIN_MAX,
]);
$payment = $quote->getPayment();
$data = $method->getData();
$payment->importData($data);
if ($quote->isVirtual()) {
$quote->getBillingAddress()->setPaymentMethod($payment->getMethod());
} else {
// check if shipping address is set
if ($quote->getShippingAddress()->getCountryId() === null) {
throw new InvalidTransitionException(__('Shipping address is not set'));
}
$quote->getShippingAddress()->setPaymentMethod($payment->getMethod());
}
if (!$quote->isVirtual() && $quote->getShippingAddress()) {
$quote->getShippingAddress()->setCollectShippingRates(true);
}
if (!$this->zeroTotalValidator->isApplicable($payment->getMethodInstance(), $quote)) {
throw new InvalidTransitionException(__('The requested Payment Method is not available.'));
}
$quote->setTotalsCollectedFlag(false)->collectTotals()->save();
return $quote->getPayment()->getId();
}}
How to do this.
Thanks.
magento2 php-7.2
I want to remove the below lines in MagentoQuoteModelPaymentMethodManagement model file
if (!$this->zeroTotalValidator->isApplicable($payment->getMethodInstance(), $quote)) {
throw new InvalidTransitionException(__('The requested Payment Method is not available.'));
}
In PaymentMethodManagement file:
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace MagentoQuoteModel;
use MagentoFrameworkExceptionStateInvalidTransitionException;
/**
* Class PaymentMethodManagement
*/
class PaymentMethodManagement implements MagentoQuoteApiPaymentMethodManagementInterface
{
/**
* @var MagentoQuoteApiCartRepositoryInterface
*/
protected $quoteRepository;
/**
* @var MagentoPaymentModelChecksZeroTotal
*/
protected $zeroTotalValidator;
/**
* @var MagentoPaymentModelMethodList
*/
protected $methodList;
/**
* Constructor
*
* @param MagentoQuoteApiCartRepositoryInterface $quoteRepository
* @param MagentoPaymentModelChecksZeroTotal $zeroTotalValidator
* @param MagentoPaymentModelMethodList $methodList
*/
public function __construct(
MagentoQuoteApiCartRepositoryInterface $quoteRepository,
MagentoPaymentModelChecksZeroTotal $zeroTotalValidator,
MagentoPaymentModelMethodList $methodList
) {
$this->quoteRepository = $quoteRepository;
$this->zeroTotalValidator = $zeroTotalValidator;
$this->methodList = $methodList;
}
/**
* {@inheritdoc}
*/
public function set($cartId, MagentoQuoteApiDataPaymentInterface $method)
{
/** @var MagentoQuoteModelQuote $quote */
$quote = $this->quoteRepository->get($cartId);
$method->setChecks([
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_CHECKOUT,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_COUNTRY,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_CURRENCY,
MagentoPaymentModelMethodAbstractMethod::CHECK_ORDER_TOTAL_MIN_MAX,
]);
$payment = $quote->getPayment();
$data = $method->getData();
$payment->importData($data);
if ($quote->isVirtual()) {
$quote->getBillingAddress()->setPaymentMethod($payment->getMethod());
} else {
// check if shipping address is set
if ($quote->getShippingAddress()->getCountryId() === null) {
throw new InvalidTransitionException(__('Shipping address is not set'));
}
$quote->getShippingAddress()->setPaymentMethod($payment->getMethod());
}
if (!$quote->isVirtual() && $quote->getShippingAddress()) {
$quote->getShippingAddress()->setCollectShippingRates(true);
}
if (!$this->zeroTotalValidator->isApplicable($payment->getMethodInstance(), $quote)) {
throw new InvalidTransitionException(__('The requested Payment Method is not available.'));
}
$quote->setTotalsCollectedFlag(false)->collectTotals()->save();
return $quote->getPayment()->getId();
}}
How to do this.
Thanks.
magento2 php-7.2
magento2 php-7.2
asked 1 hour ago
Mano MMano M
1,072219
1,072219
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
You can do it by using Preference in your di.xml file of your custom module.
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="MagentoQuoteModelPaymentMethodManagement" type="vendormoduleModelPaymentMethodManagement" />
</config>
add a comment |
Steps to Follow :
- Override di.xml
- Override PaymentMethodManagement.php
- Launch SSH and Run Commands
Override di.xml
app/code/Namespace/Modulename/etc
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="MagentoQuoteModelPaymentMethodManagement" type="NamespaceModulenamePaymentMethodManagement" />
</config>
Override PaymentMethodManagement.php
/**
* {@inheritdoc}
*/
public function set($cartId, MagentoQuoteApiDataPaymentInterface $method)
{
/** @var MagentoQuoteModelQuote $quote */
$quote = $this->quoteRepository->get($cartId);
$method->setChecks([
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_CHECKOUT,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_COUNTRY,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_CURRENCY,
MagentoPaymentModelMethodAbstractMethod::CHECK_ORDER_TOTAL_MIN_MAX,
]);
$payment = $quote->getPayment();
$data = $method->getData();
$payment->importData($data);
if ($quote->isVirtual()) {
$quote->getBillingAddress()->setPaymentMethod($payment->getMethod());
} else {
// check if shipping address is set
if ($quote->getShippingAddress()->getCountryId() === null) {
throw new InvalidTransitionException(__('Shipping address is not set'));
}
$quote->getShippingAddress()->setPaymentMethod($payment->getMethod());
}
if (!$quote->isVirtual() && $quote->getShippingAddress()) {
$quote->getShippingAddress()->setCollectShippingRates(true);
}
/*** Do stuff with this code ***/
if (!$this->zeroTotalValidator->isApplicable($payment->getMethodInstance(), $quote)) {
throw new InvalidTransitionException(__(''));
}
/*** Do stuff with this code ***/
$quote->setTotalsCollectedFlag(false)->collectTotals()->save();
return $quote->getPayment()->getId();
}
Launch SSH and Run Commands
php bin/magento setup:di:compile
php bin/magento cache:clean
php bin/magento cache:flush
I hope it helps!
add a comment |
in you etc/di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="MagentoQuoteModelPaymentMethodManagement" type="VendorModuleModelRewriteQuotePaymentMethodManagement" />
</config>
in your Model file
<?php
namespace VendorModuleModelRewriteQuote;
class PaymentMethodManagement extends MagentoQuoteModelPaymentMethodManagement
{
public function set($cartId, MagentoQuoteApiDataPaymentInterface $method)
{
/** @var MagentoQuoteModelQuote $quote */
$quote = $this->quoteRepository->get($cartId);
$method->setChecks([
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_CHECKOUT,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_COUNTRY,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_CURRENCY,
MagentoPaymentModelMethodAbstractMethod::CHECK_ORDER_TOTAL_MIN_MAX,
]);
$payment = $quote->getPayment();
$data = $method->getData();
$payment->importData($data);
if ($quote->isVirtual()) {
$quote->getBillingAddress()->setPaymentMethod($payment->getMethod());
} else {
// check if shipping address is set
if ($quote->getShippingAddress()->getCountryId() === null) {
throw new InvalidTransitionException(__('Shipping address is not set'));
}
$quote->getShippingAddress()->setPaymentMethod($payment->getMethod());
}
if (!$quote->isVirtual() && $quote->getShippingAddress()) {
$quote->getShippingAddress()->setCollectShippingRates(true);
}
/*** Do stuff with this code ***/
if (!$this->zeroTotalValidator->isApplicable($payment->getMethodInstance(), $quote)) {
throw new InvalidTransitionException(__(''));
}
/*** Do stuff with this code ***/
$quote->setTotalsCollectedFlag(false)->collectTotals()->save();
return $quote->getPayment()->getId();
}
}
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "479"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f270381%2fhow-to-override-model-in-magento2%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
You can do it by using Preference in your di.xml file of your custom module.
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="MagentoQuoteModelPaymentMethodManagement" type="vendormoduleModelPaymentMethodManagement" />
</config>
add a comment |
You can do it by using Preference in your di.xml file of your custom module.
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="MagentoQuoteModelPaymentMethodManagement" type="vendormoduleModelPaymentMethodManagement" />
</config>
add a comment |
You can do it by using Preference in your di.xml file of your custom module.
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="MagentoQuoteModelPaymentMethodManagement" type="vendormoduleModelPaymentMethodManagement" />
</config>
You can do it by using Preference in your di.xml file of your custom module.
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="MagentoQuoteModelPaymentMethodManagement" type="vendormoduleModelPaymentMethodManagement" />
</config>
answered 1 hour ago
magefmsmagefms
2,7152528
2,7152528
add a comment |
add a comment |
Steps to Follow :
- Override di.xml
- Override PaymentMethodManagement.php
- Launch SSH and Run Commands
Override di.xml
app/code/Namespace/Modulename/etc
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="MagentoQuoteModelPaymentMethodManagement" type="NamespaceModulenamePaymentMethodManagement" />
</config>
Override PaymentMethodManagement.php
/**
* {@inheritdoc}
*/
public function set($cartId, MagentoQuoteApiDataPaymentInterface $method)
{
/** @var MagentoQuoteModelQuote $quote */
$quote = $this->quoteRepository->get($cartId);
$method->setChecks([
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_CHECKOUT,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_COUNTRY,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_CURRENCY,
MagentoPaymentModelMethodAbstractMethod::CHECK_ORDER_TOTAL_MIN_MAX,
]);
$payment = $quote->getPayment();
$data = $method->getData();
$payment->importData($data);
if ($quote->isVirtual()) {
$quote->getBillingAddress()->setPaymentMethod($payment->getMethod());
} else {
// check if shipping address is set
if ($quote->getShippingAddress()->getCountryId() === null) {
throw new InvalidTransitionException(__('Shipping address is not set'));
}
$quote->getShippingAddress()->setPaymentMethod($payment->getMethod());
}
if (!$quote->isVirtual() && $quote->getShippingAddress()) {
$quote->getShippingAddress()->setCollectShippingRates(true);
}
/*** Do stuff with this code ***/
if (!$this->zeroTotalValidator->isApplicable($payment->getMethodInstance(), $quote)) {
throw new InvalidTransitionException(__(''));
}
/*** Do stuff with this code ***/
$quote->setTotalsCollectedFlag(false)->collectTotals()->save();
return $quote->getPayment()->getId();
}
Launch SSH and Run Commands
php bin/magento setup:di:compile
php bin/magento cache:clean
php bin/magento cache:flush
I hope it helps!
add a comment |
Steps to Follow :
- Override di.xml
- Override PaymentMethodManagement.php
- Launch SSH and Run Commands
Override di.xml
app/code/Namespace/Modulename/etc
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="MagentoQuoteModelPaymentMethodManagement" type="NamespaceModulenamePaymentMethodManagement" />
</config>
Override PaymentMethodManagement.php
/**
* {@inheritdoc}
*/
public function set($cartId, MagentoQuoteApiDataPaymentInterface $method)
{
/** @var MagentoQuoteModelQuote $quote */
$quote = $this->quoteRepository->get($cartId);
$method->setChecks([
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_CHECKOUT,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_COUNTRY,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_CURRENCY,
MagentoPaymentModelMethodAbstractMethod::CHECK_ORDER_TOTAL_MIN_MAX,
]);
$payment = $quote->getPayment();
$data = $method->getData();
$payment->importData($data);
if ($quote->isVirtual()) {
$quote->getBillingAddress()->setPaymentMethod($payment->getMethod());
} else {
// check if shipping address is set
if ($quote->getShippingAddress()->getCountryId() === null) {
throw new InvalidTransitionException(__('Shipping address is not set'));
}
$quote->getShippingAddress()->setPaymentMethod($payment->getMethod());
}
if (!$quote->isVirtual() && $quote->getShippingAddress()) {
$quote->getShippingAddress()->setCollectShippingRates(true);
}
/*** Do stuff with this code ***/
if (!$this->zeroTotalValidator->isApplicable($payment->getMethodInstance(), $quote)) {
throw new InvalidTransitionException(__(''));
}
/*** Do stuff with this code ***/
$quote->setTotalsCollectedFlag(false)->collectTotals()->save();
return $quote->getPayment()->getId();
}
Launch SSH and Run Commands
php bin/magento setup:di:compile
php bin/magento cache:clean
php bin/magento cache:flush
I hope it helps!
add a comment |
Steps to Follow :
- Override di.xml
- Override PaymentMethodManagement.php
- Launch SSH and Run Commands
Override di.xml
app/code/Namespace/Modulename/etc
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="MagentoQuoteModelPaymentMethodManagement" type="NamespaceModulenamePaymentMethodManagement" />
</config>
Override PaymentMethodManagement.php
/**
* {@inheritdoc}
*/
public function set($cartId, MagentoQuoteApiDataPaymentInterface $method)
{
/** @var MagentoQuoteModelQuote $quote */
$quote = $this->quoteRepository->get($cartId);
$method->setChecks([
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_CHECKOUT,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_COUNTRY,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_CURRENCY,
MagentoPaymentModelMethodAbstractMethod::CHECK_ORDER_TOTAL_MIN_MAX,
]);
$payment = $quote->getPayment();
$data = $method->getData();
$payment->importData($data);
if ($quote->isVirtual()) {
$quote->getBillingAddress()->setPaymentMethod($payment->getMethod());
} else {
// check if shipping address is set
if ($quote->getShippingAddress()->getCountryId() === null) {
throw new InvalidTransitionException(__('Shipping address is not set'));
}
$quote->getShippingAddress()->setPaymentMethod($payment->getMethod());
}
if (!$quote->isVirtual() && $quote->getShippingAddress()) {
$quote->getShippingAddress()->setCollectShippingRates(true);
}
/*** Do stuff with this code ***/
if (!$this->zeroTotalValidator->isApplicable($payment->getMethodInstance(), $quote)) {
throw new InvalidTransitionException(__(''));
}
/*** Do stuff with this code ***/
$quote->setTotalsCollectedFlag(false)->collectTotals()->save();
return $quote->getPayment()->getId();
}
Launch SSH and Run Commands
php bin/magento setup:di:compile
php bin/magento cache:clean
php bin/magento cache:flush
I hope it helps!
Steps to Follow :
- Override di.xml
- Override PaymentMethodManagement.php
- Launch SSH and Run Commands
Override di.xml
app/code/Namespace/Modulename/etc
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="MagentoQuoteModelPaymentMethodManagement" type="NamespaceModulenamePaymentMethodManagement" />
</config>
Override PaymentMethodManagement.php
/**
* {@inheritdoc}
*/
public function set($cartId, MagentoQuoteApiDataPaymentInterface $method)
{
/** @var MagentoQuoteModelQuote $quote */
$quote = $this->quoteRepository->get($cartId);
$method->setChecks([
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_CHECKOUT,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_COUNTRY,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_CURRENCY,
MagentoPaymentModelMethodAbstractMethod::CHECK_ORDER_TOTAL_MIN_MAX,
]);
$payment = $quote->getPayment();
$data = $method->getData();
$payment->importData($data);
if ($quote->isVirtual()) {
$quote->getBillingAddress()->setPaymentMethod($payment->getMethod());
} else {
// check if shipping address is set
if ($quote->getShippingAddress()->getCountryId() === null) {
throw new InvalidTransitionException(__('Shipping address is not set'));
}
$quote->getShippingAddress()->setPaymentMethod($payment->getMethod());
}
if (!$quote->isVirtual() && $quote->getShippingAddress()) {
$quote->getShippingAddress()->setCollectShippingRates(true);
}
/*** Do stuff with this code ***/
if (!$this->zeroTotalValidator->isApplicable($payment->getMethodInstance(), $quote)) {
throw new InvalidTransitionException(__(''));
}
/*** Do stuff with this code ***/
$quote->setTotalsCollectedFlag(false)->collectTotals()->save();
return $quote->getPayment()->getId();
}
Launch SSH and Run Commands
php bin/magento setup:di:compile
php bin/magento cache:clean
php bin/magento cache:flush
I hope it helps!
answered 1 hour ago
Chirag PatelChirag Patel
2,583423
2,583423
add a comment |
add a comment |
in you etc/di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="MagentoQuoteModelPaymentMethodManagement" type="VendorModuleModelRewriteQuotePaymentMethodManagement" />
</config>
in your Model file
<?php
namespace VendorModuleModelRewriteQuote;
class PaymentMethodManagement extends MagentoQuoteModelPaymentMethodManagement
{
public function set($cartId, MagentoQuoteApiDataPaymentInterface $method)
{
/** @var MagentoQuoteModelQuote $quote */
$quote = $this->quoteRepository->get($cartId);
$method->setChecks([
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_CHECKOUT,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_COUNTRY,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_CURRENCY,
MagentoPaymentModelMethodAbstractMethod::CHECK_ORDER_TOTAL_MIN_MAX,
]);
$payment = $quote->getPayment();
$data = $method->getData();
$payment->importData($data);
if ($quote->isVirtual()) {
$quote->getBillingAddress()->setPaymentMethod($payment->getMethod());
} else {
// check if shipping address is set
if ($quote->getShippingAddress()->getCountryId() === null) {
throw new InvalidTransitionException(__('Shipping address is not set'));
}
$quote->getShippingAddress()->setPaymentMethod($payment->getMethod());
}
if (!$quote->isVirtual() && $quote->getShippingAddress()) {
$quote->getShippingAddress()->setCollectShippingRates(true);
}
/*** Do stuff with this code ***/
if (!$this->zeroTotalValidator->isApplicable($payment->getMethodInstance(), $quote)) {
throw new InvalidTransitionException(__(''));
}
/*** Do stuff with this code ***/
$quote->setTotalsCollectedFlag(false)->collectTotals()->save();
return $quote->getPayment()->getId();
}
}
add a comment |
in you etc/di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="MagentoQuoteModelPaymentMethodManagement" type="VendorModuleModelRewriteQuotePaymentMethodManagement" />
</config>
in your Model file
<?php
namespace VendorModuleModelRewriteQuote;
class PaymentMethodManagement extends MagentoQuoteModelPaymentMethodManagement
{
public function set($cartId, MagentoQuoteApiDataPaymentInterface $method)
{
/** @var MagentoQuoteModelQuote $quote */
$quote = $this->quoteRepository->get($cartId);
$method->setChecks([
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_CHECKOUT,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_COUNTRY,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_CURRENCY,
MagentoPaymentModelMethodAbstractMethod::CHECK_ORDER_TOTAL_MIN_MAX,
]);
$payment = $quote->getPayment();
$data = $method->getData();
$payment->importData($data);
if ($quote->isVirtual()) {
$quote->getBillingAddress()->setPaymentMethod($payment->getMethod());
} else {
// check if shipping address is set
if ($quote->getShippingAddress()->getCountryId() === null) {
throw new InvalidTransitionException(__('Shipping address is not set'));
}
$quote->getShippingAddress()->setPaymentMethod($payment->getMethod());
}
if (!$quote->isVirtual() && $quote->getShippingAddress()) {
$quote->getShippingAddress()->setCollectShippingRates(true);
}
/*** Do stuff with this code ***/
if (!$this->zeroTotalValidator->isApplicable($payment->getMethodInstance(), $quote)) {
throw new InvalidTransitionException(__(''));
}
/*** Do stuff with this code ***/
$quote->setTotalsCollectedFlag(false)->collectTotals()->save();
return $quote->getPayment()->getId();
}
}
add a comment |
in you etc/di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="MagentoQuoteModelPaymentMethodManagement" type="VendorModuleModelRewriteQuotePaymentMethodManagement" />
</config>
in your Model file
<?php
namespace VendorModuleModelRewriteQuote;
class PaymentMethodManagement extends MagentoQuoteModelPaymentMethodManagement
{
public function set($cartId, MagentoQuoteApiDataPaymentInterface $method)
{
/** @var MagentoQuoteModelQuote $quote */
$quote = $this->quoteRepository->get($cartId);
$method->setChecks([
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_CHECKOUT,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_COUNTRY,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_CURRENCY,
MagentoPaymentModelMethodAbstractMethod::CHECK_ORDER_TOTAL_MIN_MAX,
]);
$payment = $quote->getPayment();
$data = $method->getData();
$payment->importData($data);
if ($quote->isVirtual()) {
$quote->getBillingAddress()->setPaymentMethod($payment->getMethod());
} else {
// check if shipping address is set
if ($quote->getShippingAddress()->getCountryId() === null) {
throw new InvalidTransitionException(__('Shipping address is not set'));
}
$quote->getShippingAddress()->setPaymentMethod($payment->getMethod());
}
if (!$quote->isVirtual() && $quote->getShippingAddress()) {
$quote->getShippingAddress()->setCollectShippingRates(true);
}
/*** Do stuff with this code ***/
if (!$this->zeroTotalValidator->isApplicable($payment->getMethodInstance(), $quote)) {
throw new InvalidTransitionException(__(''));
}
/*** Do stuff with this code ***/
$quote->setTotalsCollectedFlag(false)->collectTotals()->save();
return $quote->getPayment()->getId();
}
}
in you etc/di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="MagentoQuoteModelPaymentMethodManagement" type="VendorModuleModelRewriteQuotePaymentMethodManagement" />
</config>
in your Model file
<?php
namespace VendorModuleModelRewriteQuote;
class PaymentMethodManagement extends MagentoQuoteModelPaymentMethodManagement
{
public function set($cartId, MagentoQuoteApiDataPaymentInterface $method)
{
/** @var MagentoQuoteModelQuote $quote */
$quote = $this->quoteRepository->get($cartId);
$method->setChecks([
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_CHECKOUT,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_COUNTRY,
MagentoPaymentModelMethodAbstractMethod::CHECK_USE_FOR_CURRENCY,
MagentoPaymentModelMethodAbstractMethod::CHECK_ORDER_TOTAL_MIN_MAX,
]);
$payment = $quote->getPayment();
$data = $method->getData();
$payment->importData($data);
if ($quote->isVirtual()) {
$quote->getBillingAddress()->setPaymentMethod($payment->getMethod());
} else {
// check if shipping address is set
if ($quote->getShippingAddress()->getCountryId() === null) {
throw new InvalidTransitionException(__('Shipping address is not set'));
}
$quote->getShippingAddress()->setPaymentMethod($payment->getMethod());
}
if (!$quote->isVirtual() && $quote->getShippingAddress()) {
$quote->getShippingAddress()->setCollectShippingRates(true);
}
/*** Do stuff with this code ***/
if (!$this->zeroTotalValidator->isApplicable($payment->getMethodInstance(), $quote)) {
throw new InvalidTransitionException(__(''));
}
/*** Do stuff with this code ***/
$quote->setTotalsCollectedFlag(false)->collectTotals()->save();
return $quote->getPayment()->getId();
}
}
edited 53 mins ago
answered 1 hour ago
Rakesh DongaRakesh Donga
2,586317
2,586317
add a comment |
add a comment |
Thanks for contributing an answer to Magento Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f270381%2fhow-to-override-model-in-magento2%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown