Open tprocter-ldg opened 7 years ago
Confirm
Hi there,
The issue seems to be that the totals are not recollected on address save.
I have implemented a work around for this issue as follows:
app/code/Vendor/Module/etc/di.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Customer\Model\Address">
<plugin name="limitless_recollect_totals" type="Vendor\Module\Plugin\RecollectTotalsPlugin" />
</type>
</config>
app/code/Vendor/Module/Plugin/RecollectTotalsPlugin.php
<?php
namespace Vender\Module\Plugin;
use Magento\Checkout\Model\Session;
use Magento\Customer\Model\Address;
class RecollectTotalsPlugin
{
/**
* @var \Magento\Checkout\Model\Session
*/
private $checkoutSession;
public function __construct(Session $checkoutSession)
{
$this->checkoutSession = $checkoutSession;
}
public function afterSave(Address $subject, $result)
{
$quote = $this->checkoutSession->getQuote();
$quote->setTriggerRecollect(true);
$quote->getResource()->save($quote);
return $result;
}
}
app/code/Vendor/Module/etc/frontend/sections.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Customer:etc/sections.xsd">
<action name="customer/address/formPost">
<section name="cart"/>
<section name="checkout-data"/>
</action>
</config>
I have also added a preference for Magento\Tax\Model\Calculation.php and have overridden the getRateRequest() method. In here I have removed the following outer if statement only, as the $customerTaxClass is always populated and so will never be reset:
if ($customerTaxClass === null || $customerTaxClass === false) { ...
Thanks to @Vinai for his assistance with this one! :)
@tprocter-ldg want to make the fix a part of core maybe? :)
If not, we probably need a process to make bugs with known fixes as 'up for grabs'
.
Will do @orlangur :)
@tprocter-ldg, thank you for research. Could you please submit pull request with your fix?
@tprocter-ldg, thank you for your report. We were not able to reproduce this issue by following the steps you provided. Please provide more details of your site settings, or try to reproduce this issue on a clean installation.
Hi @tprocter-ldg Please post pull request here: https://github.com/magento/magento2/pulls So that it can be processed.
@tprocter-ldg, thank you for your report. We've created internal ticket(s) MAGETWO-81672 to track progress on the issue.
Hi @engcom-Delta. Thank you for working on this issue. Looks like this issue is already verified and confirmed. But if you want to validate it one more time, please, go though the following instruction:
Area: XXXXX
label to the ticket, indicating the functional areas it may be related to.2.4-develop
branch@magento give me 2.4-develop instance
to deploy test instance on Magento infrastructure. 2.4-develop
branch, please, add the label Reproduced on 2.4.x
.
Cart/Minicart not updating prices when Zero VAT customer group is assigned when logged in, until you go through to the billing step of checkout and then go back to update the cart.
Preconditions
VAT SETUP All VAT codes are supplied without the country prefix. Stores > Taxes > Tax Rules > Add New Tax Rule Tax Rule Information Name: Zero VAT Tax Rate: Click ‘Add New Tax Rate’
Additional Settings Customer Tax Class: Click ‘Add New Tax Class’
Stores > Taxes > Tax Zones and Rates > Add New Tax Rate Tax Identifier: Zero VAT Zip/Post is Range: unticked Zip/Post Code: State: Country: Spain Rate Percent: 0.00
Stores > Other Settings > Customer Groups > Add New Customer Group Group Name: Zero VAT Customer Group Tax Class: Zero VAT Customer
Stores > Configuration > Customers > Customer Configuration > CHANGE SCOPE TO SPANISH WEBSITE LEVEL > Create New Account Options
Stores > Configuration > Sales > Tax
Steps to reproduce
Product example being used:
Including VAT price 447,00 €
Excluding VAT price 369,42 €
Go to the frontend as a guest and add an item to your basket.
Minicart shows product as 447,00 €
Go to login as a new customer.
Add your address & vat number when prompted (default functionality).
You should receive the 'Your vat id has been successfully validated. You will not be charged tax' message. At this point you are assigned the Zero VAT customer group.
Go back to the frontend and notice that all the prices in the category and product pages are now showing the VAT discount.
Go to the cart and/or the minicart to view the product you added prior to registration
Expected result
Actual result