From 5cd9745f60803aec279c80223deac0f3fb339540 Mon Sep 17 00:00:00 2001
From: BernatPForgeFlow
Date: Fri, 25 Nov 2022 16:43:35 +0100
Subject: [PATCH 01/17] [13.0][ADD] purchase_stock_tier_validation: Exclude
RFQs pending to validate when procuring
---
purchase_stock_tier_validation/__init__.py | 3 +
.../__manifest__.py | 15 +
.../models/__init__.py | 3 +
.../models/stock_rule.py | 15 +
.../readme/CONTRIBUTORS.rst | 1 +
.../readme/DESCRIPTION.rst | 5 +
.../static/description/icon.png | Bin 0 -> 9455 bytes
.../static/description/index.html | 468 ++++++++++++++++++
.../tests/__init__.py | 1 +
.../test_purchase_stock_tier_validation.py | 107 ++++
10 files changed, 618 insertions(+)
create mode 100644 purchase_stock_tier_validation/__init__.py
create mode 100644 purchase_stock_tier_validation/__manifest__.py
create mode 100644 purchase_stock_tier_validation/models/__init__.py
create mode 100644 purchase_stock_tier_validation/models/stock_rule.py
create mode 100644 purchase_stock_tier_validation/readme/CONTRIBUTORS.rst
create mode 100644 purchase_stock_tier_validation/readme/DESCRIPTION.rst
create mode 100644 purchase_stock_tier_validation/static/description/icon.png
create mode 100644 purchase_stock_tier_validation/static/description/index.html
create mode 100644 purchase_stock_tier_validation/tests/__init__.py
create mode 100644 purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py
diff --git a/purchase_stock_tier_validation/__init__.py b/purchase_stock_tier_validation/__init__.py
new file mode 100644
index 000000000..31660d6a9
--- /dev/null
+++ b/purchase_stock_tier_validation/__init__.py
@@ -0,0 +1,3 @@
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from . import models
diff --git a/purchase_stock_tier_validation/__manifest__.py b/purchase_stock_tier_validation/__manifest__.py
new file mode 100644
index 000000000..618523010
--- /dev/null
+++ b/purchase_stock_tier_validation/__manifest__.py
@@ -0,0 +1,15 @@
+# Copyright 2022 ForgeFlow S.L.
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+{
+ "name": "Purchase Stock Tier Validation",
+ "summary": "Exclude RFQs pending to validate when procuring",
+ "version": "13.0.1.0.0",
+ "category": "Purchase Management",
+ "website": "https://github.com/OCA/purchase-workflow",
+ "author": "ForgeFlow, Odoo Community Association (OCA)",
+ "license": "AGPL-3",
+ "application": False,
+ "installable": True,
+ "auto_install": True,
+ "depends": ["purchase_stock", "purchase_tier_validation"],
+}
diff --git a/purchase_stock_tier_validation/models/__init__.py b/purchase_stock_tier_validation/models/__init__.py
new file mode 100644
index 000000000..31a15d1e4
--- /dev/null
+++ b/purchase_stock_tier_validation/models/__init__.py
@@ -0,0 +1,3 @@
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from . import stock_rule
diff --git a/purchase_stock_tier_validation/models/stock_rule.py b/purchase_stock_tier_validation/models/stock_rule.py
new file mode 100644
index 000000000..b1e85e35d
--- /dev/null
+++ b/purchase_stock_tier_validation/models/stock_rule.py
@@ -0,0 +1,15 @@
+# Copyright 2022 ForgeFlow S.L. (https://www.forgeflow.com)
+# Part of ForgeFlow. See LICENSE file for full copyright and licensing details.
+
+from odoo import models
+
+
+class StockRule(models.Model):
+ _inherit = "stock.rule"
+
+ def _make_po_get_domain(self, company_id, values, partner):
+ domain = super()._make_po_get_domain(
+ company_id=company_id, values=values, partner=partner
+ )
+ domain += (("review_ids", "=", False),)
+ return domain
diff --git a/purchase_stock_tier_validation/readme/CONTRIBUTORS.rst b/purchase_stock_tier_validation/readme/CONTRIBUTORS.rst
new file mode 100644
index 000000000..06a041ec2
--- /dev/null
+++ b/purchase_stock_tier_validation/readme/CONTRIBUTORS.rst
@@ -0,0 +1 @@
+* Bernat Puig Font
diff --git a/purchase_stock_tier_validation/readme/DESCRIPTION.rst b/purchase_stock_tier_validation/readme/DESCRIPTION.rst
new file mode 100644
index 000000000..e42436201
--- /dev/null
+++ b/purchase_stock_tier_validation/readme/DESCRIPTION.rst
@@ -0,0 +1,5 @@
+This module excludes RFQs pending to validate or validated when procuring a product.
+
+If a RFQ, at some point, is requested to validate, it converts it immediately in something unmodifiable.
+Then, taking this into account, if we procure a product with the same supplier as one open RFQ, it should
+check if that is under validation or already validated and discard it on any of both cases.
diff --git a/purchase_stock_tier_validation/static/description/icon.png b/purchase_stock_tier_validation/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)`y_~Hnd9AUX7h-H?jVuU|}My+C=TjH(jKz
zqMVr0re3S$H@t{zI95qa)+Crz*5Zj}Ao%4Z><+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/purchase_stock_tier_validation/static/description/index.html b/purchase_stock_tier_validation/static/description/index.html
new file mode 100644
index 000000000..ebe8c104b
--- /dev/null
+++ b/purchase_stock_tier_validation/static/description/index.html
@@ -0,0 +1,468 @@
+
+
+
+
+
+
+Purchase Request Tier Validation
+
+
+
+
+
Purchase Request Tier Validation
+
+
+

+
This module extends the functionality of Purchase Requests to support a tier validation process.
+
Table of contents
+
+
+
+
This module depends on base_tier_validation. You can find it at
+OCA/server-ux
+
+
+
+
A default tier is created allowing Purchase Request Manager to approve Purchase
+Requests.
+
In addition, you may want to add more tiers, so:
+
+- Go to Settings > Technical > Tier Validations > Tier Definition.
+- Create as many tiers as you want for Purchase Order model.
+
+
+
+
+
To use this module, you need to:
+
+- Create a Purchase Request triggering at least one “Tier Definition”.
+- Click on Request Validation button.
+- Under the tab Reviews have a look to pending reviews and their statuses.
+- Once all reviews are validated button to Confirm will be shown.
+
+
Additional features:
+
+- You can filter the Purchase Request requesting your review through the filter Needs my
+Review.
+- User with rights to confirm the Purchase Request (validate all tiers that would
+be generated) can directly do the operation, this is, there is no need for
+her/him to request a validation.
+
+
+
+
+
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.
+
+
+
+
+
+
+
+
+
This module is maintained by the OCA.
+

+
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/purchase-workflow project on GitHub.
+
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
+
+
+
+
+
diff --git a/purchase_stock_tier_validation/tests/__init__.py b/purchase_stock_tier_validation/tests/__init__.py
new file mode 100644
index 000000000..e5ea27266
--- /dev/null
+++ b/purchase_stock_tier_validation/tests/__init__.py
@@ -0,0 +1 @@
+from . import test_purchase_stock_tier_validation
diff --git a/purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py b/purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py
new file mode 100644
index 000000000..18a49f591
--- /dev/null
+++ b/purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py
@@ -0,0 +1,107 @@
+# Copyright 2017-2020 ForgeFlow S.L.
+# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0).
+
+from odoo import fields
+from odoo.tests import common
+
+
+class TestPurchaseStockTierValidation(common.TransactionCase):
+ def setUp(self):
+ super(TestPurchaseStockTierValidation, self).setUp()
+ # Get purchase order model
+ self.po_model = self.env.ref("purchase.model_purchase_order")
+
+ # Create users
+ group_ids = self.env.ref("base.group_system").ids
+ self.test_user_1 = self.env["res.users"].create(
+ {
+ "name": "John",
+ "login": "test1",
+ "groups_id": [(6, 0, group_ids)],
+ "email": "test@examlple.com",
+ }
+ )
+
+ # Create tier definitions:
+ self.tier_def_obj = self.env["tier.definition"]
+ self.tier_def_obj.create(
+ {
+ "model_id": self.po_model.id,
+ "review_type": "individual",
+ "reviewer_id": self.test_user_1.id,
+ }
+ )
+
+ # Common models
+ self.test_partner = self.env["res.partner"].create({"name": "Partner for test"})
+ self.stock_loc = self.browse_ref("stock.stock_location_stock")
+ self.warehouse = self.browse_ref("stock.warehouse0")
+
+ # Create product
+ route_buy = self.env.ref("purchase_stock.route_warehouse0_buy").id
+ self.test_product = self.env["product.product"].create(
+ {
+ "name": "Test Scrap Component 1",
+ "type": "product",
+ "route_ids": [(6, 0, [route_buy])],
+ "seller_ids": [(0, 0, {"name": self.test_partner.id, "price": 20.0})],
+ }
+ )
+
+ def test_procurement_in_new_rfq(self):
+ """
+ Procure a product with the same supplier as one open RFQ under validation
+ and check if it includes the procurement in that RFQ or in a new one.
+ """
+ po = self.env["purchase.order"].create(
+ {
+ "partner_id": self.test_partner.id,
+ "order_line": [
+ (
+ 0,
+ 0,
+ {
+ "name": "PO-Product",
+ "product_id": self.test_product.id,
+ "date_planned": fields.Datetime.now(),
+ "product_qty": 10,
+ "product_uom": self.test_product.uom_id.id,
+ "price_unit": 1000,
+ },
+ )
+ ],
+ }
+ )
+ rfq_test_partner_before = self.env["purchase.order"].search(
+ [("partner_id", "=", self.test_partner.id)]
+ )
+ self.assertEqual(len(po.mapped("order_line")), 1)
+ po.request_validation()
+ po.with_user(self.test_user_1).validate_tier()
+ group = self.env["procurement.group"].create(
+ {"name": "Test", "move_type": "direct"}
+ )
+ values = {
+ "company_id": self.warehouse.company_id,
+ "group_id": group,
+ "date_planned": "2018-11-13 12:12:59",
+ "warehouse_id": self.warehouse,
+ }
+ procurements = [
+ self.env["procurement.group"].Procurement(
+ self.test_product,
+ 1,
+ self.env.ref("uom.product_uom_unit"),
+ self.stock_loc,
+ "test",
+ "TEST",
+ self.warehouse.company_id,
+ values,
+ )
+ ]
+ group.run(procurements)
+ self.assertEqual(len(po.mapped("order_line")), 1)
+ rfq_test_partner_after = self.env["purchase.order"].search(
+ [("partner_id", "=", self.test_partner.id)]
+ )
+ self.assertEqual(len(rfq_test_partner_after), len(rfq_test_partner_before) + 1)
From 2de907cc258d559a88ad5aa96241b08f55752333 Mon Sep 17 00:00:00 2001
From: oca-ci
Date: Tue, 18 Apr 2023 11:01:44 +0000
Subject: [PATCH 02/17] [UPD] Update purchase_stock_tier_validation.pot
---
.../i18n/purchase_stock_tier_validation.pot | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
create mode 100644 purchase_stock_tier_validation/i18n/purchase_stock_tier_validation.pot
diff --git a/purchase_stock_tier_validation/i18n/purchase_stock_tier_validation.pot b/purchase_stock_tier_validation/i18n/purchase_stock_tier_validation.pot
new file mode 100644
index 000000000..9d735ba88
--- /dev/null
+++ b/purchase_stock_tier_validation/i18n/purchase_stock_tier_validation.pot
@@ -0,0 +1,19 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_stock_tier_validation
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 13.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: purchase_stock_tier_validation
+#: model:ir.model,name:purchase_stock_tier_validation.model_stock_rule
+msgid "Stock Rule"
+msgstr ""
From 048072f7e8ec860942940bdf6df49097fc0fba00 Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Tue, 18 Apr 2023 11:11:14 +0000
Subject: [PATCH 03/17] [UPD] README.rst
---
purchase_stock_tier_validation/README.rst | 77 ++++++++++++++++
.../static/description/index.html | 88 +++++--------------
2 files changed, 98 insertions(+), 67 deletions(-)
create mode 100644 purchase_stock_tier_validation/README.rst
diff --git a/purchase_stock_tier_validation/README.rst b/purchase_stock_tier_validation/README.rst
new file mode 100644
index 000000000..8836aa135
--- /dev/null
+++ b/purchase_stock_tier_validation/README.rst
@@ -0,0 +1,77 @@
+==============================
+Purchase Stock Tier Validation
+==============================
+
+.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! 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%2Fpurchase--workflow-lightgray.png?logo=github
+ :target: https://github.com/OCA/purchase-workflow/tree/13.0/purchase_stock_tier_validation
+ :alt: OCA/purchase-workflow
+.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
+ :target: https://translation.odoo-community.org/projects/purchase-workflow-13-0/purchase-workflow-13-0-purchase_stock_tier_validation
+ :alt: Translate me on Weblate
+.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
+ :target: https://runbot.odoo-community.org/runbot/142/13.0
+ :alt: Try me on Runbot
+
+|badge1| |badge2| |badge3| |badge4| |badge5|
+
+This module excludes RFQs pending to validate or validated when procuring a product.
+
+If a RFQ, at some point, is requested to validate, it converts it immediately in something unmodifiable.
+Then, taking this into account, if we procure a product with the same supplier as one open RFQ, it should
+check if that is under validation or already validated and discard it on any of both cases.
+
+**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
+~~~~~~~
+
+* ForgeFlow
+
+Contributors
+~~~~~~~~~~~~
+
+* Bernat Puig Font
+
+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/purchase-workflow `_ project on GitHub.
+
+You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/purchase_stock_tier_validation/static/description/index.html b/purchase_stock_tier_validation/static/description/index.html
index ebe8c104b..a47d30398 100644
--- a/purchase_stock_tier_validation/static/description/index.html
+++ b/purchase_stock_tier_validation/static/description/index.html
@@ -4,7 +4,7 @@
-Purchase Request Tier Validation
+Purchase Stock Tier Validation
-
-
Purchase Request Tier Validation
+
+
Purchase Stock Tier Validation
-

