[IMP] stock_request_analytic: add analytic tags to Stock Requests

TT28488
This commit is contained in:
João Marques
2021-03-10 11:18:25 +00:00
parent 1a02633364
commit 1e97a86ff3
9 changed files with 57 additions and 12 deletions

View File

@@ -1,6 +1,6 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_request_analytic
# * stock_request_analytic
#
msgid ""
msgstr ""
@@ -33,6 +33,12 @@ msgstr "Contas Analíticas"
msgid "Analytic Count"
msgstr "Contagem Analítica"
#. module: stock_request_analytic
#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request__analytic_tag_ids
#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request_order__analytic_tag_ids
msgid "Analytic Tags"
msgstr ""
#. module: stock_request_analytic
#: model:ir.model,name:stock_request_analytic.model_stock_request
#: model_terms:ir.ui.view,arch_db:stock_request_analytic.view_account_analytic_account_form
@@ -55,9 +61,11 @@ msgid "Stock Rule"
msgstr "Regras de Estoque"
#. module: stock_request_analytic
#: code:addons/stock_request_analytic/models/stock_request.py:19
#: code:addons/stock_request_analytic/models/stock_request.py:21
#, python-format
msgid "You cannot link a analytic account to a stock request that belongs to another company."
msgid ""
"You cannot link a analytic account to a stock request that belongs to "
"another company."
msgstr ""
"Você não pode vincular uma conta analítica a uma requisição de estoque que "
"pertence a outra empresa."

View File

@@ -30,6 +30,12 @@ msgstr ""
msgid "Analytic Count"
msgstr ""
#. module: stock_request_analytic
#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request__analytic_tag_ids
#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request_order__analytic_tag_ids
msgid "Analytic Tags"
msgstr ""
#. module: stock_request_analytic
#: model:ir.model,name:stock_request_analytic.model_stock_request
#: model_terms:ir.ui.view,arch_db:stock_request_analytic.view_account_analytic_account_form
@@ -52,7 +58,7 @@ msgid "Stock Rule"
msgstr ""
#. module: stock_request_analytic
#: code:addons/stock_request_analytic/models/stock_request.py:19
#: code:addons/stock_request_analytic/models/stock_request.py:21
#, python-format
msgid "You cannot link a analytic account to a stock request that belongs to another company."
msgstr ""

View File

@@ -1,6 +1,6 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_request_analytic
# * stock_request_analytic
#
msgid ""
msgstr ""
@@ -33,6 +33,12 @@ msgstr "分析账户"
msgid "Analytic Count"
msgstr "分析数量"
#. module: stock_request_analytic
#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request__analytic_tag_ids
#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request_order__analytic_tag_ids
msgid "Analytic Tags"
msgstr ""
#. module: stock_request_analytic
#: model:ir.model,name:stock_request_analytic.model_stock_request
#: model_terms:ir.ui.view,arch_db:stock_request_analytic.view_account_analytic_account_form
@@ -55,7 +61,9 @@ msgid "Stock Rule"
msgstr "库存规则"
#. module: stock_request_analytic
#: code:addons/stock_request_analytic/models/stock_request.py:19
#: code:addons/stock_request_analytic/models/stock_request.py:21
#, python-format
msgid "You cannot link a analytic account to a stock request that belongs to another company."
msgid ""
"You cannot link a analytic account to a stock request that belongs to "
"another company."
msgstr "您无法将分析帐户链接到属于另一家公司的库存请求。"

View File

@@ -10,6 +10,8 @@ class StockRequest(models.Model):
analytic_account_id = fields.Many2one(
'account.analytic.account', string='Analytic Account')
analytic_tag_ids = fields.Many2many(
'account.analytic.tag', string='Analytic Tags')
@api.constrains('analytic_account_id')
def _check_analytic_company_constrains(self):

View File

@@ -17,12 +17,20 @@ class StockRequestOrder(models.Model):
string='Analytic Accounts',
readonly=True,
)
analytic_tag_ids = fields.One2many(
comodel_name='account.analytic.tag',
compute='_compute_analytic_ids',
string='Analytic Tags',
readonly=True,
)
@api.depends('stock_request_ids')
def _compute_analytic_ids(self):
for req in self.sudo():
req.analytic_account_ids = req.stock_request_ids.mapped(
'analytic_account_id')
req.analytic_tag_ids = req.stock_request_ids.mapped(
'analytic_tag_ids')
req.analytic_count = len(req.analytic_account_ids)
@api.multi

View File

@@ -13,7 +13,13 @@ class ProcurementRule(models.Model):
product_id, product_qty, product_uom, location_id, name, origin,
values, group_id)
if values.get('stock_request_id'):
analytic_account_id = self.env['stock.request'].browse(
values['stock_request_id']).analytic_account_id.id
res.update(analytic_account_id=analytic_account_id)
stock_request = self.env['stock.request'].browse(
values['stock_request_id']
)
analytic_account = stock_request.analytic_account_id
analytic_tags = stock_request.analytic_tag_ids
res.update(
analytic_account_id=analytic_account.id,
analytic_tag_ids=[(4, tag.id) for tag in analytic_tags],
)
return res

View File

@@ -42,8 +42,9 @@ class TestStockRequestAnalytic(test_stock_request.TestStockRequest):
})
self.pizza.route_ids = [(6, 0, self.demand_route.ids)]
def prepare_order_request_analytic(self, aa, company):
def prepare_order_request_analytic(self, aa, company, analytic_tags=None):
expected_date = fields.Datetime.now()
analytic_tags = analytic_tags or self.env["account.analytic.tag"]
vals = {
'company_id': company.id,
'warehouse_id': self.warehouse.id,
@@ -54,6 +55,7 @@ class TestStockRequestAnalytic(test_stock_request.TestStockRequest):
'product_uom_id': self.pizza.uom_id.id,
'product_uom_qty': 5.0,
'analytic_account_id': aa.id,
'analytic_tag_ids': [(4, tag.id) for tag in analytic_tags],
'company_id': company.id,
'warehouse_id': self.warehouse.id,
'location_id': self.demand_loc.id,
@@ -63,13 +65,16 @@ class TestStockRequestAnalytic(test_stock_request.TestStockRequest):
return vals
def test_stock_analytic(self):
analytic_tag = self.env.ref('analytic.tag_contract')
vals = self.prepare_order_request_analytic(
self.analytic, self.main_company)
self.analytic, self.main_company, analytic_tags=analytic_tag)
order = self.env['stock.request.order'].create(vals)
req = order.stock_request_ids
order.action_confirm()
self.assertEqual(
req.move_ids.mapped('analytic_account_id'), self.analytic)
self.assertEqual(
req.move_ids.mapped('analytic_tag_ids'), analytic_tag)
self.assertEqual(order.analytic_count, 1)
action = order.action_view_analytic()
self.assertTrue(action['res_id'], self.analytic.id)

View File

@@ -10,6 +10,7 @@
<field name="arch" type="xml">
<div name="button_box" position="inside">
<field name="analytic_account_ids" invisible="1"/>
<field name="analytic_tag_ids" />
<button type="object"
name="action_view_analytic"
class="oe_stat_button"

View File

@@ -10,6 +10,7 @@
<field name="arch" type="xml">
<field name="procurement_group_id" position="after">
<field name="analytic_account_id" groups="analytic.group_analytic_accounting"/>
<field name="analytic_tag_ids" groups="analytic.group_analytic_accounting"/>
</field>
</field>
</record>