[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:
@@ -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.",
|
||||
|
||||
@@ -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)]}"
|
||||
|
||||
@@ -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'
|
||||
})
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'},
|
||||
)
|
||||
@@ -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'}"/>
|
||||
|
||||
@@ -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'},
|
||||
)
|
||||
@@ -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>
|
||||
|
||||
@@ -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'},
|
||||
)
|
||||
|
||||
@@ -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')"
|
||||
|
||||
Reference in New Issue
Block a user