From 84e0a532caf79e67fbd2ccd786aa46fcb7e71686 Mon Sep 17 00:00:00 2001 From: mreficent Date: Wed, 3 Jul 2019 12:53:43 +0200 Subject: [PATCH 01/31] [ADD] mrp_bom_tracking --- mrp_bom_tracking/README.rst | 74 +++ mrp_bom_tracking/__init__.py | 3 + mrp_bom_tracking/__manifest__.py | 19 + mrp_bom_tracking/i18n/mrp_bom_tracking.pot | 64 +++ mrp_bom_tracking/models/__init__.py | 3 + mrp_bom_tracking/models/mrp_bom.py | 104 +++++ mrp_bom_tracking/readme/CONTRIBUTORS.rst | 1 + mrp_bom_tracking/readme/DESCRIPTION.rst | 2 + mrp_bom_tracking/static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 420 ++++++++++++++++++ mrp_bom_tracking/views/bom_template.xml | 44 ++ 11 files changed, 734 insertions(+) create mode 100644 mrp_bom_tracking/README.rst create mode 100644 mrp_bom_tracking/__init__.py create mode 100644 mrp_bom_tracking/__manifest__.py create mode 100644 mrp_bom_tracking/i18n/mrp_bom_tracking.pot create mode 100644 mrp_bom_tracking/models/__init__.py create mode 100644 mrp_bom_tracking/models/mrp_bom.py create mode 100644 mrp_bom_tracking/readme/CONTRIBUTORS.rst create mode 100644 mrp_bom_tracking/readme/DESCRIPTION.rst create mode 100644 mrp_bom_tracking/static/description/icon.png create mode 100644 mrp_bom_tracking/static/description/index.html create mode 100644 mrp_bom_tracking/views/bom_template.xml diff --git a/mrp_bom_tracking/README.rst b/mrp_bom_tracking/README.rst new file mode 100644 index 000000000..a2969cb67 --- /dev/null +++ b/mrp_bom_tracking/README.rst @@ -0,0 +1,74 @@ +================ +MRP BoM Tracking +================ + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png + :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmanufacture-lightgray.png?logo=github + :target: https://github.com/OCA/manufacture/tree/11.0/mrp_bom_tracking + :alt: OCA/manufacture +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/manufacture-11-0/manufacture-11-0-mrp_bom_tracking + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/129/11.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds track visibility to some fields of mrp boms. Also, +it log notes for any change in the bom lines (components). + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub 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 `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Eficent + +Contributors +~~~~~~~~~~~~ + +* Miquel Raïch + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +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. + +This module is part of the `OCA/manufacture `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/mrp_bom_tracking/__init__.py b/mrp_bom_tracking/__init__.py new file mode 100644 index 000000000..2bc1433e7 --- /dev/null +++ b/mrp_bom_tracking/__init__.py @@ -0,0 +1,3 @@ +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). + +from . import models diff --git a/mrp_bom_tracking/__manifest__.py b/mrp_bom_tracking/__manifest__.py new file mode 100644 index 000000000..146906fe0 --- /dev/null +++ b/mrp_bom_tracking/__manifest__.py @@ -0,0 +1,19 @@ +# Copyright 2019 Eficent Business and IT Consulting Services S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). + +{ + "name": "MRP BoM Tracking", + "version": "11.0.1.0.0", + "author": "Eficent, Odoo Community Association (OCA)", + "summary": "Add track visibility to some fields of mrp boms.", + "website": "https://github.com/OCA/manufacture", + "category": "Manufacturing", + "depends": [ + "mrp", + ], + "data": [ + "views/bom_template.xml", + ], + "license": "LGPL-3", + 'installable': True, +} diff --git a/mrp_bom_tracking/i18n/mrp_bom_tracking.pot b/mrp_bom_tracking/i18n/mrp_bom_tracking.pot new file mode 100644 index 000000000..ab26f0a10 --- /dev/null +++ b/mrp_bom_tracking/i18n/mrp_bom_tracking.pot @@ -0,0 +1,64 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mrp_bom_tracking +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \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: mrp_bom_tracking +#: model:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2 +msgid ":\n" +" New component
" +msgstr "" + +#. module: mrp_bom_tracking +#: model:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2 +msgid ":\n" +" Removed component
" +msgstr "" + +#. module: mrp_bom_tracking +#: model:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template +msgid "
\n" +" Product Unit of Measure:" +msgstr "" + +#. module: mrp_bom_tracking +#: model:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template +msgid "The component quantities or UoMs have been updated." +msgstr "" + +#. module: mrp_bom_tracking +#: model:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template +#: model:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2 +msgid "The components have changed." +msgstr "" + +#. module: mrp_bom_tracking +#: model:ir.model,name:mrp_bom_tracking.model_mrp_bom +msgid "Bill of Material" +msgstr "" + +#. module: mrp_bom_tracking +#: model:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template +msgid "Product Quantity:" +msgstr "" + +#. module: mrp_bom_tracking +#: model:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template +msgid "component
" +msgstr "" + +#. module: mrp_bom_tracking +#: model:ir.model,name:mrp_bom_tracking.model_mrp_bom_line +msgid "mrp.bom.line" +msgstr "" + diff --git a/mrp_bom_tracking/models/__init__.py b/mrp_bom_tracking/models/__init__.py new file mode 100644 index 000000000..0a5998e00 --- /dev/null +++ b/mrp_bom_tracking/models/__init__.py @@ -0,0 +1,3 @@ +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). + +from . import mrp_bom diff --git a/mrp_bom_tracking/models/mrp_bom.py b/mrp_bom_tracking/models/mrp_bom.py new file mode 100644 index 000000000..c600522a6 --- /dev/null +++ b/mrp_bom_tracking/models/mrp_bom.py @@ -0,0 +1,104 @@ +# Copyright 2019 Eficent Business and IT Consulting Services S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). + +from odoo import api, fields, models + + +class MrpBom(models.Model): + _inherit = "mrp.bom" + + code = fields.Char( + track_visibility="onchange", + ) + product_tmpl_id = fields.Many2one( + track_visibility="always", + ) + product_qty = fields.Float( + track_visibility="onchange", + ) + picking_type_id = fields.Many2one( + track_visibility="onchange", + ) + type = fields.Selection( + track_visibility="onchange", + ) + + @api.multi + def write(self, values): + bom_line_ids = {} + if 'bom_line_ids' in values: + for bom in self: + del_lines = [] + for line in values['bom_line_ids']: + if line[0] == 2: + del_lines.append(line[1]) + if del_lines: + bom.message_post_with_view( + 'mrp_bom_tracking.track_bom_template', + values={ + 'lines': self.env["mrp.bom.line"].browse( + del_lines), + 'mode': 'Removed', + }, + subtype_id=self.env.ref('mail.mt_note').id, + ) + bom_line_ids[bom.id] = bom.bom_line_ids + res = super(MrpBom, self).write(values) + if 'bom_line_ids' in values: + for bom in self: + new_lines = bom.bom_line_ids - bom_line_ids[bom.id] + if new_lines: + bom.message_post_with_view( + 'mrp_bom_tracking.track_bom_template', + values={ + 'lines': new_lines, + 'mode': 'New', + }, + subtype_id=self.env.ref('mail.mt_note').id, + ) + return res + + +class MrpBomLine(models.Model): + _inherit = "mrp.bom.line" + + @api.multi + def write(self, values): + if 'product_id' in values: + for bom in self.mapped('bom_id'): + lines = self.filtered(lambda l: l.bom_id == bom) + product_id = values.get('product_id') + if product_id: + product_id = self.env["product.product"].browse( + product_id) + product_id = product_id or lines.product_id + if lines: + bom.message_post_with_view( + 'mrp_bom_tracking.track_bom_template_2', + values={ + 'lines': lines, + 'product_id': product_id, + }, + subtype_id=self.env.ref('mail.mt_note').id, + ) + elif 'product_qty' in values or 'product_uom_id' in values: + for bom in self.mapped('bom_id'): + lines = self.filtered(lambda l: l.bom_id == bom) + if lines: + product_qty = values.get( + 'product_qty') or lines.product_qty + product_uom_id = values.get('product_uom_id') + if product_uom_id: + product_uom_id = self.env["product.uom"].browse( + product_uom_id) + product_uom_id = product_uom_id or lines.product_uom_id + bom.message_post_with_view( + 'mrp_bom_tracking.track_bom_line_template', + values={ + 'lines': lines, + 'product_qty': product_qty, + 'product_uom_id': product_uom_id, + }, + subtype_id=self.env.ref('mail.mt_note').id, + ) + return super(MrpBomLine, self).write(values) diff --git a/mrp_bom_tracking/readme/CONTRIBUTORS.rst b/mrp_bom_tracking/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..2e34e218a --- /dev/null +++ b/mrp_bom_tracking/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Miquel Raïch diff --git a/mrp_bom_tracking/readme/DESCRIPTION.rst b/mrp_bom_tracking/readme/DESCRIPTION.rst new file mode 100644 index 000000000..bee5ea567 --- /dev/null +++ b/mrp_bom_tracking/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module adds track visibility to some fields of mrp boms. Also, +it log notes for any change in the bom lines (components). diff --git a/mrp_bom_tracking/static/description/icon.png b/mrp_bom_tracking/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z z?n?eq1XP>p-IM$Z^C;2L3itnbJZAip*Zo0aw2bs8@(s^~*8T9go!%dHcAz2lM;`yp zD=7&xjFV$S&5uDaiScyD?B-i1ze`+CoRtz`Wn+Zl&#s4&}MO{@N!ufrzjG$B79)Y2d3tBk&)TxUTw@QS0TEL_?njX|@vq?Uz(nBFK5Pq7*xj#u*R&i|?7+6# z+|r_n#SW&LXhtheZdah{ZVoqwyT{D>MC3nkFF#N)xLi{p7J1jXlmVeb;cP5?e(=f# zuT7fvjSbjS781v?7{)-X3*?>tq?)Yd)~|1{BDS(pqC zC}~H#WXlkUW*H5CDOo<)#x7%RY)A;ShGhI5s*#cRDA8YgqG(HeKDx+#(ZQ?386dv! zlXCO)w91~Vw4AmOcATuV653fa9R$fyK8ul%rG z-wfS zihugoZyr38Im?Zuh6@RcF~t1anQu7>#lPpb#}4cOA!EM11`%f*07RqOVkmX{p~KJ9 z^zP;K#|)$`^Rb{rnHGH{~>1(fawV0*Z#)}M`m8-?ZJV<+e}s9wE# z)l&az?w^5{)`S(%MRzxdNqrs1n*-=jS^_jqE*5XDrA0+VE`5^*p3CuM<&dZEeCjoz zR;uu_H9ZPZV|fQq`Cyw4nscrVwi!fE6ciMmX$!_hN7uF;jjKG)d2@aC4ropY)8etW=xJvni)8eHi`H$%#zn^WJ5NLc-rqk|u&&4Z6fD_m&JfSI1Bvb?b<*n&sfl0^t z=HnmRl`XrFvMKB%9}>PaA`m-fK6a0(8=qPkWS5bb4=v?XcWi&hRY?O5HdulRi4?fN zlsJ*N-0Qw+Yic@s0(2uy%F@ib;GjXt01Fmx5XbRo6+n|pP(&nodMoap^z{~q ziEeaUT@Mxe3vJSfI6?uLND(CNr=#^W<1b}jzW58bIfyWTDle$mmS(|x-0|2UlX+9k zQ^EX7Nw}?EzVoBfT(-LT|=9N@^hcn-_p&sqG z&*oVs2JSU+N4ZD`FhCAWaS;>|wH2G*Id|?pa#@>tyxX`+4HyIArWDvVrX)2WAOQff z0qyHu&-S@i^MS-+j--!pr4fPBj~_8({~e1bfcl0wI1kaoN>mJL6KUPQm5N7lB(ui1 zE-o%kq)&djzWJ}ob<-GfDlkB;F31j-VHKvQUGQ3sp`CwyGJk_i!y^sD0fqC@$9|jO zOqN!r!8-p==F@ZVP=U$qSpY(gQ0)59P1&t@y?5rvg<}E+GB}26NYPp4f2YFQrQtot5mn3wu_qprZ=>Ig-$ zbW26Ws~IgY>}^5w`vTB(G`PTZaDiGBo5o(tp)qli|NeV( z@H_=R8V39rt5J5YB2Ky?4eJJ#b`_iBe2ot~6%7mLt5t8Vwi^Jy7|jWXqa3amOIoRb zOr}WVFP--DsS`1WpN%~)t3R!arKF^Q$e12KEqU36AWwnCBICpH4XCsfnyrHr>$I$4 z!DpKX$OKLWarN7nv@!uIA+~RNO)l$$w}p(;b>mx8pwYvu;dD_unryX_NhT8*Tj>BTrTTL&!?O+%Rv;b?B??gSzdp?6Uug9{ zd@V08Z$BdI?fpoCS$)t4mg4rT8Q_I}h`0d-vYZ^|dOB*Q^S|xqTV*vIg?@fVFSmMpaw0qtTRbx} z({Pg?#{2`sc9)M5N$*N|4;^t$+QP?#mov zGVC@I*lBVrOU-%2y!7%)fAKjpEFsgQc4{amtiHb95KQEwvf<(3T<9-Zm$xIew#P22 zc2Ix|App^>v6(3L_MCU0d3W##AB0M~3D00EWoKZqsJYT(#@w$Y_H7G22M~ApVFTRHMI_3be)Lkn#0F*V8Pq zc}`Cjy$bE;FJ6H7p=0y#R>`}-m4(0F>%@P|?7fx{=R^uFdISRnZ2W_xQhD{YuR3t< z{6yxu=4~JkeA;|(J6_nv#>Nvs&FuLA&PW^he@t(UwFFE8)|a!R{`E`K`i^ZnyE4$k z;(749Ix|oi$c3QbEJ3b~D_kQsPz~fIUKym($a_7dJ?o+40*OLl^{=&oq$<#Q(yyrp z{J-FAniyAw9tPbe&IhQ|a`DqFTVQGQ&Gq3!C2==4x{6EJwiPZ8zub-iXoUtkJiG{} zPaR&}_fn8_z~(=;5lD-aPWD3z8PZS@AaUiomF!G8I}Mf>e~0g#BelA-5#`cj;O5>N Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/mrp_bom_tracking/static/description/index.html b/mrp_bom_tracking/static/description/index.html new file mode 100644 index 000000000..685adaf3d --- /dev/null +++ b/mrp_bom_tracking/static/description/index.html @@ -0,0 +1,420 @@ + + + + + + +MRP BoM Tracking + + + +
+

