[FIX] account: analytic default + add test
* Analytic defaults keep their old value * The date_maturity is non-sense, it isn't set on lines needing analytic * Analytic default should work for misc. operations too, but only for product/service lines on invoice documents. closes odoo/odoo#60904 X-original-commit: 4d2b8dd1bef40c592215728fab6c31f192176e93 Signed-off-by: Laurent Smet <smetl@users.noreply.github.com> Signed-off-by: wan <william-andre@users.noreply.github.com>
This commit is contained in:
@@ -1665,7 +1665,8 @@ class AccountMove(models.Model):
|
||||
# Which is wrong in some case
|
||||
# It's better to set the account_id before the partner_id
|
||||
# Ensure related fields are well copied.
|
||||
line.partner_id = self.partner_id.commercial_partner_id
|
||||
if line.partner_id != self.partner_id.commercial_partner_id:
|
||||
line.partner_id = self.partner_id.commercial_partner_id
|
||||
line.date = self.date
|
||||
line.recompute_tax_line = True
|
||||
line.currency_id = self.currency_id
|
||||
@@ -3097,18 +3098,16 @@ class AccountMoveLine(models.Model):
|
||||
return self.product_id.uom_id
|
||||
return False
|
||||
|
||||
@api.depends('product_id', 'account_id', 'partner_id', 'date_maturity')
|
||||
@api.depends('product_id', 'account_id', 'partner_id', 'date')
|
||||
def _compute_analytic_account(self):
|
||||
for record in self:
|
||||
record.analytic_account_id = (record._origin or record).analytic_account_id
|
||||
record.analytic_tag_ids = (record._origin or record).analytic_tag_ids
|
||||
if not record.exclude_from_invoice_tab:
|
||||
if not record.exclude_from_invoice_tab or not record.move_id.is_invoice(include_receipts=True):
|
||||
rec = self.env['account.analytic.default'].account_get(
|
||||
product_id=record.product_id.id,
|
||||
partner_id=record.partner_id.commercial_partner_id.id or record.move_id.partner_id.commercial_partner_id.id,
|
||||
account_id=record.account_id.id,
|
||||
user_id=record.env.uid,
|
||||
date=record.date_maturity,
|
||||
date=record.date,
|
||||
company_id=record.move_id.company_id.id
|
||||
)
|
||||
if rec:
|
||||
|
||||
@@ -1319,6 +1319,33 @@ class TestAccountMoveOutInvoiceOnchanges(AccountTestInvoicingCommon):
|
||||
},
|
||||
], self.move_vals)
|
||||
|
||||
def test_out_invoice_line_onchange_analytic_2(self):
|
||||
self.env.user.groups_id += self.env.ref('analytic.group_analytic_accounting')
|
||||
|
||||
analytic_account = self.env['account.analytic.account'].create({
|
||||
'name': 'test_analytic_account1',
|
||||
'code': 'TEST1'
|
||||
})
|
||||
|
||||
self.invoice.write({'invoice_line_ids': [(1, self.invoice.invoice_line_ids.ids[0], {
|
||||
'analytic_account_id': analytic_account.id,
|
||||
})]})
|
||||
|
||||
self.assertRecordValues(self.invoice.invoice_line_ids, [
|
||||
{'analytic_account_id': analytic_account.id},
|
||||
{'analytic_account_id': False},
|
||||
])
|
||||
|
||||
# We can remove the analytic account, it is not recomputed by an invalidation
|
||||
self.invoice.write({'invoice_line_ids': [(1, self.invoice.invoice_line_ids.ids[0], {
|
||||
'analytic_account_id': False,
|
||||
})]})
|
||||
|
||||
self.assertRecordValues(self.invoice.invoice_line_ids, [
|
||||
{'analytic_account_id': False},
|
||||
{'analytic_account_id': False},
|
||||
])
|
||||
|
||||
def test_out_invoice_line_onchange_cash_rounding_1(self):
|
||||
move_form = Form(self.invoice)
|
||||
# Add a cash rounding having 'add_invoice_line'.
|
||||
|
||||
Reference in New Issue
Block a user