mrp_production_raw_material_procurement_group

This commit is contained in:
Andhitia Rama
2016-10-22 17:46:55 +07:00
committed by lreficent
parent 0b2b06c1a8
commit b837c69bcb
8 changed files with 300 additions and 0 deletions

View File

@@ -0,0 +1,84 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
==============
{module_title}
==============
This module extends the functionality of ... to support ...
and to allow you to ...
Installation
============
To install this module, you need to:
#. Do this ...
Configuration
=============
To configure this module, you need to:
#. Go to ...
.. figure:: path/to/local/image.png
:alt: alternative description
:width: 600 px
Usage
=====
To use this module, you need to:
#. Go to ...
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/{repo_id}/{branch}
.. repo_id is available in https://github.com/OCA/maintainer-tools/blob/master/tools/repos_with_ids.txt
.. branch is "8.0" for example
Known issues / Roadmap
======================
* ...
Bug Tracker
===========
Bugs are tracked on `GitHub Issues
<https://github.com/OCA/{project_repo}/issues>`_. In case of trouble, please
check there if your issue has already been reported. If you spotted it first,
help us smashing it by providing a detailed and welcomed feedback.
Credits
=======
Images
------
* Odoo Community Association: `Icon <https://github.com/OCA/maintainer-tools/blob/master/template/module/static/description/icon.svg>`_.
Contributors
------------
* Firstname Lastname <email.address@example.org>
* Second Person <second.person@example.org>
Maintainer
----------
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
This module is maintained by the OCA.
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
To contribute to this module, please visit https://odoo-community.org.

View File

@@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# Copyright 2016 OpenSynergy Indonesia
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import models

View File

@@ -0,0 +1,18 @@
# -*- coding: utf-8 -*-
# Copyright 2016 OpenSynergy Indonesia
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Create Procurement Group On Manufacturing Order",
"version": "8.0.1.0.0",
"category": "Manufacturing",
"website": "https://opensynergy-indonesia.com/",
"author": "OpenSynergy Indonesia, Odoo Community Association (OCA)",
"license": "AGPL-3",
"installable": True,
"depends": [
"mrp",
],
"data": [
"views/mrp_production_views.xml",
],
}

View File

@@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# Copyright 2016 OpenSynergy Indonesia
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import mrp_production

View File

@@ -0,0 +1,33 @@
# -*- coding: utf-8 -*-
# Copyright 2016 OpenSynergy Indonesia
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp import models, fields, api
class MrpProduction(models.Model):
_inherit = "mrp.production"
raw_material_procurement_group_id = fields.Many2one(
string="Raw Material Procurement Group",
comodel_name="procurement.group",
)
@api.model
def _make_consume_line_from_data(
self,
production, product, uom_id, qty,
uos_id, uos_qty):
move_id = super(MrpProduction, self)._make_consume_line_from_data(
production, product, uom_id, qty,
uos_id, uos_qty)
obj_move = self.env["stock.move"]
move = obj_move.browse(move_id)
if move.procure_method == "make_to_stock":
return move_id
if not production.raw_material_procurement_group_id:
return move_id
move.write(
{"group_id": production.raw_material_procurement_group_id.id})
return move_id

View File

@@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# Copyright 2016 OpenSynergy Indonesia
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import test_mrp_production

View File

@@ -0,0 +1,128 @@
# -*- coding: utf-8 -*-
# Copyright 2016 OpenSynergy Indonesia
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp.tests.common import TransactionCase
class MrpProductionCase(TransactionCase):
def setUp(self, *args, **kwargs):
super(MrpProductionCase, self).setUp(*args, **kwargs)
self.obj_group = self.env["procurement.group"]
self.obj_mo = self.env["mrp.production"]
self.warehouse1 = self.env.ref("stock.warehouse0")
self.warehouse2 = self.env["stock.warehouse"].create({
"name": "X Warehouse",
"code": "X WH",
"reception_steps": "one_step",
"delivery_steps": "ship_only",
"resupply_from_wh": False,
"default_resupply_wh_id": False,
})
self.loc_stock_2 = self.warehouse2.lot_stock_id
self.loc_production = self.env.ref(
"stock.location_production")
self.route = self.env["stock.location.route"].create({
"name": "X Route",
"sequence": 1,
"product_selectable": True,
})
self.rule = self.env["procurement.rule"].create({
"name": "X Production",
"location_id": self.loc_production.id,
"location_src_id": self.loc_stock_2.id,
"procure_method": "make_to_order",
"picking_type_id": self.warehouse2.int_type_id.id,
"action": "move",
"sequence": 1,
"route_id": self.route.id,
})
self.product1 = self.env.ref("product.product_product_18")
self.product_raw1 = self.env.ref("product.product_product_17")
self.product_raw1.write({
"route_ids": [(4, self.route.id)],
})
self.bom1 = self.env.ref("mrp.mrp_bom_3")
self.bom1.write({
"routing_id": False})
def _create_procurement_group(
self, name):
res = {
"name": name,
"move_type": "direct"
}
return self.obj_group.create(res)
def _create_mo(
self,
product=False,
bom=False,
src_loc=False,
dest_loc=False,
group=False,
qty=10.0):
if not product:
product = self.product1
uom = product.uom_id
if not bom:
bom = self.bom1
if not src_loc:
src_loc = self.loc_stock_2
if not dest_loc:
dest_loc = self.loc_stock_2
res = {
"product_id": product.id,
"bom_id": bom.id,
"location_src_id": src_loc.id,
"location_dest_id": dest_loc.id,
"raw_material_procurement_group_id": group,
"product_qty": qty,
"product_uom": uom.id,
}
return self.obj_mo.create(res)
def test_1(self):
# Create MO
mo = self._create_mo()
# Click confirm button
mo.signal_workflow("button_confirm")
for raw in mo.move_lines:
self.assertEqual(
raw.location_id,
self.loc_stock_2)
self.assertEqual(
raw.location_dest_id,
self.loc_production)
self.assertEqual(
raw.procure_method,
"make_to_order")
self.assertEqual(
len(raw.group_id),
0)
def test_2(self):
group1 = self._create_procurement_group(
"X 001")
# Create MO
mo = self._create_mo(
group=group1.id)
# Click confirm button
mo.signal_workflow("button_confirm")
for raw in mo.move_lines:
self.assertEqual(
raw.location_id,
self.loc_stock_2)
self.assertEqual(
raw.location_dest_id,
self.loc_production)
self.assertEqual(
raw.procure_method,
"make_to_order")
self.assertEqual(
raw.group_id,
group1)

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2016 Opensynergy Indonesia
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<openerp>
<data>
<record id="mrp_production_view_form" model="ir.ui.view">
<field name="name">mrp.production form</field>
<field name="model">mrp.production</field>
<field name="inherit_id" ref="mrp.mrp_production_form_view"/>
<field name="arch" type="xml">
<data>
<xpath expr="//field[@name='location_src_id']" position="after">
<field name="raw_material_procurement_group_id"/>
</xpath>
</data>
</field>
</record>
</data>
</openerp>