From b09d75d7c54e687165c464d81d6950773bb25424 Mon Sep 17 00:00:00 2001 From: Suherdy Yacob Date: Sat, 24 Jan 2026 16:24:49 +0700 Subject: [PATCH] Fix: Prevent incorrect vendor bill line revaluation during credit note creation by restricting the logic to vendor invoices. --- .gitignore | 14 ++++++++++++++ README.md | 4 ++++ .../account_move_line.cpython-312.pyc | Bin 11472 -> 11634 bytes models/account_move_line.py | 5 ++++- 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f82d91f --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class + +# Odoo +*.po +.ipynb_checkpoints/ + +# Editors +.vscode/ +.idea/ +*.swp +*.swo diff --git a/README.md b/README.md index b58adab..3b7fa08 100755 --- a/README.md +++ b/README.md @@ -238,6 +238,10 @@ For issues, questions, or contributions, please contact your system administrato ## Changelog +### Version 17.0.1.1.0 +- Fix: Prevent incorrect revaluation entries (STJ) on Vendor Bills when creating Credit Notes (Reversal). +- Fix: Restricted revaluation logic to strictly apply only when manually editing Vendor Bills, excluding system-triggered updates during reversals. + ### Version 17.0.1.0.0 - Initial release - Direct editing of price_subtotal on vendor bill lines diff --git a/models/__pycache__/account_move_line.cpython-312.pyc b/models/__pycache__/account_move_line.cpython-312.pyc index 81c9cf5a3051de192b69af6aa3e0ed35af826542..26b2f8c093f28579824dac8282f4ae170305f3a0 100644 GIT binary patch delta 2342 zcmb7EOKjX^5ca<>@20W$@%ypwN3z*u`+lb{P$L4NN@=B*XGyiJ*50tr<{_^eO7y#; zs)U48m4rFuKvZ!7Dv}GT#04R>XC%}pNI`pnGY1-wDo!ANd+TgVEg^jHjA#D&W<1}_ z|KP1ZE^*&;Tn|H^_AR6F?blqHN8i9O|9t2qVMdun_VN+9#_tbK4KYj$-OR!dycD3y zF2cb6upnu?75ns~Md5k?W8W(3*cJcOupRv>jZUE${L1e;6ni?x`ZE2*r@7d#qLzdh z;)8p#m~io%0pispSO}L<0#FdMEU_#}O9yXQ8c08zi(+OGV`LqVmWQt*CCJ8ua3aFN zqX>q4)Q?K=PDDmU3(4!#N^mQZ5{phuS88SJgrBALmtZBD%CI#5&aU6l%pkQFfse{= z$k+uLPRE1*2|fnS!F?I~%n%8|2QeX{1T0$29@3*nNJu*XbLlk1Vkwbb@i@(=jq7+1 z+1_h0sZR;cGcC`e=jLt-d)TS1E48B*e_Y7s+&VW#d!NN+)C0f75@;tZu{i9fiF=Lb zoG3UaNFHs(3Pd~LWt`iSbX;BOMy?qqVeJK*sxNUQ_G}dVE{G!8;ZmsO!N!<_uk=3t zXF%aN+!t`~LV#fiuW&Sa)T)f-R|00FGr2(}oS>1~xSje_fj@KB0qRP9oQAsCjq}bK zC9)QETD?GxW~>7bU&KXp(M}p8F%qQ(92E%cHo0?!4-AiOMITI#v8;uU&0c!x0t_3r0bEZw%ME@o8XuC(=3`xLN zT!0Jl0#dB8&dC&2y1C|KD6$J#@R=xhv>B^=!`bcq_|yHcHs}0KS86SrpnSrQ>{~LN z+iqQ&q&hbz%ELq=({Gcnr$|PlL-6m%%#t)^ZY7Z!bN9MO<%}y165+Qq=V|?CKS|1> z%cyIwSOxPl8MnJKWEMzDDbPi7w$y!mc0RGCeNI~UrolZyc->yyg3_-P>GIOuacb_$ zNmTbvB85}9C!h!Z8#-r0XGz|^6`o}n4y5ISEB?Co|3kxXDK^d#tC{Y&yoEdIQ3h97 zv(MSbq3$gd-foTAPx`g@=!HEHIz~s)bCD^R;dXkWjA;kjz15o0m{%*)vx?eW5UaJ? z?3Ec~@AT}vx>r}{RlQYh!r$pZbR0^Vm*{&sa~`e2cNqhnhJ)G7zz9Xr$03~i8I8ch z+!#6q!})!_|<{cWfhM$s8qEexP>STAJIIe1t&4Tt;Aq7!$o_uW8r z75&AWr-y}7aqq|*9`4AZZ!5qE@#RxXr#5kU9hdJ+Y~bTRVR;h|ZQvoQEFW7swu$@K zasMVBT*rfV_zgV#;N*o3eBthu;>UsD6taM}bm-kxmn&95T%}TLR$Hx_+H6)TWu$)& oAMLuqRy}^a#Z&?BzJcz-^6sMeq7UK4`f_ur`G~P}Jx9a;0a!hvga7~l delta 2226 zcmbVMTWl0%6rO)CGutjZGu_$U*-K}yEoFta2!V>!Qn7&oR)`WKmv(!ZEp)m8ovt;K ze+&i_jUie*54ADL?ceFc7>x5U=ghf$ z=ROZl-Z>HbCKhWI@R{9Nn+e>ARb?^>eeys{8x@9x1!*)2Z^+x9oEPTEWrGGS*Ou9P z4{9Fs*Ek^>gjmWXT@J8V7gfr09rLBE=5Nps&1^dvE0Je`I2)Y#*BF7~K>godo5_suzbABM@Z00m$DY@Z<5 zn_Zi6b+bq%1_LW?Ik>9oyPXKra4e5LI@-=hMDwsXXLY%4h^!@0ATp?NoosEup_)Alnm<+J5zNl|<102kw&8InUwk{FKs|MK*S0qgm1%b+D6kgU+ zlDTP7bW{ox?I|giK?m!g8}s*sOorj_guZ>4qj)H|1%j5&Z(24snt~Nuc++kRHvy6QS4QkCWnO4&ydSBYrIaHvBp^`hgcSq zT-lBT%56?Khum3r z{-36cWSnga{E*&6dSE!&MJ!fdU;Fw2{7LKOBG2Pry5!!X!fvr-mdvslb+4k4%k)Og=mwn1f59m+ zoIEWeivLUoSkrfPEQWE5|1W+4(OFM@t`5!1pi4QF0A-=bL07EamTugJ@tM zhIa}-kwG|HJV^G!a-I_b4Yk9tqufaj!%Jm@jKF+(FnFfkgfGg^kv%tql}m(- z!P^~$z^@`)>*y&R55#sYgnriatNmB{?`ze&TJ=u%@b}vA*T?UVOx_!rys3A-FGlKw z8Ll+o^R3hR7>gXM)utK~b8}PmMx$1%68jU_y6uuQ76@xA!WewH?Gm{Gd%8Q4`$I%q Rn7-P$()dGQyj?)|e*m(ji-Q0F diff --git a/models/account_move_line.py b/models/account_move_line.py index f3789b1..745a0e1 100755 --- a/models/account_move_line.py +++ b/models/account_move_line.py @@ -117,7 +117,10 @@ class AccountMoveLine(models.Model): if 'price_unit' in vals or 'quantity' in vals: for line in self: # Only for vendor bills and if linked to a PO line - if line.move_id.move_type in ('in_invoice', 'in_refund') and line.purchase_line_id: + # Fix: Do not sync if triggered by Credit Note creation (Reversal Wizard) + if line.move_id.move_type == 'in_invoice' and \ + line.purchase_line_id and \ + self.env.context.get('active_model') != 'account.move.reversal': po_line = line.purchase_line_id # 1. Sync Price