mig to 10

This commit is contained in:
MonsieurB
2017-05-04 16:38:01 +02:00
committed by ps-tubtim
parent 6c532f0356
commit a11b82e506
12 changed files with 124 additions and 314 deletions

View File

@@ -2,24 +2,14 @@
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
==============
{module_title}
==============
=================
product_quick_bom
=================
This module was written to create quickly the bom for your product.
Indeed in the product form you now have a new tab "bom" that give you the posibility
to add the bom line directly here
Installation
============
To install this module, you just need to install it
Configuration
=============
No configuration is required
Usage
=====
@@ -30,7 +20,7 @@ To use this module, you need 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}
:target: https://runbot.odoo-community.org/runbot/manufacture/10.0
.. repo_id is available in https://github.com/OCA/maintainer-tools/blob/master/tools/repos_with_ids.txt
.. branch is "8.0" for example
@@ -39,18 +29,14 @@ For further information, please visit:
* https://www.odoo.com/forum/help-1
Known issues / Roadmap
======================
* ...
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/{project_repo}/issues>`_.
Bugs are tracked on `GitHub Issues <https://github.com/OCA/manufacture/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
`here <https://github.com/OCA/{project_repo}/issues/new?body=module:%20{module_name}%0Aversion:%20{version}%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
`here <https://github.com/OCA/manufacture/issues/new?body=module:%20product_quick_bom%0Aversion:%2010.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Credits

View File

@@ -1,24 +1,6 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Module for OpenERP
# Copyright (C) 2015 Akretion (http://www.akretion.com).
# @author Sébastien BEAU <sebastien.beau@akretion.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###############################################################################
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import product
from . import bom

View File

@@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
# Copyright (C) 2015 Akretion (http://www.akretion.com).
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "Product Quick Bom",
"summary": "Create the bom directly from the product",
"version": "10.0.1.0.0",
"category": "mrp",
"website": "https://odoo-community.org/",
"author": "Akretion, Odoo Community Association (OCA)",
"license": "AGPL-3",
"application": False,
"installable": True,
"depends": [
"mrp",
],
"data": [
"product_view.xml",
],
}

View File

@@ -1,45 +0,0 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Module for OpenERP
# Copyright (C) 2015 Akretion (http://www.akretion.com).
# @author Sébastien BEAU <sebastien.beau@akretion.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###############################################################################
{
"name": "Product Quick Bom",
"summary": "Create the bom directly from the product",
"version": "8.0.1.0.0",
"category": "mrp",
"website": "https://odoo-community.org/",
"author": "Akretion, Odoo Community Association (OCA)",
"license": "AGPL-3",
"application": False,
"installable": True,
"external_dependencies": {
"python": [],
"bin": [],
},
"depends": [
"mrp",
],
"data": [
"product_view.xml",
],
"demo": [
],
}

View File

@@ -1,28 +1,8 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Module for OpenERP
# Copyright (C) 2015 Akretion (http://www.akretion.com).
# @author Sébastien BEAU <sebastien.beau@akretion.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###############################################################################
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openerp import models, fields, api
from collections import defaultdict
from openerp.exceptions import Warning as UserError
from odoo import fields, models, _
class MrpBom(models.Model):
@@ -31,7 +11,7 @@ class MrpBom(models.Model):
_sql_constraint = (
'uniq_product_template',
'uniq(product_tmpl_id)',
'You can only have one Bom per product template',
_('You can only have one Bom per product template'),
)
@@ -39,6 +19,7 @@ class MrpBomLine(models.Model):
_inherit = 'mrp.bom.line'
product_tmpl_id = fields.Many2one(
'product.template',
comodel_name='product.template',
related='bom_id.product_tmpl_id',
readonly=True,
store=True)

View File

@@ -32,7 +32,7 @@ msgstr "Composant"
#. module: product_quick_bom
#: help:product.template,bom_line_ids:0
msgid "If you product is manufactured you can selecthere the componant to product them"
msgid "If your product is manufactured you can select here the component to produce them"
msgstr "Si votre produit est fabriqué vous pouvez définir les composants ici"
#. module: product_quick_bom

View File

