From 254eb61460ff001615340066542e41e8ae1fdafb Mon Sep 17 00:00:00 2001 From: Lois Rilo Date: Tue, 3 Sep 2019 10:42:27 +0200 Subject: [PATCH 1/8] [12.0][ADD] product_mrp_info --- product_mrp_info/README.rst | 88 ++++ product_mrp_info/__init__.py | 1 + product_mrp_info/__manifest__.py | 23 + product_mrp_info/i18n/product_mrp_info.pot | 43 ++ product_mrp_info/models/__init__.py | 1 + product_mrp_info/models/product.py | 61 +++ product_mrp_info/readme/CONTRIBUTORS.rst | 1 + product_mrp_info/readme/DESCRIPTION.rst | 1 + product_mrp_info/readme/USAGE.rst | 3 + product_mrp_info/static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 428 ++++++++++++++++++ product_mrp_info/tests/__init__.py | 1 + .../tests/test_product_mrp_info.py | 83 ++++ product_mrp_info/views/product_views.xml | 38 ++ 14 files changed, 772 insertions(+) create mode 100644 product_mrp_info/README.rst create mode 100644 product_mrp_info/__init__.py create mode 100644 product_mrp_info/__manifest__.py create mode 100644 product_mrp_info/i18n/product_mrp_info.pot create mode 100644 product_mrp_info/models/__init__.py create mode 100644 product_mrp_info/models/product.py create mode 100644 product_mrp_info/readme/CONTRIBUTORS.rst create mode 100644 product_mrp_info/readme/DESCRIPTION.rst create mode 100644 product_mrp_info/readme/USAGE.rst create mode 100644 product_mrp_info/static/description/icon.png create mode 100644 product_mrp_info/static/description/index.html create mode 100644 product_mrp_info/tests/__init__.py create mode 100644 product_mrp_info/tests/test_product_mrp_info.py create mode 100644 product_mrp_info/views/product_views.xml diff --git a/product_mrp_info/README.rst b/product_mrp_info/README.rst new file mode 100644 index 0000000000..0a8445c7b2 --- /dev/null +++ b/product_mrp_info/README.rst @@ -0,0 +1,88 @@ +================ +Product MRP Info +================ + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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/12.0/product_mrp_info + :alt: OCA/manufacture +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/manufacture-12-0/manufacture-12-0-product_mrp_info + :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/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Adds smart button in product form view linking to manufacturing order list. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +Go to a product form and on the smart buttons you will se a new one, *MO's*, +click on it to access to a list of all the manufacturing Orders for that +product. + +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 +~~~~~~~~~~~~ + +* Lois Rilo + +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. + +.. |maintainer-lreficent| image:: https://github.com/lreficent.png?size=40px + :target: https://github.com/lreficent + :alt: lreficent + +Current `maintainer `__: + +|maintainer-lreficent| + +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/product_mrp_info/__init__.py b/product_mrp_info/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/product_mrp_info/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/product_mrp_info/__manifest__.py b/product_mrp_info/__manifest__.py new file mode 100644 index 0000000000..6a56ca002d --- /dev/null +++ b/product_mrp_info/__manifest__.py @@ -0,0 +1,23 @@ +# Copyright 2019 Eficent Business and IT Consulting Services S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +{ + "name": "Product MRP Info", + "version": "12.0.1.0.0", + "development_status": "Beta", + "license": "LGPL-3", + "author": "Eficent, Odoo Community Association (OCA)", + "maintainers": ["lreficent"], + "summary": "Adds smart button in product form view linking to " + "manufacturing order list.", + "website": "https://github.com/OCA/manufacture", + "category": "Manufacturing", + "depends": [ + "mrp", + ], + "data": [ + "views/product_views.xml", + ], + "installable": True, + "application": False, +} diff --git a/product_mrp_info/i18n/product_mrp_info.pot b/product_mrp_info/i18n/product_mrp_info.pot new file mode 100644 index 0000000000..5dc30d22c7 --- /dev/null +++ b/product_mrp_info/i18n/product_mrp_info.pot @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_mrp_info +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.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: product_mrp_info +#: model:ir.model.fields,field_description:product_mrp_info.field_product_product__mo_count +#: model:ir.model.fields,field_description:product_mrp_info.field_product_template__mo_count +msgid "# Manufacturing Orders" +msgstr "" + +#. module: product_mrp_info +#: model_terms:ir.ui.view,arch_db:product_mrp_info.product_normal_form_view +#: model_terms:ir.ui.view,arch_db:product_mrp_info.product_template_only_form_view +msgid "MO's" +msgstr "" + +#. module: product_mrp_info +#: model_terms:ir.ui.view,arch_db:product_mrp_info.product_normal_form_view +#: model_terms:ir.ui.view,arch_db:product_mrp_info.product_template_only_form_view +msgid "Manufactured Orders" +msgstr "" + +#. module: product_mrp_info +#: model:ir.model,name:product_mrp_info.model_product_product +msgid "Product" +msgstr "" + +#. module: product_mrp_info +#: model:ir.model,name:product_mrp_info.model_product_template +msgid "Product Template" +msgstr "" + diff --git a/product_mrp_info/models/__init__.py b/product_mrp_info/models/__init__.py new file mode 100644 index 0000000000..9649db77a1 --- /dev/null +++ b/product_mrp_info/models/__init__.py @@ -0,0 +1 @@ +from . import product diff --git a/product_mrp_info/models/product.py b/product_mrp_info/models/product.py new file mode 100644 index 0000000000..96a7a0fb5e --- /dev/null +++ b/product_mrp_info/models/product.py @@ -0,0 +1,61 @@ +# Copyright 2019 Eficent Business and IT Consulting Services S.L. +# - Lois Rilo Antelo +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from odoo import api, fields, models + + +class ProductTemplate(models.Model): + _inherit = "product.template" + + mo_count = fields.Integer( + string="# Manufacturing Orders", + compute="_compute_mo_count", + ) + + @api.multi + def _compute_mo_count(self): + read_group_res = self.env["mrp.production"].read_group( + [("product_id", "in", self.mapped("product_variant_ids").ids)], + ["product_id"], ["product_id"]) + mapped_data = dict( + [(data["product_id"][0], data["product_id_count"]) for data in + read_group_res]) + for rec in self: + count = 0 + for variant in rec.mapped("product_variant_ids"): + count += mapped_data.get(variant.id, 0) + rec.mo_count = count + + def action_view_mrp_productions(self): + product_ids = self.mapped("product_variant_ids").ids + action = self.env.ref("mrp.act_product_mrp_production").read()[0] + action["domain"] = [("product_id", "in", product_ids)] + action["context"] = {} + return action + + +class ProductProduct(models.Model): + _inherit = "product.product" + + mo_count = fields.Integer( + string="# Manufacturing Orders", + compute="_compute_mo_count", + ) + + def _compute_mo_count(self): + read_group_res = self.env["mrp.production"].read_group( + [("product_id", "in", self.ids)], ["product_id"], ["product_id"]) + mapped_data = dict( + [(data["product_id"][0], data["product_id_count"]) for data in + read_group_res]) + for product in self: + product.mo_count = mapped_data.get(product.id, 0) + + @api.multi + def action_view_mrp_productions(self): + product_ids = self.ids + action = self.env.ref("mrp.act_product_mrp_production").read()[0] + action["domain"] = [("product_id", "in", product_ids)] + action["context"] = {} + return action diff --git a/product_mrp_info/readme/CONTRIBUTORS.rst b/product_mrp_info/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000000..4b574636c0 --- /dev/null +++ b/product_mrp_info/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Lois Rilo diff --git a/product_mrp_info/readme/DESCRIPTION.rst b/product_mrp_info/readme/DESCRIPTION.rst new file mode 100644 index 0000000000..44ed736bd1 --- /dev/null +++ b/product_mrp_info/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Adds smart button in product form view linking to manufacturing order list. \ No newline at end of file diff --git a/product_mrp_info/readme/USAGE.rst b/product_mrp_info/readme/USAGE.rst new file mode 100644 index 0000000000..80351dbae9 --- /dev/null +++ b/product_mrp_info/readme/USAGE.rst @@ -0,0 +1,3 @@ +Go to a product form and on the smart buttons you will se a new one, *MO's*, +click on it to access to a list of all the manufacturing Orders for that +product. \ No newline at end of file diff --git a/product_mrp_info/static/description/icon.png b/product_mrp_info/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 zcmW++2RxMjAAjx~&dlBk9S+%}OXg)AGE&Cb*&}d0jUxM@u(PQx^-s)697TX`ehR4?GS^qbkof1cslKgkU)h65qZ9Oc=ml_0temigYLJfnz{IDzUf>bGs4N!v3=Z3jMq&A#7%rM5eQ#dc?k~! zVpnB`o+K7|Al`Q_U;eD$B zfJtP*jH`siUq~{KE)`jP2|#TUEFGRryE2`i0**z#*^6~AI|YzIWy$Cu#CSLW3q=GA z6`?GZymC;dCPk~rBS%eCb`5OLr;RUZ;D`}um=H)BfVIq%7VhiMr)_#G0N#zrNH|__ zc+blN2UAB0=617@>_u;MPHN;P;N#YoE=)R#i$k_`UAA>WWCcEVMh~L_ zj--gtp&|K1#58Yz*AHCTMziU1Jzt_jG0I@qAOHsk$2}yTmVkBp_eHuY$A9)>P6o~I z%aQ?!(GqeQ-Y+b0I(m9pwgi(IIZZzsbMv+9w{PFtd_<_(LA~0H(xz{=FhLB@(1&qHA5EJw1>>=%q2f&^X>IQ{!GJ4e9U z&KlB)z(84HmNgm2hg2C0>WM{E(DdPr+EeU_N@57;PC2&DmGFW_9kP&%?X4}+xWi)( z;)z%wI5>D4a*5XwD)P--sPkoY(a~WBw;E~AW`Yue4kFa^LM3X`8x|}ZUeMnqr}>kH zG%WWW>3ml$Yez?i%)2pbKPI7?5o?hydokgQyZsNEr{a|mLdt;X2TX(#B1j35xPnPW z*bMSSOauW>o;*=kO8ojw91VX!qoOQb)zHJ!odWB}d+*K?#sY_jqPdg{Sm2HdYzdEx zOGVPhVRTGPtv0o}RfVP;Nd(|CB)I;*t&QO8h zFfekr30S!-LHmV_Su-W+rEwYXJ^;6&3|L$mMC8*bQptyOo9;>Qb9Q9`ySe3%V$A*9 zeKEe+b0{#KWGp$F+tga)0RtI)nhMa-K@JS}2krK~n8vJ=Ngm?R!9G<~RyuU0d?nz# z-5EK$o(!F?hmX*2Yt6+coY`6jGbb7tF#6nHA zuKk=GGJ;ZwON1iAfG$E#Y7MnZVmrY|j0eVI(DN_MNFJmyZ|;w4tf@=CCDZ#5N_0K= z$;R~bbk?}TpfDjfB&aiQ$VA}s?P}xPERJG{kxk5~R`iRS(SK5d+Xs9swCozZISbnS zk!)I0>t=A<-^z(cmSFz3=jZ23u13X><0b)P)^1T_))Kr`e!-pb#q&J*Q`p+B6la%C zuVl&0duN<;uOsB3%T9Fp8t{ED108<+W(nOZd?gDnfNBC3>M8WE61$So|P zVvqH0SNtDTcsUdzaMDpT=Ty0pDHHNL@Z0w$Y`XO z2M-_r1S+GaH%pz#Uy0*w$Vdl=X=rQXEzO}d6J^R6zjM1u&c9vYLvLp?W7w(?np9x1 zE_0JSAJCPB%i7p*Wvg)pn5T`8k3-uR?*NT|J`eS#_#54p>!p(mLDvmc-3o0mX*mp_ zN*AeS<>#^-{S%W<*mz^!X$w_2dHWpcJ6^j64qFBft-o}o_Vx80o0>}Du;>kLts;$8 zC`7q$QI(dKYG`Wa8#wl@V4jVWBRGQ@1dr-hstpQL)Tl+aqVpGpbSfN>5i&QMXfiZ> zaA?T1VGe?rpQ@;+pkrVdd{klI&jVS@I5_iz!=UMpTsa~mBga?1r}aRBm1WS;TT*s0f0lY=JBl66Upy)-k4J}lh=P^8(SXk~0xW=T9v*B|gzIhN z>qsO7dFd~mgxAy4V?&)=5ieYq?zi?ZEoj)&2o)RLy=@hbCRcfT5jigwtQGE{L*8<@Yd{zg;CsL5mvzfDY}P-wos_6PfprFVaeqNE%h zKZhLtcQld;ZD+>=nqN~>GvROfueSzJD&BE*}XfU|H&(FssBqY=hPCt`d zH?@s2>I(|;fcW&YM6#V#!kUIP8$Nkdh0A(bEVj``-AAyYgwY~jB zT|I7Bf@%;7aL7Wf4dZ%VqF$eiaC38OV6oy3Z#TER2G+fOCd9Iaoy6aLYbPTN{XRPz z;U!V|vBf%H!}52L2gH_+j;`bTcQRXB+y9onc^wLm5wi3-Be}U>k_u>2Eg$=k!(l@I zcCg+flakT2Nej3i0yn+g+}%NYb?ta;R?(g5SnwsQ49U8Wng8d|{B+lyRcEDvR3+`O{zfmrmvFrL6acVP%yG98X zo&+VBg@px@i)%o?dG(`T;n*$S5*rnyiR#=wW}}GsAcfyQpE|>a{=$Hjg=-*_K;UtD z#z-)AXwSRY?OPefw^iI+ z)AXz#PfEjlwTes|_{sB?4(O@fg0AJ^g8gP}ex9Ucf*@_^J(s_5jJV}c)s$`Myn|Kd z$6>}#q^n{4vN@+Os$m7KV+`}c%4)4pv@06af4-x5#wj!KKb%caK{A&Y#Rfs z-po?Dcb1({W=6FKIUirH&(yg=*6aLCekcKwyfK^JN5{wcA3nhO(o}SK#!CINhI`-I z1)6&n7O&ZmyFMuNwvEic#IiOAwNkR=u5it{B9n2sAJV5pNhar=j5`*N!Na;c7g!l$ z3aYBqUkqqTJ=Re-;)s!EOeij=7SQZ3Hq}ZRds%IM*PtM$wV z@;rlc*NRK7i3y5BETSKuumEN`Xu_8GP1Ri=OKQ$@I^ko8>H6)4rjiG5{VBM>B|%`&&s^)jS|-_95&yc=GqjNo{zFkw%%HHhS~e=s zD#sfS+-?*t|J!+ozP6KvtOl!R)@@-z24}`9{QaVLD^9VCSR2b`b!KC#o;Ki<+wXB6 zx3&O0LOWcg4&rv4QG0)4yb}7BFSEg~=IR5#ZRj8kg}dS7_V&^%#Do==#`u zpy6{ox?jWuR(;pg+f@mT>#HGWHAJRRDDDv~@(IDw&R>9643kK#HN`!1vBJHnC+RM&yIh8{gG2q zA%e*U3|N0XSRa~oX-3EAneep)@{h2vvd3Xvy$7og(sayr@95+e6~Xvi1tUqnIxoIH zVWo*OwYElb#uyW{Imam6f2rGbjR!Y3`#gPqkv57dB6K^wRGxc9B(t|aYDGS=m$&S!NmCtrMMaUg(c zc2qC=2Z`EEFMW-me5B)24AqF*bV5Dr-M5ig(l-WPS%CgaPzs6p_gnCIvTJ=Y<6!gT zVt@AfYCzjjsMEGi=rDQHo0yc;HqoRNnNFeWZgcm?f;cp(6CNylj36DoL(?TS7eU#+ z7&mfr#y))+CJOXQKUMZ7QIdS9@#-}7y2K1{8)cCt0~-X0O!O?Qx#E4Og+;A2SjalQ zs7r?qn0H044=sDN$SRG$arw~n=+T_DNdSrarmu)V6@|?1-ZB#hRn`uilTGPJ@fqEy zGt(f0B+^JDP&f=r{#Y_wi#AVDf-y!RIXU^0jXsFpf>=Ji*TeqSY!H~AMbJdCGLhC) zn7Rx+sXw6uYj;WRYrLd^5IZq@6JI1C^YkgnedZEYy<&4(z%Q$5yv#Boo{AH8n$a zhb4Y3PWdr269&?V%uI$xMcUrMzl=;w<_nm*qr=c3Rl@i5wWB;e-`t7D&c-mcQl7x! zZWB`UGcw=Y2=}~wzrfLx=uet<;m3~=8I~ZRuzvMQUQdr+yTV|ATf1Uuomr__nDf=X zZ3WYJtHp_ri(}SQAPjv+Y+0=fH4krOP@S&=zZ-t1jW1o@}z;xk8 z(Nz1co&El^HK^NrhVHa-_;&88vTU>_J33=%{if;BEY*J#1n59=07jrGQ#IP>@u#3A z;!q+E1Rj3ZJ+!4bq9F8PXJ@yMgZL;>&gYA0%_Kbi8?S=XGM~dnQZQ!yBSgcZhY96H zrWnU;k)qy`rX&&xlDyA%(a1Hhi5CWkmg(`Gb%m(HKi-7Z!LKGRP_B8@`7&hdDy5n= z`OIxqxiVfX@OX1p(mQu>0Ai*v_cTMiw4qRt3~NBvr9oBy0)r>w3p~V0SCm=An6@3n)>@z!|o-$HvDK z|3D2ZMJkLE5loMKl6R^ez@Zz%S$&mbeoqH5`Bb){Ei21q&VP)hWS2tjShfFtGE+$z zzCR$P#uktu+#!w)cX!lWN1XU%K-r=s{|j?)Akf@q#3b#{6cZCuJ~gCxuMXRmI$nGtnH+-h z+GEi!*X=AP<|fG`1>MBdTb?28JYc=fGvAi2I<$B(rs$;eoJCyR6_bc~p!XR@O-+sD z=eH`-ye})I5ic1eL~TDmtfJ|8`0VJ*Yr=hNCd)G1p2MMz4C3^Mj?7;!w|Ly%JqmuW zlIEW^Ft%z?*|fpXda>Jr^1noFZEwFgVV%|*XhH@acv8rdGxeEX{M$(vG{Zw+x(ei@ zmfXb22}8-?Fi`vo-YVrTH*C?a8%M=Hv9MqVH7H^J$KsD?>!SFZ;ZsvnHr_gn=7acz z#W?0eCdVhVMWN12VV^$>WlQ?f;P^{(&pYTops|btm6aj>_Uz+hqpGwB)vWp0Cf5y< zft8-je~nn?W11plq}N)4A{l8I7$!ks_x$PXW-2XaRFswX_BnF{R#6YIwMhAgd5F9X zGmwdadS6(a^fjHtXg8=l?Rc0Sm%hk6E9!5cLVloEy4eh(=FwgP`)~I^5~pBEWo+F6 zSf2ncyMurJN91#cJTy_u8Y}@%!bq1RkGC~-bV@SXRd4F{R-*V`bS+6;W5vZ(&+I<9$;-V|eNfLa5n-6% z2(}&uGRF;p92eS*sE*oR$@pexaqr*meB)VhmIg@h{uzkk$9~qh#cHhw#>O%)b@+(| z^IQgqzuj~Sk(J;swEM-3TrJAPCq9k^^^`q{IItKBRXYe}e0Tdr=Huf7da3$l4PdpwWDop%^}n;dD#K4s#DYA8SHZ z&1!riV4W4R7R#C))JH1~axJ)RYnM$$lIR%6fIVA@zV{XVyx}C+a-Dt8Y9M)^KU0+H zR4IUb2CJ{Hg>CuaXtD50jB(_Tcx=Z$^WYu2u5kubqmwp%drJ6 z?Fo40g!Qd<-l=TQxqHEOuPX0;^z7iX?Ke^a%XT<13TA^5`4Xcw6D@Ur&VT&CUe0d} z1GjOVF1^L@>O)l@?bD~$wzgf(nxX1OGD8fEV?TdJcZc2KoUe|oP1#=$$7ee|xbY)A zDZq+cuTpc(fFdj^=!;{k03C69lMQ(|>uhRfRu%+!k&YOi-3|1QKB z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/product_mrp_info/static/description/index.html b/product_mrp_info/static/description/index.html new file mode 100644 index 0000000000..2c5da40d4f --- /dev/null +++ b/product_mrp_info/static/description/index.html @@ -0,0 +1,428 @@ + + + + + + +Product MRP Info + + + +
+