MRP BoM Tracking

+ + +

Beta License: LGPL-3 OCA/manufacture Translate me on Weblate Try me on Runbot

+

This module adds track visibility to some fields of mrp boms. Also, +it log notes for any change in the bom lines (components).

+

Table of contents

+ +
+

Bug Tracker

+

Bugs are tracked on GitHub 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.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Eficent
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

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.

+

This module is part of the OCA/manufacture project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/mrp_bom_tracking/views/bom_template.xml b/mrp_bom_tracking/views/bom_template.xml new file mode 100644 index 000000000..245861c22 --- /dev/null +++ b/mrp_bom_tracking/views/bom_template.xml @@ -0,0 +1,44 @@ + + + + + + + + + + From 63da04f368b1cc3b357e2c1a65e4ef1c272db5fd Mon Sep 17 00:00:00 2001 From: Lois Rilo Date: Thu, 11 Jul 2019 10:24:54 +0200 Subject: [PATCH 02/31] [12.0][MIG] mrp_bom_tracking --- mrp_bom_tracking/README.rst | 11 ++-- mrp_bom_tracking/__manifest__.py | 6 +- mrp_bom_tracking/i18n/mrp_bom_tracking.pot | 64 +++++++++++++++---- mrp_bom_tracking/readme/CONTRIBUTORS.rst | 1 + .../static/description/index.html | 7 +- mrp_bom_tracking/tests/__init__.py | 1 + .../tests/test_mrp_bom_tracking.py | 63 ++++++++++++++++++ 7 files changed, 130 insertions(+), 23 deletions(-) create mode 100644 mrp_bom_tracking/tests/__init__.py create mode 100644 mrp_bom_tracking/tests/test_mrp_bom_tracking.py diff --git a/mrp_bom_tracking/README.rst b/mrp_bom_tracking/README.rst index a2969cb67..7e10e1697 100644 --- a/mrp_bom_tracking/README.rst +++ b/mrp_bom_tracking/README.rst @@ -14,13 +14,13 @@ MRP BoM Tracking :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html :alt: License: LGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmanufacture-lightgray.png?logo=github - :target: https://github.com/OCA/manufacture/tree/11.0/mrp_bom_tracking + :target: https://github.com/OCA/manufacture/tree/12.0/mrp_bom_tracking :alt: OCA/manufacture .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/manufacture-11-0/manufacture-11-0-mrp_bom_tracking + :target: https://translation.odoo-community.org/projects/manufacture-12-0/manufacture-12-0-mrp_bom_tracking :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/129/11.0 + :target: https://runbot.odoo-community.org/runbot/129/12.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -39,7 +39,7 @@ Bug Tracker Bugs are tracked on `GitHub 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 `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -55,6 +55,7 @@ Contributors ~~~~~~~~~~~~ * Miquel Raïch +* Lois Rilo Maintainers ~~~~~~~~~~~ @@ -69,6 +70,6 @@ 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. -This module is part of the `OCA/manufacture `_ project on GitHub. +This module is part of the `OCA/manufacture `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/mrp_bom_tracking/__manifest__.py b/mrp_bom_tracking/__manifest__.py index 146906fe0..761ef5863 100644 --- a/mrp_bom_tracking/__manifest__.py +++ b/mrp_bom_tracking/__manifest__.py @@ -3,9 +3,9 @@ { "name": "MRP BoM Tracking", - "version": "11.0.1.0.0", + "version": "12.0.1.0.0", "author": "Eficent, Odoo Community Association (OCA)", - "summary": "Add track visibility to some fields of mrp boms.", + "summary": "Logs any change to a BoM in the chatter", "website": "https://github.com/OCA/manufacture", "category": "Manufacturing", "depends": [ @@ -15,5 +15,5 @@ "views/bom_template.xml", ], "license": "LGPL-3", - 'installable': True, + "installable": True, } diff --git a/mrp_bom_tracking/i18n/mrp_bom_tracking.pot b/mrp_bom_tracking/i18n/mrp_bom_tracking.pot index ab26f0a10..03993d2b4 100644 --- a/mrp_bom_tracking/i18n/mrp_bom_tracking.pot +++ b/mrp_bom_tracking/i18n/mrp_bom_tracking.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" @@ -14,31 +14,31 @@ msgstr "" "Plural-Forms: \n" #. module: mrp_bom_tracking -#: model:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2 +#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2 msgid ":\n" " New component
" msgstr "" #. module: mrp_bom_tracking -#: model:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2 +#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2 msgid ":\n" " Removed component
" msgstr "" #. module: mrp_bom_tracking -#: model:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template +#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template msgid "
\n" " Product Unit of Measure:" msgstr "" #. module: mrp_bom_tracking -#: model:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template +#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template msgid "The component quantities or UoMs have been updated." msgstr "" #. module: mrp_bom_tracking -#: model:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template -#: model:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2 +#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template +#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2 msgid "The components have changed." msgstr "" @@ -48,17 +48,57 @@ msgid "Bill of Material" msgstr "" #. module: mrp_bom_tracking -#: model:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template +#: model:ir.model,name:mrp_bom_tracking.model_mrp_bom_line +msgid "Bill of Material Line" +msgstr "" + +#. module: mrp_bom_tracking +#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__type +msgid "BoM Type" +msgstr "" + +#. module: mrp_bom_tracking +#: selection:mrp.bom,type:0 +msgid "Kit" +msgstr "" + +#. module: mrp_bom_tracking +#: selection:mrp.bom,type:0 +msgid "Manufacture this product" +msgstr "" + +#. module: mrp_bom_tracking +#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__picking_type_id +msgid "Operation Type" +msgstr "" + +#. module: mrp_bom_tracking +#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_tmpl_id +msgid "Product" +msgstr "" + +#. module: mrp_bom_tracking +#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template msgid "Product Quantity:" msgstr "" #. module: mrp_bom_tracking -#: model:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template -msgid "component
" +#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_qty +msgid "Quantity" msgstr "" #. module: mrp_bom_tracking -#: model:ir.model,name:mrp_bom_tracking.model_mrp_bom_line -msgid "mrp.bom.line" +#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__code +msgid "Reference" +msgstr "" + +#. module: mrp_bom_tracking +#: model:ir.model.fields,help:mrp_bom_tracking.field_mrp_bom__picking_type_id +msgid "When a procurement has a ‘produce’ route with a operation type set, it will try to create a Manufacturing Order for that product using a BoM of the same operation type. That allows to define stock rules which trigger different manufacturing orders with different BoMs." +msgstr "" + +#. module: mrp_bom_tracking +#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template +msgid "component
" msgstr "" diff --git a/mrp_bom_tracking/readme/CONTRIBUTORS.rst b/mrp_bom_tracking/readme/CONTRIBUTORS.rst index 2e34e218a..9843f5f12 100644 --- a/mrp_bom_tracking/readme/CONTRIBUTORS.rst +++ b/mrp_bom_tracking/readme/CONTRIBUTORS.rst @@ -1 +1,2 @@ * Miquel Raïch +* Lois Rilo diff --git a/mrp_bom_tracking/static/description/index.html b/mrp_bom_tracking/static/description/index.html index 685adaf3d..3503bb55e 100644 --- a/mrp_bom_tracking/static/description/index.html +++ b/mrp_bom_tracking/static/description/index.html @@ -367,7 +367,7 @@ ul.auto-toc { !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: LGPL-3 OCA/manufacture Translate me on Weblate Try me on Runbot