@@ -1,42 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * product_quick_bom
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-13 16:25+0000\n"
"PO-Revision-Date: 2015-09-13 16:25+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: product_quick_bom
#: model:ir.model,name:product_quick_bom.model_mrp_bom
msgid "Bill of Material"
msgstr ""
#. module: product_quick_bom
#: field:product.template,bom_line_ids:0
msgid "Bom Line"
msgstr ""
#. module: product_quick_bom
#: view:product.template:product_quick_bom.product_template_form_view
msgid "Bom line"
msgstr ""
#. module: product_quick_bom
#: help:product.template,bom_line_ids:0
msgid "If you product is manufactured you can selecthere the componant to product them"
msgstr ""
#. module: product_quick_bom
#: model:ir.model,name:product_quick_bom.model_product_template
msgid "Product Template"
msgstr ""

View File

@@ -1,39 +1,19 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Module for OpenERP
# Copyright (C) 2015 Akretion (http://www.akretion.com).
# @author Sébastien BEAU <sebastien.beau@akretion.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###############################################################################
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openerp import models, fields, api
from collections import defaultdict
from openerp.exceptions import Warning as UserError
from odoo import api, fields, models
class ProductTemplate(models.Model):
_inherit = 'product.template'
bom_line_ids = fields.One2many(
'mrp.bom.line',
'product_tmpl_id',
comodel_name='mrp.bom.line',
inverse_name='product_tmpl_id',
string='Bom Line',
help='If you product is manufactured you can select'
'here the componant to product them')
help='If your product is manufactured you can select '
'here the component to produce them')
@api.model
def _extract_bom_line(self, vals):
@@ -41,17 +21,19 @@ class ProductTemplate(models.Model):
@api.multi
def _prepare_bom_vals(self, vals):
self.ensure_one()
return {
'product_tmpl_id': self.id,
'bom_line_ids': vals,
}
@api.one
@api.multi
def _process_bom_vals(self, vals):
if self.bom_ids:
self.bom_ids[0].write({'bom_line_ids': vals})
else:
bom = self.env['mrp.bom'].create(self._prepare_bom_vals(vals))
for record in self:
if record.bom_ids:
record.bom_ids[0].write({'bom_line_ids': vals})
else:
record.env['mrp.bom'].create(self._prepare_bom_vals(vals))
@api.model
def create(self, vals):
@@ -63,10 +45,16 @@ class ProductTemplate(models.Model):
@api.multi
def write(self, vals):
""" default_type is in product and bom so _context ovewrite the default
value for bom with typ:'product' need to becarefull
"""
bom_vals = self._extract_bom_line(vals)
res = super(ProductTemplate, self).write(vals)
if bom_vals:
self._process_bom_vals(bom_vals)
ctx = self._context.copy()
ctx.pop('default_type', None)
self.with_context(ctx)._process_bom_vals(bom_vals)
return res
@api.multi

View File

@@ -1,13 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<odoo>
<record id="product_template_form_view" model="ir.ui.view">
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_form_view"/>
<field name="priority" eval="200"/>
<field name="arch" type="xml">
<xpath expr="//page[@string='Sales']" position="after">
<xpath expr="//page[@name='sales']" position="after">
<page name="bom_line" string="Bom line">
<field name="bom_line_ids">
<tree editable="bottom">
@@ -19,6 +17,4 @@
</xpath>
</field>
</record>
</data>
</openerp>
</odoo>

View File