Product MRP Info

+ + +

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

+

Adds smart button in product form view linking to manufacturing order list.

+

Table of contents

+ +
+

Usage

+

Go to a product form and on the smart buttons you will se a new one, MO’s, +click on it to access to a list of all the manufacturing Orders for that +product.

+
+
+

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.

+

Current maintainer:

+

lreficent

+

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/product_mrp_info/tests/__init__.py b/product_mrp_info/tests/__init__.py new file mode 100644 index 0000000000..93b69081fa --- /dev/null +++ b/product_mrp_info/tests/__init__.py @@ -0,0 +1 @@ +from . import test_product_mrp_info diff --git a/product_mrp_info/tests/test_product_mrp_info.py b/product_mrp_info/tests/test_product_mrp_info.py new file mode 100644 index 0000000000..66582e5bd0 --- /dev/null +++ b/product_mrp_info/tests/test_product_mrp_info.py @@ -0,0 +1,83 @@ +# Copyright 2019 Eficent Business and IT Consulting Services, S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from odoo.tests.common import TransactionCase + + +class TestProductMrpInfo(TransactionCase): + + def setUp(self): + super().setUp() + self.pt_obj = self.env["product.template"] + self.pp_obj = self.env["product.product"] + self.mo_obj = self.env["mrp.production"] + self.bom_obj = self.env["mrp.bom"] + self.boml_obj = self.env["mrp.bom.line"] + + self.manufacture_route = self.env.ref( + "mrp.route_warehouse0_manufacture") + + self.attribute = self.env["product.attribute"].create({ + "name": "Test Attribute", + "create_variant": "always", + }) + self.value1 = self.env["product.attribute.value"].create({ + "name": "Value 1", + "attribute_id": self.attribute.id, + }) + self.value2 = self.env["product.attribute.value"].create({ + "name": "Value 2", + "attribute_id": self.attribute.id, + }) + self.product = self.pt_obj.create({ + "name": "Test Template", + "attribute_line_ids": [(0, 0, { + "attribute_id": self.attribute.id, + "value_ids": [(6, 0, [self.value1.id, self.value2.id])] + })], + "route_ids": [(6, 0, self.manufacture_route.ids)], + }) + self.variant_1 = self.product.product_variant_ids[0] + self.variant_2 = self.product.product_variant_ids[1] + self.bom = self.bom_obj.create({ + "product_tmpl_id": self.product.id, + "product_qty": 1.0, + }) + # Create 3 MO's + self.mo_1 = self.mo_obj.create({ + "name": "MO ABC", + "product_id": self.variant_1.id, + "product_uom_id": self.variant_1.uom_id.id, + "product_qty": 2, + "bom_id": self.bom.id, + }) + self.mo_2 = self.mo_obj.create({ + "name": "MO XYZ", + "product_id": self.variant_1.id, + "product_uom_id": self.variant_1.uom_id.id, + "product_qty": 3, + "bom_id": self.bom.id, + }) + self.mo_3 = self.mo_obj.create({ + "name": "MO QWE", + "product_id": self.variant_2.id, + "product_uom_id": self.variant_2.uom_id.id, + "product_qty": 6, + "bom_id": self.bom.id, + }) + + def test_01_mo_counters(self): + self.assertEqual(len(self.product.product_variant_ids), 2) + self.assertEqual(self.product.mo_count, 3) + self.assertEqual(self.variant_1.mo_count, 2) + self.assertEqual(self.variant_2.mo_count, 1) + + def test_02_actions(self): + # template + res = self.product.action_view_mrp_productions() + count = self.mo_obj.search_count(res["domain"]) + self.assertEqual(count, 3) + # variant + res = self.variant_1.action_view_mrp_productions() + count = self.mo_obj.search_count(res["domain"]) + self.assertEqual(count, 2) diff --git a/product_mrp_info/views/product_views.xml b/product_mrp_info/views/product_views.xml new file mode 100644 index 0000000000..0f883b6cf5 --- /dev/null +++ b/product_mrp_info/views/product_views.xml @@ -0,0 +1,38 @@ + + + + + + product.template - product_mrp_info + product.template + + + + + + + + + + + product.product - product_mrp_info + product.product + + + + + + + + + From 27524855ef3d90d44c5f71d54e6ef6e6a4fc438a Mon Sep 17 00:00:00 2001 From: sudhir-erpharbor Date: Fri, 11 Oct 2019 15:05:54 +0530 Subject: [PATCH 2/8] [MIG] product_mrp_info: Migration to 13.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Héctor Villarreal Ortega --- product_mrp_info/README.rst | 23 ++-- product_mrp_info/__manifest__.py | 18 ++- product_mrp_info/i18n/product_mrp_info.pot | 7 +- product_mrp_info/models/product.py | 33 +++--- product_mrp_info/readme/CONTRIBUTORS.rst | 3 +- product_mrp_info/readme/DESCRIPTION.rst | 2 +- product_mrp_info/readme/USAGE.rst | 2 +- .../static/description/index.html | 13 ++- .../tests/test_product_mrp_info.py | 106 ++++++++++-------- product_mrp_info/views/product_views.xml | 42 ++++--- 10 files changed, 132 insertions(+), 117 deletions(-) diff --git a/product_mrp_info/README.rst b/product_mrp_info/README.rst index 0a8445c7b2..465ff08e1e 100644 --- a/product_mrp_info/README.rst +++ b/product_mrp_info/README.rst @@ -14,13 +14,13 @@ Product MRP Info :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/12.0/product_mrp_info + :target: https://github.com/OCA/manufacture/tree/13.0/product_mrp_info :alt: OCA/manufacture .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/manufacture-12-0/manufacture-12-0-product_mrp_info + :target: https://translation.odoo-community.org/projects/manufacture-13-0/manufacture-13-0-product_mrp_info :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/12.0 + :target: https://runbot.odoo-community.org/runbot/129/13.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -45,7 +45,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,12 +55,13 @@ Credits Authors ~~~~~~~ -* Eficent +* ForgeFlow Contributors ~~~~~~~~~~~~ -* Lois Rilo +* Lois Rilo +* Sudhir Arya Maintainers ~~~~~~~~~~~ @@ -75,14 +76,14 @@ 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. -.. |maintainer-lreficent| image:: https://github.com/lreficent.png?size=40px - :target: https://github.com/lreficent - :alt: lreficent +.. |maintainer-LoisRForgeFlow| image:: https://github.com/LoisRForgeFlow.png?size=40px + :target: https://github.com/LoisRForgeFlow + :alt: LoisRForgeFlow Current `maintainer `__: -|maintainer-lreficent| +|maintainer-LoisRForgeFlow| -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/product_mrp_info/__manifest__.py b/product_mrp_info/__manifest__.py index 6a56ca002d..53ac391f15 100644 --- a/product_mrp_info/__manifest__.py +++ b/product_mrp_info/__manifest__.py @@ -1,23 +1,19 @@ -# Copyright 2019 Eficent Business and IT Consulting Services S.L. +# Copyright 2019 ForgeFlow S.L. # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). { "name": "Product MRP Info", - "version": "12.0.1.0.0", + "version": "13.0.1.0.0", "development_status": "Beta", "license": "LGPL-3", - "author": "Eficent, Odoo Community Association (OCA)", - "maintainers": ["lreficent"], + "author": "ForgeFlow, Odoo Community Association (OCA)", + "maintainers": ["LoisRForgeFlow"], "summary": "Adds smart button in product form view linking to " - "manufacturing order list.", + "manufacturing order list.", "website": "https://github.com/OCA/manufacture", "category": "Manufacturing", - "depends": [ - "mrp", - ], - "data": [ - "views/product_views.xml", - ], + "depends": ["mrp"], + "data": ["views/product_views.xml"], "installable": True, "application": False, } diff --git a/product_mrp_info/i18n/product_mrp_info.pot b/product_mrp_info/i18n/product_mrp_info.pot index 5dc30d22c7..4250a596e7 100644 --- a/product_mrp_info/i18n/product_mrp_info.pot +++ b/product_mrp_info/i18n/product_mrp_info.pot @@ -1,12 +1,12 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * product_mrp_info +# * product_mrp_info # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" +"Project-Id-Version: Odoo Server 13.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: <>\n" +"Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -40,4 +40,3 @@ msgstr "" #: model:ir.model,name:product_mrp_info.model_product_template msgid "Product Template" msgstr "" - diff --git a/product_mrp_info/models/product.py b/product_mrp_info/models/product.py index 96a7a0fb5e..b6dab56e1d 100644 --- a/product_mrp_info/models/product.py +++ b/product_mrp_info/models/product.py @@ -1,26 +1,26 @@ -# Copyright 2019 Eficent Business and IT Consulting Services S.L. -# - Lois Rilo Antelo +# Copyright 2019 ForgeFlow S.L. +# - Lois Rilo Antelo # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). -from odoo import api, fields, models +from odoo import fields, models class ProductTemplate(models.Model): _inherit = "product.template" mo_count = fields.Integer( - string="# Manufacturing Orders", - compute="_compute_mo_count", + string="# Manufacturing Orders", compute="_compute_mo_count", ) - @api.multi def _compute_mo_count(self): read_group_res = self.env["mrp.production"].read_group( [("product_id", "in", self.mapped("product_variant_ids").ids)], - ["product_id"], ["product_id"]) - mapped_data = dict( - [(data["product_id"][0], data["product_id_count"]) for data in - read_group_res]) + ["product_id"], + ["product_id"], + ) + mapped_data = { + data["product_id"][0]: data["product_id_count"] for data in read_group_res + } for rec in self: count = 0 for variant in rec.mapped("product_variant_ids"): @@ -39,20 +39,19 @@ class ProductProduct(models.Model): _inherit = "product.product" mo_count = fields.Integer( - string="# Manufacturing Orders", - compute="_compute_mo_count", + string="# Manufacturing Orders", compute="_compute_mo_count", ) def _compute_mo_count(self): read_group_res = self.env["mrp.production"].read_group( - [("product_id", "in", self.ids)], ["product_id"], ["product_id"]) - mapped_data = dict( - [(data["product_id"][0], data["product_id_count"]) for data in - read_group_res]) + [("product_id", "in", self.ids)], ["product_id"], ["product_id"] + ) + mapped_data = { + data["product_id"][0]: data["product_id_count"] for data in read_group_res + } for product in self: product.mo_count = mapped_data.get(product.id, 0) - @api.multi def action_view_mrp_productions(self): product_ids = self.ids action = self.env.ref("mrp.act_product_mrp_production").read()[0] diff --git a/product_mrp_info/readme/CONTRIBUTORS.rst b/product_mrp_info/readme/CONTRIBUTORS.rst index 4b574636c0..6477cc29f6 100644 --- a/product_mrp_info/readme/CONTRIBUTORS.rst +++ b/product_mrp_info/readme/CONTRIBUTORS.rst @@ -1 +1,2 @@ -* Lois Rilo +* Lois Rilo +* Sudhir Arya diff --git a/product_mrp_info/readme/DESCRIPTION.rst b/product_mrp_info/readme/DESCRIPTION.rst index 44ed736bd1..9fde6a944a 100644 --- a/product_mrp_info/readme/DESCRIPTION.rst +++ b/product_mrp_info/readme/DESCRIPTION.rst @@ -1 +1 @@ -Adds smart button in product form view linking to manufacturing order list. \ No newline at end of file +Adds smart button in product form view linking to manufacturing order list. diff --git a/product_mrp_info/readme/USAGE.rst b/product_mrp_info/readme/USAGE.rst index 80351dbae9..48b9527d0c 100644 --- a/product_mrp_info/readme/USAGE.rst +++ b/product_mrp_info/readme/USAGE.rst @@ -1,3 +1,3 @@ Go to a product form and on the smart buttons you will se a new one, *MO's*, click on it to access to a list of all the manufacturing Orders for that -product. \ No newline at end of file +product. diff --git a/product_mrp_info/static/description/index.html b/product_mrp_info/static/description/index.html index 2c5da40d4f..75f5228e07 100644 --- a/product_mrp_info/static/description/index.html +++ b/product_mrp_info/static/description/index.html @@ -367,7 +367,7 @@

