From 5fedb10a57aef93a0082d5ddf4af1a95f3fcf7e2 Mon Sep 17 00:00:00 2001 From: Denis Roussel Date: Wed, 17 Mar 2021 20:44:01 +0100 Subject: [PATCH 01/17] [14.0][ADD] product_supplierinfo_code --- product_supplierinfo_code/README.rst | 73 +++ product_supplierinfo_code/__init__.py | 1 + product_supplierinfo_code/__manifest__.py | 18 + product_supplierinfo_code/models/__init__.py | 1 + .../models/product_template.py | 31 ++ .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 1 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 419 ++++++++++++++++++ .../views/product_template.xml | 63 +++ 10 files changed, 608 insertions(+) create mode 100644 product_supplierinfo_code/README.rst create mode 100644 product_supplierinfo_code/__init__.py create mode 100644 product_supplierinfo_code/__manifest__.py create mode 100644 product_supplierinfo_code/models/__init__.py create mode 100644 product_supplierinfo_code/models/product_template.py create mode 100644 product_supplierinfo_code/readme/CONTRIBUTORS.rst create mode 100644 product_supplierinfo_code/readme/DESCRIPTION.rst create mode 100644 product_supplierinfo_code/static/description/icon.png create mode 100644 product_supplierinfo_code/static/description/index.html create mode 100644 product_supplierinfo_code/views/product_template.xml diff --git a/product_supplierinfo_code/README.rst b/product_supplierinfo_code/README.rst new file mode 100644 index 00000000000..48d07a031a3 --- /dev/null +++ b/product_supplierinfo_code/README.rst @@ -0,0 +1,73 @@ +========================= +Product Supplierinfo Code +========================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fproduct--attribute-lightgray.png?logo=github + :target: https://github.com/OCA/product-attribute/tree/14.0/product_supplierinfo_code + :alt: OCA/product-attribute +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/product-attribute-14-0/product-attribute-14-0-product_supplierinfo_code + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/135/14.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Allows to retrieve main supplier product code on product level. + +**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 +~~~~~~~ + +* ACSONE SA/NV + +Contributors +~~~~~~~~~~~~ + +* Denis Roussel + +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/product-attribute `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/product_supplierinfo_code/__init__.py b/product_supplierinfo_code/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/product_supplierinfo_code/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/product_supplierinfo_code/__manifest__.py b/product_supplierinfo_code/__manifest__.py new file mode 100644 index 00000000000..c92cb616524 --- /dev/null +++ b/product_supplierinfo_code/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright 2020 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Product Supplierinfo Code", + "summary": """ + Allows to get main supplierinfo product_code on product level""", + "version": "14.0.1.0.0", + "license": "AGPL-3", + "author": "ACSONE SA/NV,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/product-attribute", + "depends": [ + "product", + ], + "data": [ + "views/product_template.xml", + ], +} diff --git a/product_supplierinfo_code/models/__init__.py b/product_supplierinfo_code/models/__init__.py new file mode 100644 index 00000000000..e8fa8f6bf1e --- /dev/null +++ b/product_supplierinfo_code/models/__init__.py @@ -0,0 +1 @@ +from . import product_template diff --git a/product_supplierinfo_code/models/product_template.py b/product_supplierinfo_code/models/product_template.py new file mode 100644 index 00000000000..f1c51056c45 --- /dev/null +++ b/product_supplierinfo_code/models/product_template.py @@ -0,0 +1,31 @@ +# Copyright 2021 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import api, fields, models +from odoo.fields import first + + +class ProductTemplate(models.Model): + + _inherit = "product.template" + + supplier_product_code = fields.Char( + compute="_compute_supplier_product_code", + help="This is the supplier product code from Main Supplier.", + compute_sudo=False, + search="_search_supplier_product_code", + readonly=True, + ) + + def _compute_supplier_product_code(self): + self.mapped("seller_ids.product_code") + for prod in self: + seller = first( + prod.seller_ids.filtered( + lambda p: p.company_id == self.env.company or not p.company_id + ) + ) + prod.supplier_product_code = seller.product_code + + @api.model + def _search_supplier_product_code(self, operator, value): + return [("seller_ids.product_code", operator, value)] diff --git a/product_supplierinfo_code/readme/CONTRIBUTORS.rst b/product_supplierinfo_code/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..9179ee4b8fa --- /dev/null +++ b/product_supplierinfo_code/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Denis Roussel diff --git a/product_supplierinfo_code/readme/DESCRIPTION.rst b/product_supplierinfo_code/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..223f7a67c5d --- /dev/null +++ b/product_supplierinfo_code/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Allows to retrieve main supplier product code on product level. diff --git a/product_supplierinfo_code/static/description/icon.png b/product_supplierinfo_code/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_supplierinfo_code/static/description/index.html b/product_supplierinfo_code/static/description/index.html new file mode 100644 index 00000000000..c28f2d722eb --- /dev/null +++ b/product_supplierinfo_code/static/description/index.html @@ -0,0 +1,419 @@ + + + + + + +Product Supplierinfo Code + + + +
+

