mirror of
https://github.com/OCA/stock-logistics-warehouse.git
synced 2025-01-21 14:27:28 +02:00
87 lines
3.6 KiB
Python
87 lines
3.6 KiB
Python
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
|
|
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0).
|
|
|
|
from odoo.addons.stock_request.tests import test_stock_request
|
|
from odoo import fields
|
|
from odoo.exceptions import ValidationError
|
|
|
|
|
|
class TestStockRequestAnalytic(test_stock_request.TestStockRequest):
|
|
def setUp(self):
|
|
super(TestStockRequestAnalytic, self).setUp()
|
|
self.analytic_model = self.env['account.analytic.account']
|
|
self.analytic = self.analytic_model.create({'name': 'Pizza'})
|
|
self.analytic2 = self.analytic_model.create({
|
|
'name': 'Pizza',
|
|
'company_id': self.company_2.id,
|
|
})
|
|
self.demand_loc = self.env['stock.location'].create({
|
|
'name': 'demand_loc',
|
|
'location_id': self.warehouse.lot_stock_id.id,
|
|
'usage': 'internal',
|
|
})
|
|
self.demand_route = self.env['stock.location.route'].create({
|
|
'name': 'Transfer',
|
|
'product_categ_selectable': False,
|
|
'product_selectable': True,
|
|
'company_id': self.main_company.id,
|
|
'sequence': 10,
|
|
})
|
|
self.pizza = self._create_product('PZ', 'Pizza', False)
|
|
self.demand_rule = self.env['stock.rule'].create({
|
|
'name': 'Transfer',
|
|
'route_id': self.demand_route.id,
|
|
'location_src_id': self.warehouse.lot_stock_id.id,
|
|
'location_id': self.demand_loc.id,
|
|
'action': 'pull',
|
|
'picking_type_id': self.warehouse.int_type_id.id,
|
|
'procure_method': 'make_to_stock',
|
|
'warehouse_id': self.warehouse.id,
|
|
'company_id': self.main_company.id,
|
|
'propagate': 'False',
|
|
})
|
|
self.pizza.route_ids = [(6, 0, self.demand_route.ids)]
|
|
|
|
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,
|
|
'location_id': self.demand_loc.id,
|
|
'expected_date': expected_date,
|
|
'stock_request_ids': [(0, 0, {
|
|
'product_id': self.pizza.id,
|
|
'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,
|
|
'expected_date': expected_date,
|
|
})]
|
|
}
|
|
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, 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)
|
|
|
|
def test_company(self):
|
|
with self.assertRaises(ValidationError):
|
|
vals = self.prepare_order_request_analytic(
|
|
self.analytic2, self.main_company)
|
|
self.env['stock.request.order'].create(vals)
|