Magento欧盟增值税验证失败,未应用客户组更改


Magento EU VAT tax validation fails, customer group change not applied

我们公司已注册增值税,并在提供有效增值税编号的情况下从欧盟B2B销售中删除增值税。Magento版本为1.9,其中包括对此税务问题的支持,一旦验证了增值税编号,就会自动分配客户组。

最初有一个问题,Magento显示了两个增值税号码输入表的实例,其中一个有效,另一个无效,因此结果不可靠。随后,我隐藏了增值税表格,该表格不起作用,看起来一切正常。如果客户没有阅读从增值税号码中删除国家代码的说明,仍然存在问题,这会阻止验证增值税号码,但总的来说,它是有效的。最近,欧盟增值税注册客户的增值税尚未取消,即使手动将客户帐户组调整为增值税豁免组也未取消增值税。

似乎没有根据适当的增值税数据库检查增值税编号。我们已经尝试使用我们所知道的有效增值税号码,但出现错误"您的税务ID无法验证。如果您认为这是一个错误,请通过[电子邮件地址]与我们联系"

据推测,每个使用欧盟增值税规则功能的人都有同样的问题,也许原因很简单,比如超链接被更改,但搜索没有发现其他类似的问题。

有人能告诉我增值税检查和授权的代码在马根托的哪里吗?

提前感谢您的帮助。RobH

Magento内部有两个增值税ID字段。第一个与客户实体有关,不会根据增值税验证服务"VIES"进行检查。它只有一些信息特征,但不受客户群分配的影响。

第二个增值税ID字段与客户地址实体相关,将根据VIES服务进行检查。如果增值税ID有效,您的客户将被分配到您定义的客户组(例如"有效增值税ID"等)。重要信息:Magento不接受带有国家代码前缀的增值税ID。例如,"ATU69014309"不是Magento的有效税务ID。相反,没有国家前缀"U69014309"的增值税ID是有效的。如果扩展Mage_Customer_Helper_Data类的以下方法,您可以很容易地解决此问题:

/**
 * Send request to VAT validation service and return validation result
 *
 * @param string $countryCode
 * @param string $vatNumber
 * @param string $requesterCountryCode
 * @param string $requesterVatNumber
 *
 * @return Varien_Object
 */
public function checkVatNumber($countryCode, $vatNumber, $requesterCountryCode = '', $requesterVatNumber = '')
{
    // Remove the country code prefix from the vat number
    $vatNumber = preg_replace("/^[a-z]{2}/i", "", $vatNumber); 
    ...

同样重要的是:用户在地址内结账时输入的增值税ID也将被忽略(已知的Magento问题)。

谨致问候,Robert

我必须安装php_soap扩展才能正常工作。

使用以下命令在PHP7上安装php_soap:

sudo apt install php7.0-soap

在php.ini中查找extension=php_soap.dll并删除分号(;)

使用重新启动Web服务器

sudo systemctl restart apache2.service