[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 d3ba275457
commit 45b7caf35a
6 changed files with 28 additions and 5 deletions

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>