From de10fb00f39ac7eabf1807eb46a76d053fe169ae Mon Sep 17 00:00:00 2001 From: yumoqing Date: Mon, 13 Jul 2026 11:19:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BE=9B=E9=94=80=E5=8D=8F=E8=AE=AE?= =?UTF-8?q?=E6=8A=98=E6=89=A3=E6=98=8E=E7=BB=86=E6=8C=89=E4=BE=9B=E5=BA=94?= =?UTF-8?q?=E5=95=86org=E8=BF=87=E6=BB=A4=E4=BA=A7=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - get_contract_discount_items: 改为根据合同的supplier_id查询供应商的orgid, 用供应商orgid过滤产品列表,而非用当前用户orgid过滤 - get_agreement_discount_items: ServerEnv()裸单例→request._run_ns.get_userorgid() 解决env.orgid永远为None导致回退到'0'的问题 --- supplychain/__pycache__/init.cpython-310.pyc | Bin 24713 -> 28750 bytes supplychain/init.py | 28 ++++++++++++++----- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/supplychain/__pycache__/init.cpython-310.pyc b/supplychain/__pycache__/init.cpython-310.pyc index 35e0935420049c6e5e9f9a47dc0dae18a0be8f32..db488c9a5428e2e2cb6494f43ae0fde37c3bd6c7 100644 GIT binary patch literal 28750 zcmeHwd6*nWm1kvER#jGZ_1)^$t+K4EZK)+$z9d_=Wl6RKQp=+Q;|5cdI!djQs;gU( z*_OMU#n>y`*nro@!0ccPXfez%+CKmTJHy!K7+^2$G<8ZdpKH4$V!C|Y?IodVUHQGJYttIYEh!&B1I3aSSt~1G@9??3q zK(vYWhZ94+qC<4z+9$e1H?9jsk63`~BGD`Qa9u1Gibc3C5sSqVT$hTaVi~T>#B#9$ z*X1HFuE2GLSShZ=H7{0))wo_E)`+#Zt`zG;Kdx7btHjl~t`h6T23%K*0kIL+HDZ(4 zjO$u)jo5?e*NdCQc3d}zTg0un4v5>t4qP{i z+r>^?H;G+hH?Et-9pX-0uMvC1UR<|`cZhf5dac+e_Tze;7!(I^yUN{#`QL# zA4>F#+Lx_E6XWBR$>HP0ay36XCMGJS{DwS7mP;~Utcv`>l3l7)aI?QyEsm5%OI63( zg9nw8owq4B658uka56tUR&``?*x{I?8>F8Zx1wx2vV3&HDUVh2#SvNJqU`k+y~Hk3 zag~x7!HbTK;myOtV-r=UTph^|7c0XPl_KS{2dr0U-VXNbo+*k>$tjPPJcC00nwJ_W zIeT{@kVRnUSoK(W1UJ^M^00H@=!w#>gIt+ix8F53R%^`B5Gc zng79qAI~2vmqq@V92?D#7iDqOE}T3)Fih16J`~3CPVB_brWG$Vyi%`i4_=9muLulg zz9>uiF*&lq9v&MniS>C|awcRoKX$t6kIwMeC|**w$EpK^=TU}dV2&K~lITy_hLRb) z+0D~KO|FgQYS|eWpY*z@-_?r>Twq!BP=%;=hF)70R3>cy!1N5mNhA(F6sBf<2fvGH zfQNv!xMA1rs8q&IV-ip1D`O+&YDwfLY_z}`%TJ6~#)^VMH2gGSgT@aW=E|Q>%660` zI{>^CI-@M2mdQ?v?JV0(4Oxiji`29FgJ{Z?)0;9a$E+=p-6#fw(|@E|DUX&N)cw@N zm{a7%5!N}H3id$1UQT@PnVV|XR(v*WzGlOg&8o)Kz0Gy+rA|ewiq&$BS5|>bUrI^) z0BY-|SAOO!!_?m3Ltz>Z8VfrI@Q~&(EjdH@CRw}cpqfec#PD#*wlT425#@`=9GX~I zVgA6B#DJIa6V)t!P!ysh`ZYwqO0AT;pvD`WNEK5f zWa+gP(;L~4da&R0%tE1B94!?Jo>eF)42f{AfDS8G{3n@0L5vL-3bG5u%U%LB734Ak z;d)RZnmV!-fCAh{X2Q@+-84)iXYdoRCAM&eku3bsJg5HMiJwhV(@C63)Dv!EN^|sc zH0!n6>N`t73<{M4F&2*&?NXj9nirF}lz~nwlLP%pnMHoDlSb8VmN-huyq5h3b{*Nb zyD+$8|L*gemn>E9i#39$eoKL}sq|~8F4U!I-O}V*1RAPL>zaOC<>d&dDmxk~uDOX5 zx~moNbCPEg$7qshwT;w(V%|Pg0Ue;J4(!a+-Z@^j{g$n@^FiANFdI@RS7rdbY!Gd8 zRe+k(C<2tg)5X!|W|-UzAg%StYMTIQJ*}A<+Ho~*hN-)Q4>3@bg4%KM831mF=4w;) z)6XT&X>}laSD#{3e@=fk@hQEYbc{2J_v&?{o^p+;l$$!IJ(;hkg;CGA>8Z4vaT9J* zr1}yfeO5oG*G<=y*SMz0EJ~cnR5g(iW?!P7y*nYYM#4y(0Si_&Hz(}dPHP&lo|d== zKR5YoLg;Q*SkD@tN}>;2YS-Rb0hw)~+ZcWrp!9(?xi-?gj0 z;Q_mJsy&= z-jbV9n4}3SiKxnJ2wVl=rPW+k=st-|o*_%aHYi%@RP(Iq!>m!ATL}0cZrHUb=prH8 zwBDw5VG`vuL+jNSYD<6Jk&-*`VAcu66A;6;rFqzB`ZIO%hi&H!qn13hbA#M~;^hE9 zZTylWH_1E?b7}J&z@Qp44xrpf?`y;qdKAI~Qm!~TpU^z9|9W2Ze6OYa!* z+`QK0Ry>f~2;4*|vub@cE-ks8o)fK-w-C6Mz-eacu*QXdwZ( z@1?%yC3YwE91U*pA)b?#*>~`>--jo}zJX5bplVoZd%?=>Nz{|L1HJR_3|FhC{3VwL zRZC47B<=ht65|&81NjK-_M9bMsy%p3G%7Sy+wSGOG>8ZE5ZBseX>b9QKRo%1%7O|!l zaS&5&+3e@A#~T)OOFdg{Lp|G2&qqL@Qj0#Oi7wXw>~K2(!3Usc&<6;2bGVzsJsj@g@B$7m;BYU8dpX?4;XV#8 z~-<}W)W>wZP`v)A}*zv zua-`Sd;%DX;V~%&2E7(YOrYZ>SuIvPZL?f}nd!BLWS9BXR7uJ)Ik5zfe)NrJFFgP8 z3!ixO!c$MY{P{2a=xa~>_{`UT^tI<-KL0#;jI`|(oeA5^j6(K+SpR0{>U%b<9^J57 z9P))nA9>}>A4j$Q<|D71d*PJ_AAjk?=U;mK!3)oQ`lYkazx3&c zV=X26FApLs<5;has3xS=0xAS4+-nW*kB?PL(QRq8Sgv>(2v49Jwr4rT`wP{H(W52l zWserCCt0@favbzkE?$RSa-0flX9~lU!q)8B>h7n>X5X=tK`Y^hCD`< zJVM}I1nvg#vO%xfo<4T+7bL@7c6P3?q1^^X#&zbjQInV5)Hf}dGDcI zR246Yr_Cg13Ox>$(O(qFS$^j{b` z{qKxc{i4;T|J-WVe`a;)Kh1UOubN%zE#}{J^>t|1T#z+Xtbtq*sR+o$#V_FIA&5eC zok&K=e`&;jg-CiUNCgBWpmq=mp!PI4vE-tJ3xVjYUeAcsuEf1L5`tX)KCrVcP#B(O zT=V9{sg*!X(3$}Shv?l&Pi2U7h%6D0xe<_k*EIBF)fOG$*``dXA$oJAirljwqP=Ubv2^0w&CBPGgr_M0l3IZhpG}YBAIZmN60I!Ibp8e`e zzxO4zBIG{ALg1lkuGlQ1)6t~%v?FqyVop)IEKh1_Q$*9;WyXuw!X%!0$&;nYX|qt_ ztZ)`ShlCetm5>(8(t0qX+8`7|J)!9j()`-=n*2w2+%Ol?hzRF`iAwu;EII3`)%~iMM@L&?qcfEx8>uAYUoiyk~Dh6j9tWb$#27qr6K>s zS(baSwrCY$wTxfwq?u*OI+-aGD>4i652nnq&LmueQ(@)0Sq_0!;cMEzqD;Ow{VP-t z=X8!Crc8xe@hs_r$rEj7+v+W@35KoRZHbL>ZmJawQH$slU6*Dc?1!d}a`#N^L$n0} z_JPSF3A)Ty^OE+JYuK~^x{oDbBA>O(Bh>;c7c4Lf5;`tYG?=BT;E-CododzjhbSE@ zLU~yLs8Q>Gf@d=! zR*-HVvA!<<3DPvQumQ3D9-cmQDI&X}0kIm35^=8l(bgeBuzw4JENl5Yt`L z7Gt)ywh`q<{m$EnWyj8A8)MYQvRu$KrwjbRYYA0BV8nR!M7{n9TCRHiQ3^dqpt;xM zm^SM5UnA*7LZlJGWt97tJd4PNzBUojf*;K$`+ESF?CU$585$=A^r@H{9g;0cc_ckU z#sxa0E1^!hf@$%eSbj_ku4$1wn`J3F14%Z{>OdkEZBSFSi;j69%lAzipU&FGoq?>S zx}SCHtXv$I*e<{pSb)lSpaurjYIzp@pwPeoLY_s5iSGyY%=#G-G=seIW0Wc`LyXHZ zl(U4}pdsR6jf(s<75*6lQv}Wtpp;5>c!ok{0wKDC5;wwcGhsExd5x$Id=#-W^Wcw~ zr__>}(HPHH3nbZIg>r*=MK~mb~iTRN><>>(tXS%&(OndLQLma%I9^=1alGD-bd;chxcZfSk=;qu~s3==m6%C4U$BBZ73vQ6q*{K184i5iFS*{qm@-pi!gE zxnR_CJW?SBepCK29yW|r90SXT@w7ivTRtnU^ZSC^%9EYv?>x}gl9|yL*Lpo_Ek8s} zJ>OhAYP*FWZSv|9GJoki)mTMgjNo$9A*`>iG|^cPLW0mknrP*sxX#gOfu?M++bWibrSrhle-&>xYsHqqA|t@mN-GxIM>t(}j+1Q$ z*?M4mG{CwWBYPPiZH9s)dDncrj4^}Q4~w}{J} zE1_%8QkE#B4{O%_fPq!@VB?=LX*Xf?{#GwjkQ3EH)t-@wohOn99~>e1HB|Sx`B!FL zCn()%0{0VOjM9WmxCJ(B2;`M8`}o`jIIYvD>JUXc1BNLjz%U2jf@42i~)^| z0ga3Sjf~N0yxP?bQu5#B7xCf-1Vvg^`Yo?BJ~4Q%%tyNs z4L#4ZU}E`$8{+rbdF1X8Nk{#9oY36wqgwLI01a)N2?_VckZ?mApQ9o!3;A}3$TzCZ z=@99DrMWgaLP6t(~@20 zFWH&f@GuQ42~zTF01cCDriGLb7gD^q$bfPBk}@Ut{5(4SPpKAV0`pif%lrisuSPU7 zpADDJpEb9tVd;DlPy4gAfpF=>i;G${O=MddPZzz`m)vsEqz**4sBQD$eU|ylZ|0Xg zM{WBQb<>N@Z6k?|79(>%e~G{)x#)NPJxgpP%Yh4l*|3+R?efNN&YSzK!!EmyIRfi0%ODF-`RWR6>i$!(Ux zrcp^vJpR||72hC0+<+3^o~IB`?ofD>pQX4zAkai*SI)U)d6s<>v%n_89&ql{)D zUhB$%O#V!M6Gv_kQH!JH{71+rKTn{! z#d9uaZt;Ji7B58Jpv5e!MB1V^_1jT_~J zz4(M2EGZQH(K8QE4ZKAT2i4?BQS_v;h)uv6zt0>EM z0>oq}-n4o8%!x61`uvcl&r%dX(}z?NJ=#L-6!sW$+R~7eG`L(~Gha>ylA{UJX1HEBlWflin+BNfD{A0@Q6+zoaMMF+ z`xeB>QuK_FrXoDd5IsS+OhQ=y7m^TI2N1d8ofc)Q>Y4W+9mUMrUA zF;vUH?TlF{C@T*+M6Y9VG(x51xV;7CV#4cnf*6M%f8k3%{^}q38-FJefgN6&{WG$( zjiRWRItC{KM>3;p&^uBRwH8uR{%D;mlLMuFB>FWU!SuV7?w?bcIR{q%6~CSGUr_wN zCh#u_{2K!QmcUGWa45QxbB*8fUlLNd4>_7e*AAEum|6!A1^rA|83ZD$HHQ&_0V4v# zHzEi`*4d2+HhGe0QUki7&JNH`u!FNSq{_2SQpJ$C$lTwd`0d%Im;6^qB*PA!y$k;x zrQ-?n?5Ly7+rKtp@ehzQ&JFm9ktTpH4|8QaU% z;l;#t3dxLol-}?df#y2-)FD3SZ=^c04)H%DM?;<35fRkMzJpP|n;3y9hYMXI?BOgI zmicT62pc?5cnurHhND9#$d-S^Ih??jae=puLxT_EDo%kThB2+1IL=mpu68mhKMYe` z3tT}OTf>HHM!ZJ7MWo2uZ+yo{0=n%T^;RbXJzDyVE(hJ#DMI#IHRWUx2fgH(Bw75) zQMV1H>bUAtmJ7Wf?BR8t`4-rtHE}M763B4|IkNX@xMpF|=jRCXw$)8x*5S5T)lS{+ z=IjqvQAet`y%GA$rt+v?*usr?p|f#xOHcZ<6ARIqd z;F6?_=?5$;kIzna%`4m6@*!iwZdgBf^y&P-z(Ag^aqR&))eKKayL?}%GO3=jZ9W&K z+;8A$hpObqjwwZ=?R$->YAC0yyg+TpJ<9j}TUV|QS0<>?{sAs&?=k<8vV_WS-`-fi za_BZ@=ik#%^Rl>C6(Lt*+6~q|=v&n)rKay+5NToTJim{+qTw@7&jYsj1Glzz^V*rq z*|&H9-oyFLn>I0}xGP$42Zo+g#WQ4=O$N3ZzIEAXp!0~y$RP&CLu#)O?2Iq#(LHMJh_hjfMS0zx@0 zj~_kjy_jpGO?iXA;3;8=X8ok&Eu*jZ6{AmnAB8m_l{_L^@FND(Ht@cXkJMm79HJ2p zku4ZD6o6XD1|`iQh!H>@6i3FwrlWH>-~_Y&eZT=)*o?5i0k-(2$T{K_Vf}(l0p66z z0vUZ32t$Vl0G2$=fe}-07goJPWb2)7T0SCLVCLEev;&T)_M=;?19NFtkq!g66IXrE|8BP{Q}OLrSvdp?m%68@%BEv9cH}p zyQ00mh|5?+);D-NZSw|iU+gZH-*p%JZ(oSgRG8l0Cpzm(IOh^~A-|ohX@ZIDoWK%MmTF| zAeO&*I~>}MmTN4;#PY2R49D_&59J4s?Aw<=a4;Xn-O`Y$A1;}^`$mkcX9lGezlQ$s zdjN}rP0eO(HOu@#(}S)+Ggws-yN_3IT{PP`S#;}r?uAn=d<;7g>YDy=N>P(8qa42@ zX3rn=6m@a*`XF1sb>QHx-3Rlx-@_Hyx#Q4oQqT-?QnhZluMZqn{XM;u;K^aiwK;0W z<&{EX$t7G9m9TpsDzhcOdvKTKa}^lUMp?J^+9fA*90Nv*_F!NmM8zW#-NuHs2~Bar zrnq?O|DSW46#@Sf6TJB6vrX%n+uty|i^1s;!Ss$t#G1D5GUg?%;BdPA!~CB2{APtt zgu%auv4vSB&w76J9|@b!sFnJ&k+Z=%BFs^0K z^kd2~Wes(Q$|8z>779=nQ4F#m6lrxlc-7DW3C-etZ*U|^39cqko%wvy1Tpob4ggc% zL9QdgSLt>vy$3oT157=A(`hnL(6zR=jI>4ex448cDH#0gv!+Zor^LQXGO*rN7QE@# z+pJBWk$;QIGzbMG5SaMw#Ls>PAo4E+Yp%TLc?Y7wi{9|P=u;34*oBu}dNc5%H(8GW z{elaNq`tt59(GCaqR%RJIrO5pAivM$MQ^YdJvYQBM4s{Bu1 zMTUmi(Ta#r4@Ju7P-JZMKlQawa57ReA_+Uk$oA}`5E~8bIgwCla)^Y=EQcUej&F2Q z(CB2(=-76E0}-s;OcpU)uxXHXvb<@ad?#Vy1{J=+YJOEFG*GPCr}Ei?7kAiTz@3H7 z1ycLx_zr%keAmWzIK+zYI`}TIL8DxO4H|{Jd>b?hcf;d|Yv;*rwm9-+{?2;2?eEecvTZP_*LSO@fIl(L4TNGXYE`p(C;rL~y?Ih2vf zP!o9xJ5~OalI$WdlVU&b@0QQnicAvd_5H}MwERR1dYBrJGgqT~py9g*=HMQfgL_~O z?t!_Od!Pklw4CoAIL#RCW%)W@(y)eU{RV3|(C4oV_4z@KXP8k3kTIs!x8%<#;^zeZ zjsQ=FUr^{t0#6b6D1rS1Sa1JJ3Y7`WLvN3xhG@&F5L9W}ROqKpT#V9!?RVb~E*TmN z|5Cnz#|_PIQ15>dPho7cB~6^S6pCh6E%Dun*$J{ z$u(~FhHpi~mA%cco0~_py92-P;Ahj=T+-g=Ju}O#zx5w$8W{=YYdz=MOVWAF}@N|*WFl1kC z&8!&GAEUr*gy;0H&`mLX+36b*_(?(3p$t~Ls>PmGMt zQ&bqE#P%jsC|{#TUnjsTB1C?HD_UbcTZ34d`Fhu|aBwhqBst{|+Hz^4(uM-qH zN#L^t{(wLe8HuR$@ z86ccBvm%_C2IwH=IDQ=7APg%z_qznvPRVKSW)XY_2I`g!r{Q^gW@B;jP4@7jP3%y zjKXk9W&W$1ONh8JdKPeF6b{bhNaJk_T|gh>ESiRK76aqV&m&-J8pdhh$^6~IKrp}= zkmKV}b;s>cm6H}Ub%b2H{Q)ctgW8RZ$w`Wgj?iFc%q-)$EIMO@@s!sS9J!%LkMfme zZjaZ8XR7U};YlyKbMPL8bGBd(cx{zZQ55KaAc(Y+wwJ^49dwu%PUyg%)eudd2sbf4 zdY0ls6a%8???ML6EBMX3e7rMDL3P4A^uh@5D2B+wc?o3dknV~FN4oC-H(6>h=-yFQ9;p%6Bz;~Y@br>*pW*Z$>TsaZPh znGj30qu2)YI}?^#8DXi}o5vOW?J(3VwLBkUC~}u?I1?&|0VmzVckr{nji)48!cPje z3}u|EH=ZriX@oe(k6q)tIYd$;{O#<8BiPcSw7hMJ!z&NgR^bU8c5wpdBb~710hov3dPalB zf?{&xhxyt%{%!#W`?HX7wZy6I&|(;&Jtj(prGh%s2w{6PjyupMxbMp^a{XFj^;_-N zk4{U{r`3-S;5dP^kWRE?BNOKeB1ArgPt5t|e;R)?dIi2>XzSIm>BwShvHj+Ra`nGC zfx9mFDQ0oN$6ujrzFP$Bk2p?;UWj5l7bVVUi0?!`3tO|m<>-U2xO7-9f$MpIIvf3kq}V`UV<0o4w+%z7cn|EUjNWa*EhRuE~-Daain@M*bk!a!r?n~tS$5hVeipMG(0qa511IPv)fHbRYE6~E0SQoFv*H@ZMHn0g-OgCA zn--4G)q0`Yw%*czv+fs0mjPvmvT?TFHjQ4Kg|zNhhN&cr99u!t$(%Be2F^|-Rzgkr z+Yt$IRT)Iz;nG8KQZF z?ZGBwo8k9avG?8RzYpiJge1s+pHG6w0I!(@eIQ1H;MxijbOt2CJkdJ-LD33gph!?< z&bl?2!7&NS$iJS}AFKWP;ds5~{y_cWB&Z`sf?k~S%?+-!OoE8qt_KNfRU`z5@WIN3 zNl=d>K~HHCn+1r)eMp2rYeAIQPHdX}A)7BRw0or3z$5vMBHF)#K&_s;rjrM2X8?&712@c zg>G0KWQ%wvIyR7XWNLveYMUsaqB3}fFm1>VD~yMWI$Dzx|_Z*Xn|ywTYT zxRu>+^x8ECOCzwohM^)%82w!U-xPeJ3d<_|#fcJP4h4TjGH|$mo3e?hVZ6K!U#%KU zOPi14^E!MrV-)>3r}lMvQS>J$x-VWxbW)Pdr%!o(@v`Di&vM>)k@2UWqo+$}E?KQ~ zK3c_FI&<-UlJi{3%DZ zGfw0eJzJs|Ig$U8*%Ez|5?wjx>-?5}i&M_|PCq5-HM}e5e6gSMFDYf%doiCCn|)QH z-fMV7E+bw~(0dJ!Xa|t@!6fY#v3_2XE}PZF%w$VKJ**g$q&||Qong}u`F$$3w^X$! zWGTXt>fd4buQ23lDzhyFos^-2{=3EB730OT+5j5850CKo4RBiuzw-&>WRCDVcY5`d zU=ZTBL6X>p1`Pw1ho1(8`16QXh77Zuin@b&VW^&PgcB^_&*G0D)OJ2g2U~!C(`TR- zKWWG^>^X!1c<)c5PQ7oiyRm^Or$_Vam9Rx@GqlC{D z648gE#4oli`UeJUH-#L9QV{qL6^lrJcC>xf19b6CVMzW)3|(NohkqoZXP&`gIff@u z8`?W~X!pUx`MraO4+L*o$C{iXxmHk!vaIL-O6kwPYsbDLyAS2pt$Ki7v7W30gMfM~ zMfq=I%{Kmqgg9g`iFEQNn&LMDz-jzy#Ks&(l9f_b$<>&(WGlCro-@b6xteSOZsjtM zq0GirAo&m)n)t+x>knE<#Uo(L?ClN%0`Z$^lZ0S6Z@jG=n=W$t{vGlPdfPYw2)J0J z0A3elfx9M-R?5Qz>hD7K?&2dNy`Ja+owB@>|4D`2VB(KN_y=2(w87Y1pucVz5J$)9 zpSG0i46O*f=Qz{__=~Lpb)kQjp?xD17CfLCW~+bQk`_H`_vhSzf0d-h<$nQE2x1l8 zt|h?zyn{kJ3EV;8P69+YnN0E_t9*zgQ#w8XkWXe~%EV`D@##8DMcBYDS6yN6mo&P}q?tBNvkl)?v&+2Q?8J4s*^c`K2(_9U5e{N{5!+*K d;xwBQziXy&ztZdgT+FGK0cOq3=Iyz`{{wfCq&)xt delta 8243 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 diff --git a/supplychain/init.py b/supplychain/init.py index 9a35bb5..bf73e98 100644 --- a/supplychain/init.py +++ b/supplychain/init.py @@ -949,10 +949,10 @@ async def get_agreement_discount_items(request): agreement_id = params_kw.get('agreement_id') or params_kw.get('id') if not agreement_id: return [] - userorgid = getattr(ServerEnv(), 'orgid', None) or '0' + env = request._run_ns + userorgid = await env.get_userorgid() or '0' # Get products from sage products = [] - env = request._run_ns async with get_sor_context(env, 'sage') as sor: rows = await sor.sqlExe( """SELECT p.id as productid, p.product_name, p.product_code, p.price as sale_price, @@ -993,15 +993,29 @@ async def get_agreement_discount_items(request): async def get_contract_discount_items(request): - """Return products with discount status for a supply contract.""" + """Return products with discount status for a supply contract. + + Products are filtered by the contract's supplier org_id — only products + belonging to the supplier should appear in the supplier agreement. + """ params_kw = getattr(request._run_ns, 'params_kw', {}) or {} contract_id = params_kw.get('contract_id') or params_kw.get('id') if not contract_id: return [] - userorgid = getattr(ServerEnv(), 'orgid', None) or '0' - # Get products from sage - products = [] env = request._run_ns + # Get supplier_orgid from the contract's supplier + supplier_orgid = '0' + async with get_sor_context(env, 'supplychain') as sor: + rows = await sor.sqlExe( + "SELECT s.orgid FROM suppliers s " + "JOIN supply_contracts sc ON sc.supplier_id = s.id " + "WHERE sc.id = ${cid}$", + {'cid': contract_id} + ) + if rows and rows[0].orgid: + supplier_orgid = rows[0].orgid + # Get products from sage — only this supplier's products + products = [] async with get_sor_context(env, 'sage') as sor: rows = await sor.sqlExe( """SELECT p.id as productid, p.product_name, p.product_code, p.price as sale_price, @@ -1010,7 +1024,7 @@ async def get_contract_discount_items(request): LEFT JOIN product_category pc ON p.category_id = pc.id WHERE p.status = '1' AND p.org_id = ${oid}$ ORDER BY pc.sort_order, pc.name, p.sort_order, p.product_name""", - {'oid': userorgid} + {'oid': supplier_orgid} ) for r in rows: products.append({