Product MRP Info

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

Adds smart button in product form view linking to manufacturing order list.

Table of contents

@@ -393,7 +393,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.

@@ -401,13 +401,14 @@

Credits

Authors

    -
  • Eficent
  • +
  • ForgeFlow
@@ -418,8 +419,8 @@

Maintainers

mission is to support the collaborative development of Odoo features and promote its widespread use.

Current maintainer:

-

lreficent

-

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

+

LoisRForgeFlow

+

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/product_mrp_info/tests/test_product_mrp_info.py b/product_mrp_info/tests/test_product_mrp_info.py index 66582e5bd0..e9974527c7 100644 --- a/product_mrp_info/tests/test_product_mrp_info.py +++ b/product_mrp_info/tests/test_product_mrp_info.py @@ -1,11 +1,10 @@ -# Copyright 2019 Eficent Business and IT Consulting Services, S.L. +# Copyright 2019 ForgeFlow S.L. # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). from odoo.tests.common import TransactionCase class TestProductMrpInfo(TransactionCase): - def setUp(self): super().setUp() self.pt_obj = self.env["product.template"] @@ -14,57 +13,66 @@ def setUp(self): self.bom_obj = self.env["mrp.bom"] self.boml_obj = self.env["mrp.bom.line"] - self.manufacture_route = self.env.ref( - "mrp.route_warehouse0_manufacture") + self.manufacture_route = self.env.ref("mrp.route_warehouse0_manufacture") - self.attribute = self.env["product.attribute"].create({ - "name": "Test Attribute", - "create_variant": "always", - }) - self.value1 = self.env["product.attribute.value"].create({ - "name": "Value 1", - "attribute_id": self.attribute.id, - }) - self.value2 = self.env["product.attribute.value"].create({ - "name": "Value 2", - "attribute_id": self.attribute.id, - }) - self.product = self.pt_obj.create({ - "name": "Test Template", - "attribute_line_ids": [(0, 0, { - "attribute_id": self.attribute.id, - "value_ids": [(6, 0, [self.value1.id, self.value2.id])] - })], - "route_ids": [(6, 0, self.manufacture_route.ids)], - }) + self.attribute = self.env["product.attribute"].create( + {"name": "Test Attribute", "create_variant": "always"} + ) + self.value1 = self.env["product.attribute.value"].create( + {"name": "Value 1", "attribute_id": self.attribute.id} + ) + self.value2 = self.env["product.attribute.value"].create( + {"name": "Value 2", "attribute_id": self.attribute.id} + ) + self.product = self.pt_obj.create( + { + "name": "Test Template", + "attribute_line_ids": [ + ( + 0, + 0, + { + "attribute_id": self.attribute.id, + "value_ids": [(6, 0, [self.value1.id, self.value2.id])], + }, + ) + ], + "route_ids": [(6, 0, self.manufacture_route.ids)], + } + ) self.variant_1 = self.product.product_variant_ids[0] self.variant_2 = self.product.product_variant_ids[1] - self.bom = self.bom_obj.create({ - "product_tmpl_id": self.product.id, - "product_qty": 1.0, - }) + self.bom = self.bom_obj.create( + {"product_tmpl_id": self.product.id, "product_qty": 1.0} + ) # Create 3 MO's - self.mo_1 = self.mo_obj.create({ - "name": "MO ABC", - "product_id": self.variant_1.id, - "product_uom_id": self.variant_1.uom_id.id, - "product_qty": 2, - "bom_id": self.bom.id, - }) - self.mo_2 = self.mo_obj.create({ - "name": "MO XYZ", - "product_id": self.variant_1.id, - "product_uom_id": self.variant_1.uom_id.id, - "product_qty": 3, - "bom_id": self.bom.id, - }) - self.mo_3 = self.mo_obj.create({ - "name": "MO QWE", - "product_id": self.variant_2.id, - "product_uom_id": self.variant_2.uom_id.id, - "product_qty": 6, - "bom_id": self.bom.id, - }) + self.mo_1 = self.mo_obj.create( + { + "name": "MO ABC", + "product_id": self.variant_1.id, + "product_uom_id": self.variant_1.uom_id.id, + "product_qty": 2, + "bom_id": self.bom.id, + } + ) + self.mo_2 = self.mo_obj.create( + { + "name": "MO XYZ", + "product_id": self.variant_1.id, + "product_uom_id": self.variant_1.uom_id.id, + "product_qty": 3, + "bom_id": self.bom.id, + } + ) + self.mo_3 = self.mo_obj.create( + { + "name": "MO QWE", + "product_id": self.variant_2.id, + "product_uom_id": self.variant_2.uom_id.id, + "product_qty": 6, + "bom_id": self.bom.id, + } + ) def test_01_mo_counters(self): self.assertEqual(len(self.product.product_variant_ids), 2) diff --git a/product_mrp_info/views/product_views.xml b/product_mrp_info/views/product_views.xml index 0f883b6cf5..094efe5bd1 100644 --- a/product_mrp_info/views/product_views.xml +++ b/product_mrp_info/views/product_views.xml @@ -1,20 +1,25 @@ - + product.template - product_mrp_info product.template - - + + - - + @@ -22,16 +27,21 @@ product.product - product_mrp_info product.product - - + + - - + From a407e86d6268c4191e09f0237b8ef53f6ae65e3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Villarreal=20Ortega?= Date: Tue, 5 Jul 2022 13:21:40 +0200 Subject: [PATCH 3/8] [MIG] product_mrp_info: Migration to 14.0 --- product_mrp_info/__manifest__.py | 2 +- product_mrp_info/models/product.py | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/product_mrp_info/__manifest__.py b/product_mrp_info/__manifest__.py index 53ac391f15..8f9d74fd70 100644 --- a/product_mrp_info/__manifest__.py +++ b/product_mrp_info/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Product MRP Info", - "version": "13.0.1.0.0", + "version": "14.0.1.0.0", "development_status": "Beta", "license": "LGPL-3", "author": "ForgeFlow, Odoo Community Association (OCA)", diff --git a/product_mrp_info/models/product.py b/product_mrp_info/models/product.py index b6dab56e1d..bdc8257ddd 100644 --- a/product_mrp_info/models/product.py +++ b/product_mrp_info/models/product.py @@ -9,7 +9,8 @@ class ProductTemplate(models.Model): _inherit = "product.template" mo_count = fields.Integer( - string="# Manufacturing Orders", compute="_compute_mo_count", + string="# Manufacturing Orders", + compute="_compute_mo_count", ) def _compute_mo_count(self): @@ -29,7 +30,9 @@ def _compute_mo_count(self): def action_view_mrp_productions(self): product_ids = self.mapped("product_variant_ids").ids - action = self.env.ref("mrp.act_product_mrp_production").read()[0] + action = self.env["ir.actions.act_window"]._for_xml_id( + "mrp.act_product_mrp_production_workcenter" + ) action["domain"] = [("product_id", "in", product_ids)] action["context"] = {} return action @@ -39,7 +42,8 @@ class ProductProduct(models.Model): _inherit = "product.product" mo_count = fields.Integer( - string="# Manufacturing Orders", compute="_compute_mo_count", + string="# Manufacturing Orders", + compute="_compute_mo_count", ) def _compute_mo_count(self): @@ -54,7 +58,9 @@ def _compute_mo_count(self): def action_view_mrp_productions(self): product_ids = self.ids - action = self.env.ref("mrp.act_product_mrp_production").read()[0] + action = self.env["ir.actions.act_window"]._for_xml_id( + "mrp.act_product_mrp_production_workcenter" + ) action["domain"] = [("product_id", "in", product_ids)] action["context"] = {} return action From 7ddf779a47020aeafce4a824bf71a0644e2e7c69 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 22 Dec 2022 16:35:24 +0000 Subject: [PATCH 4/8] [UPD] Update product_mrp_info.pot --- product_mrp_info/README.rst | 23 +++++----- product_mrp_info/i18n/product_mrp_info.pot | 20 ++++++++- .../static/description/index.html | 44 ++++++++++--------- 3 files changed, 55 insertions(+), 32 deletions(-) diff --git a/product_mrp_info/README.rst b/product_mrp_info/README.rst index 465ff08e1e..76c308e73b 100644 --- a/product_mrp_info/README.rst +++ b/product_mrp_info/README.rst @@ -2,10 +2,13 @@ Product MRP Info ================ -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:6890efe3aa93e30c39e9a91a505e7dd9250a005de16764dcaf79bde50de06e00 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -14,16 +17,16 @@ Product MRP Info :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/13.0/product_mrp_info + :target: https://github.com/OCA/manufacture/tree/14.0/product_mrp_info :alt: OCA/manufacture .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/manufacture-13-0/manufacture-13-0-product_mrp_info + :target: https://translation.odoo-community.org/projects/manufacture-14-0/manufacture-14-0-product_mrp_info :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/13.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/manufacture&target_branch=14.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| Adds smart button in product form view linking to manufacturing order list. @@ -44,8 +47,8 @@ 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 `_. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -84,6 +87,6 @@ Current `maintainer `__: |maintainer-LoisRForgeFlow| -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/product_mrp_info/i18n/product_mrp_info.pot b/product_mrp_info/i18n/product_mrp_info.pot index 4250a596e7..3e78eb5371 100644 --- a/product_mrp_info/i18n/product_mrp_info.pot +++ b/product_mrp_info/i18n/product_mrp_info.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 13.0\n" +"Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -19,6 +19,24 @@ msgstr "" msgid "# Manufacturing Orders" msgstr "" +#. module: product_mrp_info +#: model:ir.model.fields,field_description:product_mrp_info.field_product_product__display_name +#: model:ir.model.fields,field_description:product_mrp_info.field_product_template__display_name +msgid "Display Name" +msgstr "" + +#. module: product_mrp_info +#: model:ir.model.fields,field_description:product_mrp_info.field_product_product__id +#: model:ir.model.fields,field_description:product_mrp_info.field_product_template__id +msgid "ID" +msgstr "" + +#. module: product_mrp_info +#: model:ir.model.fields,field_description:product_mrp_info.field_product_product____last_update +#: model:ir.model.fields,field_description:product_mrp_info.field_product_template____last_update +msgid "Last Modified on" +msgstr "" + #. module: product_mrp_info #: model_terms:ir.ui.view,arch_db:product_mrp_info.product_normal_form_view #: model_terms:ir.ui.view,arch_db:product_mrp_info.product_template_only_form_view diff --git a/product_mrp_info/static/description/index.html b/product_mrp_info/static/description/index.html index 75f5228e07..74a4e49c45 100644 --- a/product_mrp_info/static/description/index.html +++ b/product_mrp_info/static/description/index.html @@ -1,20 +1,20 @@ - + - + Product MRP Info