-
This module extends the functionality of Purchase Requests to support a tier validation process.
+

+
This module excludes RFQs pending to validate or validated when procuring a product.
+
If a RFQ, at some point, is requested to validate, it converts it immediately in something unmodifiable.
+Then, taking this into account, if we procure a product with the same supplier as one open RFQ, it should
+check if that is under validation or already validated and discard it on any of both cases.
Table of contents
-
-
-
This module depends on base_tier_validation. You can find it at
-OCA/server-ux
-
-
-
-
A default tier is created allowing Purchase Request Manager to approve Purchase
-Requests.
-
In addition, you may want to add more tiers, so:
-
-- Go to Settings > Technical > Tier Validations > Tier Definition.
-- Create as many tiers as you want for Purchase Order model.
-
-
-
-
-
To use this module, you need to:
-
-- Create a Purchase Request triggering at least one “Tier Definition”.
-- Click on Request Validation button.
-- Under the tab Reviews have a look to pending reviews and their statuses.
-- Once all reviews are validated button to Confirm will be shown.
-
-
Additional features:
-
-- You can filter the Purchase Request requesting your review through the filter Needs my
-Review.
-- User with rights to confirm the Purchase Request (validate all tiers that would
-be generated) can directly do the operation, this is, there is no need for
-her/him to request a validation.
-
+
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.
-
+
-
-
+
This module is maintained by the OCA.
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/purchase-workflow project on GitHub.
+
This module is part of the OCA/purchase-workflow project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
From 84c700162f1936157d6646d205ed609b2f75f363 Mon Sep 17 00:00:00 2001
From: bosd
Date: Wed, 19 Apr 2023 09:16:58 +0200
Subject: [PATCH 04/17] [IMP] purchase_stock_tier_validation: pre-commit
execution
---
.../tests/test_purchase_stock_tier_validation.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py b/purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py
index 18a49f591..94b4b3bf4 100644
--- a/purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py
+++ b/purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py
@@ -50,8 +50,8 @@ def setUp(self):
def test_procurement_in_new_rfq(self):
"""
- Procure a product with the same supplier as one open RFQ under validation
- and check if it includes the procurement in that RFQ or in a new one.
+ Procure a product with the same supplier as one open RFQ under validation
+ and check if it includes the procurement in that RFQ or in a new one.
"""
po = self.env["purchase.order"].create(
{
From 8d151f7f5816d331d187f1cd3efb509a798595fa Mon Sep 17 00:00:00 2001
From: bosd
Date: Wed, 19 Apr 2023 09:16:58 +0200
Subject: [PATCH 05/17] [MIG] purchase_stock_tier_validation: Migration to 14.0
---
purchase_stock_tier_validation/__manifest__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/purchase_stock_tier_validation/__manifest__.py b/purchase_stock_tier_validation/__manifest__.py
index 618523010..54cc74155 100644
--- a/purchase_stock_tier_validation/__manifest__.py
+++ b/purchase_stock_tier_validation/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Purchase Stock Tier Validation",
"summary": "Exclude RFQs pending to validate when procuring",
- "version": "13.0.1.0.0",
+ "version": "14.0.1.0.0",
"category": "Purchase Management",
"website": "https://github.com/OCA/purchase-workflow",
"author": "ForgeFlow, Odoo Community Association (OCA)",
From 4e7b98517b86274fe2842fa8185937b38e876934 Mon Sep 17 00:00:00 2001
From: oca-ci
Date: Thu, 20 Apr 2023 15:57:55 +0000
Subject: [PATCH 06/17] [UPD] Update purchase_stock_tier_validation.pot
---
.../i18n/purchase_stock_tier_validation.pot | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/purchase_stock_tier_validation/i18n/purchase_stock_tier_validation.pot b/purchase_stock_tier_validation/i18n/purchase_stock_tier_validation.pot
index 9d735ba88..5691c5c88 100644
--- a/purchase_stock_tier_validation/i18n/purchase_stock_tier_validation.pot
+++ b/purchase_stock_tier_validation/i18n/purchase_stock_tier_validation.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"
@@ -13,6 +13,21 @@ msgstr ""
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
+#. module: purchase_stock_tier_validation
+#: model:ir.model.fields,field_description:purchase_stock_tier_validation.field_stock_rule__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: purchase_stock_tier_validation
+#: model:ir.model.fields,field_description:purchase_stock_tier_validation.field_stock_rule__id
+msgid "ID"
+msgstr ""
+
+#. module: purchase_stock_tier_validation
+#: model:ir.model.fields,field_description:purchase_stock_tier_validation.field_stock_rule____last_update
+msgid "Last Modified on"
+msgstr ""
+
#. module: purchase_stock_tier_validation
#: model:ir.model,name:purchase_stock_tier_validation.model_stock_rule
msgid "Stock Rule"
From 7dd6b0710a77e983f49a46d6f70ea75564d4df38 Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Thu, 20 Apr 2023 16:08:35 +0000
Subject: [PATCH 07/17] [UPD] README.rst
---
purchase_stock_tier_validation/README.rst | 10 +++++-----
.../static/description/index.html | 6 +++---
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/purchase_stock_tier_validation/README.rst b/purchase_stock_tier_validation/README.rst
index 8836aa135..3d3a968ae 100644
--- a/purchase_stock_tier_validation/README.rst
+++ b/purchase_stock_tier_validation/README.rst
@@ -14,13 +14,13 @@ Purchase Stock Tier Validation
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github
- :target: https://github.com/OCA/purchase-workflow/tree/13.0/purchase_stock_tier_validation
+ :target: https://github.com/OCA/purchase-workflow/tree/14.0/purchase_stock_tier_validation
:alt: OCA/purchase-workflow
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/purchase-workflow-13-0/purchase-workflow-13-0-purchase_stock_tier_validation
+ :target: https://translation.odoo-community.org/projects/purchase-workflow-14-0/purchase-workflow-14-0-purchase_stock_tier_validation
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/142/13.0
+ :target: https://runbot.odoo-community.org/runbot/142/14.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -42,7 +42,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.
@@ -72,6 +72,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/purchase-workflow `_ project on GitHub.
+This module is part of the `OCA/purchase-workflow `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/purchase_stock_tier_validation/static/description/index.html b/purchase_stock_tier_validation/static/description/index.html
index a47d30398..f26b858a8 100644
--- a/purchase_stock_tier_validation/static/description/index.html
+++ b/purchase_stock_tier_validation/static/description/index.html
@@ -367,7 +367,7 @@ Purchase Stock Tier Validation
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

This module excludes RFQs pending to validate or validated when procuring a product.
If a RFQ, at some point, is requested to validate, it converts it immediately in something unmodifiable.
Then, taking this into account, if we procure a product with the same supplier as one open RFQ, it should
@@ -389,7 +389,7 @@
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.
@@ -413,7 +413,7 @@
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/purchase-workflow project on GitHub.
+
This module is part of the OCA/purchase-workflow project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
From e7363f136af3a76e55a4236590f46f6b2dc609cd Mon Sep 17 00:00:00 2001
From: bosd
Date: Thu, 20 Apr 2023 18:12:58 +0200
Subject: [PATCH 08/17] [MIG] purchase_stock_tier_validation: Migration to 15.0
---
purchase_stock_tier_validation/__manifest__.py | 3 ++-
.../tests/test_purchase_stock_tier_validation.py | 7 +++++--
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/purchase_stock_tier_validation/__manifest__.py b/purchase_stock_tier_validation/__manifest__.py
index 54cc74155..63d468a9a 100644
--- a/purchase_stock_tier_validation/__manifest__.py
+++ b/purchase_stock_tier_validation/__manifest__.py
@@ -3,10 +3,11 @@
{
"name": "Purchase Stock Tier Validation",
"summary": "Exclude RFQs pending to validate when procuring",
- "version": "14.0.1.0.0",
+ "version": "15.0.1.0.0",
"category": "Purchase Management",
"website": "https://github.com/OCA/purchase-workflow",
"author": "ForgeFlow, Odoo Community Association (OCA)",
+ "maintainers": ["bosd"],
"license": "AGPL-3",
"application": False,
"installable": True,
diff --git a/purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py b/purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py
index 94b4b3bf4..5d7c272e5 100644
--- a/purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py
+++ b/purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py
@@ -9,7 +9,9 @@ class TestPurchaseStockTierValidation(common.TransactionCase):
def setUp(self):
super(TestPurchaseStockTierValidation, self).setUp()
# Get purchase order model
- self.po_model = self.env.ref("purchase.model_purchase_order")
+ self.po_model = self.env.ref("purchase.model_purchase_order").with_context(
+ tracking_disable=True, no_reset_password=True
+ )
# Create users
group_ids = self.env.ref("base.group_system").ids
@@ -78,13 +80,14 @@ def test_procurement_in_new_rfq(self):
self.assertEqual(len(po.mapped("order_line")), 1)
po.request_validation()
po.with_user(self.test_user_1).validate_tier()
+ date_planned = fields.Datetime.now()
group = self.env["procurement.group"].create(
{"name": "Test", "move_type": "direct"}
)
values = {
"company_id": self.warehouse.company_id,
"group_id": group,
- "date_planned": "2018-11-13 12:12:59",
+ "date_planned": date_planned,
"warehouse_id": self.warehouse,
}
procurements = [
From 957febd2beee19bc1a2c63a1230a0bf6c01e371f Mon Sep 17 00:00:00 2001
From: oca-ci
Date: Fri, 28 Apr 2023 08:17:14 +0000
Subject: [PATCH 09/17] [UPD] Update purchase_stock_tier_validation.pot
---
.../i18n/purchase_stock_tier_validation.pot | 17 +----------------
1 file changed, 1 insertion(+), 16 deletions(-)
diff --git a/purchase_stock_tier_validation/i18n/purchase_stock_tier_validation.pot b/purchase_stock_tier_validation/i18n/purchase_stock_tier_validation.pot
index 5691c5c88..c6d11cd66 100644
--- a/purchase_stock_tier_validation/i18n/purchase_stock_tier_validation.pot
+++ b/purchase_stock_tier_validation/i18n/purchase_stock_tier_validation.pot
@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 14.0\n"
+"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -13,21 +13,6 @@ msgstr ""
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
-#. module: purchase_stock_tier_validation
-#: model:ir.model.fields,field_description:purchase_stock_tier_validation.field_stock_rule__display_name
-msgid "Display Name"
-msgstr ""
-
-#. module: purchase_stock_tier_validation
-#: model:ir.model.fields,field_description:purchase_stock_tier_validation.field_stock_rule__id
-msgid "ID"
-msgstr ""
-
-#. module: purchase_stock_tier_validation
-#: model:ir.model.fields,field_description:purchase_stock_tier_validation.field_stock_rule____last_update
-msgid "Last Modified on"
-msgstr ""
-
#. module: purchase_stock_tier_validation
#: model:ir.model,name:purchase_stock_tier_validation.model_stock_rule
msgid "Stock Rule"
From dbae8d29fe4e81b9a8564ad7a90ab2e0fe7b8abe Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Fri, 28 Apr 2023 08:25:47 +0000
Subject: [PATCH 10/17] [UPD] README.rst
---
purchase_stock_tier_validation/README.rst | 18 +++++++++++++-----
.../static/description/index.html | 8 +++++---
2 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/purchase_stock_tier_validation/README.rst b/purchase_stock_tier_validation/README.rst
index 3d3a968ae..41543c496 100644
--- a/purchase_stock_tier_validation/README.rst
+++ b/purchase_stock_tier_validation/README.rst
@@ -14,13 +14,13 @@ Purchase Stock Tier Validation
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github
- :target: https://github.com/OCA/purchase-workflow/tree/14.0/purchase_stock_tier_validation
+ :target: https://github.com/OCA/purchase-workflow/tree/15.0/purchase_stock_tier_validation
:alt: OCA/purchase-workflow
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/purchase-workflow-14-0/purchase-workflow-14-0-purchase_stock_tier_validation
+ :target: https://translation.odoo-community.org/projects/purchase-workflow-15-0/purchase-workflow-15-0-purchase_stock_tier_validation
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/142/14.0
+ :target: https://runbot.odoo-community.org/runbot/142/15.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -42,7 +42,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.
@@ -72,6 +72,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.
-This module is part of the `OCA/purchase-workflow `_ project on GitHub.
+.. |maintainer-bosd| image:: https://github.com/bosd.png?size=40px
+ :target: https://github.com/bosd
+ :alt: bosd
+
+Current `maintainer `__:
+
+|maintainer-bosd|
+
+This module is part of the `OCA/purchase-workflow `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/purchase_stock_tier_validation/static/description/index.html b/purchase_stock_tier_validation/static/description/index.html
index f26b858a8..6c9591552 100644
--- a/purchase_stock_tier_validation/static/description/index.html
+++ b/purchase_stock_tier_validation/static/description/index.html
@@ -367,7 +367,7 @@ Purchase Stock Tier Validation
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

This module excludes RFQs pending to validate or validated when procuring a product.
If a RFQ, at some point, is requested to validate, it converts it immediately in something unmodifiable.
Then, taking this into account, if we procure a product with the same supplier as one open RFQ, it should
@@ -389,7 +389,7 @@
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.
From 7d559d8d61654686ec7fcddcba9ba86fbac73991 Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Sun, 3 Sep 2023 15:46:12 +0000
Subject: [PATCH 11/17] [UPD] README.rst
---
purchase_stock_tier_validation/README.rst | 15 ++++----
.../static/description/index.html | 36 ++++++++++---------
2 files changed, 28 insertions(+), 23 deletions(-)
diff --git a/purchase_stock_tier_validation/README.rst b/purchase_stock_tier_validation/README.rst
index 41543c496..52d65c79f 100644
--- a/purchase_stock_tier_validation/README.rst
+++ b/purchase_stock_tier_validation/README.rst
@@ -2,10 +2,13 @@
Purchase Stock Tier Validation
==============================
-.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+..
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! source digest: sha256:23ccb212b145cffad08152b00899af7656991f07e35565cf7ad749b8c65c10ed
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
@@ -19,11 +22,11 @@ Purchase Stock Tier Validation
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/purchase-workflow-15-0/purchase-workflow-15-0-purchase_stock_tier_validation
:alt: Translate me on Weblate
-.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/142/15.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/purchase-workflow&target_branch=15.0
+ :alt: Try me on Runboat
-|badge1| |badge2| |badge3| |badge4| |badge5|
+|badge1| |badge2| |badge3| |badge4| |badge5|
This module excludes RFQs pending to validate or validated when procuring a product.
@@ -41,7 +44,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
+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.
diff --git a/purchase_stock_tier_validation/static/description/index.html b/purchase_stock_tier_validation/static/description/index.html
index 6c9591552..ae6e7dfcf 100644
--- a/purchase_stock_tier_validation/static/description/index.html
+++ b/purchase_stock_tier_validation/static/description/index.html
@@ -1,20 +1,20 @@
-
+
-
+
Purchase Stock Tier Validation
-
-
Purchase Stock Tier Validation
+
+
+
+
+
+
+
Purchase Stock Tier Validation
-

+

This module excludes RFQs pending to validate or validated when procuring a product.
If a RFQ, at some point, is requested to validate, it converts it immediately in something unmodifiable.
Then, taking this into account, if we procure a product with the same supplier as one open RFQ, it should
@@ -387,40 +392,43 @@
Purchase Stock Tier Validation
-
+
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.
-
+
-
+
This module is maintained by the OCA.
-

+
+
+
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:

-
This module is part of the OCA/purchase-workflow project on GitHub.
+
This module is part of the OCA/purchase-workflow project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
+
From 68b987d4674eeb6cec86663f16f98858db4eb83f Mon Sep 17 00:00:00 2001
From: CristianoMafraJunior
Date: Wed, 22 Apr 2026 16:13:24 -0300
Subject: [PATCH 13/17] [MIG] purchase_stock_tier_validation: Migration to 16.0
---
purchase_stock_tier_validation/__manifest__.py | 2 +-
.../tests/test_purchase_stock_tier_validation.py | 4 +++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/purchase_stock_tier_validation/__manifest__.py b/purchase_stock_tier_validation/__manifest__.py
index 63d468a9a..3a3732982 100644
--- a/purchase_stock_tier_validation/__manifest__.py
+++ b/purchase_stock_tier_validation/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Purchase Stock Tier Validation",
"summary": "Exclude RFQs pending to validate when procuring",
- "version": "15.0.1.0.0",
+ "version": "16.0.1.0.0",
"category": "Purchase Management",
"website": "https://github.com/OCA/purchase-workflow",
"author": "ForgeFlow, Odoo Community Association (OCA)",
diff --git a/purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py b/purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py
index 5d7c272e5..a7b057b7c 100644
--- a/purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py
+++ b/purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py
@@ -46,7 +46,9 @@ def setUp(self):
"name": "Test Scrap Component 1",
"type": "product",
"route_ids": [(6, 0, [route_buy])],
- "seller_ids": [(0, 0, {"name": self.test_partner.id, "price": 20.0})],
+ "seller_ids": [
+ (0, 0, {"partner_id": self.test_partner.id, "price": 20.0})
+ ],
}
)
From 3cb21957b68addf0232b44b1f7374a0c03864aa4 Mon Sep 17 00:00:00 2001
From: oca-ci
Date: Fri, 24 Apr 2026 14:35:59 +0000
Subject: [PATCH 14/17] [UPD] Update purchase_stock_tier_validation.pot
---
.../i18n/purchase_stock_tier_validation.pot | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/purchase_stock_tier_validation/i18n/purchase_stock_tier_validation.pot b/purchase_stock_tier_validation/i18n/purchase_stock_tier_validation.pot
index c6d11cd66..baa18edff 100644
--- a/purchase_stock_tier_validation/i18n/purchase_stock_tier_validation.pot
+++ b/purchase_stock_tier_validation/i18n/purchase_stock_tier_validation.pot
@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 15.0\n"
+"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
From 50356aff36cea0099d1eac99e2472aaaecf35a40 Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Fri, 24 Apr 2026 14:44:00 +0000
Subject: [PATCH 15/17] [BOT] post-merge updates
---
purchase_stock_tier_validation/README.rst | 2 +-
purchase_stock_tier_validation/static/description/index.html | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/purchase_stock_tier_validation/README.rst b/purchase_stock_tier_validation/README.rst
index f527e91c6..180b10fbf 100644
--- a/purchase_stock_tier_validation/README.rst
+++ b/purchase_stock_tier_validation/README.rst
@@ -11,7 +11,7 @@ Purchase Stock Tier Validation
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !! source digest: sha256:23ccb212b145cffad08152b00899af7656991f07e35565cf7ad749b8c65c10ed
+ !! source digest: sha256:21ba44ff5c82b58992691619d03e625b0e479d8cd4643b1c6701d6508e48df93
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
diff --git a/purchase_stock_tier_validation/static/description/index.html b/purchase_stock_tier_validation/static/description/index.html
index c584b0ccd..203382d5e 100644
--- a/purchase_stock_tier_validation/static/description/index.html
+++ b/purchase_stock_tier_validation/static/description/index.html
@@ -372,7 +372,7 @@ Purchase Stock Tier Validation
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!! source digest: sha256:23ccb212b145cffad08152b00899af7656991f07e35565cf7ad749b8c65c10ed
+!! source digest: sha256:21ba44ff5c82b58992691619d03e625b0e479d8cd4643b1c6701d6508e48df93
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

This module excludes RFQs pending to validate or validated when procuring a product.
From 7baf0fd1e1c9a7dd92093dccb250a1b0cd051ca9 Mon Sep 17 00:00:00 2001
From: Giordano
Date: Tue, 6 Oct 2026 09:12:59 +0200
Subject: [PATCH 16/17] [MIG] purchase_stock_tier_validation: Migration to 19.0
Module last existed at 16.0 in OCA/purchase-workflow and was never
carried forward through the 17.0 migration. Relocated alongside its
sibling *_tier_validation modules, now living in OCA/tier-validation.
_make_po_get_domain (purchase_stock's StockRule hook) and the
review_ids field from base_tier_validation are both unchanged in
19.0, so the module logic still applies as-is.
Changes:
- version bumped to 19.0.1.0.0
- website/links point at OCA/tier-validation (new home)
- README regenerated from readme/*.md fragments
- pyproject.toml added (whool build backend)
- tests modernized: BaseCommon + new_test_user, tagged
post_install/-at_install
- tests fixed for 19.0 core changes: procurement.group no longer
exists (Procurement and run() moved to stock.rule),
purchase.order.line.product_uom renamed product_uom_id
Assisted-by: Claude Sonnet 5.5
Assisted-by: Claude:claude-sonnet-5-5
---
purchase_stock_tier_validation/README.rst | 43 +-
.../__manifest__.py | 4 +-
.../i18n/purchase_stock_tier_validation.pot | 2 +-
purchase_stock_tier_validation/pyproject.toml | 3 +
.../readme/CONTRIBUTORS.md | 2 +
.../readme/CONTRIBUTORS.rst | 1 -
.../{DESCRIPTION.rst => DESCRIPTION.md} | 0
.../static/description/index.html | 434 ------------------
.../tests/__init__.py | 2 +
.../test_purchase_stock_tier_validation.py | 59 ++-
10 files changed, 57 insertions(+), 493 deletions(-)
create mode 100644 purchase_stock_tier_validation/pyproject.toml
create mode 100644 purchase_stock_tier_validation/readme/CONTRIBUTORS.md
delete mode 100644 purchase_stock_tier_validation/readme/CONTRIBUTORS.rst
rename purchase_stock_tier_validation/readme/{DESCRIPTION.rst => DESCRIPTION.md} (100%)
delete mode 100644 purchase_stock_tier_validation/static/description/index.html
diff --git a/purchase_stock_tier_validation/README.rst b/purchase_stock_tier_validation/README.rst
index 180b10fbf..bce052b27 100644
--- a/purchase_stock_tier_validation/README.rst
+++ b/purchase_stock_tier_validation/README.rst
@@ -6,12 +6,12 @@
Purchase Stock Tier Validation
==============================
-..
+..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !! source digest: sha256:21ba44ff5c82b58992691619d03e625b0e479d8cd4643b1c6701d6508e48df93
+ !! source digest: sha256:regenerate_with_oca_gen_addon_readme
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -20,14 +20,14 @@ Purchase Stock Tier Validation
.. |badge2| image:: https://img.shields.io/badge/license-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%2Fpurchase--workflow-lightgray.png?logo=github
- :target: https://github.com/OCA/purchase-workflow/tree/16.0/purchase_stock_tier_validation
- :alt: OCA/purchase-workflow
+.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Ftier--validation-lightgray.png?logo=github
+ :target: https://github.com/OCA/tier-validation/tree/19.0/purchase_stock_tier_validation
+ :alt: OCA/tier-validation
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_stock_tier_validation
+ :target: https://translation.odoo-community.org/projects/tier-validation-19-0/tier-validation-19-0-purchase_stock_tier_validation
: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/purchase-workflow&target_branch=16.0
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/tier-validation&target_branch=19.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -43,13 +43,19 @@ check if that is under validation or already validated and discard it on any of
.. contents::
:local:
+Installation
+============
+
+This module depends on ``purchase_tier_validation``. You can find it in
+this same repository, `OCA/tier-validation `__.
+
Bug Tracker
===========
-Bugs are tracked on `GitHub Issues `_.
+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.
@@ -57,17 +63,18 @@ Credits
=======
Authors
-~~~~~~~
+-------
* ForgeFlow
Contributors
-~~~~~~~~~~~~
+------------
-* Bernat Puig Font
+- Bernat Puig Font
+- Giordano Loiaconi (migrate to v19)
Maintainers
-~~~~~~~~~~~
+-----------
This module is maintained by the OCA.
@@ -79,14 +86,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.
-.. |maintainer-bosd| image:: https://github.com/bosd.png?size=40px
- :target: https://github.com/bosd
- :alt: bosd
-
-Current `maintainer `__:
-
-|maintainer-bosd|
-
-This module is part of the `OCA/purchase-workflow `_ project on GitHub.
+This module is part of the `OCA/tier-validation `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/purchase_stock_tier_validation/__manifest__.py b/purchase_stock_tier_validation/__manifest__.py
index 3a3732982..3f179173c 100644
--- a/purchase_stock_tier_validation/__manifest__.py
+++ b/purchase_stock_tier_validation/__manifest__.py
@@ -3,9 +3,9 @@
{
"name": "Purchase Stock Tier Validation",
"summary": "Exclude RFQs pending to validate when procuring",
- "version": "16.0.1.0.0",
+ "version": "19.0.1.0.0",
"category": "Purchase Management",
- "website": "https://github.com/OCA/purchase-workflow",
+ "website": "https://github.com/OCA/tier-validation",
"author": "ForgeFlow, Odoo Community Association (OCA)",
"maintainers": ["bosd"],
"license": "AGPL-3",
diff --git a/purchase_stock_tier_validation/i18n/purchase_stock_tier_validation.pot b/purchase_stock_tier_validation/i18n/purchase_stock_tier_validation.pot
index baa18edff..ec79216e3 100644
--- a/purchase_stock_tier_validation/i18n/purchase_stock_tier_validation.pot
+++ b/purchase_stock_tier_validation/i18n/purchase_stock_tier_validation.pot
@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 16.0\n"
+"Project-Id-Version: Odoo Server 19.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
diff --git a/purchase_stock_tier_validation/pyproject.toml b/purchase_stock_tier_validation/pyproject.toml
new file mode 100644
index 000000000..4231d0ccc
--- /dev/null
+++ b/purchase_stock_tier_validation/pyproject.toml
@@ -0,0 +1,3 @@
+[build-system]
+requires = ["whool"]
+build-backend = "whool.buildapi"
diff --git a/purchase_stock_tier_validation/readme/CONTRIBUTORS.md b/purchase_stock_tier_validation/readme/CONTRIBUTORS.md
new file mode 100644
index 000000000..6479789e9
--- /dev/null
+++ b/purchase_stock_tier_validation/readme/CONTRIBUTORS.md
@@ -0,0 +1,2 @@
+- Bernat Puig Font \<\>
+- Giordano Loiaconi \<\> (migrate to v19)
diff --git a/purchase_stock_tier_validation/readme/CONTRIBUTORS.rst b/purchase_stock_tier_validation/readme/CONTRIBUTORS.rst
deleted file mode 100644
index 06a041ec2..000000000
--- a/purchase_stock_tier_validation/readme/CONTRIBUTORS.rst
+++ /dev/null
@@ -1 +0,0 @@
-* Bernat Puig Font
diff --git a/purchase_stock_tier_validation/readme/DESCRIPTION.rst b/purchase_stock_tier_validation/readme/DESCRIPTION.md
similarity index 100%
rename from purchase_stock_tier_validation/readme/DESCRIPTION.rst
rename to purchase_stock_tier_validation/readme/DESCRIPTION.md
diff --git a/purchase_stock_tier_validation/static/description/index.html b/purchase_stock_tier_validation/static/description/index.html
deleted file mode 100644
index 203382d5e..000000000
--- a/purchase_stock_tier_validation/static/description/index.html
+++ /dev/null
@@ -1,434 +0,0 @@
-
-
-
-
-
-README.rst
-
-
-
-
-
-
-
-
-
-
-
Purchase Stock Tier Validation
-
-

-
This module excludes RFQs pending to validate or validated when procuring a product.
-
If a RFQ, at some point, is requested to validate, it converts it immediately in something unmodifiable.
-Then, taking this into account, if we procure a product with the same supplier as one open RFQ, it should
-check if that is under validation or already validated and discard it on any of both cases.
-
Table of contents
-
-
-
-
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.
-
Do not contact contributors directly about support or help with technical issues.
-
-
-
-
-
-
-
-
This module is maintained by the OCA.
-
-
-
-
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:
-

-
This module is part of the OCA/purchase-workflow project on GitHub.
-
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
-
-
-
-
-
-
diff --git a/purchase_stock_tier_validation/tests/__init__.py b/purchase_stock_tier_validation/tests/__init__.py
index e5ea27266..4d66f02ea 100644
--- a/purchase_stock_tier_validation/tests/__init__.py
+++ b/purchase_stock_tier_validation/tests/__init__.py
@@ -1 +1,3 @@
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
from . import test_purchase_stock_tier_validation
diff --git a/purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py b/purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py
index a7b057b7c..7b032a5aa 100644
--- a/purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py
+++ b/purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py
@@ -2,52 +2,49 @@
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0).
from odoo import fields
-from odoo.tests import common
+from odoo.tests import new_test_user, tagged
+from odoo.addons.base.tests.common import BaseCommon
-class TestPurchaseStockTierValidation(common.TransactionCase):
- def setUp(self):
- super(TestPurchaseStockTierValidation, self).setUp()
+
+@tagged("-at_install", "post_install")
+class TestPurchaseStockTierValidation(BaseCommon):
+ @classmethod
+ def setUpClass(cls):
+ super().setUpClass()
# Get purchase order model
- self.po_model = self.env.ref("purchase.model_purchase_order").with_context(
- tracking_disable=True, no_reset_password=True
- )
+ cls.po_model = cls.env.ref("purchase.model_purchase_order")
# Create users
- group_ids = self.env.ref("base.group_system").ids
- self.test_user_1 = self.env["res.users"].create(
- {
- "name": "John",
- "login": "test1",
- "groups_id": [(6, 0, group_ids)],
- "email": "test@examlple.com",
- }
+ cls.test_user_1 = new_test_user(
+ cls.env, name="John", login="test1", groups="base.group_system"
)
# Create tier definitions:
- self.tier_def_obj = self.env["tier.definition"]
- self.tier_def_obj.create(
+ cls.tier_def_obj = cls.env["tier.definition"]
+ cls.tier_def_obj.create(
{
- "model_id": self.po_model.id,
+ "model_id": cls.po_model.id,
"review_type": "individual",
- "reviewer_id": self.test_user_1.id,
+ "reviewer_id": cls.test_user_1.id,
}
)
# Common models
- self.test_partner = self.env["res.partner"].create({"name": "Partner for test"})
- self.stock_loc = self.browse_ref("stock.stock_location_stock")
- self.warehouse = self.browse_ref("stock.warehouse0")
+ cls.test_partner = cls.env["res.partner"].create({"name": "Partner for test"})
+ cls.stock_loc = cls.env.ref("stock.stock_location_stock")
+ cls.warehouse = cls.env.ref("stock.warehouse0")
# Create product
- route_buy = self.env.ref("purchase_stock.route_warehouse0_buy").id
- self.test_product = self.env["product.product"].create(
+ route_buy = cls.env.ref("purchase_stock.route_warehouse0_buy").id
+ cls.test_product = cls.env["product.product"].create(
{
"name": "Test Scrap Component 1",
- "type": "product",
+ "type": "consu",
+ "is_storable": True,
"route_ids": [(6, 0, [route_buy])],
"seller_ids": [
- (0, 0, {"partner_id": self.test_partner.id, "price": 20.0})
+ (0, 0, {"partner_id": cls.test_partner.id, "price": 20.0})
],
}
)
@@ -69,7 +66,7 @@ def test_procurement_in_new_rfq(self):
"product_id": self.test_product.id,
"date_planned": fields.Datetime.now(),
"product_qty": 10,
- "product_uom": self.test_product.uom_id.id,
+ "product_uom_id": self.test_product.uom_id.id,
"price_unit": 1000,
},
)
@@ -83,17 +80,13 @@ def test_procurement_in_new_rfq(self):
po.request_validation()
po.with_user(self.test_user_1).validate_tier()
date_planned = fields.Datetime.now()
- group = self.env["procurement.group"].create(
- {"name": "Test", "move_type": "direct"}
- )
values = {
"company_id": self.warehouse.company_id,
- "group_id": group,
"date_planned": date_planned,
"warehouse_id": self.warehouse,
}
procurements = [
- self.env["procurement.group"].Procurement(
+ self.env["stock.rule"].Procurement(
self.test_product,
1,
self.env.ref("uom.product_uom_unit"),
@@ -104,7 +97,7 @@ def test_procurement_in_new_rfq(self):
values,
)
]
- group.run(procurements)
+ self.env["stock.rule"].run(procurements)
self.assertEqual(len(po.mapped("order_line")), 1)
rfq_test_partner_after = self.env["purchase.order"].search(
[("partner_id", "=", self.test_partner.id)]
From 2a904f6cf06947e9a1226c684f76d059c37d03fd Mon Sep 17 00:00:00 2001
From: Giordano
Date: Wed, 21 Oct 2026 00:11:09 +0200
Subject: [PATCH 17/17] [IMP] purchase_stock_tier_validation: tests use the
BaseCommon partner and Command
Review feedback: reuse the res.partner provided by BaseCommon instead of
creating one, and use Command.set/Command.create instead of raw tuples.
Assisted-by: Claude Sonnet 5.5
---
.../test_purchase_stock_tier_validation.py | 17 +++++++----------
1 file changed, 7 insertions(+), 10 deletions(-)
diff --git a/purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py b/purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py
index 7b032a5aa..609b042de 100644
--- a/purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py
+++ b/purchase_stock_tier_validation/tests/test_purchase_stock_tier_validation.py
@@ -1,7 +1,7 @@
# Copyright 2017-2020 ForgeFlow S.L.
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0).
-from odoo import fields
+from odoo import Command, fields
from odoo.tests import new_test_user, tagged
from odoo.addons.base.tests.common import BaseCommon
@@ -31,7 +31,6 @@ def setUpClass(cls):
)
# Common models
- cls.test_partner = cls.env["res.partner"].create({"name": "Partner for test"})
cls.stock_loc = cls.env.ref("stock.stock_location_stock")
cls.warehouse = cls.env.ref("stock.warehouse0")
@@ -42,9 +41,9 @@ def setUpClass(cls):
"name": "Test Scrap Component 1",
"type": "consu",
"is_storable": True,
- "route_ids": [(6, 0, [route_buy])],
+ "route_ids": [Command.set([route_buy])],
"seller_ids": [
- (0, 0, {"partner_id": cls.test_partner.id, "price": 20.0})
+ Command.create({"partner_id": cls.partner.id, "price": 20.0})
],
}
)
@@ -56,11 +55,9 @@ def test_procurement_in_new_rfq(self):
"""
po = self.env["purchase.order"].create(
{
- "partner_id": self.test_partner.id,
+ "partner_id": self.partner.id,
"order_line": [
- (
- 0,
- 0,
+ Command.create(
{
"name": "PO-Product",
"product_id": self.test_product.id,
@@ -74,7 +71,7 @@ def test_procurement_in_new_rfq(self):
}
)
rfq_test_partner_before = self.env["purchase.order"].search(
- [("partner_id", "=", self.test_partner.id)]
+ [("partner_id", "=", self.partner.id)]
)
self.assertEqual(len(po.mapped("order_line")), 1)
po.request_validation()
@@ -100,6 +97,6 @@ def test_procurement_in_new_rfq(self):
self.env["stock.rule"].run(procurements)
self.assertEqual(len(po.mapped("order_line")), 1)
rfq_test_partner_after = self.env["purchase.order"].search(
- [("partner_id", "=", self.test_partner.id)]
+ [("partner_id", "=", self.partner.id)]
)
self.assertEqual(len(rfq_test_partner_after), len(rfq_test_partner_before) + 1)