@@ -1,124 +0,0 @@
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan">Module name</h2>
<p>This module was written to extend the functionality of ... to support ... and allow you to ...</p>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan">Installation</h2>
</div>
<div class="oe_span6">
<p class="oe_mt32">To install this module, you need to:
<ul>
<li>...</li>
</ul>
</p>
</div>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<a href="https://www.openerp.com/saas_master/demo?lang=en_US&module=crm">
<img src="crm_sc_01.png">
</a>
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan">Configuration</h2>
</div>
<div class="oe_span6">
<p class="oe_mt32">To configure this module, you need to:
<ul>
<li>...</li>
</ul>
</p>
</div>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<a href="https://www.openerp.com/saas_master/demo?lang=en_US&module=crm">
<img src="crm_sc_01.png">
</a>
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan">Usage</h2>
</div>
<div class="oe_span6">
<p class="oe_mt32">To use this module, you need to:
<ul>
<li>...</li>
</ul>
</p>
<p class="oe_mt32">For further information, please visit:
<ul>
<li><a href="https://www.odoo.com/forum/help-1">https://www.odoo.com/forum/help-1</a></li>
</ul>
</p>
</div>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<a href="https://www.openerp.com/saas_master/demo?lang=en_US&module=crm">
<img src="crm_sc_01.png">
</a>
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan">Known issues / Roadmap</h2>
</div>
<div class="oe_span6">
<p class="oe_mt32">
<ul>
<li>...</li>
</ul>
</p>
</div>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<a href="https://www.openerp.com/saas_master/demo?lang=en_US&module=crm">
<img src="crm_sc_01.png">
</a>
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row">
<div class="oe_span12">
<h2 class="oe_slogan">Credits</h2>
</div>
<div class="oe_span12">
<h3>Contributors</h3>
<ul>
<li>Firstname Lastname &lt;<a href="mailto:email.address@example.com">email.address@example.com</a>&gt;</li>
</ul>
</div>
<div class="oe_span12">
<h3>Maintainer</h3>
<p>
This module is maintained by the OCA.<br/>
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.<br/>
To contribute to this module, please visit <a href="http://odoo-community.org">http://odoo-community.org</a>.<br/>
<a href="http://odoo-community.org"><img class="oe_picture oe_centered" src="http://odoo-community.org/logo.png"></a>
</p>
</div>
</div>
</section>

View File

@@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# Copyright (C) 2015 Akretion (http://www.akretion.com).
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import test_quick_bom

View File

@@ -0,0 +1,61 @@
# -*- coding: utf-8 -*-
# Copyright (C) 2015 Akretion (http://www.akretion.com).
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openerp.tests.common import TransactionCase
import logging
_logger = logging.getLogger(__name__)
class TestQuickBom(TransactionCase):
def setUp(self):
super(TestQuickBom, self).setUp()
self.computer = self.env.ref(
'product.product_product_5_product_template')
self.ram = self.env.ref('product.product_product_13_product_template')
self.hard_drive = self.env.ref(
'product.product_product_17_product_template')
self.cpu = self.env.ref('product.product_product_22_product_template')
def test_create_bom(self):
self.computer.write({'bom_line_ids': [
(0, 0, {'product_id': self.ram.id, 'product_qty': 2, }),
(0, 0, {'product_id': self.hard_drive.id, 'product_qty': 2, }),
(0, 0, {'product_id': self.cpu.id, 'product_qty': 1, })]})
bom = self.computer.bom_ids
self.assertEqual(self.computer.id, bom.product_tmpl_id.id)
self.assertEqual(bom.bom_line_ids[0].product_id.id,
self.ram.id)
self.assertEqual(bom.bom_line_ids[0].product_qty, 2)
self.assertEqual(bom.bom_line_ids[1].product_id.id,
self.hard_drive.id)
self.assertEqual(bom.bom_line_ids[1].product_qty, 2)
self.assertEqual(bom.bom_line_ids[2].product_id.id,
self.cpu.id)
self.assertEqual(bom.bom_line_ids[2].product_qty, 1)
def test_read_bom(self):
bom = self.env['mrp.bom'].create({
'type': 'normal',
'product_tmpl_id': self.computer.id})
bomline1 = self.env['mrp.bom.line'].create({
'product_id': self.ram.id,
'product_qty': 2,
'bom_id': bom.id,
})
bomline2 = self.env['mrp.bom.line'].create({
'product_id': self.hard_drive.id,
'product_qty': 2,
'bom_id': bom.id,
})
bomline3 = self.env['mrp.bom.line'].create({
'product_id': self.cpu.id,
'product_qty': 1,
'bom_id': bom.id,
})
self.assertTrue(bomline1 in self.computer.bom_line_ids)
self.assertTrue(bomline2 in self.computer.bom_line_ids)
self.assertTrue(bomline3 in self.computer.bom_line_ids)