diff --git a/mrp_sale_info/README.rst b/mrp_sale_info/README.rst index 20a237040..ae72523bb 100644 --- a/mrp_sale_info/README.rst +++ b/mrp_sale_info/README.rst @@ -9,9 +9,16 @@ MRP Sale Info This module extends the functionality of sale_mrp and adds related fields to Manufacturing Orders and Work Orders: * Sale order + * Sale line * Customer * Commitment Date + +Also add in search view "Group by" to Manufacturing Orders and Work Orders: + + * Customer + * Sale order + Usage ===== @@ -51,6 +58,8 @@ Contributors * Pedro M. Baeza ", * Ana Juaristi " * Victor M. Martin +* Bima Jati Wijaya +* Manuel A. Márquez Maintainer ---------- diff --git a/mrp_sale_info/__manifest__.py b/mrp_sale_info/__manifest__.py index 20539473b..fa653b1bb 100644 --- a/mrp_sale_info/__manifest__.py +++ b/mrp_sale_info/__manifest__.py @@ -1,28 +1,23 @@ # -*- coding: utf-8 -*- # © 2016 Antiun Ingenieria S.L. - Javier Iniesta +# © 2016 Humanytek (http://humanytek.com/) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). { "name": "MRP Sale Info", "summary": "Adds sale information to Manufacturing models", - "version": "9.0.1.0.0", + "version": "10.0.1.0.0", "category": "Manufacturing", "website": "http://www.antiun.com", - "author": "Antiun Ingeniería S.L., " - "OdooMRP team, " - "AvanzOSC, " - "Serv. Tecnol. Avanzados - Pedro M. Baeza, " - "Odoo Community Association (OCA)", "license": "AGPL-3", "application": False, - 'installable': False, + 'installable': True, "depends": [ - "mrp_operations", "sale_mrp", "sale_order_dates", "stock" ], "data": [ "views/mrp_production.xml", - "views/mrp_production_workcenter_line.xml" + "views/mrp_workorder.xml" ] } diff --git a/mrp_sale_info/i18n/es_MX.po b/mrp_sale_info/i18n/es_MX.po new file mode 100644 index 000000000..ca52f2c91 --- /dev/null +++ b/mrp_sale_info/i18n/es_MX.po @@ -0,0 +1,68 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mrp_sale_info +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-15 17:49+0000\n" +"PO-Revision-Date: 2017-06-15 13:50-0400\n" +"Last-Translator: Manuel Marquez \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: \n" +"Language: es_MX\n" +"X-Generator: Poedit 1.6.10\n" + +#. module: mrp_sale_info +#: model:ir.model.fields,field_description:mrp_sale_info.field_mrp_production_commitment_date +#: model:ir.model.fields,field_description:mrp_sale_info.field_mrp_workorder_commitment_date +msgid "Commitment Date" +msgstr "Fecha compromiso" + +#. module: mrp_sale_info +#: model:ir.model.fields,field_description:mrp_sale_info.field_mrp_production_partner_id +#: model:ir.model.fields,field_description:mrp_sale_info.field_mrp_workorder_partner_id +#: model:ir.ui.view,arch_db:mrp_sale_info.mrp_production_sale_info_search_view +#: model:ir.ui.view,arch_db:mrp_sale_info.view_mrp_workorder_form_view_filter +msgid "Customer" +msgstr "Cliente" + +#. module: mrp_sale_info +#: model:ir.model.fields,help:mrp_sale_info.field_mrp_workorder_commitment_date +msgid "" +"Date by which the products are sure to be delivered. This is a date that you " +"can promise to the customer, based on the Product Lead Times." +msgstr "" +"Fecha en la que se asegura que los productos estarán enviados. Esta es la " +"fecha de compromiso con el cliente, basada en el tiempo de entrega." + +#. module: mrp_sale_info +#: model:ir.model,name:mrp_sale_info.model_mrp_production +msgid "Manufacturing Order" +msgstr "Orden de Producción" + +#. module: mrp_sale_info +#: model:ir.ui.view,arch_db:mrp_sale_info.mrp_workorder_sale_form_view_inherit +msgid "Sale Information" +msgstr "Información de Venta" + +#. module: mrp_sale_info +#: model:ir.ui.view,arch_db:mrp_sale_info.mrp_production_sale_info_search_view +#: model:ir.ui.view,arch_db:mrp_sale_info.view_mrp_workorder_form_view_filter +msgid "Sale Order" +msgstr "Pedido de Venta" + +#. module: mrp_sale_info +#: model:ir.model.fields,field_description:mrp_sale_info.field_mrp_production_sale_id +#: model:ir.model.fields,field_description:mrp_sale_info.field_mrp_workorder_sale_id +msgid "Sale order" +msgstr "Pedido de venta" + +#. module: mrp_sale_info +#: model:ir.model,name:mrp_sale_info.model_mrp_workorder +msgid "Work Order" +msgstr "Orden de trabajo" diff --git a/mrp_sale_info/models/__init__.py b/mrp_sale_info/models/__init__.py index cb18640f5..26f28b9bb 100644 --- a/mrp_sale_info/models/__init__.py +++ b/mrp_sale_info/models/__init__.py @@ -3,4 +3,5 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from . import mrp_production -from . import mrp_production_workcenter_line +from . import mrp_workorder +from . import procurement diff --git a/mrp_sale_info/models/mrp_production.py b/mrp_sale_info/models/mrp_production.py index 24ddb0aa2..cc3584f54 100644 --- a/mrp_sale_info/models/mrp_production.py +++ b/mrp_sale_info/models/mrp_production.py @@ -2,16 +2,18 @@ # © 2016 Antiun Ingenieria S.L. - Javier Iniesta # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from openerp import models, fields +from odoo import fields, models class MrpProduction(models.Model): _inherit = "mrp.production" sale_id = fields.Many2one( - 'sale.order', string='Sale order', readonly=True, store=True, - related='move_prod_id.procurement_id.sale_line_id.order_id') - partner_id = fields.Many2one(related='sale_id.partner_id', - string='Customer', store=True) - commitment_date = fields.Datetime(related='sale_id.commitment_date', - string='Commitment Date', store=True) + 'sale.order', + string='Sale order', + readonly=True) + partner_id = fields.Many2one( + 'res.partner', + readonly=True, + string='Customer') + commitment_date = fields.Datetime(string='Commitment Date') diff --git a/mrp_sale_info/models/mrp_production_workcenter_line.py b/mrp_sale_info/models/mrp_workorder.py similarity index 82% rename from mrp_sale_info/models/mrp_production_workcenter_line.py rename to mrp_sale_info/models/mrp_workorder.py index 9991efe81..b9894c0fc 100644 --- a/mrp_sale_info/models/mrp_production_workcenter_line.py +++ b/mrp_sale_info/models/mrp_workorder.py @@ -2,11 +2,11 @@ # © 2016 Antiun Ingenieria S.L. - Javier Iniesta # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from openerp import models, fields +from odoo import models, fields -class MrpProductionWorkcenterLine(models.Model): - _inherit = "mrp.production.workcenter.line" +class MrpWorkorder(models.Model): + _inherit = "mrp.workorder" sale_id = fields.Many2one(related='production_id.sale_id', string='Sale order', readonly=True, store=True) diff --git a/mrp_sale_info/models/procurement.py b/mrp_sale_info/models/procurement.py new file mode 100644 index 000000000..47f038bcd --- /dev/null +++ b/mrp_sale_info/models/procurement.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, models + + +class ProcurementOrder(models.Model): + _inherit = 'procurement.order' + + @api.multi + def make_mo(self): + def get_parent_move(move): + if move.move_dest_id: + return get_parent_move(move.move_dest_id) + return move + + res = super(ProcurementOrder, self).make_mo() + for prod_id in res: + production = self.env['mrp.production'].browse([res[prod_id]]) + move = get_parent_move(production.move_finished_ids) + proc = move.procurement_id + + production.sale_id = \ + proc and proc.sale_line_id and \ + proc.sale_line_id.order_id.id or False + production.partner_id = \ + production.sale_id and production.sale_id.partner_id and \ + production.sale_id.partner_id.id or False + production.commitment_date = \ + production.sale_id and production.sale_id.commitment_date or '' + return res diff --git a/mrp_sale_info/tests/__init__.py b/mrp_sale_info/tests/__init__.py new file mode 100644 index 000000000..bd6af4bbe --- /dev/null +++ b/mrp_sale_info/tests/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# © 2017 Bima Jati Wijaya +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + + +from . import test_sale_manufacture diff --git a/mrp_sale_info/tests/test_sale_manufacture.py b/mrp_sale_info/tests/test_sale_manufacture.py new file mode 100644 index 000000000..6275e7efc --- /dev/null +++ b/mrp_sale_info/tests/test_sale_manufacture.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# © 2017 Bima Jati Wijaya +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests import TransactionCase + + +class TestManufactureSale(TransactionCase): + + def setUp(self): + super(TestManufactureSale, self).setUp() + self.partner = self.env.ref('base.res_partner_1') + self.mrp_production = self.env['mrp.production'] + + def test_manufacture(self): + product = self.browse_ref('product.product_product_27') + route1 = self.browse_ref('mrp.route_warehouse0_manufacture') + route2 = self.browse_ref('stock.route_warehouse0_mto') + # add make to order and manufacture routes + product.write({'route_ids': [(6, 0, [route1.id, route2.id])]}) + self.assertTrue(product.route_ids) + + so = self.env['sale.order'].create({ + 'partner_id': self.partner.id, + 'partner_invoice_id': self.partner.id, + 'partner_shipping_id': self.partner.id, + 'order_line': [(0, 0, {'name': product.name, + 'product_id': product.id, + 'product_uom_qty': 1, + 'product_uom': product.uom_id.id, + 'price_unit': product.list_price}) + ], + 'pricelist_id': self.env.ref('product.list0').id, + }) + so.action_confirm() + mrp = self.mrp_production.search([('origin', 'like', so.name+'%')], + limit=1) + # checking sale info filled correctly on manufacture + self.assertEqual(so.id, mrp.sale_id.id) + self.assertEqual(self.partner.id, mrp.partner_id.id) + self.assertEqual(so.commitment_date, mrp.commitment_date) diff --git a/mrp_sale_info/views/mrp_production.xml b/mrp_sale_info/views/mrp_production.xml index 4fee03f44..122f0c629 100644 --- a/mrp_sale_info/views/mrp_production.xml +++ b/mrp_sale_info/views/mrp_production.xml @@ -1,32 +1,50 @@ - - + + - - MRP Production Form with Sale Order - mrp.production - - - - - - + + MRP Production Form with Sale Order + mrp.production + + + + + + + - - + - - MRP Production Tree with Sale Order - mrp.production - - - - - - + + MRP Production Tree with Sale Order + mrp.production + + + + + + + - - + - - + + MRP Production search with Customer and Sale Order + mrp.production + + + + + + + + + + + + + + + diff --git a/mrp_sale_info/views/mrp_production_workcenter_line.xml b/mrp_sale_info/views/mrp_production_workcenter_line.xml deleted file mode 100644 index 1af6ac649..000000000 --- a/mrp_sale_info/views/mrp_production_workcenter_line.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - MRP Production Work Order Tree with Sale Order - mrp.production.workcenter.line - - - - - - - - - - - - MRP Production Work Order Form with Sale Order - mrp.production.workcenter.line - - - - - - - - - - - - - - - - diff --git a/mrp_sale_info/views/mrp_workorder.xml b/mrp_sale_info/views/mrp_workorder.xml new file mode 100644 index 000000000..7a65d03bd --- /dev/null +++ b/mrp_sale_info/views/mrp_workorder.xml @@ -0,0 +1,54 @@ + + + + + + MRP Production Work Order Tree with Sale Order + mrp.workorder + + + + + + + + + + + + MRP Production Work Order Form with Sale Order + mrp.workorder + + + + + + + + + + + + + + + + MRP Production Workorder search with Customer and Sale Order + mrp.workorder + + + + + + + + + + + + + + +