account_usability: add blocked on account.move
This commit is contained in:
@@ -40,6 +40,34 @@ class AccountMove(models.Model):
|
|||||||
compute="_compute_sales_dates", readonly=True,
|
compute="_compute_sales_dates", readonly=True,
|
||||||
help="This information appear on invoice qweb report "
|
help="This information appear on invoice qweb report "
|
||||||
"(you may use it for your own report)")
|
"(you may use it for your own report)")
|
||||||
|
# There is a native "blocked" field (bool) on account.move.line
|
||||||
|
# We want to have that field on invoices to improve usability
|
||||||
|
# while keeping compatibility with the standard Odoo datamodel
|
||||||
|
blocked = fields.Boolean(
|
||||||
|
compute="_compute_blocked",
|
||||||
|
inverse="_inverse_blocked",
|
||||||
|
store=True,
|
||||||
|
string="Dispute",
|
||||||
|
tracking=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
@api.depends("line_ids", "line_ids.blocked")
|
||||||
|
def _compute_blocked(self):
|
||||||
|
for move in self:
|
||||||
|
move.blocked = any(
|
||||||
|
[
|
||||||
|
l.blocked
|
||||||
|
for l in move.line_ids
|
||||||
|
if l.account_id.internal_type in ("payable", "receivable")
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
def _inverse_blocked(self):
|
||||||
|
for move in self:
|
||||||
|
for line in move.line_ids.filtered(
|
||||||
|
lambda l: l.account_id.internal_type in ("payable", "receivable")
|
||||||
|
):
|
||||||
|
line.blocked = move.blocked
|
||||||
|
|
||||||
def _compute_has_discount(self):
|
def _compute_has_discount(self):
|
||||||
prec = self.env['decimal.precision'].precision_get('Discount')
|
prec = self.env['decimal.precision'].precision_get('Discount')
|
||||||
|
|||||||
@@ -47,6 +47,9 @@
|
|||||||
<xpath expr="//field[@name='invoice_line_ids']/tree/field[@name='product_id']" position="after">
|
<xpath expr="//field[@name='invoice_line_ids']/tree/field[@name='product_id']" position="after">
|
||||||
<field name="product_barcode" optional="hide"/>
|
<field name="product_barcode" optional="hide"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
<field name="auto_post" position="before">
|
||||||
|
<field name="blocked"/>
|
||||||
|
</field>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
@@ -81,6 +84,23 @@
|
|||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
<record id="view_move_line_form" model="ir.ui.view">
|
||||||
|
<field name="model">account.move.line</field>
|
||||||
|
<field name="inherit_id" ref="account.view_move_line_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<!-- The field 'blocked' is alone in it's block
|
||||||
|
We don't want to display an empty block, so we put the attrs on the group
|
||||||
|
The drawback of this is that, if someone added a field in that group,
|
||||||
|
he won't see the field when internal_type is not payable/receivable -->
|
||||||
|
<xpath expr="//field[@name='blocked']/.." position="attributes">
|
||||||
|
<attribute name="attrs">{'invisible': [('account_internal_type', 'not in', ('payable', 'receivable'))]}</attribute>
|
||||||
|
</xpath>
|
||||||
|
<field name="company_id" position="after">
|
||||||
|
<field name="account_internal_type" invisible="1"/>
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
<record id="view_move_line_tree" model="ir.ui.view">
|
<record id="view_move_line_tree" model="ir.ui.view">
|
||||||
<field name="model">account.move.line</field>
|
<field name="model">account.move.line</field>
|
||||||
<field name="inherit_id" ref="account.view_move_line_tree"/>
|
<field name="inherit_id" ref="account.view_move_line_tree"/>
|
||||||
|
|||||||
Reference in New Issue
Block a user