Merge PR #201 into 10.0

Signed-off-by lreficent
This commit is contained in:
OCA-git-bot
2019-09-30 13:07:33 +00:00
12 changed files with 271 additions and 82 deletions

View File

@@ -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 <pedro.baeza@serviciosbaeza.com>",
* Ana Juaristi <ajuaristio@gmail.com>"
* Victor M. Martin <victor.martin@elico-corp.com>
* Bima Jati Wijaya <bimajatiwijaya@gmail.com>
* Manuel A. Márquez <manuel@humanytek.com>
Maintainer
----------

View File

@@ -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"
]
}

View File

@@ -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 <buzondemam@gmail.com>\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"

View File

@@ -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

View File

@@ -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')

View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -1,32 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<odoo>
<data>
<record id="mrp_production_form_view" model="ir.ui.view">
<field name="name">MRP Production Form with Sale Order</field>
<field name="model">mrp.production</field>
<field name="inherit_id" ref="sale_mrp.mrp_production_form_view_inherit_sale_mrp" />
<field name="arch" type="xml">
<field name="sale_name" position="after">
<field name="sale_id"/>
<field name="partner_id"/>
<field name="commitment_date"/>
<record id="mrp_production_form_view" model="ir.ui.view">
<field name="name">MRP Production Form with Sale Order</field>
<field name="model">mrp.production</field>
<field name="inherit_id" ref="mrp.mrp_production_form_view" />
<field name="arch" type="xml">
<field name="availability" position="after">
<field name="sale_id"/>
<field name="partner_id"/>
<field name="commitment_date"/>
</field>
</field>
</field>
</record>
</record>
<record id="mrp_production_tree_view" model="ir.ui.view">
<field name="name">MRP Production Tree with Sale Order</field>
<field name="model">mrp.production</field>
<field name="inherit_id" ref="mrp.mrp_production_tree_view"/>
<field name="arch" type="xml">
<field name="date_planned" position="after">
<field name="sale_id"/>
<field name="partner_id"/>
<field name="commitment_date"/>
<record id="mrp_production_tree_view" model="ir.ui.view">
<field name="name">MRP Production Tree with Sale Order</field>
<field name="model">mrp.production</field>
<field name="inherit_id" ref="mrp.mrp_production_tree_view"/>
<field name="arch" type="xml">
<field name="date_planned_start" position="after">
<field name="sale_id"/>
<field name="partner_id"/>
<field name="commitment_date"/>
</field>
</field>
</field>
</record>
</record>
</data>
</openerp>
<record id="mrp_production_sale_info_search_view" model="ir.ui.view">
<field name="name">MRP Production search with Customer and Sale Order</field>
<field name="model">mrp.production</field>
<field name="inherit_id" ref="mrp.view_mrp_production_filter" />
<field name="arch" type="xml">
<field name="product_id" position="after">
<field name="partner_id" />
<field name="sale_id" />
</field>
<group position="inside">
<filter string="Customer" icon="terp-accessories-archiver"
domain="[]" context="{'group_by':'partner_id'}" />
<filter string="Sale Order" icon="terp-accessories-archiver"
domain="[]" context="{'group_by':'sale_id'}" />
</group>
</field>
</record>
</data>
</odoo>

View File

@@ -1,36 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="mrp_production_workcenter_tree_view_inherit" model="ir.ui.view">
<field name="name">MRP Production Work Order Tree with Sale Order</field>
<field name="model">mrp.production.workcenter.line</field>
<field name="inherit_id" ref="mrp_operations.mrp_production_workcenter_tree_view_inherit"/>
<field name="arch" type="xml">
<field name="date_planned" position="after">
<field name="sale_id"/>
<field name="partner_id"/>
<field name="commitment_date"/>
</field>
</field>
</record>
<record id="mrp_production_workcenter_form_view_inherit" model="ir.ui.view">
<field name="name">MRP Production Work Order Form with Sale Order</field>
<field name="model">mrp.production.workcenter.line</field>
<field name="inherit_id" ref="mrp_operations.mrp_production_workcenter_form_view_inherit"/>
<field name="arch" type="xml">
<xpath expr="//page/group[1]" position="after">
<group string="Sale Information">
<field name="sale_id"/>
<field name="partner_id"/>
<field name="commitment_date"/>
</group>
</xpath>
</field>
</record>
</data>
</openerp>

View File

@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="mrp_production_workcenter_tree_view_inherit" model="ir.ui.view">
<field name="name">MRP Production Work Order Tree with Sale Order</field>
<field name="model">mrp.workorder</field>
<field name="inherit_id" ref="mrp.mrp_production_workcenter_tree_view_inherit"/>
<field name="arch" type="xml">
<field name="date_planned_start" position="after">
<field name="sale_id"/>
<field name="partner_id"/>
<field name="commitment_date"/>
</field>
</field>
</record>
<record id="mrp_workorder_sale_form_view_inherit" model="ir.ui.view">
<field name="name">MRP Production Work Order Form with Sale Order</field>
<field name="model">mrp.workorder</field>
<field name="inherit_id" ref="mrp.mrp_production_workcenter_form_view_inherit"/>
<field name="arch" type="xml">
<xpath expr="//page/group[1]" position="after">
<group string="Sale Information">
<field name="sale_id"/>
<field name="partner_id"/>
<field name="commitment_date"/>
</group>
</xpath>
</field>
</record>
<record id="view_mrp_workorder_form_view_filter" model="ir.ui.view">
<field name="name">MRP Production Workorder search with Customer and Sale Order</field>
<field name="model">mrp.workorder</field>
<field name="inherit_id" ref="mrp.view_mrp_production_workcenter_form_view_filter" />
<field name="arch" type="xml">
<field name="production_id" position="after">
<field name="partner_id" />
<field name="sale_id" />
</field>
<group position="inside">
<filter string="Customer" icon="terp-accessories-archiver"
domain="[]" context="{'group_by':'partner_id'}" />
<filter string="Sale Order" icon="terp-accessories-archiver"
domain="[]" context="{'group_by':'sale_id'}" />
</group>
</field>
</record>
</data>
</odoo>