From cdc0f6b2da634fdf7d91f566f61f2b3f6988e023 Mon Sep 17 00:00:00 2001 From: Suherdy Yacob Date: Mon, 12 Jan 2026 11:14:51 +0700 Subject: [PATCH] fix the bugs when confirm sales order --- __manifest__.py | 2 +- models/__init__.py | 2 ++ models/__pycache__/__init__.cpython-312.pyc | Bin 265 -> 299 bytes .../restricted_models.cpython-312.pyc | Bin 6767 -> 7791 bytes models/__pycache__/sale_order.cpython-312.pyc | Bin 0 -> 801 bytes models/restricted_models.py | 12 ++++++++++++ models/sale_order.py | 7 +++++++ 7 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 models/__pycache__/sale_order.cpython-312.pyc create mode 100644 models/sale_order.py diff --git a/__manifest__.py b/__manifest__.py index 34b8f00..2c5f802 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -16,7 +16,7 @@ """, 'category': 'Extra Tools', 'author': 'Suherdy Yacob', - 'depends': ['base', 'stock', 'mrp', 'approvals', 'stock_account'], + 'depends': ['base', 'stock', 'mrp', 'approvals', 'stock_account', 'sale'], 'data': [ 'security/ir.model.access.csv', 'security/ir_rule.xml', diff --git a/models/__init__.py b/models/__init__.py index c118021..d5fe265 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -1,2 +1,4 @@ from . import res_users from . import restricted_models +from . import sale_order + diff --git a/models/__pycache__/__init__.cpython-312.pyc b/models/__pycache__/__init__.cpython-312.pyc index 634e7a81c5bba2831081bb0356166b893bce1214..2b838bcc0f19619ae7e71a173fb297beea4f86e6 100644 GIT binary patch delta 114 zcmeBVTFu0JnwOW00SK1vOUMkG$ScXHF;QJsAcY}?Ifo&aIf|K)p^`Ma)2*MJynKbz*g)0>~srATH(u5+9fu85!>~h~H(9zsDd^ I!~qln0O#Eps{jB1 delta 80 zcmZ3@)XBtqnwOW00SH*FqBAWf@=7wwOjMU;sbtnPm#Kqh|;sY}yBja5L@p}yNMeIO60ChG=~Le_#hpoc>bZBdw(QzC zq&3qYcE;!a?74UEJ@=eX-#z|aLqk0W&yPNQEBV_s9QSA1uphBnc^Kh2Zjw_tg;%*K zEd`a&2vH&9h&p)McBsyb7!`R=;1HMc*%Qo{$bAdupik7JI4^P0I)OXLDdHtgaUmhq zYQ3wKw;Wb0>Sda4(DbaJ>0_F8pjp3yW&_jof~Ic;%|@o#0Gf>}X!@C^A2gd*&}u_WQgz~p<&q(u)T7}XM!KHVva++rAoMV(Ngn6b9tjp&g8hejPxJ=!I>J&? z3GNAQ)iGUC$Uy`d6E_-0a^6716Gw(T5L4BVi#SkrkklKovnrCZu?)PFHPx!Qs}m9N z?L5LGgvYuIW(%_CksKb-GAOL)2M|_9!pBC80kAI^KCCI4_EJw+&g+Jji7ASf)x$Aa zh7*wB7z~`04LAzv?1)4^5Vj60Y`;Q^Wc76CMu@WpEV4MR|pb z3JM=}AZLn2`Rfe8wJFqE9` z9+T0fyCXI}atg!_B^zEF4@HgJnU=Vs3pSCRW6*tQ5UP;?ZX zKND_Mx81kg_mO7-~RS|sW|Ml>HP*hY4$8Vr{Yw^rQa+CmMH+@#gDy1 z8f&=2XtUp^*4nlCvd9nfIz(Rrz*TV<#keEECj@)7=lRcP$&e>P)}0;6#UK(`Y}q~! z;V|tWE-fC{kwHW?nMp#SVFlqw&1Yje>P}!SpOf?v-9Q<#3C6JrbcuP6H0L=GU@Gy= zHFb;Ew_F{*GJN&iJLhif{GjLko)7lCzo*iq9H6_hWbd^s>U_MMOYf&1;9*Ee6=d~@wjH{O2vPU{`x zqwkqL$IV?Q%&xw2`^j{NJIvP%ub}CYDgKWsw7SGcspq5 zlm)zIS+fPIn2HAaA_(HMOWce#D=Ug<~6Z1 zK9-cz$!y}}NDdX&Sg4n?y1EVMdj@>}v%rTbzG4ckH~@kK7h_n}4>l(vYHW0 zW{D>Wqz7kXDsdY)met|cm10Q9gF{f@7pPcBVepI4NBlNJld3$2{o+#hv{+2Amd3O# zaBv%P=-m1zAXb^hoG?$uOgT}J(!w;}+S;dHz3DYu zchcJK8|Tc{ugtV*E4j=4sFE3uf2Ba{HlW$<9j1 zvYMAFHv}(;rhpaX-9l^PN4X0&rBZLc$8Jz1LnrkmWrf0XY zC37PGrMI!ipbz+fH17ipeHv=oPee!B7WkJ94Ailo1{VQfSe@(5N)i7p*dV52H{EFv z#6Ly+lD82$WR)YnXW7VE+;3ur>S=|5MTt+(PS%>WglI;c- z@tA8pQQ)s%>}GcCf15_cQ%G%`GW!)Xo~p#NrFgay*GqA|5+5wZ2g`w>RlSGM^em?0 zAl+#Y1dIJI)%@Bo8T)j|D#yOxK9my(^4hvlXtK||8(TfkBL6=)@K*%yP6o8(=+ylf{Xm-P25U4on`NI6TYI`s_BQQ|(!96w`@MsuSwp*vxFn{{Ztb BL_z=n delta 2048 zcmc&!%}*0i5Z`6L3Uygbp-^bC3MvH=0S#J-Us0lh6=LECA!%xNi;G)U-&T#LMo381 z1BqmeoHcqNYD7;S{11%rYW5=k0S9X&dhyL`)q*0Dkho2L?{#)&-n`%bX6C!+cb30Z z)iRDgv(JZ2Q+rw7EAlazt7?aDVt^Ncmwdbe<7!ZJ&SXmAy?=vHq6?4^tMe~m)bE3~ zYR#)+5`0F=VZav>L|uZ*K3`Ks-pX-zQ zuu`t9+v$WkO6t%(h!6r^Y2_QCO$mGMP{YC)HwPywTHuxPxVjM&s_}TzN;po^u&j7| zh9?n7dpg!jQa}Gm;AAaVf?LuIvz|w5N>cN`l0>SY!Q0isI0)dSY7y!YD6^cSPzbYU zj9^aE2xH!miX=FT?kuevJll*8EeP8XI?;)za3CML3ylbPniHn5Fu{G$8pe*!NuJy1 z#?R&HSi}rxXkJ~SBjYbRQrlZ~k^UrI&PpkPt_oW{dZ}KfdxuL> z!mxBx&Ma125WbXaMI|ZQl_-x=UxLtpkzopq z@(o3ldw+=$w}gGfD5dr-ud+gq;{2rtlj* zzx670B0ZFz^YEl9`rjy;t?pPAMV^|FdI&FBL{SS&)(l2gXxd)9FT#GP2n76pq@$P7 z@i4G^ZRikm5eNOPP8N)WY9yfJ| zL}(H^_~`LVCSO@FsNylsB!xl?ZiI=TxsuNMu`Gn+7#*g-bhfdm4gW}NKO70|;alNW zsD1~Vo~)mlYT0+elrvnuWofzGS5J4^)~{H`J~9aJLY;Og-_PGWJv}rvl;d!p^E1oU n>FiYYhebo5p6R}+z8r`9+$QEzuq+qFd{Wcal=YcqW<`7l0=l$u diff --git a/models/__pycache__/sale_order.cpython-312.pyc b/models/__pycache__/sale_order.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4517426db58d10065080ebf5d19e3924aa0d36b3 GIT binary patch literal 801 zcmY*XziSjh6n=BNdt8pYToX9a<`kQ4Zn;iG#LhG(LTp@wac^gi+pxP6XLd0gEUpNc zMo>@=J6k#b25Z44A&4?)Wn~vQ#gNK3dp{DVc=I0bz3+SPoB7;q)&bAkkB_4-c>grP z;y80>dJ~;7FkmExg!qI&1?~c?>;tnn*|rxA=l8^#`My=yuJg+TF45IQFdnP$ybcg) zcBa?xevUL8e8Rx5FydPWFd#@%^X&uJCBCx-uBBJDf|zeg#^qjJq1zS456J~oGr5^y zx{l@z8AG;AW(z`i2HT4bms!9aKU5}jtQReS$vkJMHy+>;?S8QnC`EI{C6!!dG77Uu zq^_+UmG5vV4XSQDjj|yPMVj&5Os@uIjfn@5Ox%jL6^{pch0-uKXjGZGI-|2k-cTgm zQ~8ifR(SV|Y$(zYb@K!hqIbg!bCroCU`(XS3&N0N_k}TNzbHrZW?FkjAzCWb-6^Db z?7d4%0lWW?RmH5jisp0#-&BN*)Xg|@jJ4Kwv?|l<^|On zn$vyw*19rU|7#PcPfoyCxw@#`K;>;Cjx-J0xo19E3Gg0fRR;E~c561@ZP~`q@Ttpa aPAo#m4`~0kZPF(%tK-J2#vd?#+4~P-_{N6- literal 0 HcmV?d00001 diff --git a/models/restricted_models.py b/models/restricted_models.py index c16d2db..295656c 100644 --- a/models/restricted_models.py +++ b/models/restricted_models.py @@ -15,6 +15,8 @@ class StockWarehouse(models.Model): @api.model def _search(self, domain, offset=0, limit=None, order=None): + if self.env.context.get('bypass_user_restriction'): + return super()._search(domain, offset=offset, limit=limit, order=order) if not self.env.su and not self.env.user.has_group('base.group_system'): allowed_ids = get_allowed_ids(self.env, 'res_users_stock_warehouse_rel', 'warehouse_id', self.env.user.id) if allowed_ids: @@ -26,6 +28,8 @@ class StockPickingType(models.Model): @api.model def _search(self, domain, offset=0, limit=None, order=None): + if self.env.context.get('bypass_user_restriction'): + return super()._search(domain, offset=offset, limit=limit, order=order) if not self.env.su and not self.env.user.has_group('base.group_system'): allowed_ids = get_allowed_ids(self.env, 'res_users_stock_picking_type_rel', 'picking_type_id', self.env.user.id) if allowed_ids: @@ -37,6 +41,8 @@ class StockLocation(models.Model): @api.model def _search(self, domain, offset=0, limit=None, order=None): + if self.env.context.get('bypass_user_restriction'): + return super()._search(domain, offset=offset, limit=limit, order=order) if not self.env.su and not self.env.user.has_group('base.group_system'): allowed_ids = get_allowed_ids(self.env, 'res_users_stock_location_rel', 'location_id', self.env.user.id) if allowed_ids: @@ -54,6 +60,8 @@ class MrpWorkcenter(models.Model): @api.model def _search(self, domain, offset=0, limit=None, order=None): + if self.env.context.get('bypass_user_restriction'): + return super()._search(domain, offset=offset, limit=limit, order=order) if not self.env.su and not self.env.user.has_group('base.group_system'): allowed_ids = get_allowed_ids(self.env, 'res_users_mrp_workcenter_rel', 'workcenter_id', self.env.user.id) if allowed_ids: @@ -65,6 +73,8 @@ class ApprovalCategory(models.Model): @api.model def _search(self, domain, offset=0, limit=None, order=None): + if self.env.context.get('bypass_user_restriction'): + return super()._search(domain, offset=offset, limit=limit, order=order) if not self.env.su and not self.env.user.has_group('base.group_system'): allowed_ids = get_allowed_ids(self.env, 'res_users_approval_category_rel', 'category_id', self.env.user.id) if allowed_ids: @@ -76,6 +86,8 @@ class ApprovalRequest(models.Model): @api.model def _search(self, domain, offset=0, limit=None, order=None): + if self.env.context.get('bypass_user_restriction'): + return super()._search(domain, offset=offset, limit=limit, order=order) if not self.env.su and not self.env.user.has_group('base.group_system'): allowed_category_ids = get_allowed_ids(self.env, 'res_users_approval_category_rel', 'category_id', self.env.user.id) if allowed_category_ids: diff --git a/models/sale_order.py b/models/sale_order.py new file mode 100644 index 0000000..21448b6 --- /dev/null +++ b/models/sale_order.py @@ -0,0 +1,7 @@ +from odoo import models + +class SaleOrder(models.Model): + _inherit = 'sale.order' + + def action_confirm(self): + return super(SaleOrder, self.with_context(bypass_user_restriction=True)).action_confirm()