+

Beta License: LGPL-3 OCA/manufacture Translate me on Weblate Try me on Runbot

This module adds track visibility to some fields of mrp boms. Also, it log notes for any change in the bom lines (components).

Table of contents

@@ -387,7 +387,7 @@ it log notes for any change in the bom lines (components).

Bugs are tracked on GitHub 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.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -402,6 +402,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome

Contributors

@@ -411,7 +412,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome

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.

-

This module is part of the OCA/manufacture project on GitHub.

+

This module is part of the OCA/manufacture project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

diff --git a/mrp_bom_tracking/tests/__init__.py b/mrp_bom_tracking/tests/__init__.py new file mode 100644 index 000000000..00f486a4e --- /dev/null +++ b/mrp_bom_tracking/tests/__init__.py @@ -0,0 +1 @@ +from . import test_mrp_bom_tracking diff --git a/mrp_bom_tracking/tests/test_mrp_bom_tracking.py b/mrp_bom_tracking/tests/test_mrp_bom_tracking.py new file mode 100644 index 000000000..b1ca64340 --- /dev/null +++ b/mrp_bom_tracking/tests/test_mrp_bom_tracking.py @@ -0,0 +1,63 @@ +# 2019 Eficent Business and IT Consulting Services S.L. +# - Lois Rilo +# License LGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from odoo.tests import common + + +class TestBomTracking(common.SavepointCase): + + @classmethod + def setUpClass(cls): + super().setUpClass() + + cls.product_obj = cls.env['product.product'] + cls.bom_obj = cls.env['mrp.bom'] + cls.bom_line_obj = cls.env['mrp.bom.line'] + + # Create products: + cls.product_1 = cls.product_obj.create({ + 'name': 'TEST 01', + 'type': 'product', + }) + + cls.component_1 = cls.product_obj.create({ + 'name': 'RM 01', + 'type': 'product', + }) + cls.component_2 = cls.product_obj.create({ + 'name': 'RM 02', + 'type': 'product', + }) + cls.component_2_alt = cls.product_obj.create({ + 'name': 'RM 02-B', + 'type': 'product', + }) + + # Create Bills of Materials: + cls.bom = cls.bom_obj.create({ + 'product_tmpl_id': cls.product_1.product_tmpl_id.id, + + }) + cls.line_1 = cls.bom_line_obj.create({ + 'product_id': cls.component_1.id, + 'bom_id': cls.bom.id, + 'product_qty': 2.0, + }) + cls.line_2 = cls.bom_line_obj.create({ + 'product_id': cls.component_2.id, + 'bom_id': cls.bom.id, + 'product_qty': 5.0, + }) + + def test_01_change_bom_line_qty(self): + before = self.bom.message_ids + self.line_1.product_qty = 3.0 + after = self.bom.message_ids + self.assertEqual(len(after - before), 1) + + def test_02_change_bom_line_product(self): + before = self.bom.message_ids + self.line_2.product_id = self.component_2_alt + after = self.bom.message_ids + self.assertEqual(len(after - before), 1) From 9180fb1f8e5ffebe63a56eb675dd88fdb029d940 Mon Sep 17 00:00:00 2001 From: Maria Sparenberg Date: Wed, 17 Jul 2019 10:14:08 +0000 Subject: [PATCH 03/31] Added translation using Weblate (German) --- mrp_bom_tracking/i18n/de.po | 104 ++++++++++++++++++ .../static/description/index.html | 2 +- 2 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 mrp_bom_tracking/i18n/de.po diff --git a/mrp_bom_tracking/i18n/de.po b/mrp_bom_tracking/i18n/de.po new file mode 100644 index 000000000..00db1f6de --- /dev/null +++ b/mrp_bom_tracking/i18n/de.po @@ -0,0 +1,104 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mrp_bom_tracking +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: mrp_bom_tracking +#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2 +msgid ":\n" +" New component
" +msgstr "" + +#. module: mrp_bom_tracking +#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2 +msgid ":\n" +" Removed component
" +msgstr "" + +#. module: mrp_bom_tracking +#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template +msgid "
\n" +" Product Unit of Measure:" +msgstr "" + +#. module: mrp_bom_tracking +#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template +msgid "The component quantities or UoMs have been updated." +msgstr "" + +#. module: mrp_bom_tracking +#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template +#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2 +msgid "The components have changed." +msgstr "" + +#. module: mrp_bom_tracking +#: model:ir.model,name:mrp_bom_tracking.model_mrp_bom +msgid "Bill of Material" +msgstr "" + +#. module: mrp_bom_tracking +#: model:ir.model,name:mrp_bom_tracking.model_mrp_bom_line +msgid "Bill of Material Line" +msgstr "" + +#. module: mrp_bom_tracking +#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__type +msgid "BoM Type" +msgstr "" + +#. module: mrp_bom_tracking +#: selection:mrp.bom,type:0 +msgid "Kit" +msgstr "" + +#. module: mrp_bom_tracking +#: selection:mrp.bom,type:0 +msgid "Manufacture this product" +msgstr "" + +#. module: mrp_bom_tracking +#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__picking_type_id +msgid "Operation Type" +msgstr "" + +#. module: mrp_bom_tracking +#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_tmpl_id +msgid "Product" +msgstr "" + +#. module: mrp_bom_tracking +#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template +msgid "Product Quantity:" +msgstr "" + +#. module: mrp_bom_tracking +#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_qty +msgid "Quantity" +msgstr "" + +#. module: mrp_bom_tracking +#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__code +msgid "Reference" +msgstr "" + +#. module: mrp_bom_tracking +#: model:ir.model.fields,help:mrp_bom_tracking.field_mrp_bom__picking_type_id +msgid "When a procurement has a ‘produce’ route with a operation type set, it will try to create a Manufacturing Order for that product using a BoM of the same operation type. That allows to define stock rules which trigger different manufacturing orders with different BoMs." +msgstr "" + +#. module: mrp_bom_tracking +#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template +msgid "component
" +msgstr "" diff --git a/mrp_bom_tracking/static/description/index.html b/mrp_bom_tracking/static/description/index.html index 3503bb55e..354d21500 100644 --- a/mrp_bom_tracking/static/description/index.html +++ b/mrp_bom_tracking/static/description/index.html @@ -3,7 +3,7 @@ - + MRP BoM Tracking