Product Supplierinfo Code

+ + +

Beta License: AGPL-3 OCA/product-attribute Translate me on Weblate Try me on Runbot

+

Allows to retrieve main supplier product code on product level.

+

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

+
    +
  • ACSONE SA/NV
  • +
+
+
+

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/product-attribute project on GitHub.

+

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

+
+
+
+ + diff --git a/product_supplierinfo_code/views/product_template.xml b/product_supplierinfo_code/views/product_template.xml new file mode 100644 index 00000000000..69828d98698 --- /dev/null +++ b/product_supplierinfo_code/views/product_template.xml @@ -0,0 +1,63 @@ + + + + + + product.template.form (in product_supplierinfo_code) + product.template + + + + + + + + + + product.template.search (in product_supplierinfo_code) + product.template + + + + + + + + + + product.template.tree (in product_supplierinfo_code) + product.template + + + + + + + + + + product.template.kanban (in product_supplierinfo_code) + product.template + + + + + +
+
+ Supplier Code: +
+
+
+
+ +
From 880b17075f54bc0ce87ec1db0376f313b550131b Mon Sep 17 00:00:00 2001 From: Denis Roussel Date: Thu, 18 Mar 2021 09:00:36 +0100 Subject: [PATCH 02/17] [14.0][IMP] product_supplierinfo_code: Add tests --- .../models/product_template.py | 1 - product_supplierinfo_code/tests/__init__.py | 1 + .../tests/test_supplierinfo_code.py | 36 +++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 product_supplierinfo_code/tests/__init__.py create mode 100644 product_supplierinfo_code/tests/test_supplierinfo_code.py diff --git a/product_supplierinfo_code/models/product_template.py b/product_supplierinfo_code/models/product_template.py index f1c51056c45..98edaadd882 100644 --- a/product_supplierinfo_code/models/product_template.py +++ b/product_supplierinfo_code/models/product_template.py @@ -17,7 +17,6 @@ class ProductTemplate(models.Model): ) def _compute_supplier_product_code(self): - self.mapped("seller_ids.product_code") for prod in self: seller = first( prod.seller_ids.filtered( diff --git a/product_supplierinfo_code/tests/__init__.py b/product_supplierinfo_code/tests/__init__.py new file mode 100644 index 00000000000..1741fce1f78 --- /dev/null +++ b/product_supplierinfo_code/tests/__init__.py @@ -0,0 +1 @@ +from . import test_supplierinfo_code diff --git a/product_supplierinfo_code/tests/test_supplierinfo_code.py b/product_supplierinfo_code/tests/test_supplierinfo_code.py new file mode 100644 index 00000000000..b0f3513b690 --- /dev/null +++ b/product_supplierinfo_code/tests/test_supplierinfo_code.py @@ -0,0 +1,36 @@ +# Copyright 2021 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo.tests.common import SavepointCase + + +class TestSupplierinfoCode(SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True)) + cls.product = cls.env.ref("product.product_product_6_product_template") + cls.product_supplierinfo = cls.env.ref("product.product_supplierinfo_1") + cls.product_supplierinfo2 = cls.env.ref("product.product_supplierinfo_2") + + # Set product code on supplierinfos + cls.product_supplierinfo.product_code = "CODE1" + cls.product_supplierinfo2.product_code = "CODE2" + + # Set sequence on supplierinfos + cls.product.seller_ids.write({"sequence": 10}) + cls.product_supplierinfo.sequence = 1 + cls.product.invalidate_cache() + + def test_supplierinfo_code(self): + """ + Check if first supplier product code is CODE1 + Search for product based on supplier_product_code + """ + self.assertEqual( + self.product.supplier_product_code, + "CODE1", + ) + product = self.product.search([("supplier_product_code", "=", "CODE1")]) + self.assertEqual(product, self.product) + product = self.product.search([("supplier_product_code", "=", "CODE2")]) + self.assertEqual(product, self.product) From 5c54495c9bda0d4bd9c57ecb559a337506ae3598 Mon Sep 17 00:00:00 2001 From: xavier-bouquiaux Date: Tue, 21 Sep 2021 08:54:56 +0200 Subject: [PATCH 03/17] [14.0][FIX] product_supplierinfo_code label is now visible in product.template --- product_supplierinfo_code/views/product_template.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/product_supplierinfo_code/views/product_template.xml b/product_supplierinfo_code/views/product_template.xml index 69828d98698..7adb5fc69d9 100644 --- a/product_supplierinfo_code/views/product_template.xml +++ b/product_supplierinfo_code/views/product_template.xml @@ -8,7 +8,7 @@ product.template - + From 36e5f449e10c28c9c3415d2232bcf58e541233a0 Mon Sep 17 00:00:00 2001 From: Denis Roussel Date: Wed, 17 Nov 2021 08:45:24 +0100 Subject: [PATCH 04/17] [14.0][IMP] product_supplierinfo_code: Remove filtered Resolved with this if printing https://github.com/odoo/odoo/pull/79897 --- product_supplierinfo_code/models/product_template.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/product_supplierinfo_code/models/product_template.py b/product_supplierinfo_code/models/product_template.py index 98edaadd882..49bef762602 100644 --- a/product_supplierinfo_code/models/product_template.py +++ b/product_supplierinfo_code/models/product_template.py @@ -18,11 +18,7 @@ class ProductTemplate(models.Model): def _compute_supplier_product_code(self): for prod in self: - seller = first( - prod.seller_ids.filtered( - lambda p: p.company_id == self.env.company or not p.company_id - ) - ) + seller = first(prod.seller_ids) prod.supplier_product_code = seller.product_code @api.model From 385a015427724c2ff2f0eefbdd4f6ffc917781b7 Mon Sep 17 00:00:00 2001 From: clementmbr Date: Mon, 22 Jan 2024 17:50:52 -0300 Subject: [PATCH 05/17] [IMP] product_supplierinfo_code: run pre-commit --- product_supplierinfo_code/README.rst | 23 ++++++----- .../static/description/index.html | 38 ++++++++++--------- 2 files changed, 33 insertions(+), 28 deletions(-) diff --git a/product_supplierinfo_code/README.rst b/product_supplierinfo_code/README.rst index 48d07a031a3..14bd638e0cb 100644 --- a/product_supplierinfo_code/README.rst +++ b/product_supplierinfo_code/README.rst @@ -2,10 +2,13 @@ Product Supplierinfo Code ========================= -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:b079006a63bd845ed8dce8c4ed7468e4ef560a92a0ef0f3ef866e2066e358f15 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -14,16 +17,16 @@ Product Supplierinfo Code :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fproduct--attribute-lightgray.png?logo=github - :target: https://github.com/OCA/product-attribute/tree/14.0/product_supplierinfo_code + :target: https://github.com/OCA/product-attribute/tree/16.0/product_supplierinfo_code :alt: OCA/product-attribute .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/product-attribute-14-0/product-attribute-14-0-product_supplierinfo_code + :target: https://translation.odoo-community.org/projects/product-attribute-16-0/product-attribute-16-0-product_supplierinfo_code :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/135/14.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/product-attribute&target_branch=16.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| Allows to retrieve main supplier product code on product level. @@ -37,8 +40,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. @@ -68,6 +71,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/product-attribute `_ project on GitHub. +This module is part of the `OCA/product-attribute `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/product_supplierinfo_code/static/description/index.html b/product_supplierinfo_code/static/description/index.html index c28f2d722eb..da374e3e646 100644 --- a/product_supplierinfo_code/static/description/index.html +++ b/product_supplierinfo_code/static/description/index.html @@ -1,20 +1,20 @@ - + - + Product Supplierinfo Code -
-

Product Supplierinfo Code

+
+ + +Odoo Community Association + +
+

Product Supplierinfo Code

-

Beta License: AGPL-3 OCA/product-attribute Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/product-attribute Translate me on Weblate Try me on Runboat

Allows to retrieve main supplier product code on product level.

Table of contents

@@ -383,7 +389,7 @@

Product Supplierinfo Code

-

Bug Tracker

+

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 to smash it by providing a detailed and welcomed @@ -391,15 +397,15 @@

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

  • ACSONE SA/NV
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

-Odoo Community Association + +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.

@@ -420,5 +428,6 @@

Maintainers

+
From 5b2e1efe134332239e0105f865b4a93ade12c90c Mon Sep 17 00:00:00 2001 From: Raphael Vicini Date: Thu, 30 Apr 2026 17:21:54 +0200 Subject: [PATCH 15/17] [IMP] product_supplierinfo_code: pre-commit auto fixes --- product_supplierinfo_code/views/product_template.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/product_supplierinfo_code/views/product_template.xml b/product_supplierinfo_code/views/product_template.xml index d5539c35998..d8a7cdd15b8 100644 --- a/product_supplierinfo_code/views/product_template.xml +++ b/product_supplierinfo_code/views/product_template.xml @@ -2,7 +2,6 @@ - product.template.form (in product_supplierinfo_code) product.template @@ -59,5 +58,4 @@
- From 978ccd58c0d5484b9d969e0541bc25a871a94b25 Mon Sep 17 00:00:00 2001 From: Raphael Vicini Date: Thu, 30 Apr 2026 17:30:21 +0200 Subject: [PATCH 16/17] [IMP] product_supplierinfo_code: pre-commit execution --- product_supplierinfo_code/README.rst | 10 +++++----- product_supplierinfo_code/__manifest__.py | 2 +- .../static/description/index.html | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/product_supplierinfo_code/README.rst b/product_supplierinfo_code/README.rst index 1bbba56efd9..6baab3b33e6 100644 --- a/product_supplierinfo_code/README.rst +++ b/product_supplierinfo_code/README.rst @@ -21,13 +21,13 @@ Product Supplierinfo Code :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fproduct--attribute-lightgray.png?logo=github - :target: https://github.com/OCA/product-attribute/tree/17.0/product_supplierinfo_code + :target: https://github.com/OCA/product-attribute/tree/19.0/product_supplierinfo_code :alt: OCA/product-attribute .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/product-attribute-17-0/product-attribute-17-0-product_supplierinfo_code + :target: https://translation.odoo-community.org/projects/product-attribute-19-0/product-attribute-19-0-product_supplierinfo_code :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/product-attribute&target_branch=17.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/product-attribute&target_branch=19.0 :alt: Try me on Runboat |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 to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -78,6 +78,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/product-attribute `_ project on GitHub. +This module is part of the `OCA/product-attribute `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/product_supplierinfo_code/__manifest__.py b/product_supplierinfo_code/__manifest__.py index 01928b7f80e..9cc6e8579a9 100644 --- a/product_supplierinfo_code/__manifest__.py +++ b/product_supplierinfo_code/__manifest__.py @@ -5,7 +5,7 @@ "name": "Product Supplierinfo Code", "summary": """ Allows to get main supplierinfo product_code on product level""", - "version": "17.0.1.0.0", + "version": "19.0.1.0.0", "license": "AGPL-3", "author": "ACSONE SA/NV,Odoo Community Association (OCA)", "website": "https://github.com/OCA/product-attribute", diff --git a/product_supplierinfo_code/static/description/index.html b/product_supplierinfo_code/static/description/index.html index 094ec4db0a6..ae6333eaab4 100644 --- a/product_supplierinfo_code/static/description/index.html +++ b/product_supplierinfo_code/static/description/index.html @@ -374,7 +374,7 @@

Product Supplierinfo Code

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:a196799b88dd8d50c3c7ce52a099517b2e9c6615d35d5d85b31d93717605f41a !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/product-attribute Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/product-attribute Translate me on Weblate Try me on Runboat

Allows to retrieve main supplier product code on product level.

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 to smash it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -423,7 +423,7 @@

Maintainers

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/product-attribute project on GitHub.

+

This module is part of the OCA/product-attribute project on GitHub.

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

From dae492ede1de50e870d04ce93ff4237be0af93a5 Mon Sep 17 00:00:00 2001 From: Raphael Vicini Date: Mon, 4 May 2026 11:34:25 +0200 Subject: [PATCH 17/17] [MIG] product_supplierinfo_code: Migration to 19.0 --- product_supplierinfo_code/README.rst | 6 +- .../models/product_template.py | 8 ++- .../readme/CONTRIBUTORS.md | 4 +- .../static/description/index.html | 4 ++ .../tests/test_supplierinfo_code.py | 69 ++++++++++++++----- .../views/product_template.xml | 4 +- 6 files changed, 69 insertions(+), 26 deletions(-) diff --git a/product_supplierinfo_code/README.rst b/product_supplierinfo_code/README.rst index 6baab3b33e6..f21fa233e76 100644 --- a/product_supplierinfo_code/README.rst +++ b/product_supplierinfo_code/README.rst @@ -60,7 +60,11 @@ Authors Contributors ------------ -- Denis Roussel +- `ACSONE `__: + + - Denis Roussel + - Raphaël Vicini + - `360ERP `__: - Andrea Stirpe diff --git a/product_supplierinfo_code/models/product_template.py b/product_supplierinfo_code/models/product_template.py index ad64198e375..e511fe40dbf 100644 --- a/product_supplierinfo_code/models/product_template.py +++ b/product_supplierinfo_code/models/product_template.py @@ -1,7 +1,6 @@ # Copyright 2021 ACSONE SA/NV # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import api, fields, models -from odoo.fields import first class ProductTemplate(models.Model): @@ -17,8 +16,11 @@ class ProductTemplate(models.Model): def _compute_supplier_product_code(self): for prod in self: - seller = first(prod.seller_ids) - prod.supplier_product_code = seller.product_code + if prod.seller_ids: + seller = prod.seller_ids[0] + prod.supplier_product_code = seller.product_code + else: + prod.supplier_product_code = False @api.model def _search_supplier_product_code(self, operator, value): diff --git a/product_supplierinfo_code/readme/CONTRIBUTORS.md b/product_supplierinfo_code/readme/CONTRIBUTORS.md index 0da68fb1537..50014745d4f 100644 --- a/product_supplierinfo_code/readme/CONTRIBUTORS.md +++ b/product_supplierinfo_code/readme/CONTRIBUTORS.md @@ -1,3 +1,5 @@ -- Denis Roussel \<\> +- [ACSONE](https://www.acsone.eu/): + - Denis Roussel \<\> + - Raphaël Vicini \<\> - [360ERP](https://www.360erp.com): - Andrea Stirpe diff --git a/product_supplierinfo_code/static/description/index.html b/product_supplierinfo_code/static/description/index.html index ae6333eaab4..ba260ea5dba 100644 --- a/product_supplierinfo_code/static/description/index.html +++ b/product_supplierinfo_code/static/description/index.html @@ -407,7 +407,11 @@

Authors

Contributors

    +
  • ACSONE: +
  • 360ERP:
    • Andrea Stirpe
    diff --git a/product_supplierinfo_code/tests/test_supplierinfo_code.py b/product_supplierinfo_code/tests/test_supplierinfo_code.py index 9af6229ff36..7dfcf8d6f89 100644 --- a/product_supplierinfo_code/tests/test_supplierinfo_code.py +++ b/product_supplierinfo_code/tests/test_supplierinfo_code.py @@ -1,36 +1,67 @@ -# Copyright 2021 ACSONE SA/NV +# Copyright 2026 ACSONE SA/NV # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo.tests.common import TransactionCase +from odoo.addons.base.tests.common import BaseCommon -class TestSupplierinfoCode(TransactionCase): + +class TestSupplierinfoCode(BaseCommon): @classmethod def setUpClass(cls): super().setUpClass() - cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True)) - cls.product = cls.env.ref("product.product_product_6_product_template") - cls.product_supplierinfo = cls.env.ref("product.product_supplierinfo_1") - cls.product_supplierinfo2 = cls.env.ref("product.product_supplierinfo_2") - # Set product code on supplierinfos - cls.product_supplierinfo.product_code = "CODE1" - cls.product_supplierinfo2.product_code = "CODE2" + cls.product = cls.env["product.template"].create( + { + "name": "Test Product", + } + ) - # Set sequence on supplierinfos - cls.product.seller_ids.write({"sequence": 10}) - cls.product_supplierinfo.sequence = 1 - cls.product._invalidate_cache() + cls.product_supplierinfo = cls.env["product.supplierinfo"].create( + { + "product_tmpl_id": cls.product.id, + "partner_id": cls.partner.id, + "delay": 3, + "min_qty": 1, + "price": 750, + "currency_id": cls.env.ref("base.USD").id, + "product_code": "CODE1", + "sequence": 1, + } + ) + + cls.product_supplierinfo2 = cls.env["product.supplierinfo"].create( + { + "product_tmpl_id": cls.product.id, + "partner_id": cls.partner.id, + "delay": 3, + "min_qty": 1, + "price": 790, + "currency_id": cls.env.ref("base.USD").id, + "product_code": "CODE2", + "sequence": 10, + } + ) + + cls.product.invalidate_recordset(["seller_ids", "supplier_product_code"]) def test_supplierinfo_code(self): """ Check if first supplier product code is CODE1 Search for product based on supplier_product_code """ - self.assertEqual( - self.product.supplier_product_code, - "CODE1", + self.assertEqual(self.product.supplier_product_code, "CODE1") + + product = self.product.search( + [ + ("id", "=", self.product.id), + ("supplier_product_code", "=", "CODE1"), + ] ) - product = self.product.search([("supplier_product_code", "=", "CODE1")]) self.assertEqual(product, self.product) - product = self.product.search([("supplier_product_code", "=", "CODE2")]) + + product = self.product.search( + [ + ("id", "=", self.product.id), + ("supplier_product_code", "=", "CODE2"), + ] + ) self.assertEqual(product, self.product) diff --git a/product_supplierinfo_code/views/product_template.xml b/product_supplierinfo_code/views/product_template.xml index d8a7cdd15b8..5b88a3da346 100644 --- a/product_supplierinfo_code/views/product_template.xml +++ b/product_supplierinfo_code/views/product_template.xml @@ -51,11 +51,11 @@ -
    +
    Supplier Code:
    -
    +