2
0

account_fiscal_position_vat_check: warning banner

A yellow warning banner is now displayed on the partner form view when
the fiscal position requires a VAT number and the VAT number is missing.
This banner replaces the warning message triggered by the onchange.

Improve README of the module with v14 screenshots.
This commit is contained in:
Alexis de Lattre 2022-06-02 17:06:57 +02:00 committed by syera bonneaux
parent 470286c4f6
commit f2463936bd
11 changed files with 64 additions and 23 deletions

View File

@ -13,6 +13,7 @@
"depends": ["account", "base_vat"],
"data": [
"views/account_fiscal_position.xml",
"views/res_partner.xml",
],
"installable": True,
}

View File

@ -1,28 +1,23 @@
# Copyright 2013-2020 Akretion France (https://akretion.com/)
# Copyright 2013-2022 Akretion France (https://akretion.com/)
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import _, api, models
from odoo import api, fields, models
class ResPartner(models.Model):
_inherit = "res.partner"
@api.onchange("property_account_position_id")
def fiscal_position_change(self):
"""Warning if the fiscal position requires a VAT number and the
partner doesn't have one yet"""
fp = self.property_account_position_id
if fp.vat_required and not self.vat:
return {
"warning": {
"title": _("Missing VAT number:"),
"message": _(
"You have set the fiscal position '%s' "
"that require customers to have a VAT number. "
"If you plan to use this partner as a customer, you "
"should add its VAT number."
show_warning_vat_required = fields.Boolean(
compute="_compute_show_warning_vat_required"
)
% fp.display_name,
}
}
@api.depends("property_account_position_id", "vat")
@api.depends_context("company")
def _compute_show_warning_vat_required(self):
for partner in self:
show = False
fp = partner.property_account_position_id
if fp and fp.vat_required and not partner.vat:
show = True
partner.show_warning_vat_required = show

View File

@ -1,3 +1,6 @@
To configure this module, go to the menu *Invoicing > Configuration > Accounting
> Fiscal Positions* and enable the option **VAT Required** on the relevant
fiscal positions.
.. figure:: static/description/fiscal_position_form.png
:alt: Fiscal Position form view

View File

@ -2,6 +2,9 @@ With this module, when a user tries to validate a customer invoice or refund
with a fiscal position that requires VAT, Odoo blocks the validation of the invoice
if the customer doesn't have a VAT number in Odoo.
.. figure:: static/description/vat_check_invoice_validation.png
:alt: Error upon customer invoice validation
In the European Union (EU), when an EU company sends an invoice to
another EU company in another country, it can invoice without VAT
(most of the time) but the VAT number of the customer must be displayed

View File

@ -1,3 +1,6 @@
On the partner form view, Odoo will display a warning when a user sets
a fiscal position that has the option **VAT Required** on a partner
that doesn't have a VAT number yet.
On the partner form view, Odoo will display a yellow warning banner
when the partner has a fiscal position that has the option **VAT Required**
but its VAT number is not set.
.. figure:: static/description/warning_banner_vat_required.png
:alt: Warning Banner on partner form view

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright 2022 Akretion France (http://www.akretion.com/)
@author: Alexis de Lattre <alexis.delattre@akretion.com>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-->
<odoo>
<record id="view_partner_property_form" model="ir.ui.view">
<field name="model">res.partner</field>
<field name="inherit_id" ref="account.view_partner_property_form" />
<field
name="groups_id"
eval="[(4, ref('account.group_account_invoice')), (4, ref('account.group_account_readonly'))]"
/>
<field name="arch" type="xml">
<div role="alert" position="after">
<div
class="alert alert-warning"
role="alert"
attrs="{'invisible': [('show_warning_vat_required', '=', False)]}"
>
<b>Missing VAT number</b>: this partner has the fiscal position <em
><field
name="property_account_position_id"
readonly="1"
/></em> that require to know the VAT number of the partner.
</div>
</div>
<group name="fiscal_information" position="inside">
<field name="show_warning_vat_required" invisible="1" />
</group>
</field>
</record>
</odoo>