From 38b3f179a18ef74b0bfae5d3e3fd0ed8e679d45d Mon Sep 17 00:00:00 2001 From: "admin.suherdy" Date: Sat, 6 Dec 2025 19:07:59 +0700 Subject: [PATCH] fix: adjust payment validation to support payments with `amount_substract` by relaxing line count checks for liquidity and counterpart lines. --- .../account_payment.cpython-310.pyc | Bin 5749 -> 5845 bytes .../account_payment.cpython-312.pyc | Bin 10443 -> 10702 bytes models/account_payment.py | 33 +++++++++++------- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/models/__pycache__/account_payment.cpython-310.pyc b/models/__pycache__/account_payment.cpython-310.pyc index 2836babaa6e4f55897642f72895be4d6ff0d9681..44437afbfd5aec7973f599b2e45598eaadcaedc5 100644 GIT binary patch delta 1434 zcmZ8hTWB0r7@l+HvbWjU`_-hoF*UkWO9gFBjkVE|YS6y4P}zXPWX~j--PudeOdu^2 zi`{@NO1&J>mlo59`dUixRS-pdt5E90Jk=-hLBt22r0Dt2#$!KAZz_+w+jJkB{H5#&l;)I?p}#9g^5ca^4sK#pCtt2H$wotB79lr4!U zHfl$Pax+TQvr2oa9bZCiFcIESP=7UKN)C4L=qjD zp7$eul<0xnHimeJt{|?92%SW2p-YbGQtwGCh!`Zb6}>8*l7?uA=!URL|KI8|$^6Ic zePNc}Hwz-|bUQx%ktJ}hTYW{D`DE|_Sbv9 z>8&q&KDAmtMd0uRd!&DaZnNvjvr)^hySC-|?6)LCQ|w)1vasLh*xah!vo{9x#Aj^B z`2OfTc)tSIp)fwMsNb`x=@9xV$QJEp-hz>7uDfKmZo<`AY# z&$c_}N}rmp)3d!WvSxXf?^Ak`tJ&}AHxeSL5_l}Kh0LL{PGS5*qqS!BR&8RAHkMY| zwanVFFv{w>Gu!Y8!dYPz4RzFB~;&pU!X7_i?}y3VRVlF SBiCK~1Wc(1E@eqaMfo4-fL_4> delta 1331 zcmZWo&u<$=6yBNr;q~r%{o9R0V>?Poe)N z)JAJX!mXeZG_6MB)I)LrsYo191qjqbB~UM%IE2GW{R0r^O65?AdF$XtVx{@^&G)`} z@6F7cgO{JYWO|8&Ch+gz$0!=i@oiJ*WSkF?5C2e zNnBSy7cL4zG(@x&sm%YWlAzid%YsOjdM*oMZL^&u=?$Tv>^&W34Vz3pDKS>j#L^cbR_x%SHGVo$H+tr0qyDm zI0X6-!f?Jg;sbH7z{jyb45a;08hps$KpruhCc(TtCbySZGM8s9<4SQJ?g5&iDu&Wp z-R*=@qwa6e6#LV72h$Vmjl^wqk1Zq!J89lR751|^l^LZ$IW5=r+1d0Zy}~`T0IY@4>Bv_kK42CA9EJdbN5eYUqi(d zq#YN(e7UMcw?a)8uI=`%dZPiy0f(!z-*X@3pTDiBgwZ*(`TPm= z6Z<6p^-cydoCP=!&;)QegbB-PICbA|*p6daM;_%1ASnST9N_$XI2~1xkcLfUj+#a)N;h;=e3&FNOdB diff --git a/models/__pycache__/account_payment.cpython-312.pyc b/models/__pycache__/account_payment.cpython-312.pyc index 1ba693a2fe373e74f1cf89763e986960f30c7617..3560ac75e84c01b2d0f04abd9ac6129214ebf2a7 100644 GIT binary patch delta 2242 zcmZ`)Yitx%6ux(6XS(l}-RZuUZlPsaXuBY46BTKR6-3?;LW}8U*qPGZ?xWtBRu{Ln zMiK>0Xt@bUfj%FDxYp(9=F$SBF(C4I11NEa0~SyYO}^_|J|h^80wvZ53VT5?n^C`FPQ zmP>iHpr`T~EuGARb52Xj>2z@f))s9Y!zJQ_T^w!it{Qej4838AH@yw3cP7wnC$hPZ z*Hx??*RAX3MI;4&Lk`M`i z3CDgMp*I~q?>t!WHf{ouX0Yr`IKfYJCPM6jiH9*iFoP%R00}TPM4xiXVuXoNdfBi^QniC425+bIbE~*yRFhvpvmCKj-=xJD6nFA`eby>RT~>ke+Oa2dW8K z)=rj>ujYeXUpMqN^n*5m%v9{a8|VYecE#aq=1Fs4t&t4`7Q1jsKQ9)QZrQ)Iy_@-CeHxn*(P$ zxM~iP-c*f6=vC(cR@}#|$DMS&)DBMv@k`AOi{^x|Y%xQeej<4{XIUdGA;mMa8m^jG zykqtPr$}S=vY2gI;solLqio5>Y4Zv%ooV#pHB92gY#Y139c%vWuQZ0H57p-pOfS0RMC4J72)|js=ytMEGboUDwb^-TwW- zZa6Ms&ye5^%VD`NWLVO&Hb^A;f`41kXpr+J3}_>VHJ!+5ov?NztLbO{N&GJT%D>Ml z>#>|FYdZZf@F`wN$AT+`82H?y?*@BlDlE8Gfp+I-1`^kNee{oDh=Wf!bZgZXFeI>H zAC`$;P)RDIkgc$^_z#;PF;K{M+8lm7`6gRuT~JGO@QO02pBbMTKcBeVeW7h`O?PEY z_qYD;itpfEvV)!sA3Nj%_XI~)vMjrpEEr<-IK;u$n8ENVs-|ZOvYsgxQZ>+njj(_t z@H2^+kh2zK(h4jQqJ_vKo$S`CIK&`^h>XE2Bcnd0sp?Q_0H8IODX5xJHz;eet`pJ& zX8KKJyTja6h(+w8tD1eF5#kw!N5^mcKZD+lrc3pXX=V zH_gVnuEj>L?3?T9t@QMQIMXlB^^;0JnHd?a^p8%ue)PB8@Q2>mH0xh`{@H8(bvKsB zFX4F(NBi-uNNg_BUWv3X)L9at1!QRo&m&7Pe7gY!!ZYEvS%3Rwe9gapF@%e5fcX$@ zo{Lq3Yyt}sSdaigZY23G2k#q9?)TmQ0r~+0FOPLlLyW` OGxf~x2oyLZc>M`3st`{A delta 1946 zcmZ8iU2Gdg5Wc4o0=(1&6F4> z!X9A%B9Z6-i$labq}U0{PP-DYkQsJS;Ul8R;lxoa(WxI^v#UZKRqNq~{b{L-sCo?% zA!9_aQ9u|b9bt$$cG=faxg{&D{&UA2L=__&-U+vw{L5c$vLj(90Vw*Q*5!knwf0~c zpC);n!gFQ#GIS$>4nni5$99-3pJdi4AWXQ1c>@@}bNPjXJj1+YgPSfD)W=Y zNVA_dpRvI!9))-O-{7nmIuS)|X7e>r@_5+s2AE>S&f1A~(k!RB<}4XjbI)1w!g#2X zvg$Ku&6~!<(8P(HFy0L3SrN6;8NA{35se@{A)aG5Dnv}49}icBSJYg`##-LG;hU!! zs}ND8yhq^cJm>h05CU)2yc2s#;U1cZrf>9VQWE{=k&z7_miUMpKB7;Pt9{5mbs8;k zS0Z zx(%k}d9(yS1_ofzZ-y1w1xNgs&}Ik+!n|=zVIZ)t`#pl7D?~iFLoeS|-)P~v!8@S!EkLE>1>!gZvnFNj{HN2k!mCx!)nZ*tpbNh>n|y zP-LhL?iLLeF>bm*7KPikFx^o=Bx)F$LiUvZ_ 0 + + if not has_substract: + if len(liquidity_lines) != 1: + raise UserError(_( + "Journal Entry %s is not valid. In order to proceed, the journal items must " + "include one and only one outstanding payments/receipts account.", + move.display_name, + )) - if len(counterpart_lines) != 1: - raise UserError(_( - "Journal Entry %s is not valid. In order to proceed, the journal items must " - "include one and only one receivable/payable account (with an exception of " - "internal transfers).", - move.display_name, - )) + # Allow for additional lines (like substract account from vendor_payment_diff_amount) + # Check if we have at least one counterpart line, not exactly one + if len(counterpart_lines) < 1: + raise UserError(_( + "Journal Entry %s is not valid. In order to proceed, the journal items must " + "include at least one receivable/payable account (with an exception of " + "internal transfers).", + move.display_name, + )) if any(line.currency_id != all_lines[0].currency_id for line in all_lines): raise UserError(_(