[IMP] analytic,*: changes on applicability and make fields visible

Add choices for the business domain on applicability rules, so rules are more precise
Also put 'general' as domain from the view when it's what should have been.
Make analytic field visible since owl migration (for sale and purchase)

closes odoo/odoo#102461

X-original-commit: c5867d5009a7fb448fff1be487b9e9c3e7945d4b
Related: odoo/enterprise#32421
Signed-off-by: William André (wan) <wan@odoo.com>
Signed-off-by: Wala Gauthier (gawa) <gawa@odoo.com>
This commit is contained in:
gawa-odoo
2022-10-10 14:04:43 +02:00
parent 6a7a5eb516
commit ba4b71427f
14 changed files with 91 additions and 56 deletions
@@ -7,6 +7,16 @@ class AccountAnalyticApplicability(models.Model):
_inherit = 'account.analytic.applicability'
_description = "Analytic Plan's Applicabilities"
business_domain = fields.Selection(
selection_add=[
('invoice', 'Invoice'),
('bill', 'Vendor Bill'),
],
ondelete={
'invoice': 'cascade',
'bill': 'cascade',
},
)
account_prefix = fields.Char(
string='Financial Accounts Prefix',
help="Prefix that defines which accounts from the financial accounting this applicability should apply on.",
+2 -2
View File
@@ -886,7 +886,7 @@
groups="analytic.group_analytic_accounting"
optional="show"
options="{'product_field': 'product_id', 'account_field': 'account_id'}"
business_domain_compute="parent.move_type in ['out_invoice', 'out_refund', 'out_receipt'] and 'sale' or parent.move_type in ['in_invoice', 'in_refund', 'in_receipt'] and 'purchase' or 'general'"/>
business_domain_compute="parent.move_type in ['out_invoice', 'out_refund', 'out_receipt'] and 'invoice' or parent.move_type in ['in_invoice', 'in_refund', 'in_receipt'] and 'bill' or 'general'"/>
<field name="quantity" optional="show"/>
<field name="product_uom_category_id" invisible="1"/>
<field name="product_uom_id" string="UoM" groups="uom.group_uom" optional="show"/>
@@ -1057,7 +1057,7 @@
groups="analytic.group_analytic_accounting"
optional="show"
options="{'account_field': 'account_id'}"
business_domain_compute="parent.move_type in ['out_invoice', 'out_refund', 'out_receipt'] and 'sale' or parent.move_type in ['in_invoice', 'in_refund', 'in_receipt'] and 'purchase' or 'general'"/>
business_domain_compute="parent.move_type in ['out_invoice', 'out_refund', 'out_receipt'] and 'invoice' or parent.move_type in ['in_invoice', 'in_refund', 'in_receipt'] and 'bill' or 'general'"/>
<field name="date_maturity"
optional="hide"
invisible="context.get('view_no_maturity')"
@@ -24,11 +24,10 @@
<field name="show_force_tax_included" invisible="1"/>
<field name="force_tax_included"
attrs="{'invisible': [('show_force_tax_included', '=', False)]}" force_save="1"/>
<!-- TODO widget="analytic_distribution" -->
<field name="analytic_distribution_stored_char" invisible="1"/>
<field name="analytic_distribution" invisible="1" groups="analytic.group_analytic_accounting"
options="{'product_field': 'product_id', 'account_field': 'account_id'}"
business_domain_compute="parent.move_type in ['out_invoice', 'out_refund', 'out_receipt'] and 'sale' or parent.move_type in ['in_invoice', 'in_refund', 'in_receipt'] and 'purchase' or 'general'"/>
<field name="analytic_distribution" widget="analytic_distribution"
groups="analytic.group_analytic_accounting"
options="{'account_field': 'account_id', 'business_domain': 'general'}"/>
<field name="company_id" invisible="1"/>
</group>
<group>
@@ -247,11 +246,9 @@
widget="many2many_tags"
optional="hide"/>
<field name="analytic_distribution_stored_char" invisible="1"/>
<!-- TODO widget="analytic_distribution" -->
<field name="analytic_distribution"
invisible="1" groups="analytic.group_analytic_accounting"
options="{'product_field': 'product_id', 'account_field': 'account_id'}"
business_domain_compute="parent.move_type in ['out_invoice', 'out_refund', 'out_receipt'] and 'sale' or parent.move_type in ['in_invoice', 'in_refund', 'in_receipt'] and 'purchase' or 'general'"/>
<field name="analytic_distribution" widget="analytic_distribution"
groups="analytic.group_analytic_accounting"
options="{'account_field': 'account_id', 'business_domain': 'general'}"/>
<field name="force_tax_included"
widget="boolean_toggle"
attrs="{'invisible': [('show_force_tax_included', '=', False)]}"
-2
View File
@@ -198,8 +198,6 @@ class AccountAnalyticApplicability(models.Model):
analytic_plan_id = fields.Many2one('account.analytic.plan')
business_domain = fields.Selection(
selection=[
('sale', 'Sales'),
('purchase', 'Purchase'),
('general', 'Miscellaneous'),
],
required=True,
@@ -82,12 +82,12 @@ class TestAnalyticAccount(TransactionCase):
def test_get_plans_with_option(self):
""" Test the plans returned with applicability rules and options """
kwargs = {'business_domain': 'sale'}
kwargs = {'business_domain': 'general'}
plans_json = self.env['account.analytic.plan'].get_relevant_plans(**kwargs)
self.assertEqual(1, len(plans_json), "Only the Default plan should be available")
applicability = self.env['account.analytic.applicability'].create({
'business_domain': 'sale',
'business_domain': 'general',
'analytic_plan_id': self.analytic_plan_1.id,
'applicability': 'mandatory'
})
+1
View File
@@ -9,3 +9,4 @@ from . import product_template
from . import res_config_settings
from . import account_journal_dashboard
from . import res_company
from . import analytic
+16
View File
@@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class AccountAnalyticApplicability(models.Model):
_inherit = 'account.analytic.applicability'
_description = "Analytic Plan's Applicabilities"
business_domain = fields.Selection(
selection_add=[
('expense', 'Expense'),
],
ondelete={'expense': 'cascade'},
)
+5 -7
View File
@@ -59,7 +59,8 @@
<field name="analytic_distribution_stored_char" invisible="1"/>
<field name="analytic_distribution" widget="analytic_distribution"
optional="show"
groups="analytic.group_analytic_accounting"/>
groups="analytic.group_analytic_accounting"
options="{'product_field': 'product_id', 'business_domain': 'expense'}"/>
<field name="account_id" optional="hide" groups="account.group_account_readonly"/>
<field name="company_id" optional="show" groups="base.group_multi_company" readonly="1"/>
<field name="unit_amount_display" string="Unit Price" optional="hide" widget="monetary" options="{'currency_field': 'company_currency_id'}"/>
@@ -196,10 +197,8 @@
<field name="analytic_distribution_stored_char" invisible="1"/>
<field name="analytic_distribution" widget="analytic_distribution"
groups="analytic.group_analytic_accounting"
options="{'product_field': 'product_id', 'account_field': 'account_id'}"
business_domain_compute="'purchase'"
attrs="{'readonly': [('is_editable', '=', False)]}"
/>
options="{'product_field': 'product_id', 'account_field': 'account_id', 'business_domain': 'expense'}"
attrs="{'readonly': [('is_editable', '=', False)]}"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="employee_id" groups="hr_expense.group_hr_expense_team_approver" context="{'default_company_id': company_id}" widget="many2one_avatar_employee"/>
<label id="lo" for="payment_mode" attrs="{'invisible': [('product_has_cost', '=', True)]}"/>
@@ -758,8 +757,7 @@
<field name="analytic_distribution" widget="analytic_distribution"
groups="analytic.group_analytic_accounting"
optional="show"
options="{'product_field': 'product_id', 'account_field': 'account_id'}"
business_domain_compute="'purchase'"/>
options="{'product_field': 'product_id', 'account_field': 'account_id', 'business_domain': 'expense'}"/>
<field name="account_id" optional="hide" readonly="True"/>
<field name="product_has_cost" invisible="True"/>
<field name="unit_amount" optional="hide" widget="monetary" attrs="{'readonly': [('product_has_cost', '=', False)]}" options="{'currency_field': 'currency_id'}"/>
+1
View File
@@ -3,6 +3,7 @@
from . import account_invoice
from . import analytic_account
from . import analytic_applicability
from . import purchase
from . import product
from . import res_company
@@ -0,0 +1,15 @@
# -*- coding: utf-8 -*-
from odoo import fields, models
class AccountAnalyticApplicability(models.Model):
_inherit = 'account.analytic.applicability'
_description = "Analytic Plan's Applicabilities"
business_domain = fields.Selection(
selection_add=[
('purchase_order', 'Purchase Order'),
],
ondelete={'purchase_order': 'cascade'},
)
+9 -15
View File
@@ -238,12 +238,10 @@
<field name="name" widget="section_and_note_text"/>
<field name="date_planned" optional="hide" attrs="{'required': [('display_type', '=', False)]}" force_save="1"/>
<field name="analytic_distribution_stored_char" invisible="1"/>
<!-- TODO widget="analytic_distribution" -->
<field name="analytic_distribution"
optional="hide" invisible="1"
<field name="analytic_distribution" widget="analytic_distribution"
optional="hide"
groups="analytic.group_analytic_accounting"
options="{'product_field': 'product_id'}"
business_domain_compute="'purchase'"/>
options="{'product_field': 'product_id', 'business_domain': 'purchase_order'}"/>
<field name="product_qty"/>
<field name="qty_received_manual" invisible="1"/>
<field name="qty_received_method" invisible="1"/>
@@ -288,11 +286,9 @@
<group>
<field name="date_planned" widget="date" attrs="{'required': [('display_type', '=', False)]}"/>
<field name="analytic_distribution_stored_char" invisible="1"/>
<!-- TODO widget="analytic_distribution" -->
<field name="analytic_distribution"
groups="analytic.group_analytic_accounting" invisible="1"
options="{'product_field': 'product_id'}"
business_domain_compute="'purchase'"/>
<field name="analytic_distribution" widget="analytic_distribution"
groups="analytic.group_analytic_accounting"
options="{'product_field': 'product_id', 'business_domain': 'purchase_order'}"/>
</group>
<group colspan="12">
<notebook>
@@ -743,11 +739,9 @@
<field name="date_planned" widget="date" readonly="1"/>
<field name="company_id" groups="base.group_multi_company" options="{'no_create': True}"/>
<field name="analytic_distribution_stored_char" invisible="1"/>
<!-- TODO widget="analytic_distribution" -->
<field name="analytic_distribution"
groups="analytic.group_analytic_accounting" invisible="1"
options="{'product_field': 'product_id'}"
business_domain_compute="'purchase'"/>
<field name="analytic_distribution" widget="analytic_distribution"
groups="analytic.group_analytic_accounting"
options="{'product_field': 'product_id', 'business_domain': 'purchase_order'}"/>
</group>
</group>
<field name="name"/>
@@ -162,12 +162,10 @@
<field name="product_uom_id" string="UoM" groups="uom.group_uom" optional="show" attrs="{'required': [('product_id', '!=', False)]}"/>
<field name="schedule_date" optional="hide"/>
<field name="analytic_distribution_stored_char" invisible="1"/>
<!-- TODO widget="analytic_distribution" -->
<field name="analytic_distribution"
optional="hide" invisible="1"
<field name="analytic_distribution" widget="analytic_distribution"
optional="hide"
groups="analytic.group_analytic_accounting"
options="{'product_field': 'product_id'}"
business_domain_compute="'purchase'"/>
options="{'product_field': 'product_id', 'business_domain': 'purchase_order'}"/>
<field name="price_unit"/>
</tree>
<form string="Products">
@@ -180,11 +178,9 @@
<field name="product_uom_id" />
<field name="schedule_date"/>
<field name="analytic_distribution_stored_char" invisible="1"/>
<!-- TODO widget="analytic_distribution" -->
<field name="analytic_distribution"
groups="analytic.group_analytic_accounting" invisible="1"
options="{'product_field': 'product_id'}"
business_domain_compute="'purchase'"/>
<field name="analytic_distribution" widget="analytic_distribution"
groups="analytic.group_analytic_accounting"
options="{'product_field': 'product_id', 'business_domain': 'purchase_order'}"/>
<field name="company_id" groups="base.group_multi_company" options="{'no_create': True}"/>
</group>
</form>
+12
View File
@@ -14,3 +14,15 @@ class AccountAnalyticLine(models.Model):
return [('qty_delivered_method', '=', 'analytic')]
so_line = fields.Many2one('sale.order.line', string='Sales Order Item', domain=lambda self: self._default_sale_line_domain())
class AccountAnalyticApplicability(models.Model):
_inherit = 'account.analytic.applicability'
_description = "Analytic Plan's Applicabilities"
business_domain = fields.Selection(
selection_add=[
('sale_order', 'Sale Order'),
],
ondelete={'sale_order': 'cascade'},
)
+6 -9
View File
@@ -364,11 +364,9 @@
<field name="customer_lead" class="oe_inline"/> days
</div>
<field name="analytic_distribution_stored_char" invisible="1"/>
<!-- TODO widget="analytic_distribution" -->
<field name="analytic_distribution"
groups="analytic.group_analytic_accounting" invisible="1"
options="{'product_field': 'product_id'}"
business_domain_compute="'sale'"/>
<field name="analytic_distribution" widget="analytic_distribution"
groups="analytic.group_analytic_accounting"
options="{'product_field': 'product_id', 'business_domain': 'sale_order'}"/>
</group>
</group>
<label for="name" string="Description" attrs="{'invisible': [('display_type', '!=', False)]}"/>
@@ -443,12 +441,11 @@
widget="sol_product_many2one"/>
<field name="name" widget="section_and_note_text" optional="show"/>
<field name="analytic_distribution_stored_char" invisible="1"/>
<!-- TODO widget="analytic_distribution" -->
<field name="analytic_distribution"
optional="hide" invisible="1"
<field name="analytic_distribution" widget="analytic_distribution"
optional="hide"
groups="analytic.group_analytic_accounting"
options="{'product_field': 'product_id'}"
business_domain_compute="'sale'"/>
business_domain_compute="'sale', 'business_domain': 'sale_order'}"/>
<field
name="product_uom_qty"
decoration-info="(not display_type and invoice_status == 'to invoice')" decoration-bf="(not display_type and invoice_status == 'to invoice')"