【问题标题】:Magento EU VAT tax validation fails, customer group change not appliedMagento 欧盟增值税税验证失败,未应用客户组更改
【发布时间】:2015-03-06 17:25:47
【问题描述】:

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

最初存在一个问题,即 Magento 显示了增值税号输入表单的两个实例,其中一个有效,另一个无效,因此结果不可靠。随后,我隐藏了不起作用的增值税表格,而且一切似乎都正常工作。如果客户没有阅读从增值税号中删除国家/地区代码的说明,仍然存在问题,这会阻止验证增值税号,但总体而言它是有效的。 近期,EU VAT reg 客户的增值税并没有取消,即使手动将客户帐户组调整为增值税豁免组也没有取消增值税。

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

大概每个使用欧盟增值税规则功能的人都遇到了同样的问题,也许只是因为更改了超链接这样简单的问题,但搜索并没有发现其他最近的类似问题。

有人能告诉我在 Magento 的哪个地方保存增值税检查和授权的代码吗?

提前感谢您的帮助。 罗布H

【问题讨论】:

    标签: php validation magento


    【解决方案1】:

    Magento 中的增值税 ID 有 2 个字段。第一个与客户实体相关,不会根据增值税验证服务“VIES”进行检查。它只有一些信息特征,但对客户群分配没有影响。

    第二个增值税 ID 字段与客户地址实体相关,将根据 VIES 服务对其进行检查。如果增值税号有效,您的客户将被分配到您定义的客户组(例如“有效增值税号”等)。重要提示:Magento 不接受带有国家代码前缀的增值税 ID。例如。 “ATU69014309”不是 Magento 的有效 TAX 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 问题)。

    亲切的问候, 罗伯特

    【讨论】:

    • 非常感谢您的详细回复。我会测试你建议的编辑,看起来它会解决很多问题。尽管我已经编辑了文本以指示客户删除前导字母字符,但很明显一些非英语使用者不理解。我花了一些时间查看缺少授权,这主要是因为 SOAP 在我的 Web 服务器上没有处于活动状态。我认为这不是问题,因为许多 SOAP 服务都在工作。大概区别在于 SOAP 客户端/服务器?最好的问候,
    • 有没有办法在结账前立即取消税并显示总数。当用户输入增值税号时,如果你能给出正确答案,我会加赏金stackoverflow.com/questions/41646407/…谢谢
    【解决方案2】:

    我必须安装 php_soap 扩展才能让它工作。

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

    sudo apt install php7.0-soap

    在php.ini中找到extension=php_soap.dll,去掉分号(;)

    使用

    重启网络服务器

    sudo systemctl restart apache2.service

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-02
      相关资源
      最近更新 更多