From 4df61c8a01df185a8d7cbf597c149650174df4a6 Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Sun, 14 Sep 2025 11:44:03 +0330 Subject: [PATCH 01/28] fix customer and well form --- .../templates/accounts/customer_list.html | 8 +++++++- db.sqlite3 | Bin 3182592 -> 3211264 bytes wells/forms.py | 7 +++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/accounts/templates/accounts/customer_list.html b/accounts/templates/accounts/customer_list.html index 1b7e103..38f2fcc 100644 --- a/accounts/templates/accounts/customer_list.html +++ b/accounts/templates/accounts/customer_list.html @@ -459,7 +459,8 @@ 'id_national_code': customer.national_code, 'id_card_number': customer.card_number, 'id_account_number': customer.account_number, - 'id_address': customer.address + 'id_address': customer.address, + 'id_bank_name': customer.bank_name }; // Loop through fields for easier maintenance @@ -471,6 +472,11 @@ $('#exampleModalLabel').text('ویرایش کاربر'); $('.data-submit').text('ویرایش'); + // Ensure select value is applied (for some browsers/plugins) + if (customer.bank_name !== undefined && customer.bank_name !== null) { + $('#id_bank_name').val(customer.bank_name); + } + // Open modal $('#add-new-record').offcanvas('show'); } else { diff --git a/db.sqlite3 b/db.sqlite3 index a9d6a516bc20b193d43323de6bd04b2a4753819a..0bbaaf80c62980352da0b01476bc5f87031eded3 100644 GIT binary patch delta 18514 zcmcJ134Bvk_VC-1_wus5G-|2VT&2mR41nK{MpPQY_Sf}{}9t!=MS~f z*4A5x`n6_9E<2h*30Lc^s9mSmw3Zy<7_Hd)&d|B^@zzLTwsumgpA9gm>y$3BwYJc% zb!Virm(l3>J-U?E_QIK3XI2V3QrEh_Fuk?FRYZ%e^IZ8fYTe)}plz+sxLowDtw&r> z(zeI%chBl#&FmV)o9RrBU1Kslp3qUsN=;dbMylxwN^lG^3c6zSiH%Nfh*mF}HnXnm zTHn;rwc{7fAGatnZiaV$?)-(-6}7$@Q|lt`z__KMiQ^{Cy>ejD!Ol!a>M zU3rZ!IQ>fZylXC#WlzxS^~rwkfd>vea$x5NYY*Q3!CJ5E4HU|eLXY1rhl&D$B45xI zj>y4C;J{M{wjJ1cu&Jp;XGFA(cH)vmI-54D1-(T9k4uhteIeXnqyNk%`U6F>-xY{> zJYmm*^19MFWu>)fgN?T1s#N;-EULOYvkX;d(!V!1W!T~yn2Ne=bW+2L@-a0lCPyZZ zubVM$=FGWKe`w_B34z@Dnb*`+FA3F!msCuy7+)@z&RJX>T2wkAJgIWY+!@QS@h+HA zId9aJV?9?*?rovZcko$|{jq~B?{Dwl!f=r+7kND{pT{5e`VTyHaMcHEn>>0D2k*?H z?R0|LI8Tura)pACP{@l8XVXr>YXi0MFTr@g%W_|?X z*E5-%!0;mgo5nXZU1qaU#l<>-as)C5=TOshwDNCA{J8bBD&Y6{g24-6BECM6p?4lU zxXONTmGUJ9d_jL8;0p$1ug?>J@8qMGBOWij1XKu3*_D^mz%Y!>Rz810J&bYLtg7mz z3#*!P5_@EHBs+R#w8cxJ&aIHk9@xR$00nPBd^?lHu99wnvA9|?Yj5Q! zD8*=RQD7p2);`B9XOD}QV!nepNTc@7WD!bE5m4u+xm>o5I<94DCXwn^!7&9`siP|R z65qI&S#Lu{&u1Boey=|mxmkp{a$I~J^IbqqCw?w=i3i0uMZABC`v~7^?>I^5qAy>| z^>5a*^YNm8Gr!^N$Ho1W^p*Y>`YHN}`qBDaeU?5&Z_yj{TJbyaKjLTD(8b(OqgReI zHobU6{6st;?$^tDymL-gi3S>fH%rK7F{-$XDlS7E)36kyO3P4R;{Tjt5;V}*S9kI3 zL0T05A$}yjE50GV3N8LvZ84E-x1QxR;&Jh9O8PgZ?f9hHB zu=s)aw)lhiHB|kVS~XKtxr-`yQQ@uw?&SF;{yL476y`5t-VWS#YAeLOBAQY%xE30* z;3xL^XZdWF4G7J_{BY8YmEtlnDlQb~fGo>@8W98omx})|ft_cANpdgZXS11{v|YLv zNZc%;9o4LcCo_pjL_629A@o@_n`Jjk+hCZaFQxs`KIs+d1?d^-N$GLup?5(kJR)tw z_9%OsT3f5uMqAy&CFno{I~3U5kN8G~%|p`tz~jh3O4iIR=%MG>8KPPGEiG-6wo1Q6Vh5WBlGeo}CB=Z;wl~;c z2%9vO6sW|nQP$RsY+TUEj-@$Gy`~b^?q|PIr=zH&Hz^B6M{mS8zr(H(#Z5fZZ%W~3 z9KsSBKQ*NnJrM>^f_B|ouUPL6=T2$N)4^Qf~%r!`0N#&Mi!CbwHP^M zE=f+tgQA>~<_w*N*Ffr4y|N}WItnQ=n5fP8y<50KmPI-Zi~~1~)1~M%cxEHFO+W=} zI7=e3u!EVZ>ZdEW56((s&8r~{aTS_={{qr^IKkyt8TCtf9v5ii4*_1s_)UG*DI z5Rt%I8BnoM9DeW8ut>~=Vc`OtI7H0E!`irybSZi^RVf2HnL=^jH{-yA+#7>fWa!3x zCszRCe`Dwd@%Iq%IW%`)?j<N!qs4I2a10NnHP5MRMN#cG z5!!Uxpy8q043(HSYYJ%AP;Wp}>{13ypo~~)n_AiirEkvAtWip@gJlk-Im2edI%v*} zp5`3M_2XBDYCn< zjt1{9)ygJbc$!*DQxq~swTIF0Hn+$DbqaqQ)xN|lUq`hjbPPvrH))Lx@$=8`f!&Ha zo(<;bfLou>>+yT3?g8;W*ff2xuZO8)1K?x39PEh^>S#PZF=o+u6?HJ>+8zCSZKIT;^o-~x&wl-e4UPO4D%wQQratru=@c@r=hKjVJxiaE(x=ncD2ggd&|vkxtlSW$vaYs$hZ&#;ahQ z3dX8nj0#4pU=)7-6JcbDC~=p>t%@DAqMH^n*nq8HF*xPglp_LnhSO5m+&JhAjSVAo zU(x7H^B@B)V*RQ?8Z8zVrJP|nN()mfC4Wd3mRDrG%j_=EakGU&(>F@bnUJAfcO7H; z270U2#4#&d^!W6%I-V97(-V|*gXsxm?$E&~bm(9dI&^oK<}?kmCaJb#WZDn`{;{mX zs92Bjb1+=w@fLZ*u8=qE4SNQ}_`{Ka9P_9OJ#xq!Dhzw)gne_%P{OLr?BV29w6wN< zVd>(A2reDb~ZUIz2ew7LEtz+6$fqD@6I!T1K|m}e7=YuRP}zl zd}-doGU``DsGk45#C)RF_pF5ekYYDj`-$hbrm+zkmA>UpLT5kG zY1lP}SHZf{NuXNZFesMGqcJ7qqt+-R>ZMxnyGL}cX$DUEf@lossPqLk4;K$exnx=R z$kR)n9`clpFg%Ru2qi5w9l?eYvCG6Z@lJHpEHNWYlmK+F9C7(0-q5+$Ibb|qmmKf} zBVJYVIbKg`&^H%tEzU~LAg}7ceTD9XPj3(Sp*zviS>m0rlHaGK_oXkfVYc`;$!cMT z(EaFyocPOXF*&FEHvsJA6dvxZ8Q7I?;73Yt)@TzoGjBK3_O;j&l^_qRhDn zeR~^xoa33>wdc1%_D2S8e?Sh%KAC#41U@XZL4)i&Lk9iShO*twab%_f0lDMK$e9;-bMX!q$jY82lwcn@*MbW4SMbW6=8&msMGMg>& z+a)%v*T>Ypji9al(8%1T&}mcXv;iGb#7&+qQgDrE1+!5UMo2BU?fOe~ zDF!y33HTMiE=a8r*<{7M2?k;H73|R;w25nsW8(CwhUTv~UTvIg90MzMsDUW$BvDGgz3~N8muZB_X=02xp~SGshz{Rq%+#!ddH4ldU*k$g^o_)g*&B^^ z+KcS7j8QaULz+Y%!fmsR-Npoekw4-JgQ^Sr_+LZiPtoj+={7X`&H|1HFFg?9Q}Oea z#*uSUMCoZt`VaU?A4^Y5-%0ODpGq%6=wvU>=rp!TWC*f=pEBNH;E`cx1v2A#|@pESZZ+zB4}7uzbPv+M=m}(q-f7IJtUmLeK%%~}mycO8cGimNGiC4mvTLSJSzdfiN$KP%#l0eg>>giHPngdi z3HzI!77$@taj0U+(nx4|d2M9z@{n9pwQNCkr9T>(BUhBk6_xdKR1rqiUA1gc@stte z=*Hv5`zI{8?z*D->!QK(YdmAd`ATO_omo?SUClKsCIqis5gB>i_`1lPD<@Qzm5do* zUpp>X(JO`85wY-N(BlnJxa*{Gh%RxFlw(>ajWeAw9fS~DrG%xsOxPh?CYu^^*~#>e z^^;jC^kXftD20A(q!W}vrJ-fzOIOS(o3}Vxj{j*g$u#${>0c%_mIJ!vUajJ97^Zm7 z>s50WTim;Y#l}6Zxt0OYanm9J>#|MXN5Lrknv$waUxR6GlEE}Lad`N8(=HRU%#GG; zF=g~~PXYli^kiHlm~7EtnRsL{z5Sq@3l%KH-TZ~V^3Yt5Uk)y;niZ|Bo?lyDS65kH zws1+MO*FB@_F$SMmsQ=4L&ogXViK`T?roCCXO|;I=#9G>0X??GWa%;dfOyc0I=7f? zSIn)hj4m#(FE3Lm_e$oA%|OLY3`ZccXBADlAZ)9C*Z@GMNc$-1Gie_-w3#|2^w|!R zB=rgGPGv(hp^wh)Flk^n1e5KEbP^ldOgmb!ObXE+Mfi&myf-Eaay_Rquj+ zd=%95Hc;7Zps??O`1W1WYtpYE%(V*Hqn4fcqo`$@s(Fias=Fnq?iNoIcS}nXcS}PP zcZ;KmyT#JP-D2p`#Ecn*Uudw5FtZbQ3Jy(%Zo)p9ZBb%TA9BRy_Vt*oiaX=?2K^yw zO}tACGf&ZAuoHP*p$M4VVc5ZkBg;!E>|m+}EEP*6iR0M2SUdANvxLc}U!&{jOzIV? zWLK7}V zC=iMG0vBK*dqY5opVm^X5*mMTLa<#7NGK2qc>F*}JFTTkB{c4$gu-Fyvwm74)- z1ByhNX)Tp1p|KYybfII4Ko|o3K!}^xvREZF=Awi`VebVb3Prp@AOxdUK?pUBzBnN; z&IfK<$QM!wF;iO>S(tQVF+~+q5`_PCf&f8?Q5U5egpgf~YAQKl>kCK*0}&sPt!`O} zN}sS;>5*vv!`a#B!)GlLcs9y5t0=jU4~|QEaw98k;+;4;verbUw4X39!lO4hTE^BB583_;sor zJDt<@;Fc*X7%-tQxV>{1l+Ue*ISaic0-`l`v|Hy^Ub^Lo+v9hSt*u@Xodw%ggDlH% z92Rj!tLDQAmD$@XOtKS_%^okM|E$54Zu6o02 zLLZJ!OT-`k&6?)`AK_g}`c^s&s`6cI?za9#O476GV3rUk$Vavx#Ru}PK62Iy{}b_% zv$hm_;u3loWhgNWGvpZ(4V2y>c8hPLM0?T)=y=pM2&Xub5KrfUEt<=q^(pCwq3Zq< z3()xav*~Pv88CR`=g+J*6ePj_WNau%`St|2jQN2=B_%_hDBqrX65DH%zoBt*PU@Fy z4YaVTUGY-*%mz*WpW2$dC2Ja zL#Z9Yu)6x%>Zn4Ls|S z)UA*g@ZR8*4N=e}G@l zck-|D9sHAgJO2Q5{$hwSoJrC&jNz8>ECahES5M$5u8zP-TrGhUxf%i|a8UxsbJYZn zz_;D__Myr4aT+GZE#qi9LSBJ{iUX<>tQj&=-lM!Qn` z8}07R8`6@{qx&+GuxmrwhctR*T($`XovFKt6Nx@*P5V-Pm*z~(Kqoe)Wr1NrzYm@9 zF0D-aG=>?8wvNkALq(3%L#x@l(=dB?`WdX_o~9~jJH>RNs6BOPt}s)$TyP3n{$IN7 zx;u5Xy6L(iU6zg!J`?r|j|z7QOKCe2N-|cV4tr{lZo^!cUW!Q(zM=#bmQuOnLk%C=F74-c3sQvl$Bs6?~ zE@u~J2~&g#!Z5)iaQtchB!3JP(IKHy2na4=F#i^Aug!XpBS9Es`&Z%hqKR8TLNMHX zd}vu#j=&A#PgA&^F8m85L^Kx~P}lRx%dwZ%JftDD8r<9xrGlHQS3#W$YE@99f~X20 zUqdNbrGiQoELK5<3Kl8A#Vu3;k;TQ$SAWe@LAeUb2w2_Nl7$;vvYV0%4A)Z@aV=&1 zt7I^mrJd3o!}G?Ka3EC$`3Y+ccNp^YU+Z7cuhZY49|BR%>~XlhEjvYICpC{oO^;+} zN8;`NKp%$({&o zQO%Q30dR^R;uhrQ3FqU8YvJbQ=J5mJz*}%@<>qk%;1mbI zt&y9@5?pe;EZ~F(gKo|^i*mOnbQGBV&0~yIj$$s;v|=fv<1ge{$(dxI4Xjx2ZWcZN zaP}5Dh)N&HeutB;r@~O*51l+x>ExlrB2GNVB6jH}HIGoxh3JMomV|_ObJrzIY92;wp zgiRbh!gbk?l=l|}d@g?&j>m9?+a8t0%LR@BojQWO41GGwo~t{d943Lwd>C71+uxD+ z%N0Apa2YyUZBLI!MthO$W%y`={cB0MT+0Hf5treAud}DFH#|u<()P9O z7SMRP!|@SIFT>LZIUI13NKtvvkGYCxkHE8+(0l95iS%-`Y_KB_9~G%{+Sf62m!p+NsMRqIc}nC%NS>^N%t{{b z-{|n^>AxUNo1=!&ufj{)9H(eT|0^8*qr*YtP4_xJ;b|*+{?lBm2$`758fLXxeAh#c z+Fbf>r0I10nlrs`dKul->Da@V-a?c1J3eGg`*7Zy4#*+d>C8d0GueWx-f|R**fCrS z*_evpDXgl8G^%#tIHFxxZZSUeu_K43Z$+9e#|Mo59o*FgJ&NeVxhXjP?~bRnG!4x^ ztx{n*tqySw9iuu#Vl#V2q?@$no{d|HkuKAo!71XaTdpkZI;omafdm1{4f5NOyZ@Y9`6j)5cJ zbQt9Qxh9}np{CDV>g3NVUFGD@D8Rv=R>2P{_+AC4RPdb&zE#0D_?CB_Ejlhk7Cm)cY=HkFH2mA1^)P9#0{(yo0u-89PRNEeh2Q?m7L zjdhq?W#U$uxKt)Cm5EDb;!>HoR3tFys6#Ab>k07Z?%HNpHAwrX;a2ni4dvbK zgE%{z&9o!Fb5KC!D%jKPoyu^{QOIn?U`<1&srrQfCVs1>aV z9izCW{1!dhStKQn0gH-u4kY0P5^R**4}TC+Z~7g~kOUhId4+0H9M(bS#>iux9Pq+r zh?SyEbb|!q&zAra03i-Wa;M@`d^qJ5+W(775-%hGC@N5gM1b5D9oo7e^JjH|(m4a= z82N}yWwoXA>ihb%?^|D{k21Ms2w6i<;FWIJcF^N5`%h<)|{fnkEa5tTouhxa5c>y++yhBSd*Oq^R!QVFL zb?MRRqr5>+?XDCDLIyzR4TR&|#23pfj42nkv)P@P?zwR+ycW zGffxMWZ->0mNz(dNuVb?QkH|tC4udk@milGO)5K))mmA;cyVbxp88l`d!;so{vM8r zHXnAsjNfP+1ebq$RKA@Ktr45Wo5gyuQk=)>#aWQ@J4KuzjueM+oEQ*YVy*~D1tR46 zDaMwl)e@jNi%YVS+iCptpdr(_Tv%C}7@pX>qE<(C3Z(++MN!MI9+p1@56jPgbu>Gh zqtMRwg3+ims&y(!sWTt9bcETsEL51wiYFQjgnR+c-0w&%PPqaaJXKD*Al?`9hrFEW zf_Pxy_jAU0e1npO+N)y15Yq8+hWG;g@MN)Z`U~R8THwSB;ngY1>EiI{^`{Gr$o>{g zm#iiEpQUlvYPXO{yOhQ&H{|Eh=;0TV&AYt%PURdiRZZ~m+c>i_E;de5fk_2M6&O^Y zR{hqXZO$JW;b>0y2P9+Xe@Aa_&N5?fiTs!r+)XE06MnZ!*sT(FbA&K>%?c?u zM+mz)LfFj_!fqg(aWMb$Bt1>RB!G07uXI~c$00`w>UJb+@zC!4eKd-8WSC*hztyT- zoGKTm%EhU2ajIOLDi^29#i?>}0+;Z2`TMk7KzrS}Vd-6+1$War?Q(5YyFfczi+9#$ zea@oxstiqzs1=n!Fr?7v2o$sefxMO{5T-Y7)D|>t$8@yd1Vd7L@u|lO=J9y;ih^%x z^tbkGEnc~&0Bj{l=Cv!2G_ z5721w#&jJ?O+w$DaUs-ca0#djxwH&#MO!P4DX9H!7YIJWb^9ZjYs`Zh`yO(?g51?^ zJzn{h>uLjXFLLwfo`>D5(XEw6J8nGdYHH*4ZB(t2J#KGvzX=IR7E5BUriI`ota0)W z*|)k=aq3q0YLSH($RTT<>A#qj(=mujL<0QT^BW3_T}|f=g~I%qe)#y)7e6Fj`T5fW z<9)7h*yrGe>e{(fRNX*Pbpu7!4HQ*3(4@M7Ce;lzsBWOBx`86N zfj@+0fxmzZ#qzZ%WqqbWtBUXwIf^PrQROI}&vBeA3}(kcK19C_Aip;=qDx&O@kzBo zk79XiFQ`RTOIaJQMf*i0;bI_|0$L$%VEW@BHOC`s`FMOR@E5bGWW|yM)zG#~E)&x9 z{B%kxG|e=wHgxE}(|g4V-F?DGf`gw9ofPJ|rm^c9Hb0V=bd_TG(bnD-)3dRtll^Dr zu8$?=&&6}s2jobWA2G|EP2qJbQNmm9^a=m1aNe*__6&G7OA_nDKgl-hUF^g*b2g1! zcPlzH*P4U|zvXuIBvtLSn7nOpkE=#>JX6hgs}2W@r8 z!!AgrM|1R2xw(&uA`B!SggicP$VXEAFGNNuMf3}hF%e-_oJR%{YJk#@kx|u9FPWR- z$*6iL7z%mhi;#)aRzSu;q*>mdjH0gKF0_1cGQCPI);CwJTZTOA1}=cr)syu_4S{6#W+v73E!705P!$`{42&pT5^S1xu{HTYmo?* zdh599(x&Pj8I9xuwD2=!j7bk?n!T6xRlyR~+s^|?rd%=UykdoJMg<$W$ z$#K;e#w)pRTvZ&t;T(%o$!X&%;|iRES5nou#TUUt1{zm!VZ4$`#x3f@Plvze5O3+h zCKL2=3;PPh;d^tzxCH~?N$QiD62{F}Oy(r~?wq z4et(48S&r5%#@XRflFz_h*2`orL_J6#`>1T9D3qs($9{c1p}UtcYrH$m-U%Q=iZS! zPaLJ+Nr5;(jvn2?CKN=VyzFFKiK4VUp;nO!Nec#TF5D{^dUFNLrSf4v*r%}$-d3Y36wy#@zRaaMaI%My3y0egwrBmrn(%pcX5HN&g=!CFEhAfbf03jWgB!EId zF{lW^0GIKJ#PKP(Fhqe|<%u+k8=?js7ly?K1Raer2%;jw-0IF_kT>(@&42I9*Y$PR zIrrRi&-tC@p0u_e0#{N~TjGX8^IgLwqbvt@H?+!$1P^3<7b$;IL#lhC0-t*$$hU<8ZmriZJkB z)F4OB(5!4*cCI5k%U)Z(u(E1a#8$zESg@5Oh)t?)D|*fh z27{1*K)ZWrw$ox(JR zpiO@u8(2zKFiU5UMS(kZk<;<3wUFx~&G2-!^?}_M-zgccJwUclz2XeS`N(4ci(Aga z{u4Bfst%KD!=P+Rm!M}+0>d|pSh-%Y4{`n=qbz8QEV}eHX<*E~;zdIFUiW)lv2Ltx zlrB+c)QpjefjB>KUxTH+wlMpnxtY z7h<_hXts{pN{hYX4}@}6`BC{E8T{lf0QaA!%nT)76@S2z!U79u^m8<&(d(72l_gdiVnl%)riXr?(|fU0`XD9(BosMnlNmkU68AwG`l{ez!%n2PI$h7 zGFxP2H$I;7t#VX3qP(TNrtDWlK=&2mtqOqpa|=6;wJF_5$Qu z1Hv8-2%E^t%3dr7;!{L`ACaYk=}_R_ZPWzJ`!MzvWk%KtrdELu@1mOVyXUaGC^L8m zi(jq4=MGTQu!QYE*$!nN6-_GJF=3?ww|_wWp6_6m5g0l@K=Tu(IF!~y6#~?Bl=_jv zFf#^yy5eJMwJ3IQ@^7q(ur(Vs*ZV1GDGX&$=$F*Isqp>133t;ZNrs~9chHO~ZjwG7 zSOyKAhzOMArS;mXr*yFATq1)`+)bxY)FvSfpP8PBX0+1VdAxNhWFDZ6=(Y#ww^(_T zIDrrsigUzDajG~0g}2kmBIXH)w>?VpXv(AXPKMef=3qrmda z^r0kblXMMnJ#?D3^ATMDf!pbmG~W2%CEx@7dXpVu02QS-A{8(Pbbq%Pz}VDeFGHMx z32a&v*px;qOw4MHvK6BZQ;_{5Y8biO;!}fYgip=04n}XKGtL5lE!e;?tt?P}!5)H! ze#QeW{S1pL`kBqj1`iWLQv$GQ0S1&SgmOjxd9TENg()n$qOhWeY61vxtx6YwE50)5 zVTLK4hud&eqNA0pDszI1SPTdPwiwd$V4jzKmdz*asyzq&A# zrJbWuYCCsWI|HLh;L-JM9FxZj@_sGJy@DiFw?~G)J}#Pb9IziKZz~6(+M})P(N^~GJG7N|1cT&_&-pt%qC~rH z0>>_Z_FMU7q!u4Eif>CgLn5MngLHu~*S0EN6rw6PQ*MN|<>{U`bFabqw36>RUQ_!{Vq#rYN0=E9f0h3zvv`U5O&p^(jj}>IU zJVK6_Nj(bjNJvkTU%~c9TMPs<^ruPiCbSfrV&L@|dJ8CkmU6uprWczGsIy$(uZP#` zGg+P6uBvu!CHC$)=#y-b&<|}a$%UeW_4NDeI5(VAdi5jqFX<0xf5_CM z@6_-ZuX%!jXFu0lWkxx9Qxbs|zy3|A`t>q8@7MoX!+Ao$ZSeGWdP^)hj?jT*LO!8? zN!qCMisOV7o@V_Znb}8g!af#2%BpxhGydL*`Sv9XTI!n}HM5)MF3PH^bGn-rIA*mt z?KQQPjadsEOW~Ox^n1n^k8K(1Xe=uCPHw86+)z?jFw5Rh?kcSuJEmq-S$$n?O;K~T zXZEDVhU$XiiS;fm^=GK=47>B@me!?aJFqQ^umYpV6|3S60R>!5b-A_mHLkk)+L?3b z*q1n*4UTGewmRFrq;96_uCi5+X_-7{)Tjx~b@|05)#U~D+Jb4twOO+kH_aShR+wMd zSmG_3xM1ND$2@!0tg)l3%H2-qxR%KcQzv<+Eq1lkPMbe@%AJc!YiDIInKXJ{k)wHj zb>pJk6=kK3u7$3WD%D%vIBV9_mZoto=U8V=bM>9oP4lM|*-JdRWyS9N*`vl+7L2VM zRWfZs!IaV>N8O0rX@%9(rWRHePHS0E(oi>kR8dJ`Y13$Ld49e(e?sBxp;?Ptic9Q6 z%bUD&vQ%enPL^8enU-B&tQIYrJ+rc*c%rj<>c|N*8y1Z(TI88DHM`Qe@D_tPhpMX0 znd?>^&Q%EtHq)g1%36D^Gkae1Qv1@`jcRswZth~W**RzKQg_bW1xsBH_{t@H_h`@9 zp(Cf%XSr)LrZkS9SJgPFvOITcy|czWvSr?!+UABi`Gs=|M|x*3p5vUB(R|CU1NRK4 zJJ*f;m-R!0L3@-0Wwbm;z9t`&*W;T&y@C{I^@~?=4lLHMNTkMtf8{=d#`Le0S2U)7 zg+zTolC!zGX=&B0nt9%8^jBHN-O|_cyYllGQ|n}{H<5}5KzEZ34Q47I{PV*q|A0Jj z3)3L0M?#$Zix(%SHbQB`?S-u3_CjV+Uc0?n_uo-&@g*J^}>bq)wAjr*N2KSpPS=yWRt;K zd7e*|oyDf_f^5Dky)k`?#^e&E`5nNTjv6Oq&<`*HRY+b$oF(d7e*u?tRD!`8v4 zy@t;W9q=X&P3YHyjo0T!kUWFSW zXASu}dU}Cjx}J3rFM_oM^r~U^!N*z+CnV)F<&g52vPM}%`Zwf9Zq5y(QTs~64m~_o zZC$JVg!rcdUre?R0!?kb>kX)PeMqDqH$ksy)%zm8Ri48s?^ArId`Ec=s$Szxc!$>* zj!t@w+cj(69&Cc%Tw%Q3K#k_|@GaB00lRkx3w>v8q43xDLpf9ijn76>CVB?0Z$>w! znrSp+kMZf48ztn{7MDg>J~xVfiIk5MidQ}^#0W9S;0t|TkFgvF(DC;}hgflO>Lrw) zu#W4L=aHd5^i9p~;cdOwL-A)2>b)KoX)!DW!wJbF4VO}+K@y>pV5BAdI6SCk4ndLD zaL9oQtk8548^hRUP7BAM2xLx+Jb#H^11tpec+%rxswL_&eCbH61b2>(lVLoJJ`Im; zjE;ek9nsx^cO+?tPmGR>M&SujeQPDcfK%u9+F!5}_y#+j+3W*6seFpe?Yd7iO)bF} zr;ykabwOizM5Ph!kGj5sA+Ga00q?FdWx;oQ20sK-FNRB~ry@EBfVZ)_7#o&r;SAE( zMqf(ia7kPP;tAMUk&z0I_+oiDy*>KTk<`=FgUl+Xh8e@y7$Y^GDq%ih_A!rBxoj#c zGv8CuY!!Pad5vApKFYnvy-2^xZRVD8Gq@4lU`}NF*bmum=$~RrLbq**ehvj5mc56b!~^Vz{)iVKj-y2QdHj$s;K54sc9=Ia@=kQ5%6y#0 zo^J`xGMHNPb&j6IoxWwsRk*FnoB`iAM$Cn;H(Dcw8oq$H@KL-D{%L{Pj4wxxWZIV$ z4uv8RjK6cu<~W`X=W7Vm1v1_QuxnL@1pNmi%J53K{`n2 z-%}*LL3u%`k`C&Z%k6S5Zk*#r!o1G7aI~m1E>gr>;Az^y=i|14I#{_g?qf<_RRGJM zi;LYnB3UoG98R}QkPi{b*zyU6tW_iQM65m^U&a8&F9C1cXN+fUymA*Y8Z(Tf#;qC- zSMH2UN5gi-9ro(w6NC~cpTNnbQ}H6B#d26S=DT?!){zeYxuAMZ^~^=pv)}{eY_ciK zt*UNSroo5_F3d6EHyn@O6KdxjS+-nPj>C@TW?H05F1b!E@!7MB%HzW$=u0 z1sN+WA1j<&Yc6re+1Fr+xtZv_L8M%$Z-wOtg?Fw&2LLa^%^lWK@HO7(>%(w!k98j`IchzD)DNu!planR*xHji6wUw0njwNf zQ~2M|J7tXn;BLtHt;f+Bzjpk}Cr!~P=B)J<7Vubenhb)}|BW?q5Up}=5Sy*B;hW6y z>6^yI|7p|J_!ICHh~J1gf6oLt-{Iniy-iPN?5E8iHth^k5uRxcv4+b_lwD(9tzjlp%e_)SwY(i5J zAEQ)YKZ0~9c@lCl)uO`7JX>+z!9z=k1Ko~XwFyTG&3Xp+ zC9$$w{{&7oxwo5$i1O(=&$^Wwl!}gpfztKE_+r-{-5R#XL(LE;{gOiz-yHWA0kg>WH$J1wz>)@ zJZXv=L^EQhn4(=M@#zB>OFA&2NDW-QZXHf&OgH%WAUjU8>oZDG``4UB-%nn(|>_nPf`xH_v17*Z!H5ie3TT5`v061@@|yUM+nO6!P&-5qb23_8^a}B zsXGV1u60Lh0Irk>hQYoRK9SXogiF_@U4zl3UC9OuH3&~|xSr%8c&FcyX!(c9_v`6? z!FwyLWlUeg1+l;AugUG<)Kwv2FPHK)ko$x$1;21i*d;tFd?=vGPBC$SFYeiR9rJT~imRIrbmk*>BYE{hA-JXJv9!i$rCM_iyZe*ayRfEi{#)x;(feWz(H$evB0>=X*BbMU56N6T>X?H)v={kvKZBF_-zil~OmuEng)tWX0C+@*Ay>i0(CYZHe9gFZxbPD(z DVv~9L diff --git a/wells/forms.py b/wells/forms.py index 5f39178..e04ecc5 100644 --- a/wells/forms.py +++ b/wells/forms.py @@ -3,6 +3,7 @@ from django.contrib.auth import get_user_model from django.core.exceptions import ValidationError from .models import Well, WaterMeterManufacturer from locations.models import Affairs, County, Broker +from common.consts import UserRoles class WaterMeterManufacturerForm(forms.ModelForm): @@ -118,8 +119,10 @@ class WellForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - # تنظیم queryset‌ها - self.fields['representative'].queryset = get_user_model().objects.all() + # تنظیم queryset‌ها - فقط کاربرانی که نقش مشترک دارند + self.fields['representative'].queryset = get_user_model().objects.filter( + profile__roles__slug=UserRoles.CUSTOMER.value + ) self.fields['water_meter_manufacturer'].queryset = WaterMeterManufacturer.objects.all() # اضافه کردن گزینه خالی From 810c87e2e0d70e8c4d6f4ac56c36084bdd2c3168 Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Sun, 14 Sep 2025 13:44:03 +0330 Subject: [PATCH 02/28] Add well and customer detail modal --- .../templates/accounts/customer_list.html | 239 +++++++++++++++++- accounts/urls.py | 8 +- accounts/views.py | 123 +++++++++ wells/templates/wells/well_list.html | 204 ++++++++++++++- wells/urls.py | 2 + wells/views.py | 97 +++++++ 6 files changed, 668 insertions(+), 5 deletions(-) diff --git a/accounts/templates/accounts/customer_list.html b/accounts/templates/accounts/customer_list.html index 38f2fcc..24f5e5a 100644 --- a/accounts/templates/accounts/customer_list.html +++ b/accounts/templates/accounts/customer_list.html @@ -313,6 +313,153 @@ + + + + + + + + {% if customer.user_type == 'legal' %} + + حقوقی + +
+ {% if customer.company_name %} + {{ customer.company_name|truncatechars:25 }} + {% endif %} + {% if customer.company_national_id %} + + {{ customer.company_national_id }} + + {% endif %} +
+ {% else %} + + حقیقی + + {% endif %} + {{ customer.national_code|default:"کد ملی ثبت نشده" }}
@@ -205,6 +227,16 @@ +
+ +
+ + {{ form.user_type }} +
+ {% if form.user_type.errors %} +
{{ form.user_type.errors.0 }}
+ {% endif %} +
@@ -261,6 +293,29 @@ {% endif %}
+ + + + +
@@ -347,6 +402,18 @@ کد ملی - + + نوع کاربر + - + + + نام شرکت + - + + + شناسه ملی شرکت + - + شماره تلفن اول - @@ -495,6 +562,9 @@ lengthMenu: [[10, 25, 50, -1], [10, 25, 50, "همه"]], order: [[0, 'asc']], responsive: true, + columnDefs: [ + { targets: [8], orderable: false } // عملیات column غیرقابل مرتب‌سازی + ] }); // Handle form submission @@ -603,6 +673,21 @@ $('#cd-username').text(c.user.username || '-'); $('#cd-fullname').text(c.user.full_name || '-'); $('#cd-national-code').text(c.national_code || '-'); + + // User type and company information + const userTypeDisplay = c.user_type === 'legal' ? 'حقوقی' : 'حقیقی'; + $('#cd-user-type').text(userTypeDisplay); + + if (c.user_type === 'legal') { + $('#cd-company-name').text(c.company_name || '-'); + $('#cd-company-id').text(c.company_national_id || '-'); + $('#cd-company-name-row').show(); + $('#cd-company-id-row').show(); + } else { + $('#cd-company-name-row').hide(); + $('#cd-company-id-row').hide(); + } + $('#cd-phone1').text(c.phone_number_1 || '-'); $('#cd-phone2').text(c.phone_number_2 || '-'); $('#cd-email').text(c.user.email || '-'); @@ -689,9 +774,12 @@ 'customer-id': customer.id, 'id_first_name': customer.first_name, 'id_last_name': customer.last_name, + 'user-type-select': customer.user_type, 'id_phone_number_1': customer.phone_number_1, 'id_phone_number_2': customer.phone_number_2, 'id_national_code': customer.national_code, + 'id_company_name': customer.company_name, + 'id_company_national_id': customer.company_national_id, 'id_card_number': customer.card_number, 'id_account_number': customer.account_number, 'id_address': customer.address, @@ -711,6 +799,14 @@ if (customer.bank_name !== undefined && customer.bank_name !== null) { $('#id_bank_name').val(customer.bank_name); } + + // Ensure user type is applied and toggle company fields + if (customer.user_type !== undefined && customer.user_type !== null) { + $('#user-type-select').val(customer.user_type); + } + + // Toggle company fields based on user type + toggleCompanyFields(); // Open modal $('#add-new-record').offcanvas('show'); @@ -753,8 +849,39 @@ $('.is-invalid').removeClass('is-invalid'); $('.invalid-feedback').remove(); + // Reset user type to individual and hide company fields + $('#user-type-select').val('individual'); + toggleCompanyFields(); + // Open modal $('#add-new-record').offcanvas('show'); } + + function toggleCompanyFields() { + const userType = $('#user-type-select').val(); + const companyFields = $('.company-fields'); + + if (userType === 'legal') { + companyFields.show(); + // Make company fields required + $('input[name="company_name"]').attr('required', true); + $('input[name="company_national_id"]').attr('required', true); + } else { + companyFields.hide(); + // Remove required attribute from company fields + $('input[name="company_name"]').removeAttr('required').val(''); + $('input[name="company_national_id"]').removeAttr('required').val(''); + // Clear any validation errors for company fields + $('.company-fields .is-invalid').removeClass('is-invalid'); + $('.company-fields .invalid-feedback').remove(); + } + } + + // Initialize user type toggle functionality + $(document).ready(function() { + $('#user-type-select').on('change', toggleCompanyFields); + // Initialize on page load + toggleCompanyFields(); + }); {% endblock %} \ No newline at end of file diff --git a/accounts/views.py b/accounts/views.py index fea6375..ab85e27 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -41,7 +41,7 @@ def dashboard(request): @login_required -@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT]) +@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT, UserRoles.WATER_RESOURCE_MANAGER]) def customer_list(request): # Get all profiles that have customer role base = Profile.objects.filter(roles__slug=UserRoles.CUSTOMER.value, is_deleted=False).select_related('user') @@ -56,7 +56,7 @@ def customer_list(request): @require_POST @login_required -@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT]) +@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT, UserRoles.WATER_RESOURCE_MANAGER]) def add_customer_ajax(request): """AJAX endpoint for adding customers""" form = CustomerForm(request.POST, request.FILES) @@ -96,7 +96,7 @@ def add_customer_ajax(request): @require_POST @login_required -@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT]) +@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT, UserRoles.WATER_RESOURCE_MANAGER]) def edit_customer_ajax(request, customer_id): customer = get_object_or_404(Profile, id=customer_id) form = CustomerForm(request.POST, request.FILES, instance=customer) @@ -148,9 +148,12 @@ def get_customer_data(request, customer_id): form_html = { 'first_name': str(form['first_name']), 'last_name': str(form['last_name']), + 'user_type': str(form['user_type']), 'phone_number_1': str(form['phone_number_1']), 'phone_number_2': str(form['phone_number_2']), 'national_code': str(form['national_code']), + 'company_name': str(form['company_name']), + 'company_national_id': str(form['company_national_id']), 'card_number': str(form['card_number']), 'account_number': str(form['account_number']), 'address': str(form['address']), @@ -163,9 +166,12 @@ def get_customer_data(request, customer_id): 'id': customer.id, 'first_name': customer.user.first_name, 'last_name': customer.user.last_name, + 'user_type': customer.user_type or 'individual', 'phone_number_1': customer.phone_number_1 or '', 'phone_number_2': customer.phone_number_2 or '', 'national_code': customer.national_code or '', + 'company_name': customer.company_name or '', + 'company_national_id': customer.company_national_id or '', 'card_number': customer.card_number or '', 'account_number': customer.account_number or '', 'address': customer.address or '', @@ -177,7 +183,7 @@ def get_customer_data(request, customer_id): @require_GET @login_required -@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT]) +@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT, UserRoles.WATER_RESOURCE_MANAGER]) def get_customer_details(request, customer_id): """جزئیات کامل مشترک برای نمایش در مدال""" customer = get_object_or_404( @@ -196,6 +202,9 @@ def get_customer_details(request, customer_id): 'date_joined': customer.jcreated_date() if customer.user.date_joined else '', }, 'national_code': customer.national_code or '', + 'user_type': customer.user_type or 'individual', + 'company_name': customer.company_name or '', + 'company_national_id': customer.company_national_id or '', 'phone_number_1': customer.phone_number_1 or '', 'phone_number_2': customer.phone_number_2 or '', 'card_number': customer.card_number or '', @@ -229,7 +238,7 @@ def get_customer_details(request, customer_id): @require_GET @login_required -@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT]) +@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT, UserRoles.WATER_RESOURCE_MANAGER]) def get_customer_wells(request, customer_id): """چاه‌های مرتبط با یک مشترک""" customer = get_object_or_404(Profile, id=customer_id) @@ -262,7 +271,7 @@ def get_customer_wells(request, customer_id): @require_GET @login_required -@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT]) +@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT, UserRoles.WATER_RESOURCE_MANAGER]) def get_customer_requests(request, customer_id): """درخواست‌های مرتبط با یک مشترک""" customer = get_object_or_404(Profile, id=customer_id) diff --git a/certificates/migrations/0002_certificateinstance_hologram_code.py b/certificates/migrations/0002_certificateinstance_hologram_code.py new file mode 100644 index 0000000..38f81b2 --- /dev/null +++ b/certificates/migrations/0002_certificateinstance_hologram_code.py @@ -0,0 +1,18 @@ +# Generated by Django 5.2.4 on 2025-09-27 15:37 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('certificates', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='certificateinstance', + name='hologram_code', + field=models.CharField(blank=True, max_length=50, null=True, verbose_name='کد یکتا هولوگرام'), + ), + ] diff --git a/certificates/models.py b/certificates/models.py index 1b3dcaf..a7afe72 100644 --- a/certificates/models.py +++ b/certificates/models.py @@ -28,6 +28,7 @@ class CertificateInstance(BaseModel): issued_at = models.DateField(auto_now_add=True, verbose_name='تاریخ صدور') approved = models.BooleanField(default=False, verbose_name='تایید شده') approved_at = models.DateTimeField(null=True, blank=True, verbose_name='تاریخ تایید') + hologram_code = models.CharField(max_length=50, null=True, blank=True, verbose_name='کد یکتا هولوگرام') class Meta: verbose_name = 'گواهی' diff --git a/certificates/templates/certificates/print.html b/certificates/templates/certificates/print.html index d5ef11f..39b028a 100644 --- a/certificates/templates/certificates/print.html +++ b/certificates/templates/certificates/print.html @@ -18,19 +18,20 @@
-
+
+
کد یکتا هولوگرام: {{ cert.hologram_code|default:'-' }}
شماره درخواست: {{ instance.code }}
تاریخ: {{ cert.jissued_at }}
@@ -38,10 +39,7 @@
- {% if template.company and template.company.logo %} - logo - {% endif %} -

{{ cert.rendered_title }}

+

{{ cert.rendered_title }}

{% if template.company %}
{{ template.company.name }}
{% endif %} @@ -51,17 +49,41 @@
{{ cert.rendered_body|safe }}
- - -
-
-
مهر و امضای تایید کننده
-
{{ template.company.name }}
- {% if template.company and template.company.signature %} - seal - {% endif %} +
مشخصات چاه و کنتور هوشمند
+
+
+
موقعیت مکانی (UTM): {{ latest_report.utm_x|default:'-' }} , {{ latest_report.utm_y|default:'-' }}
+
نیرو محرکه چاه: {{ latest_report.driving_force|default:'-' }}
+
نوع کنتور: {{ latest_report.get_meter_type_display|default:'-' }}
+
قطر لوله آبده (اینچ): {{ latest_report.discharge_pipe_diameter|default:'-' }}
+
نوع مصرف: {{ latest_report.get_usage_type_display|default:'-' }}
+
شماره سیم‌کارت: {{ latest_report.sim_number|default:'-' }}
+
+
سایز کنتور: {{ latest_report.meter_size|default:'-' }}
+
شماره پروانه بهره‌برداری چاه: {{ latest_report.exploitation_license_number|default:'-' }}
+
قدرت موتور: {{ latest_report.motor_power|default:'-' }}
+
دبی قبل از کالیبراسیون: {{ latest_report.pre_calibration_flow_rate|default:'-' }}
+
دبی بعد از کالیبراسیون: {{ latest_report.post_calibration_flow_rate|default:'-' }}
+
نام شرکت کنتورساز: {{ latest_report.water_meter_manufacturer.name|default:'-' }}
+
شماره سریال کنتور: {{ instance.well.water_meter_serial_number|default:'-' }}
+
+
+ +
+
+
مهر و امضای تایید کننده
+
{{ template.company.name }}
+ {% if template.company and template.company.signature %} + seal + {% endif %} +
+
+
+
+ +
{% endblock %} diff --git a/processes/templatetags/processes_tags.py b/processes/templatetags/processes_tags.py index 5ee7b2f..5087f4e 100644 --- a/processes/templatetags/processes_tags.py +++ b/processes/templatetags/processes_tags.py @@ -28,9 +28,11 @@ def stepper_header(instance, current_step=None): status = step_id_to_status.get(step.id, 'pending') # بررسی دسترسی به مرحله (UI navigation constraints): - # can_access = instance.can_access_step(step) + can_access = instance.can_access_step(step) + # فقط مراحل تکمیل‌شده یا مرحله جاری قابل کلیک هستند - can_access = (step_id_to_status.get(step.id) == 'completed') or (instance.current_step and step.id == instance.current_step.id) + # can_access = (step_id_to_status.get(step.id) == 'completed') or (instance.current_step and step.id == instance.current_step.id) + # مرحله انتخاب‌شده (نمایش فعلی) is_selected = bool(current_step and step.id == current_step.id) # مرحله‌ای که باید انجام شود (مرحله جاری در instance) diff --git a/processes/urls.py b/processes/urls.py index a58ebab..0e1aaa5 100644 --- a/processes/urls.py +++ b/processes/urls.py @@ -6,6 +6,7 @@ app_name = 'processes' urlpatterns = [ # Requests UI path('requests/', views.request_list, name='request_list'), + path('requests/export/excel/', views.export_requests_excel, name='export_requests_excel'), path('requests/create/', views.create_request_with_entities, name='create_request_with_entities'), path('requests/lookup/well/', views.lookup_well_by_subscription, name='lookup_well_by_subscription'), path('requests/lookup/representative/', views.lookup_representative_by_national_code, name='lookup_representative_by_national_code'), diff --git a/processes/utils.py b/processes/utils.py index 951398e..717c0fc 100644 --- a/processes/utils.py +++ b/processes/utils.py @@ -20,7 +20,7 @@ def scope_instances_queryset(user, queryset=None): return qs.filter(id__in=assign_ids) if profile.has_role(UserRoles.BROKER): return qs.filter(broker=profile.broker) - if profile.has_role(UserRoles.ACCOUNTANT) or profile.has_role(UserRoles.MANAGER): + if profile.has_role(UserRoles.ACCOUNTANT) or profile.has_role(UserRoles.MANAGER) or profile.has_role(UserRoles.WATER_RESOURCE_MANAGER): return qs.filter(broker__affairs__county=profile.county) if profile.has_role(UserRoles.ADMIN): return qs @@ -69,7 +69,7 @@ def scope_wells_queryset(user, queryset=None): return qs if profile.has_role(UserRoles.BROKER): return qs.filter(broker=profile.broker) - if profile.has_role(UserRoles.ACCOUNTANT) or profile.has_role(UserRoles.MANAGER): + if profile.has_role(UserRoles.ACCOUNTANT) or profile.has_role(UserRoles.MANAGER) or profile.has_role(UserRoles.WATER_RESOURCE_MANAGER): return qs.filter(broker__affairs__county=profile.county) if profile.has_role(UserRoles.INSTALLER): # Wells that have instances assigned to this installer @@ -102,7 +102,7 @@ def scope_customers_queryset(user, queryset=None): return qs if profile.has_role(UserRoles.BROKER): return qs.filter(broker=profile.broker) - if profile.has_role(UserRoles.ACCOUNTANT) or profile.has_role(UserRoles.MANAGER): + if profile.has_role(UserRoles.ACCOUNTANT) or profile.has_role(UserRoles.MANAGER) or profile.has_role(UserRoles.WATER_RESOURCE_MANAGER): return qs.filter(county=profile.county) if profile.has_role(UserRoles.INSTALLER): # Customers that are representatives of instances assigned to this installer diff --git a/processes/views.py b/processes/views.py index 38ad946..d96a86b 100644 --- a/processes/views.py +++ b/processes/views.py @@ -3,13 +3,19 @@ from django.urls import reverse from django.contrib.auth.decorators import login_required from django.contrib import messages -from django.http import JsonResponse +from django.http import JsonResponse, HttpResponse from django.views.decorators.http import require_POST, require_GET +from django.utils import timezone from django.db import transaction from django.contrib.auth import get_user_model +import openpyxl +from openpyxl.styles import Font, Alignment, PatternFill +from openpyxl.utils import get_column_letter +from datetime import datetime +from _helpers.utils import persian_converter3 from .models import Process, ProcessInstance, StepInstance, ProcessStep from .utils import scope_instances_queryset, get_scoped_instance_or_404 -from installations.models import InstallationAssignment +from installations.models import InstallationAssignment, InstallationReport from wells.models import Well from accounts.models import Profile, Broker from locations.models import Affairs @@ -65,18 +71,65 @@ def request_list(request): steps_list = ProcessStep.objects.select_related('process').all().order_by('process__name', 'order') manufacturers = WaterMeterManufacturer.objects.all().order_by('name') - # Calculate progress for each instance + # Prepare installation assignments map (scheduled date by instance) + try: + instance_ids = list(instances.values_list('id', flat=True)) + except Exception: + instance_ids = [] + assignments_map = {} + reports_map = {} + if instance_ids: + try: + ass_qs = InstallationAssignment.objects.filter(process_instance_id__in=instance_ids).values('process_instance_id', 'scheduled_date') + for row in ass_qs: + assignments_map[row['process_instance_id']] = row['scheduled_date'] + except Exception: + assignments_map = {} + # latest report per instance (visited_date) + try: + rep_qs = InstallationReport.objects.filter(assignment__process_instance_id__in=instance_ids).order_by('-created').values('assignment__process_instance_id', 'visited_date') + for row in rep_qs: + pid = row['assignment__process_instance_id'] + if pid not in reports_map: + reports_map[pid] = row['visited_date'] + except Exception: + reports_map = {} + + # Calculate progress for each instance and attach install schedule info instances_with_progress = [] for instance in instances: total_steps = instance.process.steps.count() completed_steps = instance.step_instances.filter(status='completed').count() progress_percentage = (completed_steps / total_steps * 100) if total_steps > 0 else 0 - + sched_date = assignments_map.get(instance.id) + overdue_days = 0 + reference_date = None + if sched_date: + # Reference date: until installer submits a report, use today; otherwise use visited_date + try: + visited_date = reports_map.get(instance.id) + if visited_date: + reference_date = visited_date + else: + try: + reference_date = timezone.localdate() + except Exception: + from datetime import date as _date + reference_date = _date.today() + if reference_date > sched_date: + overdue_days = (reference_date - sched_date).days + except Exception: + overdue_days = 0 + reference_date = None + + installation_scheduled_date = reference_date if reference_date and reference_date > sched_date else sched_date instances_with_progress.append({ 'instance': instance, 'progress_percentage': round(progress_percentage), 'completed_steps': completed_steps, 'total_steps': total_steps, + 'installation_scheduled_date': installation_scheduled_date, + 'installation_overdue_days': overdue_days, }) # Summary stats for header cards @@ -160,7 +213,10 @@ def lookup_representative_by_national_code(request): 'last_name': user.last_name, 'full_name': user.get_full_name(), 'profile': { + 'user_type': profile.user_type, 'national_code': profile.national_code, + 'company_name': profile.company_name, + 'company_national_id': profile.company_national_id, 'phone_number_1': profile.phone_number_1, 'phone_number_2': profile.phone_number_2, 'card_number': profile.card_number, @@ -240,6 +296,7 @@ def create_request_with_entities(request): well = existing well_data = request.POST.copy() + print(well_data) # Ensure representative set from created/selected user if not provided if representative_user and not well_data.get('representative'): well_data['representative'] = str(representative_user.id) @@ -366,12 +423,12 @@ def step_detail(request, instance_id, step_id): return redirect('processes:instance_summary', instance_id=instance.id) # جلوگیری از پرش به مراحل آینده: فقط اجازه نمایش مرحله جاری یا مراحل تکمیل‌شده - try: - if instance.current_step and step.order > instance.current_step.order: - messages.error(request, 'ابتدا مراحل قبلی را تکمیل کنید.') - return redirect('processes:step_detail', instance_id=instance.id, step_id=instance.current_step.id) - except Exception: - pass + # try: + # if instance.current_step and step.order > instance.current_step.order: + # messages.error(request, 'ابتدا مراحل قبلی را تکمیل کنید.') + # return redirect('processes:step_detail', instance_id=instance.id, step_id=instance.current_step.id) + # except Exception: + # pass # بررسی دسترسی به مرحله if not instance.can_access_step(step): @@ -471,4 +528,365 @@ def instance_summary(request, instance_id): 'latest_report': latest_report, 'certificate': certificate, }) + + +def format_date_jalali(date_obj): + """Convert date to Jalali format without time""" + if not date_obj: + return "" + try: + # If it's a datetime, get just the date part + if hasattr(date_obj, 'date'): + date_obj = date_obj.date() + return persian_converter3(date_obj) + except Exception: + return "" + +def format_datetime_jalali(datetime_obj): + """Convert datetime to Jalali format without time""" + if not datetime_obj: + return "" + try: + # Get just the date part + date_part = datetime_obj.date() if hasattr(datetime_obj, 'date') else datetime_obj + return persian_converter3(date_part) + except Exception: + return "" + +@login_required +def export_requests_excel(request): + """Export filtered requests to Excel""" + + # Get the same queryset as request_list view (with filters) + instances = ProcessInstance.objects.select_related( + 'process', 'current_step', 'representative', 'well', 'well__county', 'well__affairs' + ).prefetch_related('step_instances') + + # Apply scoping + instances = scope_instances_queryset(request.user, instances) + + # Apply filters (same logic as request_list view) + filter_status = request.GET.get('status', '').strip() + if filter_status: + instances = instances.filter(status=filter_status) + + filter_affairs = request.GET.get('affairs', '').strip() + if filter_affairs and filter_affairs.isdigit(): + instances = instances.filter(well__affairs_id=filter_affairs) + + filter_broker = request.GET.get('broker', '').strip() + if filter_broker and filter_broker.isdigit(): + instances = instances.filter(well__broker_id=filter_broker) + + filter_step = request.GET.get('step', '').strip() + if filter_step and filter_step.isdigit(): + instances = instances.filter(current_step_id=filter_step) + + # Get installation data + assignment_ids = list(instances.values_list('id', flat=True)) + assignments_map = {} + reports_map = {} + installers_map = {} + + if assignment_ids: + assignments = InstallationAssignment.objects.filter( + process_instance_id__in=assignment_ids + ).select_related('process_instance', 'installer') + assignments_map = {a.process_instance_id: a.scheduled_date for a in assignments} + installers_map = {a.process_instance_id: a.installer for a in assignments} + + reports = InstallationReport.objects.filter( + assignment__process_instance_id__in=assignment_ids + ).select_related('assignment') + reports_map = {r.assignment.process_instance_id: r for r in reports} + + # Get quotes and payments data + from invoices.models import Quote, Payment, Invoice + quotes_map = {} + payments_map = {} + settlement_dates_map = {} + approval_dates_map = {} + approval_users_map = {} + + if assignment_ids: + # Get quotes + quotes = Quote.objects.filter( + process_instance_id__in=assignment_ids + ).select_related('process_instance') + quotes_map = {q.process_instance_id: q for q in quotes} + + # Get payments with reference numbers + payments = Payment.objects.filter( + invoice__process_instance_id__in=assignment_ids, + is_deleted=False + ).select_related('invoice__process_instance').order_by('created') + + for payment in payments: + if payment.invoice.process_instance_id not in payments_map: + payments_map[payment.invoice.process_instance_id] = [] + payments_map[payment.invoice.process_instance_id].append(payment) + + # Get final invoices to check settlement dates + invoices = Invoice.objects.filter( + process_instance_id__in=assignment_ids + ).select_related('process_instance') + + for invoice in invoices: + if invoice.remaining_amount == 0: # Fully settled + # Find the last payment date for this invoice + last_payment = Payment.objects.filter( + invoice__process_instance=invoice.process_instance, + is_deleted=False + ).order_by('-created').first() + if last_payment: + settlement_dates_map[invoice.process_instance_id] = last_payment.created + + # Get installation approval data + from processes.models import StepInstance, StepApproval + installation_steps = StepInstance.objects.filter( + process_instance_id__in=assignment_ids, + step__slug='installation_report', # Assuming this is the slug for installation step + status='completed' + ).select_related('process_instance') + + for step_instance in installation_steps: + # Get the approval that completed this step + approval = StepApproval.objects.filter( + step_instance=step_instance, + decision='approved', + is_deleted=False + ).select_related('approved_by').order_by('-created').first() + + if approval: + approval_dates_map[step_instance.process_instance_id] = approval.created + approval_users_map[step_instance.process_instance_id] = approval.approved_by + + # Calculate progress and installation data + instances_with_progress = [] + for instance in instances: + total_steps = instance.process.steps.count() + completed_steps = instance.step_instances.filter(status='completed').count() + progress_percentage = (completed_steps / total_steps * 100) if total_steps > 0 else 0 + + sched_date = assignments_map.get(instance.id) + overdue_days = 0 + reference_date = None + + if sched_date: + try: + report = reports_map.get(instance.id) + if report and report.visited_date: + reference_date = report.visited_date + else: + try: + reference_date = timezone.localdate() + except Exception: + from datetime import date as _date + reference_date = _date.today() + if reference_date > sched_date: + overdue_days = (reference_date - sched_date).days + except Exception: + overdue_days = 0 + + installation_scheduled_date = reference_date if reference_date and reference_date > sched_date else sched_date + + instances_with_progress.append({ + 'instance': instance, + 'progress_percentage': round(progress_percentage), + 'completed_steps': completed_steps, + 'total_steps': total_steps, + 'installation_scheduled_date': installation_scheduled_date, + 'installation_overdue_days': overdue_days, + }) + + # Create Excel workbook + wb = openpyxl.Workbook() + ws = wb.active + ws.title = "لیست درخواست‌ها" + + # Set RTL (Right-to-Left) direction + ws.sheet_view.rightToLeft = True + + # Define column headers + headers = [ + 'شناسه', + 'تاریخ ایجاد درخواست', + 'نام نماینده', + 'نام خانوادگی نماینده', + 'کد ملی نماینده', + 'نام شرکت', + 'شناسه شرکت', + 'سریال کنتور', + 'سریال کنتور جدید', + 'شماره اشتراک آب', + 'شماره اشتراک برق', + 'قدرت چاه', + 'شماره تماس ۱', + 'شماره تماس ۲', + 'آدرس', + 'مبلغ پیش‌فاکتور', + 'تاریخ واریزی‌ها و کدهای رهگیری', + 'تاریخ مراجعه نصاب', + 'تاخیر نصاب', + 'نام نصاب', + 'تاریخ تایید نصب توسط مدیر', + 'نام تایید کننده نصب', + 'تاریخ تسویه' + ] + + # Write headers + for col, header in enumerate(headers, 1): + cell = ws.cell(row=1, column=col, value=header) + cell.font = Font(bold=True) + cell.alignment = Alignment(horizontal='center') + cell.fill = PatternFill(start_color="CCCCCC", end_color="CCCCCC", fill_type="solid") + + # Write data rows + for row_num, item in enumerate(instances_with_progress, 2): + instance = item['instance'] + + # Get representative info + rep_first_name = "" + rep_last_name = "" + rep_national_code = "" + rep_phone_1 = "" + rep_phone_2 = "" + rep_address = "" + company_name = "" + company_national_id = "" + + if instance.representative: + rep_first_name = instance.representative.first_name or "" + rep_last_name = instance.representative.last_name or "" + if hasattr(instance.representative, 'profile') and instance.representative.profile: + profile = instance.representative.profile + rep_national_code = profile.national_code or "" + rep_phone_1 = profile.phone_number_1 or "" + rep_phone_2 = profile.phone_number_2 or "" + rep_address = profile.address or "" + if profile.user_type == 'legal': + company_name = profile.company_name or "" + company_national_id = profile.company_national_id or "" + + # Get well info + water_subscription = "" + electricity_subscription = "" + well_power = "" + old_meter_serial = "" + if instance.well: + water_subscription = instance.well.water_subscription_number or "" + electricity_subscription = instance.well.electricity_subscription_number or "" + well_power = str(instance.well.well_power) if instance.well.well_power else "" + old_meter_serial = instance.well.water_meter_serial_number or "" + + # Get new meter serial from installation report + new_meter_serial = "" + installer_visit_date = "" + report = reports_map.get(instance.id) + if report: + new_meter_serial = report.new_water_meter_serial or "" + installer_visit_date = format_date_jalali(report.visited_date) + + # Get quote amount + quote_amount = "" + quote = quotes_map.get(instance.id) + if quote: + quote_amount = str(quote.final_amount) if quote.final_amount else "" + + # Get payments info + payments_info = "" + payments = payments_map.get(instance.id, []) + if payments: + payment_strings = [] + for payment in payments: + date_str = format_datetime_jalali(payment.created) + reference_number = payment.reference_number or "بدون کد" + payment_strings.append(f"{date_str} - {reference_number}") + payments_info = " | ".join(payment_strings) + + # Get installer name + installer_name = "" + installer = installers_map.get(instance.id) + if installer: + installer_name = installer.get_full_name() or str(installer) + + # Get overdue days + overdue_days = "" + if item['installation_overdue_days'] and item['installation_overdue_days'] > 0: + overdue_days = str(item['installation_overdue_days']) + + # Get approval info + approval_date = "" + approval_user = "" + approval_date_obj = approval_dates_map.get(instance.id) + approval_user_obj = approval_users_map.get(instance.id) + if approval_date_obj: + approval_date = format_datetime_jalali(approval_date_obj) + if approval_user_obj: + approval_user = approval_user_obj.get_full_name() or str(approval_user_obj) + + # Get settlement date + settlement_date = "" + settlement_date_obj = settlement_dates_map.get(instance.id) + if settlement_date_obj: + settlement_date = format_datetime_jalali(settlement_date_obj) + + row_data = [ + instance.code, # شناسه + format_datetime_jalali(instance.created), # تاریخ ایجاد درخواست + rep_first_name, # نام نماینده + rep_last_name, # نام خانوادگی نماینده + rep_national_code, # کد ملی نماینده + company_name, # نام شرکت + company_national_id, # شناسه شرکت + old_meter_serial, # سریال کنتور + new_meter_serial, # سریال کنتور جدید + water_subscription, # شماره اشتراک آب + electricity_subscription, # شماره اشتراک برق + well_power, # قدرت چاه + rep_phone_1, # شماره تماس ۱ + rep_phone_2, # شماره تماس ۲ + rep_address, # آدرس + quote_amount, # مبلغ پیش‌فاکتور + payments_info, # تاریخ واریزی‌ها و کدهای رهگیری + installer_visit_date, # تاریخ مراجعه نصاب + overdue_days, # تاخیر نصاب + installer_name, # نام نصاب + approval_date, # تاریخ تایید نصب توسط مدیر + approval_user, # نام تایید کننده نصب + settlement_date # تاریخ تسویه + ] + + for col, value in enumerate(row_data, 1): + cell = ws.cell(row=row_num, column=col, value=value) + # Set right alignment for Persian text + cell.alignment = Alignment(horizontal='right') + + # Auto-adjust column widths + for col in range(1, len(headers) + 1): + column_letter = get_column_letter(col) + max_length = 0 + for row in ws[column_letter]: + try: + if len(str(row.value)) > max_length: + max_length = len(str(row.value)) + except: + pass + adjusted_width = min(max_length + 2, 50) + ws.column_dimensions[column_letter].width = adjusted_width + + # Prepare response + response = HttpResponse( + content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' + ) + + # Generate filename with current date + current_date = datetime.now().strftime('%Y%m%d_%H%M') + filename = f'requests_export_{current_date}.xlsx' + response['Content-Disposition'] = f'attachment; filename="{filename}"' + + # Save workbook to response + wb.save(response) + + return response \ No newline at end of file diff --git a/templates/sidebars/admin.html b/templates/sidebars/admin.html index 066c177..3e0d49a 100644 --- a/templates/sidebars/admin.html +++ b/templates/sidebars/admin.html @@ -114,7 +114,7 @@ - {% if request.user|is_admin or request.user|is_broker or request.user|is_manager or request.user|is_accountant %} + {% if request.user|is_admin or request.user|is_broker or request.user|is_manager or request.user|is_accountant or request.user|is_water_resource_manager %}
@@ -157,7 +157,7 @@ تغییری ثبت نشده است {% endfor %} - + nvoices/instance/69/step/3/payments/
diff --git a/installations/views.py b/installations/views.py index 177ccc3..367edac 100644 --- a/installations/views.py +++ b/installations/views.py @@ -320,15 +320,29 @@ def installation_report_step(request, instance_id, step_id): can_approve_reject = False user_can_approve = can_approve_reject approvals_list = list(step_instance.approvals.select_related('role', 'approved_by').filter(is_deleted=False)) + rejections_list = list(step_instance.rejections.select_related('role', 'rejected_by').filter(is_deleted=False)) approvals_by_role = {a.role_id: a for a in approvals_list} - approver_statuses = [ - { + rejections_by_role = {r.role_id: r for r in rejections_list} + approver_statuses = [] + for r in reqs: + appr = approvals_by_role.get(r.role_id) + rejection = rejections_by_role.get(r.role_id) + + if appr: + status = 'approved' + reason = appr.reason + elif rejection: + status = 'rejected' + reason = rejection.reason + else: + status = None + reason = '' + + approver_statuses.append({ 'role': r.role, - 'status': (approvals_by_role.get(r.role_id).decision if approvals_by_role.get(r.role_id) else None), - 'reason': (approvals_by_role.get(r.role_id).reason if approvals_by_role.get(r.role_id) else ''), - } - for r in reqs - ] + 'status': status, + 'reason': reason, + }) # Determine if current user has already approved/rejected (to disable buttons) current_user_has_decided = False @@ -356,10 +370,11 @@ def installation_report_step(request, instance_id, step_id): if action == 'approve': # Record this user's approval for their role - StepApproval.objects.update_or_create( + StepApproval.objects.create( step_instance=step_instance, role=matching_role, - defaults={'approved_by': request.user, 'decision': 'approved', 'reason': ''} + approved_by=request.user, + reason='' ) # Only mark report approved when ALL required roles have approved if step_instance.is_fully_approved(): @@ -386,12 +401,8 @@ def installation_report_step(request, instance_id, step_id): if not reason: messages.error(request, 'لطفاً علت رد شدن را وارد کنید.') return redirect('processes:step_detail', instance_id=instance.id, step_id=step.id) - StepApproval.objects.update_or_create( - step_instance=step_instance, - role=matching_role, - defaults={'approved_by': request.user, 'decision': 'rejected', 'reason': reason} - ) - StepRejection.objects.create(step_instance=step_instance, rejected_by=request.user, reason=reason) + # Only create StepRejection for rejections, not StepApproval + StepRejection.objects.create(step_instance=step_instance, role=matching_role, rejected_by=request.user, reason=reason) existing_report.approved = False existing_report.save() # If current step moved ahead of this step, reset it back for correction (align with invoices) diff --git a/invoices/templates/invoices/quote_print.html b/invoices/templates/invoices/quote_print.html index bbf7a97..fc445a6 100644 --- a/invoices/templates/invoices/quote_print.html +++ b/invoices/templates/invoices/quote_print.html @@ -145,7 +145,17 @@
-
اطلاعات مشترک
+
+ {% if instance.representative.profile.user_type == 'legal' %} + اطلاعات مشترک (حقوقی) + {% else %} + اطلاعات مشترک (حقیقی) + {% endif %} +
+ {% if instance.representative.profile.user_type == 'legal' %} +
نام شرکت: {{ instance.representative.profile.company_name|default:"-" }}
+
شناسه ملی: {{ instance.representative.profile.company_national_id|default:"-" }}
+ {% endif %}
نام: {{ quote.customer.get_full_name }}
{% if instance.representative.profile and instance.representative.profile.national_code %}
کد ملی: {{ instance.representative.profile.national_code }}
diff --git a/invoices/templates/invoices/quote_step.html b/invoices/templates/invoices/quote_step.html index 404cf14..853f250 100644 --- a/invoices/templates/invoices/quote_step.html +++ b/invoices/templates/invoices/quote_step.html @@ -57,7 +57,7 @@
پیش‌فاکتور موجود
{{ existing_quote.name }} | - مبلغ کل: {{ existing_quote.final_amount|floatformat:0|intcomma:False }} تومان | + مبلغ کل (با احتساب مالیات): {{ existing_quote.final_amount|floatformat:0|intcomma:False }} تومان | وضعیت: {{ existing_quote.get_status_display_with_color|safe }}
diff --git a/invoices/views.py b/invoices/views.py index 6e467b9..0df8191 100644 --- a/invoices/views.py +++ b/invoices/views.py @@ -358,14 +358,28 @@ def quote_payment_step(request, instance_id, step_id): user_roles_qs = getattr(getattr(request.user, 'profile', None), 'roles', None) user_roles = list(user_roles_qs.all()) if user_roles_qs is not None else [] approvals_list = list(step_instance.approvals.select_related('role', 'approved_by').filter(is_deleted=False)) + rejections_list = list(step_instance.rejections.select_related('role', 'rejected_by').filter(is_deleted=False)) approvals_by_role = {a.role_id: a for a in approvals_list} + rejections_by_role = {r.role_id: r for r in rejections_list} approver_statuses = [] for r in reqs: appr = approvals_by_role.get(r.role_id) + rejection = rejections_by_role.get(r.role_id) + + if appr: + status = 'approved' + reason = appr.reason + elif rejection: + status = 'rejected' + reason = rejection.reason + else: + status = None + reason = '' + approver_statuses.append({ 'role': r.role, - 'status': (appr.decision if appr else None), - 'reason': (appr.reason if appr else ''), + 'status': status, + 'reason': reason, }) # dynamic permission: who can approve/reject this step (based on requirements) @@ -398,10 +412,11 @@ def quote_payment_step(request, instance_id, step_id): action = request.POST.get('action') if action == 'approve': - StepApproval.objects.update_or_create( + StepApproval.objects.create( step_instance=step_instance, role=matching_role, - defaults={'approved_by': request.user, 'decision': 'approved', 'reason': ''} + approved_by=request.user, + reason='' ) if step_instance.is_fully_approved(): step_instance.status = 'completed' @@ -422,12 +437,12 @@ def quote_payment_step(request, instance_id, step_id): if not reason: messages.error(request, 'علت رد شدن را وارد کنید') return redirect('invoices:quote_payment_step', instance_id=instance.id, step_id=step.id) - StepApproval.objects.update_or_create( + StepRejection.objects.create( step_instance=step_instance, role=matching_role, - defaults={'approved_by': request.user, 'decision': 'rejected', 'reason': reason} - ) - StepRejection.objects.create(step_instance=step_instance, rejected_by=request.user, reason=reason) + rejected_by=request.user, + reason=reason + ) # If current step is ahead of this step, reset it back to this step try: if instance.current_step and instance.current_step.order > step.order: @@ -928,15 +943,29 @@ def final_settlement_step(request, instance_id, step_id): # Build approver statuses for template (include reason to display in UI) reqs = list(step.approver_requirements.select_related('role').all()) approvals = list(step_instance.approvals.select_related('role').all()) + rejections = list(step_instance.rejections.select_related('role').all()) approvals_by_role = {a.role_id: a for a in approvals} - approver_statuses = [ - { + rejections_by_role = {r.role_id: r for r in rejections} + approver_statuses = [] + for r in reqs: + appr = approvals_by_role.get(r.role_id) + rejection = rejections_by_role.get(r.role_id) + + if appr: + status = 'approved' + reason = appr.reason + elif rejection: + status = 'rejected' + reason = rejection.reason + else: + status = None + reason = '' + + approver_statuses.append({ 'role': r.role, - 'status': (approvals_by_role.get(r.role_id).decision if approvals_by_role.get(r.role_id) else None), - 'reason': (approvals_by_role.get(r.role_id).reason if approvals_by_role.get(r.role_id) else ''), - } - for r in reqs - ] + 'status': status, + 'reason': reason, + }) # dynamic permission to control approve/reject UI try: user_roles_qs = getattr(getattr(request.user, 'profile', None), 'roles', Role.objects.none()) @@ -971,10 +1000,11 @@ def final_settlement_step(request, instance_id, step_id): if invoice.remaining_amount != 0: messages.error(request, f"تا زمانی که مانده فاکتور صفر نشده امکان تایید نیست (مانده فعلی: {invoice.remaining_amount})") return redirect('invoices:final_settlement_step', instance_id=instance.id, step_id=step.id) - StepApproval.objects.update_or_create( + StepApproval.objects.create( step_instance=step_instance, role=matching_role, - defaults={'approved_by': request.user, 'decision': 'approved', 'reason': ''} + approved_by=request.user, + reason='' ) if step_instance.is_fully_approved(): step_instance.status = 'completed' @@ -993,12 +1023,12 @@ def final_settlement_step(request, instance_id, step_id): if not reason: messages.error(request, 'علت رد شدن را وارد کنید') return redirect('invoices:final_settlement_step', instance_id=instance.id, step_id=step.id) - StepApproval.objects.update_or_create( + StepRejection.objects.create( step_instance=step_instance, role=matching_role, - defaults={'approved_by': request.user, 'decision': 'rejected', 'reason': reason} - ) - StepRejection.objects.create(step_instance=step_instance, rejected_by=request.user, reason=reason) + rejected_by=request.user, + reason=reason + ) # If current step is ahead of this step, reset it back to this step (align behavior with other steps) try: if instance.current_step and instance.current_step.order > step.order: diff --git a/processes/admin.py b/processes/admin.py index 4739742..42d4bca 100644 --- a/processes/admin.py +++ b/processes/admin.py @@ -162,9 +162,9 @@ class StepInstanceAdmin(SimpleHistoryAdmin): @admin.register(StepRejection) class StepRejectionAdmin(SimpleHistoryAdmin): - list_display = ['step_instance', 'rejected_by', 'reason_short', 'created_at', 'is_deleted'] - list_filter = ['rejected_by', 'created_at', 'step_instance__step__process'] - search_fields = ['step_instance__step__name', 'rejected_by__username', 'reason'] + list_display = ['step_instance', 'role', 'rejected_by', 'reason_short', 'created_at', 'is_deleted'] + list_filter = ['role', 'rejected_by', 'created_at', 'step_instance__step__process'] + search_fields = ['step_instance__step__name', 'rejected_by__username', 'reason', 'role__name'] readonly_fields = ['created_at'] ordering = ['-created_at'] @@ -182,6 +182,6 @@ class StepApproverRequirementAdmin(admin.ModelAdmin): @admin.register(StepApproval) class StepApprovalAdmin(admin.ModelAdmin): - list_display = ("step_instance", "role", "decision", "approved_by", "created_at", "is_deleted") - list_filter = ("decision", "role", "step_instance__step__process") + list_display = ("step_instance", "role", "approved_by", "created_at", "is_deleted") + list_filter = ("role", "step_instance__step__process") search_fields = ("step_instance__process_instance__code", "role__name", "approved_by__username") diff --git a/processes/migrations/0006_alter_stepapproval_unique_together_and_more.py b/processes/migrations/0006_alter_stepapproval_unique_together_and_more.py new file mode 100644 index 0000000..f4cb896 --- /dev/null +++ b/processes/migrations/0006_alter_stepapproval_unique_together_and_more.py @@ -0,0 +1,34 @@ +# Generated by Django 5.2.4 on 2025-10-02 09:32 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('accounts', '0008_alter_historicalprofile_phone_number_1_and_more'), + ('processes', '0005_alter_historicalstepinstance_status_and_more'), + ] + + operations = [ + migrations.AlterUniqueTogether( + name='stepapproval', + unique_together=set(), + ), + migrations.AddField( + model_name='historicalsteprejection', + name='role', + field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='accounts.role', verbose_name='نقش'), + ), + migrations.AddField( + model_name='steprejection', + name='role', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='accounts.role', verbose_name='نقش'), + ), + migrations.AlterField( + model_name='stepapproval', + name='role', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='accounts.role', verbose_name='نقش'), + ), + ] diff --git a/processes/migrations/0007_remove_stepapproval_decision_and_more.py b/processes/migrations/0007_remove_stepapproval_decision_and_more.py new file mode 100644 index 0000000..d97d16b --- /dev/null +++ b/processes/migrations/0007_remove_stepapproval_decision_and_more.py @@ -0,0 +1,22 @@ +# Generated by Django 5.2.4 on 2025-10-02 09:50 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('processes', '0006_alter_stepapproval_unique_together_and_more'), + ] + + operations = [ + migrations.RemoveField( + model_name='stepapproval', + name='decision', + ), + migrations.AlterField( + model_name='stepapproval', + name='reason', + field=models.TextField(blank=True, verbose_name='توضیحات'), + ), + ] diff --git a/processes/models.py b/processes/models.py index 391fd26..19b612d 100644 --- a/processes/models.py +++ b/processes/models.py @@ -387,7 +387,7 @@ class StepInstance(models.Model): def approvals_by_role(self): decisions = {} for a in self.approvals.select_related('role').order_by('created_at'): - decisions[a.role_id] = a.decision + decisions[a.role_id] = 'approved' return decisions def is_fully_approved(self) -> bool: @@ -409,6 +409,7 @@ class StepRejection(models.Model): related_name='rejections', verbose_name="نمونه مرحله" ) + role = models.ForeignKey(Role, on_delete=models.SET_NULL, blank=True, null=True, verbose_name="نقش") rejected_by = models.ForeignKey( User, on_delete=models.CASCADE, @@ -431,7 +432,7 @@ class StepRejection(models.Model): ordering = ['-created_at'] def __str__(self): - return f"رد شدن {self.step_instance} توسط {self.rejected_by.get_full_name()}" + return f"رد شدن {self.step_instance} توسط {self.rejected_by.get_full_name()} ({self.role.name})" def save(self, *args, **kwargs): """ذخیره با تغییر وضعیت مرحله""" @@ -447,7 +448,6 @@ class StepRejection(models.Model): self.save() - class StepApproverRequirement(models.Model): """Required approver roles for a step.""" step = models.ForeignKey(ProcessStep, on_delete=models.CASCADE, related_name='approver_requirements', verbose_name="مرحله") @@ -466,15 +466,13 @@ class StepApproverRequirement(models.Model): class StepApproval(models.Model): """Approvals per role for a concrete step instance.""" step_instance = models.ForeignKey(StepInstance, on_delete=models.CASCADE, related_name='approvals', verbose_name="نمونه مرحله") - role = models.ForeignKey(Role, on_delete=models.CASCADE, verbose_name="نقش") + role = models.ForeignKey(Role, on_delete=models.SET_NULL, blank=True, null=True, verbose_name="نقش") approved_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, verbose_name="تاییدکننده") - decision = models.CharField(max_length=8, choices=[('approved', 'تایید'), ('rejected', 'رد')], verbose_name='نتیجه') - reason = models.TextField(blank=True, verbose_name='علت (برای رد)') + reason = models.TextField(blank=True, verbose_name='توضیحات') created_at = models.DateTimeField(auto_now_add=True, verbose_name='تاریخ') is_deleted = models.BooleanField(default=False, verbose_name='حذف شده') class Meta: - unique_together = ('step_instance', 'role') verbose_name = 'تایید مرحله' verbose_name_plural = 'تاییدهای مرحله' @@ -487,4 +485,4 @@ class StepApproval(models.Model): def __str__(self): - return f"{self.step_instance} - {self.role} - {self.decision}" + return f"{self.step_instance} - {self.role} - تایید شده" diff --git a/processes/templates/processes/instance_summary.html b/processes/templates/processes/instance_summary.html index ad84b59..a8529c6 100644 --- a/processes/templates/processes/instance_summary.html +++ b/processes/templates/processes/instance_summary.html @@ -95,32 +95,113 @@
گزارش نصب
- {% if latest_report and latest_report.assignment and latest_report.assignment.installer %} - نصاب: {{ latest_report.assignment.installer.get_full_name|default:latest_report.assignment.installer.username }} - {% endif %} +
+ {% if installation_delay_days > 0 %} + + {{ installation_delay_days }} روز تاخیر + + {% elif installation_assignment and latest_report %} + + به موقع + + {% endif %} + {% if latest_report and latest_report.assignment and latest_report.assignment.installer %} + نصاب: {{ latest_report.assignment.installer.get_full_name|default:latest_report.assignment.installer.username }} + {% endif %} +
{% if latest_report %} -
-
-

تاریخ مراجعه: {{ latest_report.visited_date|to_jalali|default:'-' }}

+ +
+
+

تاریخ مراجعه: {{ latest_report.visited_date|to_jalali|default:'-' }}

+
+ {% if installation_assignment.scheduled_date %} +
+

تاریخ برنامه‌ریزی: {{ installation_assignment.scheduled_date|to_jalali }}

+
+ {% endif %} +

سریال کنتور جدید: {{ latest_report.new_water_meter_serial|default:'-' }}

+
+

شماره پلمپ: {{ latest_report.seal_number|default:'-' }}

-
+

کنتور مشکوک: {{ latest_report.is_meter_suspicious|yesno:'بله,خیر' }}

+
+ {% if latest_report.sim_number %} +
+

شماره سیمکارت: {{ latest_report.sim_number }}

+
+ {% endif %} + {% if latest_report.meter_type %} +
+

نوع کنتور: {{ latest_report.get_meter_type_display }}

+
+ {% endif %} + {% if latest_report.meter_size %} +
+

سایز کنتور: {{ latest_report.meter_size }}

+
+ {% endif %} + {% if latest_report.water_meter_manufacturer %} +
+

سازنده: {{ latest_report.water_meter_manufacturer.name }}

+
+ {% endif %} + {% if latest_report.discharge_pipe_diameter %} +
+

قطر لوله آبده: {{ latest_report.discharge_pipe_diameter }} اینچ

+
+ {% endif %} + {% if latest_report.usage_type %} +
+

نوع مصرف: {{ latest_report.get_usage_type_display }}

+
+ {% endif %} + {% if latest_report.driving_force %} +
+

نیرو محرکه: {{ latest_report.driving_force }}

+
+ {% endif %} + {% if latest_report.motor_power %} +
+

قدرت موتور: {{ latest_report.motor_power }} کیلووات ساعت

+
+ {% endif %} + {% if latest_report.exploitation_license_number %} +
+

شماره پروانه: {{ latest_report.exploitation_license_number }}

+
+ {% endif %} + {% if latest_report.pre_calibration_flow_rate %} +
+

دبی قبل از کالیبراسیون: {{ latest_report.pre_calibration_flow_rate }} لیتر/ثانیه

+
+ {% endif %} + {% if latest_report.post_calibration_flow_rate %} +
+

دبی بعد از کالیبراسیون: {{ latest_report.post_calibration_flow_rate }} لیتر/ثانیه

+
+ {% endif %} +

UTM X: {{ latest_report.utm_x|default:'-' }}

+
+

UTM Y: {{ latest_report.utm_y|default:'-' }}

+ {% if latest_report.description %} -
-

توضیحات:

+
+
توضیحات
{{ latest_report.description }}
{% endif %} -
-
عکس‌ها
+ +
عکس‌ها
{% for p in latest_report.photos.all %}
photo
diff --git a/processes/templates/processes/request_list.html b/processes/templates/processes/request_list.html index 5640425..9ec7e92 100644 --- a/processes/templates/processes/request_list.html +++ b/processes/templates/processes/request_list.html @@ -37,12 +37,14 @@
+ {% if not request.user|is_installer %} + {% endif %} {% if request.user|is_broker %}
پرینت - {% if request.user|is_manager and step_instance.status != 'approved' and step_instance.status != 'completed' and invoice.remaining_amount != 0 %} + {% if request.user|is_manager and step_instance.status != 'approved' and step_instance.status != 'completed' and invoice.get_remaining_amount != 0 %} @@ -128,17 +128,17 @@
پرداختی‌ها
-
{{ invoice.paid_amount|floatformat:0|intcomma:False }} تومان
+
{{ invoice.get_paid_amount|floatformat:0|intcomma:False }} تومان
مانده
-
{{ invoice.remaining_amount|floatformat:0|intcomma:False }} تومان
+
{{ invoice.get_remaining_amount|floatformat:0|intcomma:False }} تومان
- {% if invoice.remaining_amount <= 0 %} + {% if invoice.get_remaining_amount <= 0 %} تسویه کامل {% else %} باقی‌مانده دارد @@ -318,9 +318,9 @@
diff --git a/invoices/views.py b/invoices/views.py index 0df8191..778d837 100644 --- a/invoices/views.py +++ b/invoices/views.py @@ -942,8 +942,8 @@ def final_settlement_step(request, instance_id, step_id): # Build approver statuses for template (include reason to display in UI) reqs = list(step.approver_requirements.select_related('role').all()) - approvals = list(step_instance.approvals.select_related('role').all()) - rejections = list(step_instance.rejections.select_related('role').all()) + approvals = list(step_instance.approvals.select_related('role', 'approved_by').filter(is_deleted=False)) + rejections = list(step_instance.rejections.select_related('role', 'rejected_by').filter(is_deleted=False)) approvals_by_role = {a.role_id: a for a in approvals} rejections_by_role = {r.role_id: r for r in rejections} approver_statuses = [] @@ -978,8 +978,8 @@ def final_settlement_step(request, instance_id, step_id): # Compute whether current user has already decided (approved/rejected) current_user_has_decided = False try: - user_has_approval = step_instance.approvals.filter(approved_by=request.user).exists() - user_has_rejection = step_instance.rejections.filter(rejected_by=request.user).exists() + user_has_approval = step_instance.approvals.filter(approved_by=request.user, is_deleted=False).exists() + user_has_rejection = step_instance.rejections.filter(rejected_by=request.user, is_deleted=False).exists() current_user_has_decided = bool(user_has_approval or user_has_rejection) except Exception: current_user_has_decided = False @@ -997,8 +997,8 @@ def final_settlement_step(request, instance_id, step_id): if action == 'approve': # enforce zero remaining invoice.calculate_totals() - if invoice.remaining_amount != 0: - messages.error(request, f"تا زمانی که مانده فاکتور صفر نشده امکان تایید نیست (مانده فعلی: {invoice.remaining_amount})") + if invoice.get_remaining_amount() != 0: + messages.error(request, f"تا زمانی که مانده فاکتور صفر نشده امکان تایید نیست (مانده فعلی: {invoice.get_remaining_amount()})") return redirect('invoices:final_settlement_step', instance_id=instance.id, step_id=step.id) StepApproval.objects.create( step_instance=step_instance, @@ -1203,8 +1203,8 @@ def add_final_payment(request, instance_id, step_id): 'redirect': reverse('invoices:final_settlement_step', args=[instance.id, step_id]), 'totals': { 'final_amount': str(invoice.final_amount), - 'paid_amount': str(invoice.paid_amount), - 'remaining_amount': str(invoice.remaining_amount), + 'paid_amount': str(invoice.get_paid_amount()), + 'remaining_amount': str(invoice.get_remaining_amount()), } }) @@ -1216,14 +1216,17 @@ def delete_final_payment(request, instance_id, step_id, payment_id): step = get_object_or_404(instance.process.steps, id=step_id) invoice = get_object_or_404(Invoice, process_instance=instance) payment = get_object_or_404(Payment, id=payment_id, invoice=invoice) + # Only BROKER can delete final settlement payments try: if not (hasattr(request.user, 'profile') and request.user.profile.has_role(UserRoles.BROKER)): return JsonResponse({'success': False, 'message': 'شما مجوز حذف تراکنش تسویه را ندارید'}, status=403) except Exception: return JsonResponse({'success': False, 'message': 'شما مجوز حذف تراکنش تسویه را ندارید'}, status=403) + + # Delete payment and recalculate invoice totals payment.hard_delete() - invoice.refresh_from_db() + invoice.calculate_totals() # This is what was missing! # On delete, return to awaiting approval try: @@ -1231,16 +1234,11 @@ def delete_final_payment(request, instance_id, step_id, payment_id): si.status = 'in_progress' si.completed_at = None si.save() - try: - for appr in list(si.approvals.all()): - appr.delete() - except Exception: - pass - try: - for rej in list(si.rejections.all()): - rej.delete() - except Exception: - pass + # Clear approvals and rejections (like in quote_payment) + for appr in list(si.approvals.all()): + appr.delete() + for rej in list(si.rejections.all()): + rej.delete() except Exception: pass @@ -1274,7 +1272,7 @@ def delete_final_payment(request, instance_id, step_id, payment_id): return JsonResponse({'success': True, 'redirect': reverse('invoices:final_settlement_step', args=[instance.id, step_id]), 'totals': { 'final_amount': str(invoice.final_amount), - 'paid_amount': str(invoice.paid_amount), - 'remaining_amount': str(invoice.remaining_amount), + 'paid_amount': str(invoice.get_paid_amount()), + 'remaining_amount': str(invoice.get_remaining_amount()), }}) diff --git a/processes/templates/processes/instance_summary.html b/processes/templates/processes/instance_summary.html index a8529c6..52b0bf2 100644 --- a/processes/templates/processes/instance_summary.html +++ b/processes/templates/processes/instance_summary.html @@ -37,9 +37,9 @@ پرینت فاکتور {% endif %} - + بازگشت @@ -57,8 +57,8 @@ {% if invoice %}
مبلغ نهایی
{{ invoice.final_amount|floatformat:0|intcomma:False }} تومان
-
پرداختی‌ها
{{ invoice.paid_amount|floatformat:0|intcomma:False }} تومان
-
مانده
{{ invoice.remaining_amount|floatformat:0|intcomma:False }} تومان
+
پرداختی‌ها
{{ invoice.get_paid_amount|floatformat:0|intcomma:False }} تومان
+
مانده
{{ invoice.get_remaining_amount|floatformat:0|intcomma:False }} تومان
@@ -256,6 +256,30 @@ + + + {% endblock %} diff --git a/processes/views.py b/processes/views.py index dca9607..b5936e4 100644 --- a/processes/views.py +++ b/processes/views.py @@ -643,7 +643,7 @@ def export_requests_excel(request): ).select_related('process_instance') for invoice in invoices: - if invoice.remaining_amount == 0: # Fully settled + if invoice.get_remaining_amount() == 0: # Fully settled # Find the last payment date for this invoice last_payment = Payment.objects.filter( invoice__process_instance=invoice.process_instance, From c76de99e8419a3ff29ffbc660d041615ecadbd2d Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Sat, 4 Oct 2025 12:23:37 +0330 Subject: [PATCH 07/28] fix approval user in execl --- processes/views.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/processes/views.py b/processes/views.py index b5936e4..e959b2e 100644 --- a/processes/views.py +++ b/processes/views.py @@ -652,18 +652,25 @@ def export_requests_excel(request): if last_payment: settlement_dates_map[invoice.process_instance_id] = last_payment.created - # Get installation approval data + # Get installation approval data by Water Resource Manager role from processes.models import StepInstance, StepApproval + from accounts.models import Role + from common.consts import UserRoles + + # Get the Water Resource Manager role + water_manager_role = Role.objects.filter(slug=UserRoles.WATER_RESOURCE_MANAGER.value).first() + installation_steps = StepInstance.objects.filter( process_instance_id__in=assignment_ids, - step__slug='installation_report', # Assuming this is the slug for installation step + step__order=6, # Installation report step is order 6 status='completed' ).select_related('process_instance') for step_instance in installation_steps: - # Get the approval that completed this step + # Get the approval by Water Resource Manager role that completed this step approval = StepApproval.objects.filter( step_instance=step_instance, + role=water_manager_role, is_deleted=False ).select_related('approved_by').order_by('-created_at').first() From 001dc313f6f1a01da8122b1c1a5202c3ec8661c8 Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Sat, 4 Oct 2025 14:05:33 +0330 Subject: [PATCH 08/28] add requiered field --- accounts/forms.py | 10 +++++++--- accounts/models.py | 10 ---------- db.sqlite3 | Bin 3833856 -> 3854336 bytes installations/forms.py | 43 +++++++++++++++++++++++++++-------------- wells/forms.py | 8 +++----- wells/models.py | 6 ++++-- 6 files changed, 42 insertions(+), 35 deletions(-) diff --git a/accounts/forms.py b/accounts/forms.py index e5f3b90..eca6ffc 100644 --- a/accounts/forms.py +++ b/accounts/forms.py @@ -64,21 +64,25 @@ class CustomerForm(forms.ModelForm): 'address': forms.Textarea(attrs={ 'class': 'form-control', 'placeholder': 'آدرس کامل', - 'rows': '3' + 'rows': '3', + 'required': True }), 'card_number': forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': 'شماره کارت بانکی', - 'maxlength': '16' + 'maxlength': '16', + 'required': True }), 'account_number': forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': 'شماره حساب بانکی', - 'maxlength': '20' + 'maxlength': '20', + 'required': True }), 'bank_name': forms.Select(attrs={ 'class': 'form-control', 'placeholder': 'نام بانک', + 'required': True }), } labels = { diff --git a/accounts/models.py b/accounts/models.py index f6ccf3d..b896581 100644 --- a/accounts/models.py +++ b/accounts/models.py @@ -27,9 +27,7 @@ class Profile(BaseModel): ) national_code = models.CharField( max_length=10, - null=True, verbose_name="کد ملی", - blank=True, validators=[ RegexValidator( regex=r'^\d+$', @@ -39,15 +37,11 @@ class Profile(BaseModel): ] ) address = models.TextField( - null=True, verbose_name="آدرس", - blank=True ) card_number = models.CharField( max_length=16, - null=True, verbose_name="شماره کارت", - blank=True, validators=[ RegexValidator( regex=r'^\d+$', @@ -58,9 +52,7 @@ class Profile(BaseModel): ) account_number = models.CharField( max_length=20, - null=True, verbose_name="شماره حساب", - blank=True, validators=[ RegexValidator( regex=r'^\d+$', @@ -72,9 +64,7 @@ class Profile(BaseModel): bank_name = models.CharField( max_length=255, choices=BANK_CHOICES, - null=True, verbose_name="نام بانک", - blank=True ) phone_number_1 = models.CharField( max_length=11, diff --git a/db.sqlite3 b/db.sqlite3 index 02dd5e48ff840e6b3f07141a66237bed9aaa5cc6..54d44d296cedfc0b5ea29060c277b1b986714ea5 100644 GIT binary patch delta 31174 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 diff --git a/installations/forms.py b/installations/forms.py index ae1a13c..86e7428 100644 --- a/installations/forms.py +++ b/installations/forms.py @@ -34,24 +34,29 @@ class InstallationReportForm(forms.ModelForm): 'required': True }), 'new_water_meter_serial': forms.TextInput(attrs={ - 'class': 'form-control' + 'class': 'form-control', + 'required': True }), 'seal_number': forms.TextInput(attrs={ - 'class': 'form-control' + 'class': 'form-control', + 'required': True }), 'utm_x': forms.NumberInput(attrs={ 'class': 'form-control', - 'step': '1' + 'step': '1', + 'required': True }), 'utm_y': forms.NumberInput(attrs={ 'class': 'form-control', - 'step': '1' + 'step': '1', + 'required': True }), 'meter_type': forms.Select(attrs={ - 'class': 'form-select' + 'class': 'form-select', + 'required': True }, choices=[ ('', 'انتخاب کنید'), - ('smart', 'هوشمند (آبی/برق)'), + ('smart', 'هوشمند (آب و برق)'), ('volumetric', 'حجمی') ]), 'meter_size': forms.TextInput(attrs={ @@ -60,10 +65,12 @@ class InstallationReportForm(forms.ModelForm): 'discharge_pipe_diameter': forms.NumberInput(attrs={ 'class': 'form-control', 'min': '0', - 'step': '1' + 'step': '1', + 'required': True }), 'usage_type': forms.Select(attrs={ - 'class': 'form-select' + 'class': 'form-select', + 'required': True }, choices=[ ('', 'انتخاب کنید'), ('domestic', 'شرب و خدمات'), @@ -77,31 +84,37 @@ class InstallationReportForm(forms.ModelForm): 'motor_power': forms.NumberInput(attrs={ 'class': 'form-control', 'min': '0', - 'step': '1' + 'step': '1', + 'required': True }), 'pre_calibration_flow_rate': forms.NumberInput(attrs={ 'class': 'form-control', 'min': '0', - 'step': '0.01' + 'step': '0.01', + 'required': True }), 'post_calibration_flow_rate': forms.NumberInput(attrs={ 'class': 'form-control', 'min': '0', - 'step': '0.01' + 'step': '0.01', + 'required': True }), 'water_meter_manufacturer': forms.Select(attrs={ 'class': 'form-select', - 'id': 'id_water_meter_manufacturer' + 'id': 'id_water_meter_manufacturer', + 'required': True }), 'sim_number': forms.TextInput(attrs={ - 'class': 'form-control' + 'class': 'form-control', + 'required': True }), 'driving_force': forms.TextInput(attrs={ - 'class': 'form-control' + 'class': 'form-control', + 'required': True }), 'is_meter_suspicious': forms.CheckboxInput(attrs={ 'class': 'form-check-input', - 'id': 'id_is_meter_suspicious' + 'id': 'id_is_meter_suspicious', }), 'description': forms.Textarea(attrs={ 'class': 'form-control', diff --git a/wells/forms.py b/wells/forms.py index 7917117..8c132ca 100644 --- a/wells/forms.py +++ b/wells/forms.py @@ -83,12 +83,10 @@ class WellForm(forms.ModelForm): 'utm_x': forms.NumberInput(attrs={ 'class': 'form-control', 'placeholder': 'X UTM', - 'required': 'required', }), 'utm_y': forms.NumberInput(attrs={ 'class': 'form-control', 'placeholder': 'Y UTM', - 'required': 'required', }), 'utm_zone': forms.NumberInput(attrs={ 'class': 'form-control', @@ -97,17 +95,17 @@ class WellForm(forms.ModelForm): 'max': '60' }), 'utm_hemisphere': forms.Select(attrs={ - 'class': 'form-select' + 'class': 'form-select', }), 'well_power': forms.NumberInput(attrs={ 'class': 'form-control', 'placeholder': 'قدرت چاه', - 'min': '0' + 'min': '0', + 'required': True }), 'reference_letter_number': forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': 'شماره معرفی نامه', - 'required': True }), 'reference_letter_date': forms.DateInput(attrs={ 'class': 'form-control', diff --git a/wells/models.py b/wells/models.py index c82f052..2af3d8e 100644 --- a/wells/models.py +++ b/wells/models.py @@ -80,11 +80,15 @@ class Well(SluggedModel): max_digits=10, decimal_places=0, verbose_name="X UTM", + null=True, + blank=True ) utm_y = models.DecimalField( max_digits=10, decimal_places=0, verbose_name="Y UTM", + null=True, + blank=True ) utm_zone = models.PositiveIntegerField( verbose_name="زون UTM", @@ -103,8 +107,6 @@ class Well(SluggedModel): well_power = models.PositiveIntegerField( verbose_name="قدرت چاه", - null=True, - blank=True ) reference_letter_number = models.CharField( From d22473e14a637ee707b5d4f8f6d7ce4214f4dbb4 Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Sat, 4 Oct 2025 14:18:21 +0330 Subject: [PATCH 09/28] add requiered field --- ...storicalprofile_account_number_and_more.py | 74 ++++++++++++++++++ db.sqlite3 | Bin 3854336 -> 3928064 bytes ...006_alter_historicalwell_utm_x_and_more.py | 43 ++++++++++ 3 files changed, 117 insertions(+) create mode 100644 accounts/migrations/0009_alter_historicalprofile_account_number_and_more.py create mode 100644 wells/migrations/0006_alter_historicalwell_utm_x_and_more.py diff --git a/accounts/migrations/0009_alter_historicalprofile_account_number_and_more.py b/accounts/migrations/0009_alter_historicalprofile_account_number_and_more.py new file mode 100644 index 0000000..b9e015a --- /dev/null +++ b/accounts/migrations/0009_alter_historicalprofile_account_number_and_more.py @@ -0,0 +1,74 @@ +# Generated by Django 5.2.4 on 2025-10-04 10:36 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('accounts', '0008_alter_historicalprofile_phone_number_1_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='historicalprofile', + name='account_number', + field=models.CharField(default=1, max_length=20, validators=[django.core.validators.RegexValidator(code='invalid_account_number', message='شماره حساب باید فقط شامل اعداد باشد.', regex='^\\d+$')], verbose_name='شماره حساب'), + preserve_default=False, + ), + migrations.AlterField( + model_name='historicalprofile', + name='address', + field=models.TextField(default=1, verbose_name='آدرس'), + preserve_default=False, + ), + migrations.AlterField( + model_name='historicalprofile', + name='bank_name', + field=models.CharField(choices=[('mellat', 'بانک ملت'), ('saman', 'بانک سامان'), ('parsian', 'بانک پارسیان'), ('sina', 'بانک سینا'), ('tejarat', 'بانک تجارت'), ('tosee', 'بانک توسعه'), ('iran_zamin', 'بانک ایران زمین'), ('meli', 'بانک ملی'), ('saderat', 'بانک توسعه صادرات'), ('iran_zamin', 'بانک ایران زمین'), ('refah', 'بانک رفاه'), ('eghtesad_novin', 'بانک اقتصاد نوین'), ('pasargad', 'بانک پاسارگاد'), ('other', 'سایر')], default=1, max_length=255, verbose_name='نام بانک'), + preserve_default=False, + ), + migrations.AlterField( + model_name='historicalprofile', + name='card_number', + field=models.CharField(default=1, max_length=16, validators=[django.core.validators.RegexValidator(code='invalid_card_number', message='شماره کارت باید فقط شامل اعداد باشد.', regex='^\\d+$')], verbose_name='شماره کارت'), + preserve_default=False, + ), + migrations.AlterField( + model_name='historicalprofile', + name='national_code', + field=models.CharField(default=1, max_length=10, validators=[django.core.validators.RegexValidator(code='invalid_national_code', message='کد ملی باید فقط شامل اعداد باشد.', regex='^\\d+$')], verbose_name='کد ملی'), + preserve_default=False, + ), + migrations.AlterField( + model_name='profile', + name='account_number', + field=models.CharField(default=1, max_length=20, validators=[django.core.validators.RegexValidator(code='invalid_account_number', message='شماره حساب باید فقط شامل اعداد باشد.', regex='^\\d+$')], verbose_name='شماره حساب'), + preserve_default=False, + ), + migrations.AlterField( + model_name='profile', + name='address', + field=models.TextField(default=1, verbose_name='آدرس'), + preserve_default=False, + ), + migrations.AlterField( + model_name='profile', + name='bank_name', + field=models.CharField(choices=[('mellat', 'بانک ملت'), ('saman', 'بانک سامان'), ('parsian', 'بانک پارسیان'), ('sina', 'بانک سینا'), ('tejarat', 'بانک تجارت'), ('tosee', 'بانک توسعه'), ('iran_zamin', 'بانک ایران زمین'), ('meli', 'بانک ملی'), ('saderat', 'بانک توسعه صادرات'), ('iran_zamin', 'بانک ایران زمین'), ('refah', 'بانک رفاه'), ('eghtesad_novin', 'بانک اقتصاد نوین'), ('pasargad', 'بانک پاسارگاد'), ('other', 'سایر')], default=1, max_length=255, verbose_name='نام بانک'), + preserve_default=False, + ), + migrations.AlterField( + model_name='profile', + name='card_number', + field=models.CharField(default=1, max_length=16, validators=[django.core.validators.RegexValidator(code='invalid_card_number', message='شماره کارت باید فقط شامل اعداد باشد.', regex='^\\d+$')], verbose_name='شماره کارت'), + preserve_default=False, + ), + migrations.AlterField( + model_name='profile', + name='national_code', + field=models.CharField(default=1, max_length=10, validators=[django.core.validators.RegexValidator(code='invalid_national_code', message='کد ملی باید فقط شامل اعداد باشد.', regex='^\\d+$')], verbose_name='کد ملی'), + preserve_default=False, + ), + ] diff --git a/db.sqlite3 b/db.sqlite3 index 54d44d296cedfc0b5ea29060c277b1b986714ea5..d314803063c280b8ae34a01596f875ec3097a0d8 100644 GIT binary patch delta 30027 zcmd6w33L=y*7&=sx9Y8`lTOG+l1{qGMiP3j>WC0VL6jX45ZPrh4v?@Zn}mvS9A{L5 z3)gLi_&MXsDoVQpI-`gnFn)uGh@g(+hM*&k3xV%e^;T8sPM4nZKj$BK-RbIAzq<97 z`|i7S-^-fLFNrlLP7@tPS)CeR^YA#?xUJ

2BbCS)p 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%0Ai;Le#e;U?JL%Zc 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�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 SS+c2z)>Owi2kkm2P5BpRF7`73 diff --git a/wells/migrations/0006_alter_historicalwell_utm_x_and_more.py b/wells/migrations/0006_alter_historicalwell_utm_x_and_more.py new file mode 100644 index 0000000..2383bae --- /dev/null +++ b/wells/migrations/0006_alter_historicalwell_utm_x_and_more.py @@ -0,0 +1,43 @@ +# Generated by Django 5.2.4 on 2025-10-04 10:43 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('wells', '0005_alter_historicalwell_utm_x_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='historicalwell', + name='utm_x', + field=models.DecimalField(blank=True, decimal_places=0, max_digits=10, null=True, verbose_name='X UTM'), + ), + migrations.AlterField( + model_name='historicalwell', + name='utm_y', + field=models.DecimalField(blank=True, decimal_places=0, max_digits=10, null=True, verbose_name='Y UTM'), + ), + migrations.AlterField( + model_name='historicalwell', + name='well_power', + field=models.PositiveIntegerField(verbose_name='قدرت چاه'), + ), + migrations.AlterField( + model_name='well', + name='utm_x', + field=models.DecimalField(blank=True, decimal_places=0, max_digits=10, null=True, verbose_name='X UTM'), + ), + migrations.AlterField( + model_name='well', + name='utm_y', + field=models.DecimalField(blank=True, decimal_places=0, max_digits=10, null=True, verbose_name='Y UTM'), + ), + migrations.AlterField( + model_name='well', + name='well_power', + field=models.PositiveIntegerField(verbose_name='قدرت چاه'), + ), + ] From 0d48e7281a7fd6b3859e7c51ee40e15fe1e3777b Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Tue, 7 Oct 2025 07:07:55 +0330 Subject: [PATCH 10/28] fix price seperation --- templates/_base.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/templates/_base.html b/templates/_base.html index 94ebdd1..0a41233 100644 --- a/templates/_base.html +++ b/templates/_base.html @@ -169,6 +169,8 @@ layout-navbar-fixed layout-menu-fixed layout-compact + + From b406f1d7c497e32fa190df33a073215fdec20918 Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Tue, 7 Oct 2025 07:08:03 +0330 Subject: [PATCH 11/28] fix price seperation --- .../invoices/final_invoice_step.html | 15 ++++++++-- .../invoices/final_settlement_step.html | 28 ++++++++++++++++++- .../invoices/quote_payment_step.html | 11 ++++++-- 3 files changed, 49 insertions(+), 5 deletions(-) diff --git a/invoices/templates/invoices/final_invoice_step.html b/invoices/templates/invoices/final_invoice_step.html index 1d99072..17e6730 100644 --- a/invoices/templates/invoices/final_invoice_step.html +++ b/invoices/templates/invoices/final_invoice_step.html @@ -224,7 +224,7 @@

- +
@@ -246,8 +246,17 @@ else { el.classList.add('show'); el.style.display = 'block'; } } function submitSpecialCharge(){ - const fd = new FormData(document.getElementById('specialChargeForm')); + const form = document.getElementById('specialChargeForm'); + const fd = new FormData(form); fd.append('csrfmiddlewaretoken', document.querySelector('input[name=csrfmiddlewaretoken]').value); + // Ensure raw numeric amount is sent + (function ensureRawAmount(){ + const amountInput = document.getElementById('id_charge_amount'); + if (amountInput){ + const raw = (amountInput.getAttribute('data-raw-value') || amountInput.value.replace(/\D/g, '')); + if (raw) fd.set('amount', raw); + } + })(); fetch('{% url "invoices:add_special_charge" instance.id step.id %}', { method: 'POST', body: fd }) .then(r=>r.json()).then(resp=>{ if (resp.success){ @@ -285,6 +294,8 @@ } }).catch(()=> showToast('خطا در ارتباط با سرور', 'danger')); }); + + // Number formatting is handled by number-formatter.js {% endblock %} diff --git a/invoices/templates/invoices/final_settlement_step.html b/invoices/templates/invoices/final_settlement_step.html index a4767d4..e03a7e2 100644 --- a/invoices/templates/invoices/final_settlement_step.html +++ b/invoices/templates/invoices/final_settlement_step.html @@ -76,7 +76,7 @@
- +
@@ -405,6 +405,14 @@ function buildForm(){ const fd = new FormData(document.getElementById('formFinalPayment')); + // Ensure raw numeric amount is sent + (function ensureRawAmount(){ + const amountInput = document.getElementById('id_amount'); + if (amountInput){ + const raw = (amountInput.getAttribute('data-raw-value') || amountInput.value.replace(/\D/g, '')); + if (raw) fd.set('amount', raw); + } + })(); // تبدیل تاریخ شمسی به میلادی برای ارسال const persianDateValue = $('#id_payment_date').val(); @@ -465,6 +473,24 @@ } // Legacy approve button removed; using modal forms below + + // Handle AJAX form submission with number formatting + $(document).ready(function() { + // Override buildForm function for AJAX submission + const originalBuildForm = window.buildForm; + window.buildForm = function() { + // Set raw values before creating FormData + if (window.setRawValuesForSubmission) { + window.setRawValuesForSubmission(); + } + const result = originalBuildForm ? originalBuildForm() : new FormData(document.querySelector('form')); + // Restore formatted values for display + if (window.restoreFormattedValues) { + window.restoreFormattedValues(); + } + return result; + }; + }); {% endblock %} diff --git a/invoices/templates/invoices/quote_payment_step.html b/invoices/templates/invoices/quote_payment_step.html index e9bc07f..4a071f8 100644 --- a/invoices/templates/invoices/quote_payment_step.html +++ b/invoices/templates/invoices/quote_payment_step.html @@ -72,7 +72,7 @@
- +
@@ -366,6 +366,12 @@ } const form = document.getElementById('formAddPayment'); const fd = buildFormData(form); + // Ensure raw numeric amount is sent + (function ensureRawAmount(){ + const amountInput = document.getElementById('id_amount'); + const raw = (amountInput.getAttribute('data-raw-value') || amountInput.value.replace(/\D/g, '')); + if (raw) fd.set('amount', raw); + })(); // تبدیل تاریخ شمسی به میلادی برای ارسال const persianDateValue = $('#id_payment_date').val(); @@ -383,7 +389,7 @@ setTimeout(() => { window.location.href = resp.redirect; }, 700); } } else { - showToast(resp.message + ':' + resp.error || 'خطا در ثبت فیش', 'danger'); + showToast((resp.message || resp.error || 'خطا در ثبت فیش'), 'danger'); } }).catch(() => showToast('خطا در ارتباط با سرور', 'danger')); }); @@ -460,6 +466,7 @@ } catch (e) { console.error('Error initializing Persian Date Picker:', e); } } })(); + {% endblock %} From 65cc48769dc3f77544da05f90ed1ef5aa759bdcc Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Tue, 7 Oct 2025 07:08:23 +0330 Subject: [PATCH 12/28] fix price seperation --- static/assets/js/number-formatter.js | 144 +++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 static/assets/js/number-formatter.js diff --git a/static/assets/js/number-formatter.js b/static/assets/js/number-formatter.js new file mode 100644 index 0000000..47b2e88 --- /dev/null +++ b/static/assets/js/number-formatter.js @@ -0,0 +1,144 @@ +/** + * Number Formatter Utility + * Formats numbers with comma separators for better readability + */ + +// Format number with comma separators (e.g., 1234567 -> 1,234,567) +function formatNumber(num) { + if (!num) return ''; + return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); +} + +// Remove comma separators from formatted number +function unformatNumber(str) { + if (!str) return ''; + return str.replace(/,/g, ''); +} + +// Extract only digits from any string +function extractDigits(str) { + if (!str) return ''; + return str.replace(/\D/g, ''); +} + +// Initialize number formatting for specified input selectors +function initNumberFormatting(selectors) { + if (typeof $ === 'undefined') { + console.warn('jQuery not found. Number formatting requires jQuery.'); + return; + } + + $(document).ready(function() { + selectors.forEach(function(selector) { + // Store cursor position to maintain it after formatting + function setCursorPosition(input, pos) { + if (input.setSelectionRange) { + input.setSelectionRange(pos, pos); + } + } + + $(selector).on('input', function(e) { + let input = $(this); + let inputElement = this; + let value = input.val(); + let cursorPos = inputElement.selectionStart; + + // Extract only digits + let digitsOnly = extractDigits(value); + + // Store raw value + input.attr('data-raw-value', digitsOnly); + + // Format and set the value + let formattedValue = formatNumber(digitsOnly); + input.val(formattedValue); + + // Adjust cursor position + let oldLength = value.length; + let newLength = formattedValue.length; + let newCursorPos = cursorPos + (newLength - oldLength); + + // Make sure cursor position is valid + if (newCursorPos < 0) newCursorPos = 0; + if (newCursorPos > newLength) newCursorPos = newLength; + + // Set cursor position after a short delay + setTimeout(function() { + setCursorPosition(inputElement, newCursorPos); + }, 1); + }); + + // Handle paste events + $(selector).on('paste', function(e) { + let input = $(this); + setTimeout(function() { + let value = input.val(); + let digitsOnly = extractDigits(value); + input.attr('data-raw-value', digitsOnly); + input.val(formatNumber(digitsOnly)); + }, 1); + }); + }); + + // Before form submission, replace formatted values with raw values + $('form').on('submit', function() { + selectors.forEach(function(selector) { + let input = $(selector); + let rawValue = input.attr('data-raw-value'); + if (rawValue) { + input.val(rawValue); + } + }); + }); + }); +} + +// Helper function to get raw value from formatted input +function getRawValue(input) { + return $(input).attr('data-raw-value') || unformatNumber($(input).val()); +} + +// Helper function to set raw value before AJAX submission +function setRawValuesForSubmission(selectors) { + selectors.forEach(function(selector) { + let input = $(selector); + let rawValue = input.attr('data-raw-value'); + if (rawValue) { + input.val(rawValue); + } + }); +} + +// Helper function to restore formatted values after AJAX submission +function restoreFormattedValues(selectors) { + selectors.forEach(function(selector) { + let input = $(selector); + let rawValue = input.attr('data-raw-value'); + if (rawValue) { + input.val(formatNumber(rawValue)); + } + }); +} + +// Auto-initialize for common amount input selectors +$(document).ready(function() { + const commonSelectors = [ + '#id_amount', + '#id_charge_amount', + 'input[name="amount"]', + 'input[name="unit_price"]', + 'input[name="price"]' + ]; + + initNumberFormatting(commonSelectors); + + // Make helper functions globally available for AJAX forms + window.formatNumber = formatNumber; + window.unformatNumber = unformatNumber; + window.getRawValue = getRawValue; + // Avoid name collision causing recursion by aliasing helpers + const __nf_setRawValuesForSubmission = setRawValuesForSubmission; + const __nf_restoreFormattedValues = restoreFormattedValues; + window.setRawValuesForSubmission = function() { __nf_setRawValuesForSubmission(commonSelectors); }; + window.restoreFormattedValues = function() { __nf_restoreFormattedValues(commonSelectors); }; +}); From 169a9bd6247ec9c9878890656f7cc17181a2df0e Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Tue, 7 Oct 2025 07:45:09 +0330 Subject: [PATCH 13/28] fix force approve and vat show --- .gitignore | 4 +- invoices/models.py | 18 +++++ .../invoices/final_invoice_print.html | 4 + .../invoices/final_invoice_step.html | 4 + .../invoices/final_settlement_step.html | 4 +- .../invoices/quote_preview_step.html | 2 + invoices/templates/invoices/quote_print.html | 4 + invoices/views.py | 79 +++++++++++++++++++ .../templates/processes/request_list.html | 7 +- processes/views.py | 12 +++ 10 files changed, 133 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 77e02cd..d975f31 100644 --- a/.gitignore +++ b/.gitignore @@ -9,8 +9,8 @@ *.pyc __pycache__/ local_settings.py -# *.sqlite3 -# db.sqlite3 +*.sqlite3 +db.sqlite3 db.sqlite3-journal media #static diff --git a/invoices/models.py b/invoices/models.py index 4a48c8c..89dcd50 100644 --- a/invoices/models.py +++ b/invoices/models.py @@ -151,6 +151,15 @@ class Quote(NameSlugModel): remaining = Decimal('0') return remaining + def get_vat_amount(self) -> Decimal: + """محاسبه مبلغ مالیات به صورت جداگانه بر اساس VAT_RATE.""" + base_amount = (self.total_amount or Decimal('0')) - (self.discount_amount or Decimal('0')) + try: + vat_rate = Decimal(str(getattr(settings, 'VAT_RATE', 0))) + except Exception: + vat_rate = Decimal('0') + return base_amount * vat_rate + class QuoteItem(BaseModel): """مدل آیتم‌های پیش‌فاکتور""" quote = models.ForeignKey(Quote, on_delete=models.CASCADE, related_name='items', verbose_name="پیش‌فاکتور") @@ -291,6 +300,15 @@ class Invoice(NameSlugModel): remaining = self.final_amount - paid return remaining + def get_vat_amount(self) -> Decimal: + """محاسبه مبلغ مالیات به صورت جداگانه بر اساس VAT_RATE.""" + base_amount = (self.total_amount or Decimal('0')) - (self.discount_amount or Decimal('0')) + try: + vat_rate = Decimal(str(getattr(settings, 'VAT_RATE', 0))) + except Exception: + vat_rate = Decimal('0') + return base_amount * vat_rate + def get_status_display_with_color(self): """نمایش وضعیت با رنگ""" diff --git a/invoices/templates/invoices/final_invoice_print.html b/invoices/templates/invoices/final_invoice_print.html index d9c8333..1b28c4e 100644 --- a/invoices/templates/invoices/final_invoice_print.html +++ b/invoices/templates/invoices/final_invoice_print.html @@ -153,6 +153,10 @@
{% endif %} + + + + diff --git a/invoices/templates/invoices/final_invoice_step.html b/invoices/templates/invoices/final_invoice_step.html index 17e6730..3200a48 100644 --- a/invoices/templates/invoices/final_invoice_step.html +++ b/invoices/templates/invoices/final_invoice_step.html @@ -159,6 +159,10 @@ + + + + diff --git a/invoices/templates/invoices/final_settlement_step.html b/invoices/templates/invoices/final_settlement_step.html index e03a7e2..e32fa41 100644 --- a/invoices/templates/invoices/final_settlement_step.html +++ b/invoices/templates/invoices/final_settlement_step.html @@ -60,7 +60,7 @@
- {% if is_broker %} + {% if is_broker and invoice.get_remaining_amount != 0 %}
ثبت تراکنش تسویه
@@ -193,7 +193,7 @@
- {% if approver_statuses %} + {% if approver_statuses and invoice.get_remaining_amount != 0 and step_instance.status != 'completed' %}
وضعیت تاییدها
diff --git a/invoices/templates/invoices/quote_preview_step.html b/invoices/templates/invoices/quote_preview_step.html index eeead73..08e3bd8 100644 --- a/invoices/templates/invoices/quote_preview_step.html +++ b/invoices/templates/invoices/quote_preview_step.html @@ -213,6 +213,7 @@ {% if quote.discount_amount > 0 %}

تخفیف:

{% endif %} +

مالیات بر ارزش افزوده:

مبلغ نهایی (شامل مالیات):

diff --git a/invoices/templates/invoices/quote_print.html b/invoices/templates/invoices/quote_print.html index fc445a6..fb67046 100644 --- a/invoices/templates/invoices/quote_print.html +++ b/invoices/templates/invoices/quote_print.html @@ -212,6 +212,10 @@ {% endif %} + + + + diff --git a/invoices/views.py b/invoices/views.py index 778d837..04ea85c 100644 --- a/invoices/views.py +++ b/invoices/views.py @@ -898,6 +898,29 @@ def add_special_charge(request, instance_id, step_id): unit_price=amount_dec, ) invoice.calculate_totals() + # If the next step was completed, reopen it (set to in_progress) due to invoice change + try: + step = get_object_or_404(instance.process.steps, id=step_id) + next_step = instance.process.steps.filter(order__gt=step.order).first() + if next_step: + si, _ = StepInstance.objects.get_or_create(process_instance=instance, step=next_step) + if si.status in ['completed', 'approved']: + si.status = 'in_progress' + si.completed_at = None + si.save(update_fields=['status', 'completed_at']) + # Clear prior approvals/rejections as the underlying totals changed + try: + for appr in list(si.approvals.all()): + appr.delete() + except Exception: + pass + try: + for rej in list(si.rejections.all()): + rej.delete() + except Exception: + pass + except Exception: + pass return JsonResponse({'success': True, 'redirect': reverse('invoices:final_invoice_step', args=[instance.id, step_id])}) @@ -921,6 +944,29 @@ def delete_special_charge(request, instance_id, step_id, item_id): return JsonResponse({'success': False, 'message': 'امکان حذف این مورد وجود ندارد'}) inv_item.hard_delete() invoice.calculate_totals() + # If the next step was completed, reopen it (set to in_progress) due to invoice change + try: + step = get_object_or_404(instance.process.steps, id=step_id) + next_step = instance.process.steps.filter(order__gt=step.order).first() + if next_step: + si, _ = StepInstance.objects.get_or_create(process_instance=instance, step=next_step) + if si.status in ['completed', 'approved']: + si.status = 'in_progress' + si.completed_at = None + si.save(update_fields=['status', 'completed_at']) + # Clear prior approvals/rejections as the underlying totals changed + try: + for appr in list(si.approvals.all()): + appr.delete() + except Exception: + pass + try: + for rej in list(si.rejections.all()): + rej.delete() + except Exception: + pass + except Exception: + pass return JsonResponse({'success': True, 'redirect': reverse('invoices:final_invoice_step', args=[instance.id, step_id])}) @@ -939,6 +985,23 @@ def final_settlement_step(request, instance_id, step_id): # Ensure step instance exists step_instance, _ = StepInstance.objects.get_or_create(process_instance=instance, step=step, defaults={'status': 'in_progress'}) + + # Auto-complete step when invoice is fully settled (no approvals needed) + try: + invoice.calculate_totals() + if invoice.get_remaining_amount() == 0: + if step_instance.status != 'completed': + step_instance.status = 'completed' + step_instance.completed_at = timezone.now() + step_instance.save() + # if next_step: + # instance.current_step = next_step + # instance.save(update_fields=['current_step']) + # return redirect('processes:step_detail', instance_id=instance.id, step_id=next_step.id) + # return redirect('processes:request_list') + except Exception: + # If totals calculation fails, continue with normal flow + pass # Build approver statuses for template (include reason to display in UI) reqs = list(step.approver_requirements.select_related('role').all()) @@ -1048,6 +1111,14 @@ def final_settlement_step(request, instance_id, step_id): except Exception: messages.error(request, 'فقط مدیر مجاز به تایید اضطراری است.') return redirect('invoices:final_settlement_step', instance_id=instance.id, step_id=step.id) + # Allow emergency approval only when invoice has a remaining (non-zero) + try: + invoice.calculate_totals() + if invoice.get_remaining_amount() == 0: + messages.error(request, 'فاکتور تسویه شده است؛ تایید اضطراری لازم نیست.') + return redirect('invoices:final_settlement_step', instance_id=instance.id, step_id=step.id) + except Exception: + pass # Mark step completed regardless of remaining amount/approvals step_instance.status = 'approved' step_instance.save() @@ -1094,6 +1165,14 @@ def add_final_payment(request, instance_id, step_id): except Exception: return JsonResponse({'success': False, 'message': 'شما مجوز افزودن تراکنش تسویه را ندارید'}, status=403) + # Prevent adding payments if invoice already settled + try: + invoice.calculate_totals() + if invoice.get_remaining_amount() == 0: + return JsonResponse({'success': False, 'message': 'فاکتور تسویه شده است؛ افزودن تراکنش مجاز نیست'}) + except Exception: + pass + amount = (request.POST.get('amount') or '').strip() payment_date = (request.POST.get('payment_date') or '').strip() payment_method = (request.POST.get('payment_method') or '').strip() diff --git a/processes/templates/processes/request_list.html b/processes/templates/processes/request_list.html index 9ec7e92..eee1727 100644 --- a/processes/templates/processes/request_list.html +++ b/processes/templates/processes/request_list.html @@ -245,7 +245,12 @@ {{ item.progress_percentage }}% - + - + @@ -320,7 +320,7 @@
- +
@@ -117,19 +117,19 @@
مبلغ نهایی پیش‌فاکتور (با مالیات)
-
{{ totals.final_amount|floatformat:0|intcomma:False }} تومان
+
{{ totals.final_amount|floatformat:0|intcomma:False }} ریال
مبلغ پرداخت‌شده
-
{{ totals.paid_amount|floatformat:0|intcomma:False }} تومان
+
{{ totals.paid_amount|floatformat:0|intcomma:False }} ریال
مانده
-
{{ totals.remaining_amount|floatformat:0|intcomma:False }} تومان
+
{{ totals.remaining_amount|floatformat:0|intcomma:False }} ریال
@@ -165,7 +165,7 @@ {% for p in payments %}
- + @@ -301,7 +301,7 @@ {% if not totals.is_fully_paid %} آیا مطمئن هستید که می‌خواهید مرحله را تایید کنید؟ {% else %} diff --git a/invoices/templates/invoices/quote_preview_step.html b/invoices/templates/invoices/quote_preview_step.html index 08e3bd8..0742094 100644 --- a/invoices/templates/invoices/quote_preview_step.html +++ b/invoices/templates/invoices/quote_preview_step.html @@ -200,9 +200,9 @@ - + - + {% endfor %} @@ -217,12 +217,12 @@

مبلغ نهایی (شامل مالیات):

diff --git a/invoices/templates/invoices/quote_print.html b/invoices/templates/invoices/quote_print.html index fb67046..052f579 100644 --- a/invoices/templates/invoices/quote_print.html +++ b/invoices/templates/invoices/quote_print.html @@ -185,8 +185,8 @@ - - + + @@ -203,21 +203,21 @@ - + {% if quote.discount_amount > 0 %} - + {% endif %} - + - + diff --git a/invoices/templates/invoices/quote_step.html b/invoices/templates/invoices/quote_step.html index 853f250..82ec091 100644 --- a/invoices/templates/invoices/quote_step.html +++ b/invoices/templates/invoices/quote_step.html @@ -57,7 +57,7 @@
پیش‌فاکتور موجود
{{ existing_quote.name }} | - مبلغ کل (با احتساب مالیات): {{ existing_quote.final_amount|floatformat:0|intcomma:False }} تومان | + مبلغ کل (با احتساب مالیات): {{ existing_quote.final_amount|floatformat:0|intcomma:False }} ریال | وضعیت: {{ existing_quote.get_status_display_with_color|safe }}
@@ -97,7 +97,7 @@ {% if item.description %}{{ item.description }}{% endif %} -
+ @@ -245,50 +254,53 @@ این برگه صرفاً جهت اعلام قیمت بوده و ارزش قانونی دیگری ندارد - {% if instance.broker.company.signature %} -
  • - امضای شرکت -
  • - {% endif %} + {% if instance.broker.company %} +
    +
    اطلاعات پرداخت:
    +
    + {% if instance.broker.company.card_number %} +
    + شماره کارت: +
    {{ instance.broker.company.card_number }}
    +
    + {% endif %} + {% if instance.broker.company.account_number %} +
    + شماره حساب: +
    {{ instance.broker.company.account_number }}
    +
    + {% endif %} + {% if instance.broker.company.sheba_number %} +
    + شماره شبا: +
    {{ instance.broker.company.sheba_number }}
    +
    + {% endif %} + {% if instance.broker.company.bank_name %} +
    + بانک: +
    {{ instance.broker.company.get_bank_name_display }}
    +
    + {% endif %} + {% if instance.broker.company.branch_name %} +
    + شعبه: +
    {{ instance.broker.company.branch_name }}
    +
    + {% endif %} +
    +
    + {% endif %} {% if instance.broker.company %} -
    -
    اطلاعات پرداخت:
    -
    - {% if instance.broker.company.card_number %} -
    - شماره کارت: -
    {{ instance.broker.company.card_number }}
    -
    +
    +
    +
    مهر و امضا
    + {% if instance.broker.company.signature %} + امضای شرکت {% endif %} - {% if instance.broker.company.account_number %} -
    - شماره حساب: -
    {{ instance.broker.company.account_number }}
    -
    - {% endif %} - {% if instance.broker.company.sheba_number %} -
    - شماره شبا: -
    {{ instance.broker.company.sheba_number }}
    -
    - {% endif %} - {% if instance.broker.company.bank_name %} -
    - بانک: -
    {{ instance.broker.company.get_bank_name_display }}
    -
    - {% endif %} - {% if instance.broker.company.branch_name %} -
    - شعبه: -
    {{ instance.broker.company.branch_name }}
    -
    - {% endif %} -
    -
    {% endif %}
    diff --git a/invoices/templates/invoices/quote_print.html b/invoices/templates/invoices/quote_print.html index 052f579..292d345 100644 --- a/invoices/templates/invoices/quote_print.html +++ b/invoices/templates/invoices/quote_print.html @@ -7,6 +7,7 @@ {% load static %} {% load humanize %} + {% load common_tags %} @@ -105,38 +106,12 @@
    -
    -
    -
    - {% if instance.broker.company and instance.broker.company.logo %} - لوگو - {% else %} - - {% endif %} -
    -
    - {% if instance.broker.company %} - {{ instance.broker.company.name }} - {% endif %} - {% if instance.broker.company %} -
    - {% if instance.broker.company.address %} -
    {{ instance.broker.company.address }}
    - {% endif %} - {% if instance.broker.affairs.county.city.name %} -
    {{ instance.broker.affairs.county.city.name }}، ایران
    - {% endif %} - {% if instance.broker.company.phone %} -
    تلفن: {{ instance.broker.company.phone }}
    - {% endif %} -
    - {% endif %} -
    -
    -
    +
    +
    پیش‌فاکتور
    +
    -
    #{{ quote.name }}
    -
    تاریخ صدور: {{ quote.jcreated_date }}
    +
    شماره : {{ quote.name }}
    +
    تاریخ صدور: {{ quote.jcreated_date }}
    @@ -144,37 +119,29 @@
    -
    -
    - {% if instance.representative.profile.user_type == 'legal' %} - اطلاعات مشترک (حقوقی) - {% else %} - اطلاعات مشترک (حقیقی) - {% endif %} -
    +
    {% if instance.representative.profile.user_type == 'legal' %} -
    نام شرکت: {{ instance.representative.profile.company_name|default:"-" }}
    -
    شناسه ملی: {{ instance.representative.profile.company_national_id|default:"-" }}
    - {% endif %} -
    نام: {{ quote.customer.get_full_name }}
    - {% if instance.representative.profile and instance.representative.profile.national_code %} -
    کد ملی: {{ instance.representative.profile.national_code }}
    - {% endif %} - {% if instance.representative.profile and instance.representative.profile.phone_number_1 %} -
    تلفن: {{ instance.representative.profile.phone_number_1 }}
    - {% endif %} - {% if instance.representative.profile and instance.representative.profile.address %} -
    آدرس: {{ instance.representative.profile.address }}
    + اطلاعات مشترک (حقوقی) + {% else %} + اطلاعات مشترک (حقیقی) {% endif %} +
    +
    شماره اشتراک آب: {{ instance.well.water_subscription_number }}
    + {% if instance.representative.profile.user_type == 'legal' %} +
    نام شرکت: {{ instance.representative.profile.company_name|default:"-" }}
    +
    شناسه ملی: {{ instance.representative.profile.company_national_id|default:"-" }}
    + {% endif %} +
    نام و نام خانوادگی: {{ quote.customer.get_full_name }}
    + {% if instance.representative.profile and instance.representative.profile.national_code %} +
    کد ملی: {{ instance.representative.profile.national_code }}
    + {% endif %} + {% if instance.representative.profile and instance.representative.profile.phone_number_1 %} +
    تلفن: {{ instance.representative.profile.phone_number_1 }}
    + {% endif %} + {% if instance.representative.profile and instance.representative.profile.address %} +
    آدرس: {{ instance.representative.profile.address }}
    + {% endif %}
    -
    -
    اطلاعات چاه
    -
    شماره اشتراک آب: {{ instance.well.water_subscription_number }}
    -
    شماره اشتراک برق: {{ instance.well.electricity_subscription_number|default:"-" }}
    -
    سریال کنتور: {{ instance.well.water_meter_serial_number|default:"-" }}
    -
    قدرت چاه: {{ instance.well.well_power|default:"-" }}
    -
    -
    @@ -203,22 +170,26 @@
    - - + + {% if quote.discount_amount > 0 %} - - + + {% endif %} - - + + - - + + + + + +
    {{ invoice.discount_amount|floatformat:0|intcomma:False }}
    مالیات بر ارزش افزوده(تومان):{{ invoice.get_vat_amount|floatformat:0|intcomma:False }}
    مبلغ نهایی (شامل مالیات)(تومان): {{ invoice.final_amount|floatformat:0|intcomma:False }}تخفیف {{ invoice.discount_amount|floatformat:0|intcomma:False }} تومان
    مالیات بر ارزش افزوده{{ invoice.get_vat_amount|floatformat:0|intcomma:False }} تومان
    مبلغ نهایی (با مالیات) {{ invoice.final_amount|floatformat:0|intcomma:False }} تومان @@ -220,6 +221,7 @@ {% if quote.discount_amount > 0 %}

    {{ quote.discount_amount|floatformat:0|intcomma:False }} تومان

    {% endif %} +

    {{ quote.get_vat_amount|floatformat:0|intcomma:False }} تومان

    {{ quote.final_amount|floatformat:0|intcomma:False }} تومان

    {{ quote.discount_amount|floatformat:0|intcomma:False }}
    مالیات بر ارزش افزوده(تومان):{{ quote.get_vat_amount|floatformat:0|intcomma:False }}
    مبلغ نهایی (با مالیات)(تومان): {{ quote.final_amount|floatformat:0|intcomma:False }}{{ item.instance.get_status_display_with_color|safe }} + {{ item.instance.get_status_display_with_color|safe }} + {% if item.emergency_approved %} + تایید اضطراری + {% endif %} + {% if item.installation_scheduled_date %}
    diff --git a/processes/views.py b/processes/views.py index e959b2e..372c8e7 100644 --- a/processes/views.py +++ b/processes/views.py @@ -123,6 +123,17 @@ def request_list(request): reference_date = None installation_scheduled_date = reference_date if reference_date and reference_date > sched_date else sched_date + + # Emergency approved flag (final settlement step forced approval) + try: + final_settlement_step = instance.process.steps.filter(order=8).first() + emergency_approved = False + if final_settlement_step: + si = instance.step_instances.filter(step=final_settlement_step).first() + emergency_approved = bool(si and si.status == 'approved') + except Exception: + emergency_approved = False + instances_with_progress.append({ 'instance': instance, 'progress_percentage': round(progress_percentage), @@ -130,6 +141,7 @@ def request_list(request): 'total_steps': total_steps, 'installation_scheduled_date': installation_scheduled_date, 'installation_overdue_days': overdue_days, + 'emergency_approved': emergency_approved, }) # Summary stats for header cards From dd64b7b47cda3c397e2aa939782c0727eafaa652 Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Tue, 7 Oct 2025 07:59:52 +0330 Subject: [PATCH 14/28] fix quote payments show --- invoices/models.py | 4 ++-- invoices/templates/invoices/quote_payment_step.html | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/invoices/models.py b/invoices/models.py index 89dcd50..93fcfc9 100644 --- a/invoices/models.py +++ b/invoices/models.py @@ -137,11 +137,11 @@ class Quote(NameSlugModel): return '{}'.format(color, self.get_status_display()) def get_paid_amount(self): - """مبلغ پرداخت شده برای این پیش‌فاکتور بر اساس پرداخت‌های فاکتور مرتبط""" + """خالص پرداختی (دریافتی از مشتری منهای پرداختی به مشتری) برای این پیش‌فاکتور بر اساس پرداخت‌های فاکتور مرتبط""" invoice = Invoice.objects.filter(quote=self).first() if not invoice: return Decimal('0') - return sum(p.amount for p in invoice.payments.filter(is_deleted=False).all()) + return sum((p.amount if p.direction == 'in' else -p.amount) for p in invoice.payments.filter(is_deleted=False).all()) def get_remaining_amount(self): """مبلغ باقی‌مانده بر اساس پرداخت‌ها""" diff --git a/invoices/templates/invoices/quote_payment_step.html b/invoices/templates/invoices/quote_payment_step.html index 4a071f8..05096e4 100644 --- a/invoices/templates/invoices/quote_payment_step.html +++ b/invoices/templates/invoices/quote_payment_step.html @@ -153,6 +153,7 @@ + @@ -163,7 +164,8 @@ {% for p in payments %} - + + @@ -175,9 +177,7 @@ {% endif %} {% if is_broker %} - + {% endif %} From 02415f4dee784402b7edfbde80d7cf74e45134ff Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Tue, 7 Oct 2025 08:01:58 +0330 Subject: [PATCH 15/28] change to rial --- .../installation_report_step.html | 4 ++-- invoices/admin.py | 4 ++-- invoices/models.py | 4 ++-- .../invoices/final_invoice_print.html | 16 ++++++------- .../invoices/final_invoice_step.html | 24 +++++++++---------- .../invoices/final_settlement_step.html | 12 +++++----- .../invoices/quote_payment_step.html | 12 +++++----- .../invoices/quote_preview_step.html | 12 +++++----- invoices/templates/invoices/quote_print.html | 12 +++++----- invoices/templates/invoices/quote_step.html | 4 ++-- .../templates/processes/instance_summary.html | 8 +++---- 11 files changed, 56 insertions(+), 56 deletions(-) diff --git a/installations/templates/installations/installation_report_step.html b/installations/templates/installations/installation_report_step.html index d6a7cfc..5f6020f 100644 --- a/installations/templates/installations/installation_report_step.html +++ b/installations/templates/installations/installation_report_step.html @@ -435,7 +435,7 @@ {% if qi.item.description %}{{ qi.item.description }}{% endif %} - + @@ -474,7 +474,7 @@ {% if it.description %}{{ it.description }}{% endif %} - + - - + + @@ -144,29 +144,29 @@ - + {% if invoice.discount_amount > 0 %} - + {% endif %} - + - + - + - + diff --git a/invoices/templates/invoices/final_invoice_step.html b/invoices/templates/invoices/final_invoice_step.html index 3200a48..c2e3b64 100644 --- a/invoices/templates/invoices/final_invoice_step.html +++ b/invoices/templates/invoices/final_invoice_step.html @@ -68,19 +68,19 @@
    مبلغ نهایی (با مالیات)
    -
    {{ invoice.final_amount|floatformat:0|intcomma:False }} تومان
    +
    {{ invoice.final_amount|floatformat:0|intcomma:False }} ریال
    پرداختی‌ها
    -
    {{ invoice.get_paid_amount|floatformat:0|intcomma:False }} تومان
    +
    {{ invoice.get_paid_amount|floatformat:0|intcomma:False }} ریال
    مانده
    -
    {{ invoice.get_remaining_amount|floatformat:0|intcomma:False }} تومان
    +
    {{ invoice.get_remaining_amount|floatformat:0|intcomma:False }} ریال
    @@ -100,8 +100,8 @@
    - - + + @@ -153,27 +153,27 @@ - + - + - + - + - + - +
    نوع مبلغ تاریخ پرداخت/سررسید چک روش
    {{ p.amount|floatformat:0|intcomma:False }} تومان{% if p.direction == 'in' %}دریافتی{% else %}پرداختی{% endif %}{{ p.amount|floatformat:0|intcomma:False }} تومان {{ p.jpayment_date }} {{ p.get_payment_method_display }} {{ p.reference_number|default:'-' }} {{ qi.unit_price|floatformat:0|intcomma:False }} تومان{{ qi.unit_price|floatformat:0|intcomma:False }} ریال {% if removed_qty|get_item:qi.item.id %}{{ removed_qty|get_item:qi.item.id }}{% else %}{{ qi.quantity }}{% endif %} {{ it.unit_price|floatformat:0|intcomma:False }} تومان{{ it.unit_price|floatformat:0|intcomma:False }} ریال {% with add_entry=added_map|get_item:it.id %} diff --git a/invoices/admin.py b/invoices/admin.py index 72df296..a53e692 100644 --- a/invoices/admin.py +++ b/invoices/admin.py @@ -57,13 +57,13 @@ class InvoiceAdmin(SimpleHistoryAdmin): status_display.short_description = "وضعیت" def paid_amount_display(self, obj): - return f"{obj.get_paid_amount():,.0f} تومان" + return f"{obj.get_paid_amount():,.0f} ریال" paid_amount_display.short_description = "مبلغ پرداخت شده" def remaining_amount_display(self, obj): amount = obj.get_remaining_amount() color = "green" if amount <= 0 else "red" - return format_html('{:,.0f} تومان', color, amount) + return format_html('{:,.0f} ریال', color, amount) remaining_amount_display.short_description = "مبلغ باقی‌مانده" @admin.register(Payment) diff --git a/invoices/models.py b/invoices/models.py index 93fcfc9..b93e4b4 100644 --- a/invoices/models.py +++ b/invoices/models.py @@ -38,7 +38,7 @@ class Item(NameSlugModel): ordering = ['name'] def __str__(self): - return f"{self.name} - {self.unit_price} تومان" + return f"{self.name} - {self.unit_price} ریال" class Quote(NameSlugModel): """مدل پیش‌فاکتور""" @@ -383,7 +383,7 @@ class Payment(BaseModel): ordering = ['-payment_date'] def __str__(self): - return f"پرداخت {self.amount} تومان - {self.invoice.name}" + return f"پرداخت {self.amount} ریال - {self.invoice.name}" def save(self, *args, **kwargs): """بروزرسانی مبالغ فاکتور""" diff --git a/invoices/templates/invoices/final_invoice_print.html b/invoices/templates/invoices/final_invoice_print.html index 1b28c4e..36e23f0 100644 --- a/invoices/templates/invoices/final_invoice_print.html +++ b/invoices/templates/invoices/final_invoice_print.html @@ -124,8 +124,8 @@ شرح کالا/خدمات توضیحات تعدادقیمت واحد(تومان)قیمت کل(تومان)قیمت واحد(ریال)قیمت کل(ریال)
    جمع کل(تومان):جمع کل(ریال): {{ invoice.total_amount|floatformat:0|intcomma:False }}
    تخفیف(تومان):تخفیف(ریال): {{ invoice.discount_amount|floatformat:0|intcomma:False }}
    مالیات بر ارزش افزوده(تومان):مالیات بر ارزش افزوده(ریال): {{ invoice.get_vat_amount|floatformat:0|intcomma:False }}
    مبلغ نهایی (شامل مالیات)(تومان):مبلغ نهایی (شامل مالیات)(ریال): {{ invoice.final_amount|floatformat:0|intcomma:False }}
    پرداختی‌ها(تومان):پرداختی‌ها(ریال): {{ invoice.get_paid_amount|floatformat:0|intcomma:False }}
    مانده(تومان):مانده(ریال): {{ invoice.get_remaining_amount|floatformat:0|intcomma:False }}
    افزوده حذف تعداد نهاییقیمت واحد (تومان)قیمت کل (تومان)قیمت واحد (ریال)قیمت کل (ریال)
    مبلغ کل{{ invoice.total_amount|floatformat:0|intcomma:False }} تومان{{ invoice.total_amount|floatformat:0|intcomma:False }} ریال
    تخفیف{{ invoice.discount_amount|floatformat:0|intcomma:False }} تومان{{ invoice.discount_amount|floatformat:0|intcomma:False }} ریال
    مالیات بر ارزش افزوده{{ invoice.get_vat_amount|floatformat:0|intcomma:False }} تومان{{ invoice.get_vat_amount|floatformat:0|intcomma:False }} ریال
    مبلغ نهایی (با مالیات){{ invoice.final_amount|floatformat:0|intcomma:False }} تومان{{ invoice.final_amount|floatformat:0|intcomma:False }} ریال
    پرداختی‌ها{{ invoice.get_paid_amount|floatformat:0|intcomma:False }} تومان{{ invoice.get_paid_amount|floatformat:0|intcomma:False }} ریال
    مانده{{ invoice.get_remaining_amount|floatformat:0|intcomma:False }} تومان{{ invoice.get_remaining_amount|floatformat:0|intcomma:False }} ریال
    @@ -227,7 +227,7 @@
    - +
    diff --git a/invoices/templates/invoices/final_settlement_step.html b/invoices/templates/invoices/final_settlement_step.html index e32fa41..0e7916b 100644 --- a/invoices/templates/invoices/final_settlement_step.html +++ b/invoices/templates/invoices/final_settlement_step.html @@ -75,7 +75,7 @@
    - +
    @@ -122,19 +122,19 @@
    مبلغ نهایی (با مالیات)
    -
    {{ invoice.final_amount|floatformat:0|intcomma:False }} تومان
    +
    {{ invoice.final_amount|floatformat:0|intcomma:False }} ریال
    پرداختی‌ها
    -
    {{ invoice.get_paid_amount|floatformat:0|intcomma:False }} تومان
    +
    {{ invoice.get_paid_amount|floatformat:0|intcomma:False }} ریال
    مانده
    -
    {{ invoice.get_remaining_amount|floatformat:0|intcomma:False }} تومان
    +
    {{ invoice.get_remaining_amount|floatformat:0|intcomma:False }} ریال
    @@ -166,7 +166,7 @@ {% for p in payments %}
    {% if p.direction == 'in' %}دریافتی{% else %}پرداختی{% endif %}{{ p.amount|floatformat:0|intcomma:False }} تومان{{ p.amount|floatformat:0|intcomma:False }} ریال {{ p.jpayment_date }} {{ p.get_payment_method_display }} {{ p.reference_number|default:'-' }}
    {% if p.direction == 'in' %}دریافتی{% else %}پرداختی{% endif %}{{ p.amount|floatformat:0|intcomma:False }} تومان{{ p.amount|floatformat:0|intcomma:False }} ریال {{ p.jpayment_date }} {{ p.get_payment_method_display }} {{ p.reference_number|default:'-' }}
    {{ quote_item.item.name }} {{ quote_item.item.description|default:"-" }}{{ quote_item.unit_price|floatformat:0|intcomma:False }} تومان{{ quote_item.unit_price|floatformat:0|intcomma:False }} ریال {{ quote_item.quantity }}{{ quote_item.total_price|floatformat:0|intcomma:False }} تومان{{ quote_item.total_price|floatformat:0|intcomma:False }} ریال
    -

    {{ quote.total_amount|floatformat:0|intcomma:False }} تومان

    +

    {{ quote.total_amount|floatformat:0|intcomma:False }} ریال

    {% if quote.discount_amount > 0 %} -

    {{ quote.discount_amount|floatformat:0|intcomma:False }} تومان

    +

    {{ quote.discount_amount|floatformat:0|intcomma:False }} ریال

    {% endif %} -

    {{ quote.get_vat_amount|floatformat:0|intcomma:False }} تومان

    -

    {{ quote.final_amount|floatformat:0|intcomma:False }} تومان

    +

    {{ quote.get_vat_amount|floatformat:0|intcomma:False }} ریال

    +

    {{ quote.final_amount|floatformat:0|intcomma:False }} ریال

    شرح کالا/خدمات توضیحات تعدادقیمت واحد(تومان)قیمت کل(تومان)قیمت واحد(ریال)قیمت کل(ریال)
    جمع کل(تومان):جمع کل(ریال): {{ quote.total_amount|floatformat:0|intcomma:False }}
    تخفیف(تومان):تخفیف(ریال): {{ quote.discount_amount|floatformat:0|intcomma:False }}
    مالیات بر ارزش افزوده(تومان):مالیات بر ارزش افزوده(ریال): {{ quote.get_vat_amount|floatformat:0|intcomma:False }}
    مبلغ نهایی (با مالیات)(تومان):مبلغ نهایی (با مالیات)(ریال): {{ quote.final_amount|floatformat:0|intcomma:False }}
    {{ item.unit_price|floatformat:0|intcomma:False }} تومان{{ item.unit_price|floatformat:0|intcomma:False }} ریال {% if invoice %}
    -
    مبلغ نهایی
    {{ invoice.final_amount|floatformat:0|intcomma:False }} تومان
    -
    پرداختی‌ها
    {{ invoice.get_paid_amount|floatformat:0|intcomma:False }} تومان
    -
    مانده
    {{ invoice.get_remaining_amount|floatformat:0|intcomma:False }} تومان
    +
    مبلغ نهایی
    {{ invoice.final_amount|floatformat:0|intcomma:False }} ریال
    +
    پرداختی‌ها
    {{ invoice.get_paid_amount|floatformat:0|intcomma:False }} ریال
    +
    مانده
    {{ invoice.get_remaining_amount|floatformat:0|intcomma:False }} ریال
    @@ -237,7 +237,7 @@ {% for p in payments %} - + From 68cf7761d7c7bb3ced8277715f71d8a8ec0a78d1 Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Tue, 7 Oct 2025 08:31:40 +0330 Subject: [PATCH 16/28] add meter model for smart meter --- installations/forms.py | 9 ++- installations/models.py | 5 ++ .../installation_report_step.html | 56 ++++++++++++++++++- 3 files changed, 67 insertions(+), 3 deletions(-) diff --git a/installations/forms.py b/installations/forms.py index 86e7428..e877b2b 100644 --- a/installations/forms.py +++ b/installations/forms.py @@ -20,7 +20,7 @@ class InstallationReportForm(forms.ModelForm): model = InstallationReport fields = [ 'visited_date', 'new_water_meter_serial', 'seal_number', - 'utm_x', 'utm_y', 'meter_type', 'meter_size', + 'utm_x', 'utm_y', 'meter_type', 'meter_size', 'meter_model', 'discharge_pipe_diameter', 'usage_type', 'exploitation_license_number', 'motor_power', 'pre_calibration_flow_rate', 'post_calibration_flow_rate', 'water_meter_manufacturer', 'sim_number', 'driving_force', @@ -62,6 +62,13 @@ class InstallationReportForm(forms.ModelForm): 'meter_size': forms.TextInput(attrs={ 'class': 'form-control' }), + 'meter_model': forms.Select(attrs={ + 'class': 'form-select' + }, choices=[ + ('', 'انتخاب کنید'), + ('A', 'A'), + ('B', 'B') + ]), 'discharge_pipe_diameter': forms.NumberInput(attrs={ 'class': 'form-control', 'min': '0', diff --git a/installations/models.py b/installations/models.py index 6eed7a5..6cd48bd 100644 --- a/installations/models.py +++ b/installations/models.py @@ -47,6 +47,11 @@ class InstallationReport(BaseModel): ('volumetric', 'حجمی'), ] meter_type = models.CharField(max_length=20, choices=METER_TYPE_CHOICES, null=True, blank=True, verbose_name='نوع کنتور') + METER_MODEL_CHOICES = [ + ('A', 'A'), + ('B', 'B'), + ] + meter_model = models.CharField(max_length=20, choices=METER_MODEL_CHOICES, null=True, blank=True, verbose_name='مدل کنتور') meter_size = models.CharField(max_length=50, null=True, blank=True, verbose_name='سایز کنتور') discharge_pipe_diameter = models.PositiveIntegerField(null=True, blank=True, verbose_name='قطر لوله آبده (اینچ)') USAGE_TYPE_CHOICES = [ diff --git a/installations/templates/installations/installation_report_step.html b/installations/templates/installations/installation_report_step.html index 5f6020f..745fc45 100644 --- a/installations/templates/installations/installation_report_step.html +++ b/installations/templates/installations/installation_report_step.html @@ -86,7 +86,11 @@

    سریال جدید: {{ report.new_water_meter_serial|default:'-' }}

    شماره پلمپ: {{ report.seal_number|default:'-' }}

    نوع کنتور: {{ report.get_meter_type_display|default:'-' }}

    + {% if report.meter_type == 'smart' %} +

    مدل کنتور: {{ report.get_meter_model_display|default:'-' }}

    + {% else %}

    سایز کنتور: {{ report.meter_size|default:'-' }}

    + {% endif %}

    قطر لوله آبده (اینچ): {{ report.discharge_pipe_diameter|default:'-' }}

    سازنده کنتور: {{ report.water_meter_manufacturer|default:'-' }}

    شماره سیمکارت: {{ report.sim_number|default:'-' }}

    @@ -279,13 +283,20 @@
    {{ form.meter_type.errors.0 }}
    {% endif %} -
    +
    {{ form.meter_size.label_tag }} {{ form.meter_size }} {% if form.meter_size.errors %}
    {{ form.meter_size.errors.0 }}
    {% endif %}
    +
    + {{ form.meter_model.label_tag }} + {{ form.meter_model }} + {% if form.meter_model.errors %} +
    {{ form.meter_size.errors.0 }}
    + {% endif %} +
    {{ form.discharge_pipe_diameter.label_tag }} {{ form.discharge_pipe_diameter }} @@ -329,7 +340,7 @@ {% endif %}
    - {{ form.water_meter_manufacturer.label_tag }} + {{ form.water_meter_manufacturer.label_tag }}حجمی
    {{ form.water_meter_manufacturer }} {{ form.new_manufacturer }} @@ -759,6 +770,47 @@ } } } + + // Dynamic meter field visibility based on meter type + (function() { + const meterTypeSelect = document.getElementById('{{ form.meter_type.id_for_label }}'); + const meterSizeWrapper = document.getElementById('meter_size_wrapper'); + const meterModelWrapper = document.getElementById('meter_model_wrapper'); + + function updateMeterFields() { + if (!meterTypeSelect) return; + + const selectedType = meterTypeSelect.value; + + if (selectedType === 'smart') { + // Show meter_model, hide meter_size + meterModelWrapper.style.display = ''; + meterSizeWrapper.style.display = 'none'; + // Clear meter_size value when hidden + const meterSizeInput = meterSizeWrapper.querySelector('input, select'); + if (meterSizeInput) meterSizeInput.value = ''; + } else if (selectedType === 'volumetric') { + // Show meter_size, hide meter_model + meterSizeWrapper.style.display = ''; + meterModelWrapper.style.display = 'none'; + // Clear meter_model value when hidden + const meterModelSelect = meterModelWrapper.querySelector('select'); + if (meterModelSelect) meterModelSelect.value = ''; + } else { + // No selection: hide both + meterSizeWrapper.style.display = 'none'; + meterModelWrapper.style.display = 'none'; + } + } + + // Initial update on page load + updateMeterFields(); + + // Update on change + if (meterTypeSelect) { + meterTypeSelect.addEventListener('change', updateMeterFields); + } + })(); {% endblock %} From 9daec9c8f1fe3e1c939d49a518be9a36025ca4bb Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Tue, 7 Oct 2025 08:33:21 +0330 Subject: [PATCH 17/28] next step only in not edit mode --- .../templates/installations/installation_report_step.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installations/templates/installations/installation_report_step.html b/installations/templates/installations/installation_report_step.html index 745fc45..2d14128 100644 --- a/installations/templates/installations/installation_report_step.html +++ b/installations/templates/installations/installation_report_step.html @@ -516,7 +516,7 @@ {% if user_is_installer %} {% endif %} - {% if next_step %} + {% if next_step and not edit_mode %} بعدی From a195e0b6fc139a38477602dfa52ff2368621eeaa Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Tue, 7 Oct 2025 12:57:06 +0330 Subject: [PATCH 18/28] add db --- .gitignore | 4 ++-- db.sqlite3 | Bin 3928064 -> 4141056 bytes .../0007_installationreport_meter_model.py | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 installations/migrations/0007_installationreport_meter_model.py diff --git a/.gitignore b/.gitignore index d975f31..38eb404 100644 --- a/.gitignore +++ b/.gitignore @@ -9,8 +9,8 @@ *.pyc __pycache__/ local_settings.py -*.sqlite3 -db.sqlite3 +#*.sqlite3 +#db.sqlite3 db.sqlite3-journal media #static diff --git a/db.sqlite3 b/db.sqlite3 index d314803063c280b8ae34a01596f875ec3097a0d8..4408b1574e76d1d3d1df86cb50aebc3e32334e1a 100644 GIT binary patch delta 288957 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 m+DMK&1{7n!~A` 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 VPmwm5xk+8Q{ Date: Thu, 9 Oct 2025 11:24:00 +0330 Subject: [PATCH 19/28] add approve need to request list --- db.sqlite3 | Bin 4141056 -> 4198400 bytes .../templates/processes/request_list.html | 15 +++++- processes/views.py | 47 ++++++++++++++++++ 3 files changed, 61 insertions(+), 1 deletion(-) diff --git a/db.sqlite3 b/db.sqlite3 index 4408b1574e76d1d3d1df86cb50aebc3e32334e1a..5a406d66a376e28ddbec659f2fdeeb27a234ff7c 100644 GIT binary patch delta 48628 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 RHkk2jms@3in3c&g00135FCPE^ delta 10192 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 diff --git a/processes/templates/processes/request_list.html b/processes/templates/processes/request_list.html index eee1727..1ae210a 100644 --- a/processes/templates/processes/request_list.html +++ b/processes/templates/processes/request_list.html @@ -223,11 +223,24 @@
    - - - + + {% if invoice.discount_amount > 0 %} - - + + {% endif %} - - + + - - + + - - + + - - + + + + + +
    {% if p.direction == 'in' %}دریافتی{% else %}پرداختی{% endif %}{{ p.amount|floatformat:0|intcomma:False }} تومان{{ p.amount|floatformat:0|intcomma:False }} ریال {{ p.payment_date|date:'Y/m/d' }} {{ p.get_payment_method_display }} {{ p.reference_number|default:'-' }}
    {{ item.instance.code }} {{ item.instance.process.name }} + {% if item.instance.status == 'completed' %} {{ item.instance.current_step.name|default:"--" }} {% elif item.instance.current_step %} {{ item.instance.current_step.name }} + {% if item.current_step_approval_status %} +
    + + {% if item.current_step_approval_status.status == 'rejected' %} + + {% elif item.current_step_approval_status.status == 'approved' %} + + {% else %} + + {% endif %} + {{ item.current_step_approval_status.display }} + + {% endif %} {% else %} -- {% endif %} diff --git a/processes/views.py b/processes/views.py index 372c8e7..5bcb38c 100644 --- a/processes/views.py +++ b/processes/views.py @@ -134,6 +134,52 @@ def request_list(request): except Exception: emergency_approved = False + # Get current step approval status + current_step_approval_status = None + if instance.current_step: + try: + current_step_instance = instance.step_instances.filter(step=instance.current_step).first() + if current_step_instance: + # Check if this step requires approvals + required_roles = current_step_instance.required_roles() + if required_roles: + # Get approvals by role + approvals_by_role = current_step_instance.approvals_by_role() + + # Check for rejections + latest_rejection = current_step_instance.get_latest_rejection() + if latest_rejection and current_step_instance.status == 'rejected': + role_name = latest_rejection.role.name if latest_rejection.role else 'نامشخص' + current_step_approval_status = { + 'status': 'rejected', + 'role': role_name, + 'display': f'رد شده توسط {role_name}' + } + else: + # Check approval status + pending_roles = [] + approved_roles = [] + for role in required_roles: + if approvals_by_role.get(role.id) == 'approved': + approved_roles.append(role.name) + else: + pending_roles.append(role.name) + + if pending_roles: + current_step_approval_status = { + 'status': 'pending', + 'roles': pending_roles, + 'display': f'در انتظار تایید {" و ".join(pending_roles)}' + } + elif approved_roles and not pending_roles: + current_step_approval_status = { + 'status': 'approved', + 'roles': approved_roles, + 'display': f'تایید شده توسط {" و ".join(approved_roles)}' + } + except Exception: + current_step_approval_status = None + instances_with_progress.append({ 'instance': instance, 'progress_percentage': round(progress_percentage), @@ -142,6 +188,7 @@ def request_list(request): 'installation_scheduled_date': installation_scheduled_date, 'installation_overdue_days': overdue_days, 'emergency_approved': emergency_approved, + 'current_step_approval_status': current_step_approval_status, }) # Summary stats for header cards From a819e841f943f52e254639d50b1506ba9052ef50 Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Thu, 9 Oct 2025 11:34:29 +0330 Subject: [PATCH 20/28] fix next step in quote payments approved. --- db.sqlite3 | Bin 4198400 -> 4210688 bytes invoices/views.py | 28 ++++++++++++++++++++++------ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/db.sqlite3 b/db.sqlite3 index 5a406d66a376e28ddbec659f2fdeeb27a234ff7c..79d4607ad3f36157e7ceb521df4ace8e4a2dffd2 100644 GIT binary patch delta 23752 zcmeHvd3;nwws7CAZ*{u+-Xxu!CEXzc0YdKWy+hKS4k*Z)G@zgeNdVbH*ujM?f;hez z44@RFqXeCCnGp%1l+I?*(b1Xl2~S6TZUl7RFs{*Y#vQ+NtJ0m$=FITT`+fg>S?=k+ zr_QN!t4^Id=Ty~gYHQ+~nwt66A=0NNlPKIX7hxQ#U8p_?j?>~$7aGrfN zV=j^drosur3=SW@CoKn8y_t&kJve5nlrwsqFn8afu|sg@=P4=N=zXrS`JBElI`;nT zZ5bY+m|Ic5dF_hDOE)ZPsNJ?^Y5m5Az2ioj&*zU6qC8Hkx8=#U;IJYgYQfw)DS7*r zjmre;>&JP`lU#+u#ZY99#eut4BJ;kJ<3w)8zCVtu;qvzRiwn%Va=n6&$DLnVGWM-6 zcA8^DhX~~yKDid<>}xN+!dy8#N0?~YcdB^EzOmy=Q;3QFDEFDL%bD&t)-pc$UWU(C z>h+A*eQwRIEnm8!wr)x7db}r-bCM5pxh%hsr#51_iuWCJbxl-p<19xD;c7UcO9-H9 z0*F;m|2mgQ-0l495_YNuVoE+2Fbf=?&-uxsdHheXFi~#92UElIaZP*Kcwm$+7|-ye8BJa`Mq2qA6f+D@D=M?u@-V_fl{BpRCkZ}`L%#22<(8W5JAmn9+ibv zyok=BGr(?@nbwPkJXh!;ITqo4GZZ;Tw3`O4} zvXip=6M75SE$_o_C{OgU!i$q^qI%AxeyM({eyE-!sj2pt)IC)qK6#5p#P2r>Ip2xD zMaU8IlwvHm3dORrSgBSb3UO7K_j1Ryt{NNObeE78$V(GOarJBKmlg+?EY-Ez#i87O zcXImO$tFO2%PHt79m@@3F;Xv8qiRUi;aUEsIAy`X>26P6H_YvZIo&WDS2v2sfH)h= zO$M=BEmECoHW0tAKx1ce9>33<7ypnO|Bw^^kc}tYB0eYN*&_c4M7iWH?m@eK!BB2rbV36HZr!it435?`zn(n+8h><8zD(BLDemLV zdFs_B^=qtDjc~)$jZs=rt^qNDj*?9X4;*A5B#|A@e zFoZ^3iseqRK;ELRQ&*`=$>>he$EwXhlq;fK5#@@q@%0~xyBJkRp)ul$x(nyi!uhmt zJ}sONg}#v|rGt6YqnQ_Vx2=#Xs)JihuFPSsMb!#8Q> zU&upj0h?wkfSOLFu(4ZiI%JI9u&Ip{m6>06m`$lBllm!1sWQI{>TcU#!HGnyF*mFB zp04w`1Gsr>WW}zp)|$yzYvuQ8rH!(X+AYVeW{c%)V(6r|$}g$B6vO8Z%0q=T`(!M) z$s>5%-^jQ&`8nG@tt%#sY#xnWhvkeksKs5X2gbWKpGR{md^1^lSiX%H4%s$ixm|vf z2l!yCOUIcI!un3@Oe^pGOtg^B_~3@mK;r`i3=w-1$rSISsEl9I<2P=V8%| zWRpqwDQ@!xb7j94@_FPRk~=?;uc*boa^xq)v(PI}sBj^X8_+OLv@L~?h3k-?)sdpG zIuvNL)z_f|0u-GEg9#BHU}tT1E`Fs6tp(ZirU@5;Y-hUL+Q#T|f$pmBqx%H$ko9&G zZtKb}B6=&zo?j0{KfME8A@=K_4i53^CnTjE zor4ZjSci3>r-x67@w<#hi19Zvu#RJ@r}jCn{F2CF45LETeMT2ZCa{pR|62Hg=#=CB8Pc8RYeq^}~2G$;#HbPE=>AcaFYfaxU@U;QzO<$3tf3eK=3pwZ&EIU(lvwXkt zOTx~Sl`=F=2`5~7O94JLHYFEFic&0i*q7xO5m!;lLnFBca&lJ6b~{&zXI+(&?_=Z9 zH$J5K0)B75=hp(`1A55q39*OpEOjsS`+Yb%GA)}uch}iKhHN}{vs`9y9E!*OG{t&+ zVTuJtoB9Z`)ujATReMnfE6F2kQ)ULafFWU)ALi_Y6ain*r}viv4@E!N3`M^+F-xH;2QUrg}Zf)bG%kkc$){(sABaa=mZW6{@giPM= z^ZQKatwJvEaT~v;Z<0QLZG86m+&-TVRA%v`)psuzOYtgnRC>6CiNI@J>$y6 z`Kh)%sZ51m5>B<9SN3ULL#eoULB8$&(j0YxN&TyOpSn|BsXnLvP~D;~0Q+)S{SUQ4 zeM@aqx2ucQlj@(;SJYpqd(|h^_ti((FN_tNpaQ!glpU!lvDG*5I*g8kwrnR?NzOfC zgMI<{g3ag`_;A|zPzgQuku9%AsWau-TEH#|w<{}cEhM$dzR|{WbFkBuHAH$DI(igt zs4EykPAsq=;tG`$Cd3?RZni@x;)DKR2y~{l*6;TO1L6cI@5N{I5qYF-q20;Zz-f$^ zU%bBnIDQ4xIeVfR`%|qV8fN{#sQEm$)!2i)^#f?z2duns7I&nFoj7f^Jqtg-sa&>( z^q^a_-U&sY!)Y^Yj{SSe%vQf&_XVvUxOo8ATocMAn^)UkU7tyet`vpik^m$3QR9ms zJVF+qw!fq1R0P-0>%+E4gVIf33?j?0g zRxa^vS?}Gpv|*$Bnz|LMS1;SJdYO02>cy+p`L7}Ec4clV>JBA*#6DaJHp1M0$(>66 z6>J=Vmmly41ARvro7+7;pRR+GT5OCzUDHCv!NrRg*VYBEUQxfOVg1@=>z8iWux9C! z6`R)NBZ-tzCIWHPh0uU9Uc&kXN5j zi`p}xy?@T#ZIYgm9+vKsZk9Gnb<#|N8d9(3$aU*d|4V2zy0y2RlO_#tZ{h&=DhIe1 z9pGNY0QVx@_v|n&b(`m)6yEjPrd0CUrZoFX!^E6UqoxHkHx0ZioxJ~TTAtI^Y*LS^ zb*e-8jnYigo#~4eaMdP8N88wxX|kJ4eWyy=@E#rPWuTAIOJMxL82Qckbny7n)U765 zUzeAKon2XWZaEpJrI#5)E|q#ELbK_9+!RUQA&3ehaz*-1JK(M(XlDAeT97&&h&dfH zPn`}kPn`~lr%s2+Q>R1VsnfypO@`v~jTkkipSQhjQs3_J9GlWls%DcYn7GkkZqtWr zeefO0_!rV)*n{_bI{kb;9|MAK(?3^j)1WQN4CP0X2fwd6as-I$AXs#~4jzlyhzTU} zLB1oqN=P-$hk(lANU!% zO11q_`w$zpnXHRaUa&lFA+C<}hf|g{+Z$3@mkOgY4G-wbv_74uml__BKj;bd_W&5i zt9vaO!MfV|Rf{&RudUy3_0sjm)D!2UdytOLYz+^U*Db$z)rQqkGXM9E!-YBRCiR^9 zIN06)Qr}R!z(Ti!b%tNi2uBw2b~&z5ttOKZ6dK$bc0K;BgFOCi#xy5Kh~&(iY{yS| ze5JVI(;^XAb7Rc?^)~>50kp_nFl#pEi@hDc9?L7({(rQ&@z8o z06u3KpUQp8y~_QPYvXo+r)l_~8`XJ3gb;6dbY!!h`H)@gwyn4|XNWD8jp1$&uhtf% z79DRW$*RTUTv_U{Q*mO*&h&N%Yi)t!6`5S8td^N>;G8BHR9UGUZrhueL4Y(>!813d zexKH|>!p$`@={5*=H$*0sVe&n&r3zP>5$Kb<=NR!;@{8CejDrU!nF`zSVZ2EO-klw z|1pL8C6Q{f|H$$3o4BUdUXWZDC zd%QF6jnm3R^D!6@e=!DxNBnr#yH5-u?>;d!?<98wORd9B^YTReVO{n@Qn_c?V<7BQ z+&BP=QkfOOC-zv}BQLJgogy*_O>cBGi`syiAGF99&kW72$)^G`mH%vU_uJ ztE!K}uQd)IBR(lSY`U#xbRiknG(0TehNrR%@b_;RK9Y^l1G}9Kf=BG!RkUL`DcX_$ z-$SIon2Ndc5VPi2BjLDkgHR<5BQmTcbB zy#Ze+1|+7wB*B0uF(i#t7-JR~9}Ma~k0-`Y+tG**LM`KZY6%1f@|pePHO=exyJOl; z8GmqhzSEJQ2)ZG)6SHVL&3zGi5D-Y)DfL5m{DGLP?G*bWw4g5#Giy5qiWu2bhvxD6 zW0E+{3ceCOOT{7>`?S?9B;G+{G1ofIepY;4 zd`Wy>d`5giycNGO+jWS`+Y^O39Fnx7c=PqfG>bOU>neI(Nv~JY>l}KWjjulK8YS@N ztH@vGxQ0yNo+VPN>joaTjX(&$77d5+iM_6qxRKWj@vru|p67Cpxw!sz%GAn|n$)2uYKZvKLQ1>4GF|p*T!b)oWpHxEkBel;o45@+J!FS-_6CW{qfNOYS__`r*55Zesh6V0J=3If_n=Dy?-tUBm8q?4!_6VPTxvWbzbVc%9Wu!7xOj=y)>buG67 zOP#J0xP6@qk!LzxcAmU`*0o09?uGWen`ez7$Wtked?^E!3`B|i7uPpgLw_yYXNzl~ za-(WhMdcgi@5)EYIpxf4sNhRQO;=u1{-FF?A)u;_gy#xw;*grFyr?{_wBwukf<%TP^!GkA1tG0-*wPFS$xA zsEQ$H?E>{9PIbgPPOceC+K6V}Y{oZgBU(s`K0*+A(^pXWXU5cO$0hy|3g^Lxf+L2I za{q|m<|3c+8)#fnz_zLp%X#HD&^lF$D16(xn*46zh|)Aj=f4MOx)GCkocd(8h*M*H zAz8nE#HQ}_KVs>B#QAr9v2_IbVr!vwnee>u0R+f}Hw*ZV)SPsD=&8b~w88O1Ul#_2 zq1=CyaqkqqY&BoY{Yv<)3Ab~_BS}S9p(YgCUbnqud*1ep?FrjswxhP6+U|h>*T{!G z2$`_EAQ#rEevh>LweTVfKK;fRFCFRQgp0`8uM4kW^V2wCJf8S%;RLJFV;u31-WXH1 z>*;R`$*|(xrE!Qh)(J13t3zhhu6vE)%P2LFVQ8(j<0&A_H{D)TEm?7xNX4kKAO{F%B$fw3^;_=B=x*MJi{Y!(K@TjXTGbe1GQ}h+Q%s^V#h6SniOLj{s7x`5%2X{;nW`l!Q#F&R zTB0&lOH`(6DQJjR&03>cqODOS`HY)Yl9vGw1>~AH$K0GQK5Yoz6xIGlzUeY#Zs3ZY zWba?cTyJTN+pkI{XeAT0k_lSL1g&I(Rx&{=nV?Z7Xp{*WWr9YTpiw4hlnEMTf<~F3 z6->|yCg`r+-;5!q)<7)DTW36uJ5aNiAQ+dUD&X!~C zvZY!-w;`K}XcNcXf$-b;Xc%^$&k~2qzp=nF7thO2Te2y9#*#(hZ^5ZX)5pPoG5n8* z{}O_xYhTRHl@6OM!XmT%QQIEtDocU5Oa2PJzNEYchUQ{{EV@UV$%`qIxr^ZY2oALr zxTP64%#Px3?TV9peXll65Wt-#E-lT)kySs_)(WFrMtGpi+~_|_qTnMx)*hMaUwxTg zI(PE)S(7WbZJ4rXvv1Oz`RhU#*G_3zdhzTH)2ilrXH2Y|I%n#ld5bUgZivp0`;~4F zT`!HNVEkUs@petrgk!=V@Ys8N&G-*Gsv@s;YNL64^O@qI``^}Pii+F*C8>W~yVb&* zo&yDankgt^{f=0_Bi8ST^*dtyj#$4V*6#}Icf|S~v3^Ia-x2F~#QGhven+g|71r;F z^*aRQhJqp-KCcy!`VY1J9EksHviMz^o5vNPskrr&YZ9sdD;510AUe4~(a{Bpjs_H+ zfap(gFn+k#g;zK-^{B(fkql1H;!_pQ{-yn|_V?}2*`KukTzCbatmen#d4hgPsxnN; zQd9-m|73s5{)+u1ZW8r8+7$8(@|K{#VaZ_Mrc<{9$O`JFa*kxplG5 zqsAE8X4DfyTN$7pK#ch`F+_cu7~05i8yHy6z&ZvR7@#ggjJXUkM4g}*qE1i@tul&K zqm>L$m#7*or{5Y8^)9Lr^)9N>QdVXO1B)4`V}N=d)y#XVX5L#h^WLh_RjkMY2Cih_ z3I^sgKs}afL_L;jMBTk=GO&?&u&L*VT175_urOwRw8zMLhLyfUI~Z$`B3&8*R6L>o;; z^r_8=KDC*NE2A0Yp_lZ_tYU|u3EElLUUGY-28q(&d@*WVu2P$!>Y9TqqBdA)ab+ z=8>*5-YW%agBB`m+$e0^C``E(M3q}%%B?WnR+w%pteX_pO$vJ^g*}sksBSAvw^PIx zoPFK!FD58V9~DIPQDOS1Feh7K`lzrDRuI)kg|&u)rtO;hXD^xiXWx+=m|knT^SbRd zL&Mlv<$n|}`Xp-?Ou0iPawq4n=L$Puug|l>IpL(xDZDB?CNv4{!cD^cLaWdw91yk& z4Z?B(H+MvI+$s2_Mk3EJrdZ*)Je|Tv4q0~ z-=9R`QF$VT?Q$iB56V#r4?`yybPvf93XjNP1CnzFaY^}1JKy7l*jLCD-Dpg(%_Pd&@mVj=C{nR;IE5u!N}2&cO>hg2VBLT^b_SbOZ^a z(OI@kjf^NyHpZRErT|fnkh#wVk6a=+Py?1zLnB0V0yV$`S0ek&9UhA*Z9WIN<7g0{ z`W%hI;S(N&yK+PF5SS>mQlERg$4D~yX6|q&6|McMq^GDQ7q*T0{No{ejC4$?SM&3;#;ib^6L?~a$D&GS;88=#@Mn}jz?)&W!pUuG~Z}iV+yaRWB5ti{4ha(&CD0euGoG&P^lS#!xkq!>e|3G%) z=GAt`{`*TMGH+ZtXyFHkBMN@~aAfK6)<73ey4>XzR;+y*w8+MO3XiptF1z9*Uqi#> zHkaMU9j_>dPN}fAX>ei@g&#-*@1=*m*;kJy*AM6T6(Rg*ERIInqDDu3sjJ~h3g7>T~4pd==ExPT}rP@8Yx&z zuXXfVORqKbx`z9px62II*(p2r`OBqbuPU^${46-(`$@gtLe3h zUS~jdPa2Pn;Syi}#tcdNpQMcnFWTMlB0Tfiu11|FFUiTovU>Q1L&RN79oyJO*Os`~KLnR9%D_K%G%96@ad5STOM43ksWoh>)3o)b2 zzlgFBGb+=(RfSA*X%#ZfTUE$3Z&e}Fyj6uv^Hvoy&0AFv+luh#=E77F7P-rmTkNme zi)}5|-&=>L)LVXSNkNy%hs^Jr15%6l0tkJdC^nZgZ^s{3>zPv;;%Sb=TG)jxbK{Oj zLK&Iy^)!P=!0q;U$D-~<@5b&$@9_=w%U0Ak>&@3^a&*_BFe=w&H$_b5P5P! zzU%&9%4a;Zt_OWa`!V^_`pS1L{>hf`*3@oyF%a^(-S99a^kML&Tf+*udrSDOB2LH6 zhr)TIX{y5Q9S@r_VaI>GZ4#aC^@7W(dqZv2qH-&aY`O7o-+sYZHCS}wIq4buJ6 zR!I}jNu$M1$tk`nJ}c#jC&dmaRWc*VBz`WEG|lrDa8zJRZ(|GEW<)N0GuldF3)<5C zeKUnkXcL8vXd{KY&;|-`MC&QsiPllL12s^116oUA3#zBE8LgqP39Y8E5v`(dGg@iD zMt%!gL2qnD%PHK3mQi>Ox|+gk(NYSpLrW;U9xbMDJF25_8>*#nE2`;+izwWJ7E-tw zT}9z`w1C3v(UlZlhpqtF$n)2t`Siv$XdZ>z(B%|v1(RU3%oa44!p&$7g=^4k3hPmf z!nLTH!Uj}D;W{*n!u4n-g&Po!N%@V4#-#ivL}OC;4lyaIJRW}1B9_Sul3Wiz2NviJ zk@-XU%=5@+o<~0OJo1_6k9CY3bDEHW zPfj$NtkCRegKxaNkL{Dm&4UFrB9JeckrnrpxrrfcS*zFn!$@50Bp+Rv6a8^i>}` z{^&C!aNioXkl~{v|C24`NOwU*87V^Mcg@$D?b2N!>(vs!dM~aml^pozQzFySlj4+O zr9@b@HycM+l{@f^DUqr17|;k(0J(Z^7Cv-QnFGHyIWjdt2muP<#MOH<8FFnB(uhs~ z2{mR=Bmv}YIl^$kjOCihFsJ1PO9r|Z1>|StE6neiuQOx>^Ke3p!7|+@!3^>~$qTD@ z&%h_Vl4Ai$))HzEHMVK`A8)4~m@?$?1ji!2a`o=%vR1#F3F;>eWITND6{ZWlizOfIR=Ho!SFZx^>Ot z8;b;};ZjyZdvdwN!1MY0?AS@dc=Qn43!Y5bqw@i;Pb*f0=&IdQXuDi_G`U=YPXO{J z0}pz@c>EmQsGdxjRD%`>6f4oyyC<{Wd^ovSqJoe+=<9U|A{i6HoLi#3N%K8kIQ9U0 zm=zJ2UP779KQ<6kID@782b3BxZcS%<`jaVpr1tAxy;$L+_~2Y$reC-q{2wYf2TF5AWITTVGu}ex;>d$YwmVJh zIg{zOhSV6=Qp0;2z5bvVEoa3cu}OcDiMxZK?&eJ{-D_iM9PbVW(XzqmJLh$4 zJ#pP*uRXBS6D>_D&pXNsM2FLqDAi(9{f%j@U zx~v=Dm^k;=BY+R~=cBoUGl2RvG-m*Od<1B251KtV-ea^tjNu!5v={{FX5az00#y&r z08Vqlu9ok>gR_Qa4UUKNkZv@S;;&5FpWPz>xcwnC<2xAW9t}+&9Iru40qf5lKaSKO zV;5M*K3CT-6LSIE-0ac3AwSyImkEr7?#<6y(5<7b1K{;iNQl5p0zYWWfOsQJ3+XVu zqRoBq@wvd*QVuH|I@;8yK=)h#`^R-nhoQD{U_8v~K`_>Cv|(_(9s&W^_r}9q08hwX z{}41{V6?7xfn>ZE^7>H2ci_FA09rdJJ`f5)3)c6-8*@QIfI!F-@}V`o3iQGUgCM}_ z@4)L|tX2(x?>5IiFW8cm$@q-k_S~lhbhP4ldqhkXW|-;PBYj;)C28r1{8~z=3^bS# z3>qPw+)ppr^8lVkXL3KiOyFstB~MG1Cy`?__|rH^p4tabRi^uaj4(&Ov`+z}LF0G` zQsgOv8mt)DN`(_NvE7P9s8Whma5Ox^BKAYkj|%YeRs z&Kv!0__HCeNAuXc19V5XC5I#F8Z0rx3T`I3Eib%EI-VBp;N}@8mqwcoo74x?nDV)D zqmp6&m3^5#)pnO{ob~6{DJd_fEV2C6a+hTa`UL$5T_ShMx5FyLhvw_eR_Uk|fzu6J zM3?Y;NTcNQhxrNIbKE>mFdYUnJC~o`id_$W1x>k zF+SG1DxDuK2 zKu^CLW(QdEYg?Byo?CnKggi*!6FFL`;hw=^-F~O#wYXgIn+DSnJ`ET8U8d-TGqDK{ySPd;ev06R$tp%^Y73OsyBw)4m^d+ zTNmM@nE?m46-R|&20r-Lu$1VO0o5+y)o(|JaxG*cUGN}C3=bL!08hTY^{W5Nv6>jg zGvs)MZQ~k&Y<59&}RBf5vdgVW*J4uufZvZ9e&J~REALwfjr4fk$CFtvXM)?oM zNDrkEq5vg~k$H@gjmtzw_8pf=ln^`sC5+3<8RfR#n(psoC3+~0um&i>7F@aW@VRq|WM!AJjM&q_%U<+#WiV+C`B}@x*2ACE$Q#J`>G_Y-_Y#?9)HubHu zsiNWV?8x+ZaxMrjE`c?MsmzUN2~bN`M4IUCpq&tCO)1Cjk~lMHR*F zPbM{jBtXI_p2bLqCX>1$L;|d|wsj`M{^-NVjP7NRpb;Md(!92H21AZXMnY@^NO?}{ zbbM&H?!Yg85OF6cAus|YDC0ER)cDBkh?aO7BP;@}Wlrl2w;$%AEQ18nF zQ|>?*cxwpEo$-o$Z8gJ(o>iP|DX~_M6dLt*&)}0q9{s$fj;@|& zCi$>*^|S&C!W*L=ja-b!Ja4Hn3Z;?#-$d&9e8s%e1g`9l?SHpVvE6R{z*>=V!1Au8 z4DFUXWw+VbDBN;P>*|yQW2yGzW20an>n2^StnAZ$EY5=*?1jF`33vQCY&V_~IK>mr zRE?X*+&mHQ`MWFUU#k~>Vb!W%XC@iG9_67+3)Jwz5Gkj-6#liH6UOQSm`UFtJ10Iq8*n5>N8IMYY6Z1< zP-WTwUX^O5;cCQJKa4i5hT%AYcI3bIjK&Iy?$JH{o>71$O#JbBJ=1tZR$qKIC0<|Y zh1KVVG@bqr>g(Q-0%07i&cy4((W0@LxV6hA{>#q@Z*$YNf$KcD0iF@YWU7O%i^6gg zEchg<)Gr!&VO7ErIZbo-tCG!>@gW&+S6EtvMWlG8feUI^-S35+gM(BUAC9ScZ1I;a zO40g^%n7H$>Z`HddR{T!P82ZSPBdwN<9_gJv3RQ0c+)PnZE*PZcTA9mSsf}{ixI_VUYg+a58l?%XFf|xb#GT< z;EO`oXK-!q$FCFi(_b-GLm0!qJw}46do~lMbAOGV<}T>d-gJXR|oX)B{rpRX4Iw zwUKh2($gygXQbk9f$8_8T0FlGTxYj#U}4cNBc5@TB$(0{#q=kQr~V<$1>x#?Mtfsl zTH{?Z1JfGI0zeBf!a7E~vmY&_UrL0>bk5ml z&p!LV_cS&(agA+_TuZukokqi>4b~u9w=WVdL|a?;6=tCAt?w0XK#tZ((EzbblQ$TT zL9qLYxD*I~YL;4e72TjsC@990Tel5Lhwh*BdX(R48g=@MG&?N%Y2k&Y`7bk#~Jt?l+{ zLMST*U#Dw5W>0S&R8pbetBGEw9U8D%<1PEwlz6{Na62j-N{Lcd?sk>Wo!u~V)-5yZ zVM8La(sQXO$%B(fD~MrahY4ms}vPwfPgDIR_#8BcJV&uUEfB8uI&R*VU{ym5_@AGSZZ%y3|>TX8bogjAe zIn>e3yGg6kYmFWsn$Gig#TI*cCd?2S6ceV(8))i_F8+?BiS~!{C=8A)oba6RPlCd< zhX@%~X{%hwPD1_#W<`Go+^YyL;Br}EJUOF}Nz(2YKDG!Pxu7AJs6H&5jh$6W4QMe! za%D$ExSPPy2ZPI+f36ki&$Z&$QS7TlZ0>*ICc#22E#e1+(}kgDtC)c;@(&=kiMgCH zix#(uZ^?%IrhG|btU{cGHjfG>1RP$ETXCgw^-_M*fU7G`#aU)|D0anXRmv;MoE3_@ z#O*9sd>)yr$N5cpR{_ENRWMOf${b#oiL0fxyTyk%yj5NcV!QY$>}s(&AbFqYV8;v? zqQ^uS_MJ2&&@C^DZz*6euC(wP4c-Zz8!N1I%Qxb*nXs)=@=*IY>0>Lyw2*0~l!<7; zV##A*0*a3@tL_eI6K2adGtH7HbT&%&vUeoM-a%(RC_RDst%jW%XzNWbq>dIT5wZ1K z^w51dRZI6iDoy79H>=~ND64U$o|!&JzSEG4RNpT35R-s8#MK94LuE&&^j6m3Ft=2| zhzoN|Vnai0sE-YcV?$kRsErLZv0>2;{*;6YEaY|#`Hp-+-Y192F498Qkc;F~a-2L* z_LIlRedH^0g#3j7E$)`ak?6VOQZ?IE9J1yw>R{45Nn6fKOFAW=N%dFwJjm_3dUjHm ziSBz@HyO!28ZyiDhN;N7PVS-cox0<4a#L<;f~KlUCuw{W3$Y|&n-Q@K9G8O+@KSa- zMAyBmyPd& z56%#u0@12>2+{*mNW4G;R{eYtk6b?jjt$Z$fqq2Lp)KV`t{;BwS%w|Mg9Egs{PpXH z!M36pkO92IgZX^v$n`_70UDs|`e44clwr$JCsQF!(LWOK={CPV5ZAG*HT4v#*?=rJw`%Fs7In8P!` z;$H#IUl1I?;Seo-TL1cSc>vR}ajFb6(BC>54a`xL(w_B(zUa8saD{N;Qs~)h$iSDh z)y$d2; zH=Xl|VT+c*3}fOlypQ0M&kgxZW+SDT%toFyyug-quTinr5S8YUerX=LXz(Wq8N{z4 z`@wuVClRvEavB6XlOk3=72k*rug8YhU`n>Ut0IF`X~_3v2f3Tf zC*#OlzGiwOIt4xI||BvU1!&sGF6OP7mK?+=iG>LX)5+n3%3T#suYt&mFmGv~9Z4 zie$D~VmG@`_2!(U^Z`G!|0Y^+A?J0LJAC$X@2zf+tJ=-)<`_(d9LIj~X^vIX{D_6r6d%P?GqA#Ck3o^jszwD}>uDGM7PBw*{-U*50u z&XM!-SZ=m-ahgrUCm<6@GYin$h(6DIsE%TNx%9eCdW5Z3R(eU|WrVRRDTTIWz>8@@F!^3+`i}4Ba9+lfoZxA60 z9d17Hiiw_hg%q}n+OeAb=y45Asx#k;jM`_lk7@7MF4NA^jz#qL#pVw%d^X$mAas3S z$Txqs)J#8H8mF7DTG*+$sAVx_h+|Q+lz!b8mu8ihYREn^i&#vrnU>OcYkak-U`)Oo z^N~^K_}h5s_Eor)5|7j4@%kV%KA0Hqb$Pw6t3VF7Y!1`cO5#I^w~)CSsF{_P1lHc9 zI9jU2`$#kfS?V?0Ma*$rz2+~`u~zdWGzR0>Vy*E(Du&|kHilNZ^f4NmFuIDoKO!p? zE?t30yRCX}M_R z;<;$#!dx_Raa@h6bKD}3R>xnFPqPe#Tp;I24@(;38{@lTnF=T8GZz-0rTiN}=QRK` z19(54*(XbiPQ_oz=E7{EFa9SYuVFUiS2b7C7QolUk`l{2&6cYPsli2ivMm{5Opuyk zTCCL7&J`g#ez9eLfbY;Q(SXS%t)NZqmJ1wYey7Z&$M;*tBWBxUz&ci^rFVa&+|C?i zhb3N@{H}(qG@USwHy$vi%OGnEGxYE34(X_^GrnDKX(Bb|7~}E4R8{_ejDv3v1rwp` zwm^`RO5yY6feaYAJYb@ccP!iUQub&VD-JQA^;dF|^pZWy%Ux9en9war)ZJ@YNep_N zipt8IWo2bG&4>Cd^iW^IC@b1UwbsNDMh>Mg-;ltn5vH;9){?|Wk;vQzMQb&%%W69a zJC($pGG|5?&e96BBypdpwzv-!i)B>G`#vSLNuR2xqIoP)+~ zWj4@FOnw!eg|{are*un`f{Bc=CD2x;Z<3hkMbnsL3%ksld>JR(1nA8A~e?;!*?GMe%2M9sjWB}r%M zRSgJRpy&NmwIul`3wEj9M9X6xvOwnyF5#Z;)Q;}7lc!8Wg!`B#eW_}ai|=ke`${@J z`$|Sy7upTlmdsPoJ1coQ9l9a&AcFSmbT-It&AcAwJ&~RTv#V{X^v|uCJVqU@w%%t| zg0=KU$b9C6NEV^j@MaCPf9}X*J|`<4gYx;n3B1W?a>A;HtR&dkkW~o7&MAcuxuWDz z>yoU0iD3JO`y#m0i;HN*omnnUB)c@KRKf3Oa9c+yMxAJ2&(XOS;ur{@tj;Rp_wj|A zhav@ew74-Vfb;Q50xUPYk7b9qlO^~g{2qQ2cj7~25xEsVi=V+yk{M(Qw4BM=(rjOw zMeS>|KT6kTYV2q)%lxy)OK30Nji=)x8fnWOhw$jNivc~JodcnBK|S<-70l9xwWHV8 z#wJ_N1`V)xd@xfRW{@@4CJVG-Zq(XEuvOj3fb=kZVlayjD{Gg6^@(gN)J_WO3tdXN zBdp^`X^iYxvCFY`iBXejtYT6@5{sKN>sTyU261PD$$GET<#vUo(Q6y7QN-ROj$T`T z?V06!lY(*Z-npQx4GW{!)?HiCgLOhMO9=DYmo()}U@p4m$?V00jX1;tc9N<9oN#kT zcQzmTeup;;l@%kqCYlTCvXt?)=&hS?kasKmXq1nT5r)~7ym6h zdso&HDy_F(Zo#{`J6Kw6dla6u+76?+^cI_qSN&T;)N8=P92=qQb8JiP=u>96wlN%? zKEbvarGCi2#~SW8Q+8C4V!?mOL1}Mzt-r zyExji(Z)`6ctd6;>}j=~L~0dhN6_|=O-o;T$TmWcwo+}ItqIX}+ZaJ&j&P^2OqfZ> zK4F`W(Pf7Ar`Tx@?68e4U|Noj;H?@^I+KThzsr_FBVD!^IVk?XRt;aaWhBGHAJ`Vb z*QT67@PH{Nm*ZZblRva!1FODNVcruP?u1t+*#^R&PT6ilvq9T!J51l}wi!9`Nok9; zSz1p&Ic=-K=v7AS%UtaJhA(XwllUEYhy0K==MpVIIrkzs$mJY`&hPRB)UFRdSo& zX4;PXKn~~5WmT4SiisYbp6iWceV2=@fXyAjfq4R#N0-&-E)|%_VpVMOFUxc3FU#}9 zIrufcm}TdA_hVT9pLvZ8B0WaB@tJYs&J{lHNQ8LrbGIk8b)t&!WQ_ z=rnwDCeKg*aXIfs=45VwN>9d!vYemh~3i59V(Rr@`583$1kJw}tN_4h>?b9vF>HTDtT?;e(Hgx;nI9 zb%>G9j3p51%Cpe*Ek&m|c&fE1pKfX`I;rLLXEceh_iRogz3-8tn-QvG`miu|s6RYf zw9_pbE$Dd_M+>s|(KB5|OSzPzs)&d3@5F|;W5Zhlrkg$}LOM}>F2?0>UtgXd7vmCm z;&PssrRthV40kw&d%>qgkHqr_RK$%{$`ACHUWOQ6{JtoMv8(8I9gH{U=QI9}je<8f z|58Moe;IV=5Wa;u4(Obj_9u8}X2vimj-+LQGAkpUTB?c(2VKrAL6SD9shT*3D%TZ1 zD#7=Gtg2>tbTPZ_>@Hz}9oU$1)1V?_2pjUB55e$XM7mA(U{=L%7_Vz1V zv^mQ5{uPPF=g~X(GY!3ApG8JA0XdSGIL31&Fc&+9Lxgu!2(eg0Kf{ibI#nU&GljS{ zrVs@tM`jUxIx(n&#}`|s(j8vMw1J|$0v%L!#C$mU&omNo9OvM@YDWg$RPEp-e4Vf# z4&7xfgw}P|0_eWWIu2f1XAP;CXEDsvW0+4ZbPUL47T!a}7Du$HyDZjN1=iHbU#b%VzQ%W zn_X!S^A7PGW7O%KI#_OXTj_sT-9tr2ay)bobPM#tK)3lIUnx#z0j=BJgP^e`V;X(= zv>RcDNgs2;%~SvBrc?h}_Dl-D7I*hoMD3A`09eDG12E&eq-JJ&8Ctppd1{ch7x&<9 z#^^4HV2_sm9ec9PcBAR6NH&aK*Rn`A(v7~s* zylTrc!Qm@cJf5pSPIhsex{&Gcd3+vczL|42ESg!rgjHwGTWS~0Zdfv}+Bt-78{?@y z&E$O#6_xU+yc7Bx=}g{9TytARIc=-(-ZDVi%LFKVCVUKShm%*q{Sj{tFHRQ6g7wv8 zD?JhM0w-P)z8Ah0{!VMEz3B#+*`|LirU8R$y??XvR_Ri-b-54L$ED=aPg}eT)Hd6* z{qMW-uvZw!|Dc;3mCGc!sneUqnLd2zj+9lDJM1mL)&bJeX>WOV4##o2co5CLT!y1Z zGLBvA&}rhPB39W{l|$1(PacHccWEJX*d;)3s!tCsQ-T7Wp6c74k0X2t#E|bW+qxXH zuM!qGx1vI5o;uV=rw*-nW)M!${gD-96@?67kdFRwMa9!ely52jl7otc$_#LGAsq+=|sq=$xityX}&GAM$J?y`i+dM?6ft?fmA-ZXz zzehr@H0g1#LU0-aJ^ zS%zVEnO7D)im%KiJ_3=A6%k3Tc5XvfmiC*oz;CVGZXyv9B37a?b(=c55PVYS%0PP9 z))_2>Zf9jYZ26{AhQ~4j$q=4Z$-~8rz)f%EV0m6s; z5**A3RKe6t2G~8DZCQ~OI0UteD>7^S*${fNPk#4&!aH^2CpqsV@(hABe+~pODQsOQ1INa{5 z-Ye$fSVzk3C~^79%RFUJMFL55_x8Y2o&_v?g-+NWcvi>z1n=+qT>?Ay1)eDoP6#bR zmvFDJTsR^$3Y|ioa8Q^lM1(0qSh!wj7ec~Qf>&r`CwUpizNA!k1m4u~9`T-EoiwT) z6$~i8Upwx9Gq5rRC!%*i><$cqS6BJpWbxy#d{g25ZrE^qUXB)TCn?-+2vaBLm|3sAD+a$4L6ylfe-Z zG?rGTf%T^V&w_32VP#Hb1N^D9vVlg5Dmzg}dyqHdN-5HhsF#~UAMXsltYuVLx#&Bi zq^~#zV^O(vLrGTmcJFuuendfJF5 zwcG&P);TPY|4q;dQQ8dWf)|m@%O^FY+*D)yi+qxS9+ml~VGldOb|5$mZn_+-rJH^U z)^P&Ty{yrx>ie9|@?g-?-x^y1$R=r!PNTMe6Rd8pqfBxBRx8U~6;5x7n>9ui)A5Ju=POS^l3|&KLe~1VEP! diff --git a/invoices/views.py b/invoices/views.py index 04ea85c..4651dba 100644 --- a/invoices/views.py +++ b/invoices/views.py @@ -422,13 +422,29 @@ def quote_payment_step(request, instance_id, step_id): step_instance.status = 'completed' step_instance.completed_at = timezone.now() step_instance.save() - # move to next step - redirect_url = 'processes:request_list' + + # Auto-complete next step if it exists if next_step: - instance.current_step = next_step - instance.save() - return redirect('processes:step_detail', instance_id=instance.id, step_id=next_step.id) - return redirect(redirect_url) + next_step_instance, _ = StepInstance.objects.get_or_create( + process_instance=instance, + step=next_step, + defaults={'status': 'in_progress'} + ) + next_step_instance.status = 'completed' + next_step_instance.completed_at = timezone.now() + next_step_instance.save() + + # Move to the step after next + step_after_next = instance.process.steps.filter(order__gt=next_step.order).first() + if step_after_next: + instance.current_step = step_after_next + instance.save() + return redirect('processes:step_detail', instance_id=instance.id, step_id=step_after_next.id) + else: + # No more steps, go to request list + return redirect('processes:request_list') + + return redirect('processes:request_list') messages.success(request, 'تایید شما ثبت شد. منتظر تایید سایر نقش‌ها.') return redirect('invoices:quote_payment_step', instance_id=instance.id, step_id=step.id) From 328c657e0f3dbd58f086cb5669f95a51d3548f47 Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Thu, 9 Oct 2025 11:45:59 +0330 Subject: [PATCH 21/28] add loader on uploading installation report --- db.sqlite3 | Bin 4210688 -> 4210688 bytes .../installation_report_step.html | 92 +++++++++++++++++- 2 files changed, 91 insertions(+), 1 deletion(-) diff --git a/db.sqlite3 b/db.sqlite3 index 79d4607ad3f36157e7ceb521df4ace8e4a2dffd2..088d726c69e80fce0675e1bb4afcdf56d3caf92d 100644 GIT binary patch delta 3604 zcmbtXdr(y86~E8jyUX2smt6rxWLMM{MV9-%dofvdMXRG?3^-%zv;#g+(JBafhRof2oFRI9ORT9d|c`f)EXXh`^@ zfBepG_MUUkIrp6Jan>|j2@|0!n^>LOowE?h-YTI04pn;i5=`6W zdj+pQ*S}ds{O;8n8hV9w-QQU7m6ortYYr3XwuiaQv54tn(yu`{J9D#r;3Cjx`uLU1FbA+Ye+1J5>}n_JA!;yU@Io;R-e zxE4<^tkjBoUaeWTX-9*!e*Ml}TLfJ-bamV2>dg)6?$>14i6a`kby zS}f|Ju%hb*c;gs1*X#_&Qq4pVzHQu!Df1J9K3wdnE_6Rd>L7`bIH(kRT3n%P!tL!k@dnGAzv&#)0LLQ z_yq6f_H&Hqb&rSbWSO)i%#QjFq?K$6yKI*~#z$WjjGz!M7R6#g3yG?zDEhZ)bPX(f z$(OsrDB4uhuqCv$ZZq3T>2BL$Yu3ab6AzB`{7)2Eu>Z_}FG;FEeRcRRu zTA`#>uG>|K>Zpd%3JTTj*vvL-qtTq-5=|M7HByvkzD!XB*|4I4o4xr{z|FF3dWkAq zU(u{i=2lRQiOZr0su;H1;s(GMXHNy@)qF>cZBj;E(i3MYYic+=VWzUCiNdJM84c0bXO z`@L*7Op`dy>Xy_jsajG=3Hj&wUc)f_?+y|tWa{6E zd)KEUbA|0r+vdun63(y5O2R(Y-)suw~6%|sU9kVfoS;)ePFPQ@q^D&S#hx9mbleR)lyrib<|p_f?7c>rXsNa zmbizoTA?`Xuns${gR#Oo7%QxUvBEkSE3AXD!aA5H`07XEq4O-w-@*8=`A7VH{tjAM z(#JeakuID~-0zeSWO%<*nYM~DX%hp%wxXqA)u3{Xps#|eo8ln&$0y1iFWpO@qfgUs z({Is-=mc$op0>hi@cwP3-A-?T*G|uCr{}fP^V;co?ex5MdR{v{FJo1OMJw$3rwY9O zsk(SAM|eowrS%^kUe($g6n_b_Nf;XIawWcmyj&yP0xnX^`w z6hnSaBNr=5C@jl{Fm{ki;y~X(A3@}M38`WGy82z2nS>;5tleJSu&ZW+6l=|LCC-#- z2s%O-!GLGVimMiq4R{j#Az3mD%rpJ(gU{;ZUNCrA_kou#1f1Zj(2H+^i)xs4YJ#E4 z&Yvf$4i_UVfK`WIICGFfFJmCb^#3lOALLVfk~fJIkt9r_im&3Me2~YuK`uo^i6DXD zgLn$XdYIJujxI8M;KTDJH$dH25gIn;y;#A5ix)~b@QVv29l$JlF&hNGj8FvQOrRgo zEQ;*+QoZzt7)UII$YQ)k1!MkBKb&~i%k^_NCc1Ta;Gl9)D{#0aL+J!XC^>uT@DX_)f<_MPou8V z4BB+>P)X`%R2TJA%B1$t81*Fu(*?N`2ZK+h(WU#DHYZ6C#D1oAgv}9-k8sNf?;GLf z5pJ@$ooR%rcO$X;PBi`0;^@E+CQJSZ<~<^O=@=FuW5l@S2p=a)e(k2v-4H~D%E3YM zG2x4g_6n60T|pgr?v>#QNh(Hzh$hOSsxz$<>J>4h$%ZC~j5(oRGD2ZPFhq@se?uQ1 z9>HWIB%uLJ)|r-X7!2zrDI}|!tc96<6Y9~hB!+d(Fqq~E^}{2cB!?A^X?kAowTJcL zsZ|m+4b^k-V#)0KqD<#4j6cV(=ALrzaOIvSp0gg6y}{O`Jx=RL^Se*Fm$)9dj<^iw zZ%hYM;DkF(_i-n=rkeo08M+_e|Lo06fx%Fe^N+7}i?`gdrW^lG^KqrO&9O<$$2wt| zcf}_$A8U+l-twL19BciS0jkwVL#pu@bZ!j vP*Mw|DapTgstzciy)_;}ZuD7t|bZysO%LVYvkIMFFw7wvEe9Hd-kLAgY delta 1859 zcmajfeNYr-7y$77y6@ZF<4#V%lUq(K6gYNockeioq8V+I7AR44&U!awx% z!ka1ez^`X&B0krY8HNcIS7`y!$@8 zv-iC3K9R^4DuQ)oP&GHYUGwqpK%JON%DcOBCB0>KDP2Lq$}=efW$YLn%YEq@7bsGt zB1Q2Al|V2UK+z0xAL+mseMM@aSM&vglKk|##x-rwol1IQl`ayaP^F6=uCX%wWrF{e zzrkPQFC&|cJ;!%fF>p3+V&Lj#I_*E^V^`xe#$Y;3kFLfIzw)FG{jlHASplQBH3JB@ zG)8YU5Cr|^zPTmo2EQ0oWy8y{o(ThH#7vkOvtU-#Gr>05&Fpq=AwP?Y^JPPJZWAl` z8tWU^HmdDyO2?{}XMG#%*EBajwZ8c&rMhU_gECob=AsX@8!zoUNGZK7^H*+s= zMs~a5V)8^8A^SGVpg6gjLdHt_9m)DF!GHUA;q4LoSzbplG(n;t;&!+Auj#};ra!aK z3_1U~Z2TquVDdy6Hb+0dTb#_CT0vcG!tKDOVX2rCn~tSn=~xDuaL>5D-#SPT&U+C@+#(M>BjazXH0VSsqA?d6?L6G!qR+-Q_Ob z6(XO!1BPDrQidL;qv*+AcMXZ(V+p#`=k6qFv6BJepnI-KEK~#4da;wfJ9LS%;;+^* z4-*dJ-lM#e0`h=6AG~=X``txE3l6yx7nl#|69lwe%%21Nm)T2TEK;xmU5f~ND0nei zP;mFX(0ftgxH(N`eo6kR8_Do*$=Vvt(UGbb0vyHafh0NIbUK-~5PFw0u$d zl11}7)|b_8P!}wFtTniBWm(Irg*EFRu3D~Cl+ItgY;o<1hKH2(;m3TUPtBLae4i|c z_kJV8{i3NKTDx42qRKi+q0ycOX~d9Hsy{VVt5W^D$#4={cM8*-C^;HVhM{CQhITbc zZH>$kW&;7C>Ur z73M`8htZ`Lc@qhv2mH2J%dR5q0o1Z<-ku!{P9wk;aeM-2gkl@?3&l=!tJlAp+_xZT zhi`6cMzqmWTw{f!uLewJ*{h0yprRP|L!DZf2FJUL_QI#0Vm9_lK{0xzKwE2Lj_8d9 z^iED6fOtw;Hu^fG&7xpZGCqW!DAn4N#Ts3%=@9#%cGJYXp?BVsUZr(V$RpSj6#Sh< zBm3jp>x-ZyFQnH8R7nZ?Ak1q{bo8+H9D^zkYr`gHHIpFVnfeST^w+sG5UTt`Q2UcJ z28op}9=$Q3%^?jsBW^>t7?dK)S8zFgPuHQ3k7@J94Xi-4kp!`~#a0cAL$+t2zqcfN zn&K~1jH}&rnDU8#eZe5~mCQgh`bs*@5Xr$^->1m34{wUl%O&Y>BCGfmjNZ_6aNb+I zjlnl1c4tkVg5H}H&cNLo-9B1kY0G3S4uXG^U&h_xj&RlN@9be#wT@WVSZ-Q6Ee^b{ a*Uj|0t_}#3g$`izLUQuv`rOcK)BXgt {% endblock %} @@ -38,6 +92,15 @@ {% include '_toasts.html' %} + +
    +
    +
    +
    در حال آپلود...
    +
    لطفا تا بارگذاری کامل گزارش منتظر بمانید.
    +
    +
    + {% instance_info_modal instance %} @@ -516,7 +579,7 @@ {% if user_is_installer %} {% endif %} - {% if next_step and not edit_mode %} + {% if next_step and not edit_mode and report %} بعدی @@ -638,6 +701,9 @@ // Require date and show success toast on submit (persist across redirect) (function(){ const form = document.querySelector('form[enctype]') || document.querySelector('form'); + const loader = document.getElementById('uploadLoader'); + const submitButton = document.querySelector('button[type="submit"][form="installation-report-form"]'); + if (!form) return; form.addEventListener('submit', function(ev){ const display = document.getElementById('id_visited_date_display'); @@ -663,8 +729,32 @@ return false; } } catch(_) {} + + // Show loader overlay when form is valid and submitting + if (loader) { + loader.classList.add('active'); + } + + // Disable submit button to prevent double submission + if (submitButton) { + submitButton.disabled = true; + submitButton.innerHTML = 'در حال ارسال...'; + } + try { sessionStorage.setItem('install_report_saved', '1'); } catch(_) {} }, false); + + // Hide loader on back navigation or page show (in case of errors) + window.addEventListener('pageshow', function(event) { + if (loader) { + loader.classList.remove('active'); + } + if (submitButton) { + submitButton.disabled = false; + submitButton.innerHTML = 'ثبت گزارش'; + } + }); + // on load, if saved flag exists, show toast try { if (sessionStorage.getItem('install_report_saved') === '1') { From ef0779de6a9b4dafaacece65d34435c4f08b6274 Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Thu, 9 Oct 2025 12:10:57 +0330 Subject: [PATCH 22/28] unqiue hologram code --- certificates/admin.py | 6 +- ...alter_certificateinstance_hologram_code.py | 18 ++++++ certificates/models.py | 2 +- certificates/views.py | 56 +++++++++++++++--- db.sqlite3 | Bin 4210688 -> 4235264 bytes 5 files changed, 70 insertions(+), 12 deletions(-) create mode 100644 certificates/migrations/0003_alter_certificateinstance_hologram_code.py diff --git a/certificates/admin.py b/certificates/admin.py index de9ba72..f1eff8a 100644 --- a/certificates/admin.py +++ b/certificates/admin.py @@ -12,9 +12,7 @@ class CertificateTemplateAdmin(admin.ModelAdmin): @admin.register(CertificateInstance) class CertificateInstanceAdmin(admin.ModelAdmin): - list_display = ('process_instance', 'rendered_title', 'issued_at', 'approved') + list_display = ('process_instance', 'rendered_title', 'hologram_code', 'issued_at', 'approved') list_filter = ('approved', 'issued_at') - search_fields = ('process_instance__code', 'rendered_title') + search_fields = ('process_instance__code', 'rendered_title', 'hologram_code') autocomplete_fields = ('process_instance', 'template') - - diff --git a/certificates/migrations/0003_alter_certificateinstance_hologram_code.py b/certificates/migrations/0003_alter_certificateinstance_hologram_code.py new file mode 100644 index 0000000..00fb9cd --- /dev/null +++ b/certificates/migrations/0003_alter_certificateinstance_hologram_code.py @@ -0,0 +1,18 @@ +# Generated by Django 5.2.4 on 2025-10-09 08:26 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('certificates', '0002_certificateinstance_hologram_code'), + ] + + operations = [ + migrations.AlterField( + model_name='certificateinstance', + name='hologram_code', + field=models.CharField(blank=True, max_length=50, null=True, unique=True, verbose_name='کد یکتا هولوگرام'), + ), + ] diff --git a/certificates/models.py b/certificates/models.py index a7afe72..c374035 100644 --- a/certificates/models.py +++ b/certificates/models.py @@ -28,7 +28,7 @@ class CertificateInstance(BaseModel): issued_at = models.DateField(auto_now_add=True, verbose_name='تاریخ صدور') approved = models.BooleanField(default=False, verbose_name='تایید شده') approved_at = models.DateTimeField(null=True, blank=True, verbose_name='تاریخ تایید') - hologram_code = models.CharField(max_length=50, null=True, blank=True, verbose_name='کد یکتا هولوگرام') + hologram_code = models.CharField(max_length=50, null=True, blank=True, verbose_name='کد یکتا هولوگرام', unique=True) class Meta: verbose_name = 'گواهی' diff --git a/certificates/views.py b/certificates/views.py index 5149334..c16e7e9 100644 --- a/certificates/views.py +++ b/certificates/views.py @@ -6,6 +6,7 @@ from django.urls import reverse from django.utils import timezone from django.template import Template, Context from django.utils.safestring import mark_safe +from django.db import IntegrityError from processes.models import ProcessInstance, StepInstance from invoices.models import Invoice @@ -157,15 +158,56 @@ def certificate_print(request, instance_id): if request.method == 'POST': # Save/update hologram code then print code = (request.POST.get('hologram_code') or '').strip() - if cert: - if code: + + if not code: + messages.error(request, 'کد یکتای هولوگرام الزامی است') + # Find certificate step to redirect back + certificate_step = instance.process.steps.filter(order=9).first() + if certificate_step and instance.current_step: + return redirect('processes:step_detail', instance_id=instance.id, step_id=certificate_step.id) + return redirect('processes:instance_summary', instance_id=instance.id) + + try: + if cert: + # Check if hologram code is already used by another certificate + if CertificateInstance.objects.filter(hologram_code=code).exclude(id=cert.id).exists(): + messages.error(request, 'این کد هولوگرام قبلاً استفاده شده است. لطفاً کد دیگری وارد کنید') + # Find certificate step to redirect back + certificate_step = instance.process.steps.filter(order=9).first() + if certificate_step and instance.current_step: + return redirect('processes:step_detail', instance_id=instance.id, step_id=certificate_step.id) + return redirect('processes:instance_summary', instance_id=instance.id) + cert.hologram_code = code cert.save(update_fields=['hologram_code']) - else: - template = CertificateTemplate.objects.filter(is_active=True).order_by('-created').first() - if template: - title, body = _render_template(template, instance) - cert = CertificateInstance.objects.create(process_instance=instance, template=template, rendered_title=title, rendered_body=body, hologram_code=code or None) + else: + # Check if hologram code is already used + if CertificateInstance.objects.filter(hologram_code=code).exists(): + messages.error(request, 'این کد هولوگرام قبلاً استفاده شده است. لطفاً کد دیگری وارد کنید') + # Find certificate step to redirect back + certificate_step = instance.process.steps.filter(order=9).first() + if certificate_step and instance.current_step: + return redirect('processes:step_detail', instance_id=instance.id, step_id=certificate_step.id) + return redirect('processes:instance_summary', instance_id=instance.id) + + template = CertificateTemplate.objects.filter(is_active=True).order_by('-created').first() + if template: + title, body = _render_template(template, instance) + cert = CertificateInstance.objects.create( + process_instance=instance, + template=template, + rendered_title=title, + rendered_body=body, + hologram_code=code + ) + except IntegrityError: + messages.error(request, 'این کد هولوگرام قبلاً استفاده شده است. لطفاً کد دیگری وارد کنید') + # Find certificate step to redirect back + certificate_step = instance.process.steps.filter(order=9).first() + if certificate_step and instance.current_step: + return redirect('processes:step_detail', instance_id=instance.id, step_id=certificate_step.id) + return redirect('processes:instance_summary', instance_id=instance.id) + # proceed to rendering page after saving code return render(request, 'certificates/print.html', { 'instance': instance, diff --git a/db.sqlite3 b/db.sqlite3 index 088d726c69e80fce0675e1bb4afcdf56d3caf92d..18e25d423e6879c79a1ca3cacd066535d7789263 100644 GIT binary patch delta 13018 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 F`+tXokX!%& delta 4794 zcmbU^3v^Rew)cN;lAE0Lm$d0GX$ozjpL_FZ(vl`AFj%P7$j|CSNLwo(fmW+nfuU)k zR1~C8WUC`s5C?S0vrz3BeK?j`Pt+x15d=q&RX#q^K`aHoFz`-NagFn4y|>o8XYHHZ zbN1Q4v-duGNBY~CNTikNOpVK+D2}6keOSkad?%f;CwwWB?&u0xEv#Xo2HPU>7ERZh zyc~L4*PgsIdRNz>yrs0iYx0-?H;%2MK^?YR>4dJ`V#_F;-t;`STm$qut)**j{vq1ZRa{UeyqliJ1_*(7^eMd?3+`mNNkkT~S>qG- zD$`FJJf&_&smodDbtw*~f@|aGB#lmSmpa^q#fsbI#%&h*89I*4s7j&BQ|u`&Ues{! z{0Ct}5}k!_OQZXotOd1z7^2<1wxJ2Aqh$_FfWa+u*mi}r7z#k_WZgI`C~Tm6m7%Z< zsax4N?BB{BI83&xAU1N*t=}0yZQ+iPDKm(X*whIF^xR0`AayE`CfH=UoaeQO& zc^O)~B^sD}k5&)HEgXlxdyYe_U_tj$=o%P8b_bz220{2$j)%{Eo-qF4Rj$PNFAzQ= z2={-)J@YS?ZtjKXULsdLh=ZIPrUubiqR4ealsX6VzvccgvN#kIIxohR%-@L3|Hd?k z$1O-`w@TaOR3a$)0gQ@v1w5_@{Y2iwS_mzdIGpJdzDN)#BSoPrSQ`?C(1wt(IY@Ju z3kxd|6rB!8aQB+P!j7vA0>0WH8myW#=x1~VT}0<`e5ZI6(E@z=yqM0$>2CqCTeJ)E zcVxVPm2UAlxl0*Z#*S{yg^yklO*p(;+`+KhxOoKWyavL7cpg9h2dSR>ADZ{m5`%`ZwnzGwSVD|iVkg%xS;xeo zH53{~=g>!JKY9gqqMy*`=ooqv^`fn44f-2;550&0Eknz2;h;1L5yg{6v|9JA^yq+m zkwUeG1BNmBC*_MczF%`phR&tDn3%36Qsw0ui7J_vCy~ddr)jvfOPc`34>e{8T=R(V z!jFNO`0)=lOQ*8Q(s2;2T2&BtMF;j2-Mb~-UoXVzZ{siT?>{c~EZe@^#9 zlaP$6Dbx$bGg(QHX_PIz50QcWM)|sdsF)U05oTq|yGoPMEDBvlJ5f7YfZj*XphwUw zVx`^a3Dk&Ap>DJS)u93O1v-xY18qcqK^M?#BZFumvr&tsj#w;QBrh_eN^v5z53a7Uk(mGCTF%Urb#1>3+3>T$#%{o-0i$0Nl`@f> zu91OxCyb|bt@pGAMDrt6OdAb`%l6TLhwX`Q->}_AZ-qlAjHBV-hwU?&Ha`fL?e{~+ zuw8+_j*Cl#*Du>|!M0Pzv-?>cU5dr-I47-ZuWl<7%~e&*<2JDEh)ahR!*&Vsuh^~7 zc-gMOGp^X%7&;G|cEnwLf{R1V6fCZ_n7}$@()07sJXDPpC0>aha&j#GI({FBCy;=D zA4ps^$myq081vSodR<}yo5vKF6uVpnb@g@iH8n1m_y%4vHt8S@`<-qd3|!9RpxT*) z06UY`f<2H_p8Zew2ck3_O0m;XQ0Mk|?{(I?#J33Bq^*!!l=PX9P4&{ND7dZB*bLW< zxnpE$pR`NbBt@i!QZ+0#=9<8NDNlqCt;HmWjk(D%K4Kiru;(B#V$3RKmNWC1=}eHx zC;7m~80jnYr}RF$n_fk-Kr}ZzgsM~75@!D5B@NyZcY#_{Q(Wxydbqnck2a;kjZvm` zxIf2qkdEo`%KT&qW}8xJZ_GhqeUZrvO+}_OxRbo-!y}8H zzF-nPC?X%VlD1M1v6_}cw>4!Z9Bnkaw8YtCPbv%D8!d^DZ!;amoz=lc5eD-J>Au(x z-kE25iicD6wzWVO4IRgdO!!!lxzI|V#(cE7v4@uj_1$? zD!Lb4B8lZol5kE%QH~+#pTi`s9!%*Qv~U9whmJ<6nz5|tKR^i@fu)%V!al(ZO^=~sd8 zOh1h;cBUsY&@(|}gQBkV3Rv_)ss-xnY$^EJu5^wi#g=Vo$4HX91=8O-&mCYlQ%{9+ zvvGbTV*!g>p0u{oVpI~9JAyOXGydx{?gF``;Gilk+qp8FX#iW#xI0J`WsI1eS)I?& zaB5VZ)Yq8FDD+BTyECi#ci0e{j>FxVZ!xUWF2Fb2Gsl2Z807e=lG4t{zO|~e*fUk+ zDyi{AD! zGr&5WZGrx+KrD z$VtC3^7ALKEh1a07pb}MVHEqd#cCI9Z%}8)j2{pxS9e-hciL8WX7zR2>F`+MG#YUR zr9Gm3PFt@n)V!q0m3B&cafZ-2G6+KKVLt1%4dsb=#t-&an>pe|6a<5gA}9zIPsWXn z*?(l>b)V`6bnof}wf&pkH{8-oyqe=&!M?gAZ!beuwu3^Jg-W)D^ur#app=LVmI&ML&eQ z#3z7oNrJzx$WDg(rtDluYRM+WeWqj`ap((``5hN33kVeA3zbF5o48N8917&|{vCMJ zV3Ev9>`C?$_7Kewk>`$F{(C1XY510NMKd_)Y0s~~=gt?U;}m{3rC~gR{&jhS?tV=c z*CAeI=Lkm`4>3pocwv30bk3udQz{zoZmM4}yZj|%^WNFpE_mk>UjH3=&8jCwNW!?Ls{ z>ccV#(AEXsJpA@qb(<#UwX&E8e?MDP$jV|Cym-FI3*m3nLVW!jRoKfS?IBW~J2HvZ zyR`Vw%Z}ntxLS4#1&#fp1!qN^OKH5d)v3@7`y)Qo=FDKDo#I~z_e2-p(c9s~y&bMQ zs<{Xsp}^W!Q~{wu*PkIgpbodK495)P^xO1N`zPq*m&zF<^{*{1PNHeOL_vC0adDdJEOogGy-sI|;`#MB z)f0P9>}8maHC4rUO_gWac+4qf7Z^~MlLjqxyp+e+Hxi%Q$wh+3om`J6C^2jWrP;w& z5N1A>U3*s?RICi9;kvG1nLs{`(a#LH__jyH2cHSLgx9?E5T=d(Zy9JTDbwJehP`t| z9Jcs}XbAo6m2mYnua||P>s|pWt7I(> z2%+}^x{lO|B{+3r=~rV}lY~hZT3SE^S}C!&x7uL#qosaWe<2`rTyHML*PF))$GKOc zeqh{ho{49Ne4Cifjd|}`ncq5{CUvtCdG^@O~&;T z{I@fNZ7xLIq#Hgr!(T}Hy(xZy>){7~vnS+#f+1=Um%fQF zLjOLVS-25uO8EqMvm#I#^NXF_q(Et+M0!MIGmO{Q$*XiPY7c0>)JSB*ki@pmvcLmN z0^@PjngBL&4Kzs&)*j!RUPs$0pyR@4%M>HuCsF87_ xdX*uQ#I**V_Com_J_Y2TJbAI^6_e(*CWkeNhe_WWEWi&&v|B`cI44+?{NEQOBw_#n From 129500bc1d267ec4085ada2f96db5f5ec624f933 Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Thu, 9 Oct 2025 12:38:28 +0330 Subject: [PATCH 23/28] fix callibration to accept 0.0001 --- db.sqlite3 | Bin 4235264 -> 4251648 bytes installations/forms.py | 6 ++--- ...ort_post_calibration_flow_rate_and_more.py | 23 ++++++++++++++++++ installations/models.py | 4 +-- 4 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 installations/migrations/0008_alter_installationreport_post_calibration_flow_rate_and_more.py diff --git a/db.sqlite3 b/db.sqlite3 index 18e25d423e6879c79a1ca3cacd066535d7789263..ec04a213d68986aa1573d6a493091fc942c27b50 100644 GIT binary patch delta 19505 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 R#MAYoH%tQ_bR$##e*s(GHQE3G delta 10794 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 ILaCPj29fxUz5oCK diff --git a/installations/forms.py b/installations/forms.py index e877b2b..2fa60ec 100644 --- a/installations/forms.py +++ b/installations/forms.py @@ -72,7 +72,6 @@ class InstallationReportForm(forms.ModelForm): 'discharge_pipe_diameter': forms.NumberInput(attrs={ 'class': 'form-control', 'min': '0', - 'step': '1', 'required': True }), 'usage_type': forms.Select(attrs={ @@ -91,19 +90,18 @@ class InstallationReportForm(forms.ModelForm): 'motor_power': forms.NumberInput(attrs={ 'class': 'form-control', 'min': '0', - 'step': '1', 'required': True }), 'pre_calibration_flow_rate': forms.NumberInput(attrs={ 'class': 'form-control', 'min': '0', - 'step': '0.01', + 'step': '0.0001', 'required': True }), 'post_calibration_flow_rate': forms.NumberInput(attrs={ 'class': 'form-control', 'min': '0', - 'step': '0.01', + 'step': '0.0001', 'required': True }), 'water_meter_manufacturer': forms.Select(attrs={ diff --git a/installations/migrations/0008_alter_installationreport_post_calibration_flow_rate_and_more.py b/installations/migrations/0008_alter_installationreport_post_calibration_flow_rate_and_more.py new file mode 100644 index 0000000..b69ada5 --- /dev/null +++ b/installations/migrations/0008_alter_installationreport_post_calibration_flow_rate_and_more.py @@ -0,0 +1,23 @@ +# Generated by Django 5.2.4 on 2025-10-09 08:44 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('installations', '0007_installationreport_meter_model'), + ] + + operations = [ + migrations.AlterField( + model_name='installationreport', + name='post_calibration_flow_rate', + field=models.DecimalField(blank=True, decimal_places=4, max_digits=10, null=True, verbose_name='(لیتر بر ثانیه)دبی بعد از کالیبراسیون'), + ), + migrations.AlterField( + model_name='installationreport', + name='pre_calibration_flow_rate', + field=models.DecimalField(blank=True, decimal_places=4, max_digits=10, null=True, verbose_name='(لیتر بر ثانیه)دبی قبل از کالیبراسیون'), + ), + ] diff --git a/installations/models.py b/installations/models.py index 6cd48bd..e1e5850 100644 --- a/installations/models.py +++ b/installations/models.py @@ -62,8 +62,8 @@ class InstallationReport(BaseModel): usage_type = models.CharField(max_length=20, choices=USAGE_TYPE_CHOICES, null=True, verbose_name='نوع مصرف') exploitation_license_number = models.CharField(max_length=50, verbose_name='شماره پروانه بهره‌برداری چاه') motor_power = models.PositiveIntegerField(null=True, blank=True, verbose_name='(کیلووات ساعت) قدرت موتور') - pre_calibration_flow_rate = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True, verbose_name='(لیتر بر ثانیه)دبی قبل از کالیبراسیون') - post_calibration_flow_rate = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True, verbose_name='(لیتر بر ثانیه)دبی بعد از کالیبراسیون') + pre_calibration_flow_rate = models.DecimalField(max_digits=10, decimal_places=4, null=True, blank=True, verbose_name='(لیتر بر ثانیه)دبی قبل از کالیبراسیون') + post_calibration_flow_rate = models.DecimalField(max_digits=10, decimal_places=4, null=True, blank=True, verbose_name='(لیتر بر ثانیه)دبی بعد از کالیبراسیون') water_meter_manufacturer = models.ForeignKey('wells.WaterMeterManufacturer', on_delete=models.SET_NULL, null=True, blank=True, verbose_name='شرکت سازنده کنتور آب') sim_number = models.CharField(max_length=20, null=True, blank=True, verbose_name='شماره سیمکارت') driving_force = models.CharField(max_length=50, null=True, blank=True, verbose_name='نیرو محرکه چاه') From 7c2a1ebc7a5ad2033469cfd0e0458aec6b7b0bd8 Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Thu, 9 Oct 2025 13:01:37 +0330 Subject: [PATCH 24/28] fix reset to final invoice when add or delete special item --- db.sqlite3 | Bin 4251648 -> 4349952 bytes invoices/views.py | 95 ++++++++++++++++++++++++++++++++++------------ 2 files changed, 71 insertions(+), 24 deletions(-) diff --git a/db.sqlite3 b/db.sqlite3 index ec04a213d68986aa1573d6a493091fc942c27b50..53afd6e3f590fdd72907d18c047dbdb84a9061d6 100644 GIT binary patch delta 70476 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 diff --git a/invoices/views.py b/invoices/views.py index 4651dba..19e988f 100644 --- a/invoices/views.py +++ b/invoices/views.py @@ -885,6 +885,8 @@ def add_special_charge(request, instance_id, step_id): """افزودن هزینه ویژه تعمیر/تعویض به فاکتور نهایی به‌صورت آیتم جداگانه""" instance = get_scoped_instance_or_404(request, instance_id) invoice = get_object_or_404(Invoice, process_instance=instance) + step = get_object_or_404(instance.process.steps, id=step_id) + # only MANAGER can add special charges try: if not (hasattr(request.user, 'profile') and request.user.profile.has_role(UserRoles.MANAGER)): @@ -914,29 +916,50 @@ def add_special_charge(request, instance_id, step_id): unit_price=amount_dec, ) invoice.calculate_totals() - # If the next step was completed, reopen it (set to in_progress) due to invoice change + + + # After modifying payments, set step back to in_progress try: - step = get_object_or_404(instance.process.steps, id=step_id) - next_step = instance.process.steps.filter(order__gt=step.order).first() - if next_step: - si, _ = StepInstance.objects.get_or_create(process_instance=instance, step=next_step) - if si.status in ['completed', 'approved']: - si.status = 'in_progress' - si.completed_at = None - si.save(update_fields=['status', 'completed_at']) - # Clear prior approvals/rejections as the underlying totals changed + si, _ = StepInstance.objects.get_or_create(process_instance=instance, step=step) + si.status = 'in_progress' + si.completed_at = None + si.save() + except Exception: + pass + + # Reset ALL subsequent completed steps to in_progress + try: + subsequent_steps = instance.process.steps.filter(order__gt=step.order) + for subsequent_step in subsequent_steps: + subsequent_step_instance = instance.step_instances.filter(step=subsequent_step).first() + if subsequent_step_instance: + # Bypass validation by using update() instead of save() + instance.step_instances.filter(step=subsequent_step).update( + status='in_progress', + completed_at=None + ) + # Clear prior approvals/rejections as the underlying totals changed try: - for appr in list(si.approvals.all()): + for appr in list(subsequent_step_instance.approvals.all()): appr.delete() except Exception: pass try: - for rej in list(si.rejections.all()): + for rej in list(subsequent_step_instance.rejections.all()): rej.delete() except Exception: pass except Exception: pass + + # If current step is ahead of this step, reset it back to this step + try: + if instance.current_step and instance.current_step.order > step.order: + instance.current_step = step + instance.save(update_fields=['current_step']) + except Exception: + pass + return JsonResponse({'success': True, 'redirect': reverse('invoices:final_invoice_step', args=[instance.id, step_id])}) @@ -945,6 +968,8 @@ def add_special_charge(request, instance_id, step_id): def delete_special_charge(request, instance_id, step_id, item_id): instance = get_scoped_instance_or_404(request, instance_id) invoice = get_object_or_404(Invoice, process_instance=instance) + step = get_object_or_404(instance.process.steps, id=step_id) + # only MANAGER can delete special charges try: if not (hasattr(request.user, 'profile') and request.user.profile.has_role(UserRoles.MANAGER)): @@ -960,29 +985,51 @@ def delete_special_charge(request, instance_id, step_id, item_id): return JsonResponse({'success': False, 'message': 'امکان حذف این مورد وجود ندارد'}) inv_item.hard_delete() invoice.calculate_totals() - # If the next step was completed, reopen it (set to in_progress) due to invoice change + + + # After modifying payments, set step back to in_progress try: - step = get_object_or_404(instance.process.steps, id=step_id) - next_step = instance.process.steps.filter(order__gt=step.order).first() - if next_step: - si, _ = StepInstance.objects.get_or_create(process_instance=instance, step=next_step) - if si.status in ['completed', 'approved']: - si.status = 'in_progress' - si.completed_at = None - si.save(update_fields=['status', 'completed_at']) - # Clear prior approvals/rejections as the underlying totals changed + si, _ = StepInstance.objects.get_or_create(process_instance=instance, step=step) + si.status = 'in_progress' + si.completed_at = None + si.save() + except Exception: + pass + + # Reset ALL subsequent completed steps to in_progress + try: + subsequent_steps = instance.process.steps.filter(order__gt=step.order) + for subsequent_step in subsequent_steps: + subsequent_step_instance = instance.step_instances.filter(step=subsequent_step).first() + if subsequent_step_instance: + # Bypass validation by using update() instead of save() + instance.step_instances.filter(step=subsequent_step).update( + status='in_progress', + completed_at=None + ) + # Clear prior approvals/rejections as the underlying totals changed try: - for appr in list(si.approvals.all()): + for appr in list(subsequent_step_instance.approvals.all()): appr.delete() except Exception: pass try: - for rej in list(si.rejections.all()): + for rej in list(subsequent_step_instance.rejections.all()): rej.delete() except Exception: pass except Exception: pass + + # If current step is ahead of this step, reset it back to this step + try: + if instance.current_step and instance.current_step.order > step.order: + instance.current_step = step + instance.save(update_fields=['current_step']) + except Exception: + pass + + return JsonResponse({'success': True, 'redirect': reverse('invoices:final_invoice_step', args=[instance.id, step_id])}) From 23f50aacd4ba5c51c4839d4aa034aee35ba83c32 Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Thu, 9 Oct 2025 13:29:48 +0330 Subject: [PATCH 25/28] fix permission to see certificate --- certificates/templates/certificates/step.html | 19 +++++++++++++++++- certificates/views.py | 3 ++- db.sqlite3 | Bin 4349952 -> 4358144 bytes .../templates/processes/instance_summary.html | 3 +++ 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/certificates/templates/certificates/step.html b/certificates/templates/certificates/step.html index 2f7e089..5431f92 100644 --- a/certificates/templates/certificates/step.html +++ b/certificates/templates/certificates/step.html @@ -38,9 +38,11 @@
    + {% if request.user|is_broker or request.user|is_manager %} + {% endif %} @@ -52,7 +54,7 @@
    {% stepper_header instance step %}
    - + {% if request.user|is_broker or request.user|is_manager or request.user|is_accountant or request.user|is_water_resource_manager %}
    @@ -115,6 +117,21 @@
    + {% else %} +
    +
    +
    +
    + +
    +

    دسترسی محدود

    +

    + متأسفانه شما دسترسی لازم برای مشاهده این صفحه را ندارید.
    +

    +
    +
    +
    + {% endif %}
    diff --git a/certificates/views.py b/certificates/views.py index c16e7e9..26a5d6f 100644 --- a/certificates/views.py +++ b/certificates/views.py @@ -13,7 +13,7 @@ from invoices.models import Invoice from installations.models import InstallationReport from .models import CertificateTemplate, CertificateInstance from common.consts import UserRoles - +from common.decorators import allowed_roles from _helpers.jalali import Gregorian from processes.utils import get_scoped_instance_or_404 @@ -151,6 +151,7 @@ def certificate_step(request, instance_id, step_id): @login_required +@allowed_roles([UserRoles.BROKER, UserRoles.MANAGER]) def certificate_print(request, instance_id): instance = get_scoped_instance_or_404(request, instance_id) cert = CertificateInstance.objects.filter(process_instance=instance).order_by('-created').first() diff --git a/db.sqlite3 b/db.sqlite3 index 53afd6e3f590fdd72907d18c047dbdb84a9061d6..0649d937a8d633e0fafb56dff91e232bc63acd5e 100644 GIT binary patch delta 7561 zcmbVR3v^UPn(q7P?t8oM?e07~BqZG(@_uygtNY%LNpm}q=LiC==y=c&c?1+ffH*sF z7$GncWmrrIQmn5D3wm%_fv8ZZ0|e1=9CZL^j;kwbz|nPF&lp{u8C}k>b*u6wEPFO5 z|M`>q*H=|v)&KwX-@2Q6AEGyH+D3Qe*dMgn*pklRWa`15g}ck_y(JaQtzCP|b3otU zT&}KQd5}`N66FW{FkNLTspZW-S+#u8lC=#jjq6q}X>M)ZSyAL*0!2)M1}V)#wo{De zmNE$*P=9n~Ki^a#P>yA}6Pd{rkY5ugJioK@lP^87YE7=zjIg3aBWeV0$)@&DDVkKR z>S0OK^_a49)#BxAKxYP(-#&XHg@i`JAYqZ%kvNbzk#KPKME>|b;TxOxZqKhhW#SIu z8<^V5zbkakaWQQZ6wvuLp9?M@aB;x*Ht%;wV%3Tg*5sJ1fz$Pg8lZ;iQsK6@`Sqy` z!>@tPKHg4KJO~}RVeZi&mF@(+U*xk)E5*Qdf8ymhwG5mucV$LnK?$=^i>7tdtSQAJhIlDdz&zt2YN-VdGU+}}|&`s4C>_cu<^Aa2)A1mCz>JTBP(fYv4mjvPwlz`YB^T80+wu&+V<@Md8RYWx?g@ihK0 zeB-eAtrz1zvL5Lc{**Y^^orZP7d$U`S9+l*D8B0jp+47TM5#$AC}3t$OIw?y^;E z*Fp@L+kq6b?F`{+|t~%ycw>0 zBkdPO69sRV&HK6cMei%#cf8MeFL*UeUr9rf zjwAypx;AeYH!yoEw0I6$&c<=a z+UIY`gY!28_yX!KxUf6$3!1rXt3`dsK=HnS&fN5X7o_}aAh7$ODS~tR&D0d+Qfe$L zM`gv3liW=Ycn0kO@aKI24{JYR(-B@pP;t;Cf{h2wRIu@dgafYMAJ}#;wI0}g!T%K4 zn^=iWXa2@qV0z(YU+^GJP3%l$0rNI92OPf5{2ADgpXsHpfR_Bsoc1m0K_nq0`A8-q zDL_()qzFkdk`g4PNXn3u!!79*ZRPBp_ADFlwG_Mx=1}Fofx8kFMHJX{ZUT2Sg_=); zIg?Y_iQF>2*U8W{*TkQ~dMSSr>m~e&c4JBfG^SL(wT*p+dBO(f^wi!07o4jsU_f8T zL;-I9ePx|vV2iT1Gx(1ChrwWbId)kjiNmijz@Zwk}64;X`O=70;&%l&Bs{X5xJOz+IU)bh)0D^_q}{R z+wS~tror(CT1R`6OP6deRPD32{5WyFYzNx+NylbJn`2GYO>6F0G)Gw!k!G|`Yrb{W zZT0i&E7z*Cr5o#3s7h1A>~-_*s9U1nGizD%l);Rmr~`+&Rg&OT2^;oFvuV~fjVeSF znM84$^A$9aWCC0fJ;C6Cd!PCxv~N;*nsuZ&T+p*w)hIZ1i~2N8g*p?t z_>>wEZdqH^_N=WMk_eJ0%-X7d`9AX!^96J+H0mj^V_uEGI&XE(2EkYSLD<}A&@|Yv z$Y{nL6^daTw_+tx6-1R2RYp`P=qXG@+Gi{_ki?Kw!x@Wjc=-c%t^EfZ=uOSKA8a*i zG}`_He95ed+bs{V)BLG+YHAInrq(idu=gVmguaW#8U>DAs(J}_pN@ObpZjV%;I4hO z=`M7Zr?i;gQP{b%6u#FQS>aC+b&{wP;HAU0(;Yjh*R0;UyK5KF@W{nbn4;?ixa;}a zzdJXg`oW3BYF{r#iHZ=V5v3BP5G4~O5miMLUXpsUB=sU*l6ny@Nxg`dq+To~ElY?h zCaTDhkH;+}{}vE6iKu*{LQwrx?OA3#5(*-5W(*01kWfTSLJ=_uMZ_c&5tC3vOhOSc z2}Q&t6tb@hA)ycw3L&8o5(*)qh?s;TViJl-NGKvEp@^7-B4QGXh)F0SBJma>@#?6Z zsGwMiP9hq=AE4nudol21(N7XKNx~*c*dz&?Bw>>zY?6dclCVh3F_7@aGvTvO$Nzz4QT193=RF;Nj%R<&m}tq?6qJLrreX&h8ne$sz9)W=a(MT6 zJJ7-X(sS{?;hcaDRJ;3O4qE3Y{V;b7bf1bZW?#f9<+T4H8i=11XM!sWmF1xOoO};B zcP5^VLMi?^2QGb3yI^C0xLts_U4Xb!aV^V{*=^Vk`VJ{xeE{@h0ze2c(L z)0c|Yd#VF;Yi6p)s*MJ>j6&ssW@dt$*2KB?yyD3)uh{&IWA9`aj>cER=XxhU$>0vq zizz9t3`JHs7(g%8V|EJbJ8)#+wGU_rx?>_V{c2YB^x>-Nhfb#aGd{lS_Px~iQ z@D(NTJOlgI)vTvoNmBGBQ7EjOZtimO%mv$eDrj>q0397M1@!jjmN@J_t0V(6=a^kN zxGv*5xK{3Vu7(Q^riL6QMg!l>KnARwYaXU)=TE`Kmuu(YnvIGQ6#>DysDj&ai}{b_ zfku={ltPqDltfe&QDLGgiK-x~oTxIQN{K2Vs+g!Eq6&#BAZij(`9y^*Wgyq4G_+|F zg`dLLZ#QeFG5Pck;OsUN=uNThU}Or-tm@Q3f-=%T&3;p<9NZYI>b-hPta{kmvirFt zcUxx^^knF1;Lv_kOCugZHq5fF>WtuCVaq=Ap{c^ab%Z7vk_s;V+$;m&{bg(x&{tZ>Hm-2hTZ~Dz%(9%=OfpeGgr^4TTZBqE`WeYDC0a-Z>#cw zBWCFl@M}47qt6j_R5?lAD0-3QOhAgUr7$hoy6?`z7*zh8I54#N29!A}x zMHWlPx1&>7m7<71$@q43pQy=_B#XtP?Hfm2I4YWombhqigJF9#7LDqvSa?mlF2}T( zSa3~yMAej-IBAq!9jr;@XgC_v(EGobKdJ$?t44K1vKYjW6NT{k1b1iDHD^y0TxV_G zo!&{F7d%tMcg1DG_rf+I$Nj83?mCOS{IH8z(Pe_wzC@b3?5YHN-CI`BvvP8J#_)}7 zRMxa|L7`W4O~!p{P2=@>o!eIsYMz`n)G1Ez3hI=-w<`|zW+c+IrQ>$`zhBFOwgY;G zb%}yFAvcIdVyMd%T|j2;qu z%hPQ;ZC>5eEIuV%5YpT;U2Xhv?kldyd8cES{Y|^T&SG}ZXK5cb*JfRSE@InmcvJzQ z1^NWwd&exb?l*BxlF(Lyo)63$to!_6=HO#1Ro%}8e93x*lZSC`s{zVYs-er^G($cE z5ZGV_8-ht=U?_zd2D+6S4I4~sL$Io07@j4{Y_fsA28@~IV8R>1g@394&i9MHM6(Y&tmCP?u+Ifb|ro(jinCIRCy`H;7Qx2ts@^27zv72S=W&@qmvT>b%y} zEE`V32qvKAoAPKe9*DPWC;_8&o4X`2bBK!d3@7EG_C>=JLpB+`R)Lg)x}~^t^Z+O5 zp~i(H8%JY`Y*?S3rh~tS>hdrP6t*~J4*G<|D%}Tx(kelJ!PC zA_^_sVBIu?(}ro%5xqNCOOGMSSZ+0@G3fvi|K`JGzbYs@l& z++HQ?h+$NpN0~rl^Og;bb?Y})wbZmXt#976u_rrCMJA?E3JJrS#TZs&jGsp-JOrPp zV@4XXMWCvWkE2Qf%ss7{Gty)F_^Q@kWGgJnx91e(S#0@s)ENWzgD`7hk;R_laM&z% zN7IJ-#x~d;36g!w;s6GTL1EAs42BAW#o*AgIR5!Taf*;?wQp!MHIIl>D13~+C~CH) zSoMUW@Eqar%!4y$cq=@9yQ>a$o#i{iDUxqT>?F^SqhX+lh0_xPjqd*^Z*qcqcs@%V z1)nZj`=`_9AUke8^Llgn_;&)WJzh)K)m8%O4 zwV|N~-Igd`lOltYG*`z^Jjn&;D6R&rGmA&6XK&dr;w}5d*;{@>{9#DEgCNL{0*Yz; z5%kt_&GRDjAufRt4nM2JqJedq5{eXO&}5b7gXLlaCVvwkFXEppkw1b4%?R2Hb+~Fqdu?Zj@k|O zdpGB|-cj3TDQs$Y9D^^@Z27rfmc5Yi>B~2V*7>ne`zqhdM)_+Dz0+$cHG_%S&_5_AFdo+Summ#)6HV~kA(>%3+$|4lLh}zkBZtEWk1HzF zaVW9tZmsKzhR*mD30}wQW3VMTD%RJjH)14VBx9stq+-m)NW)0S$iSF~ zk%^IoI`!Gxvgp-}oq)QQ)YqXKWW9;{l*AwNc*1Y8)i0p(lnP6asp&7oilQC(C&{- zJLyotR!*7F%Bh^81{|=DfbP~}Eblf4>vGqHS~b~eKB}e)`Dfwegee`p_=ve2{2skGKu^Q;^r-;-adUa= z@6jVHn7)V~f}gH7V|s$6Y+JN?5y4YcD$S_aE!@o~(?0eG{P-?|lDws56sj7uEF&|v zC+9IsJ3Y$(`#-}U4_ihm3!1j9ELyzEF~4K=rp*gH4R>{HsLXS1Ua_Tdef{Dk4Xw2u zp87`XstpSoRxO)J-i6|Au@Zbu%54I>|; z0LASnoSLAH(|W{K+vfwCUCAzk#@7r+)KOz6Nl|T6o78FQM0K<}3~sHnH}5rq%zzXF zpPQ>#eC73a3nB!@D>s8`%xI>mJ zJX!Kr>VIilL)zAmwp9#jTScsW>SyiDfOc;{`|;mup9yK7_-)?VF@W@leSz#ep+!8Q zMLc3R>U-yB^(8_ZJP~2R>Is%$=4)~0w}vuzUMhK`j{b!158m`g;hwPQRP=%Dd<+*Y zmn(;-=R42gUg@AWpQF*C13H4C1Ttqj~+6LTK%N1e|Ak{W~V z5$ASfA92>=j&fLw4jxSmeDW1%6+IXGM!D<^mWWO-GSh&2+$@mh|OHo3){11*^8>q|d zfC6+ucDzmE%UKV83L8vh(FvQpM4%(NCIY#SmAC+OziOC*6-Fr*GmSrenzSyK{cI$o zBQ^me!O`p#dxjlm``G)~blfce&->h+Ak2t*5@DE^&Tt6L%X|%;Ap;msX;|e(zc2>%N!iFR*xHQ=$9E&i*jfNUecvzpOy3H!B0D`WZ=W=+1`!@hX1oOSw;1fGa$3>Tct6=7a50K#_t(mO zF?3~Mes(uAaKXmuU>{LWq^m7P&xu`x)FY*6k82ldE^6)+zZbhOsZFHr=`Dt>Iwb=2 u7rW{yTIOb13A^Y%He`pPVi$*E7P~%UIa1q9NQK&F9AB$N&9}RHz<&Tv-Z)+W diff --git a/processes/templates/processes/instance_summary.html b/processes/templates/processes/instance_summary.html index 71bdd79..59f910f 100644 --- a/processes/templates/processes/instance_summary.html +++ b/processes/templates/processes/instance_summary.html @@ -3,6 +3,7 @@ {% load humanize %} {% load common_tags %} {% load processes_tags %} +{% load accounts_tags %} {% block sidebar %} {% include 'sidebars/admin.html' %} @@ -37,9 +38,11 @@ پرینت فاکتور
    {% endif %} + {% if request.user|is_broker or request.user|is_manager %} + {% endif %} بازگشت From 6367d34f0c2ca7d27049a719b1e78e0b075b5195 Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Thu, 9 Oct 2025 14:37:59 +0330 Subject: [PATCH 26/28] fix auto complete final invoice --- certificates/templates/certificates/step.html | 2 +- db.sqlite3 | Bin 4358144 -> 4599808 bytes ...istoricalpayment_payment_stage_and_more.py | 23 +++++ invoices/models.py | 11 +++ .../invoices/final_settlement_step.html | 10 +- invoices/views.py | 66 ++++++++++++- processes/views.py | 87 +++++++++++------- 7 files changed, 160 insertions(+), 39 deletions(-) create mode 100644 invoices/migrations/0003_historicalpayment_payment_stage_and_more.py diff --git a/certificates/templates/certificates/step.html b/certificates/templates/certificates/step.html index 5431f92..f8249cb 100644 --- a/certificates/templates/certificates/step.html +++ b/certificates/templates/certificates/step.html @@ -54,7 +54,7 @@
    {% stepper_header instance step %}
    - {% if request.user|is_broker or request.user|is_manager or request.user|is_accountant or request.user|is_water_resource_manager %} + {% if request.user|is_broker or request.user|is_manager or request.user|is_water_resource_manager %}
    diff --git a/db.sqlite3 b/db.sqlite3 index 0649d937a8d633e0fafb56dff91e232bc63acd5e..2f3725441028e19376dafb090ff9da05d5007d8f 100644 GIT binary patch delta 180576 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 z zOm<9gjB*Th3~-b?*a*sF`5YupHKS<#vxS?)4yvw7us(b!p}gL?Vsr(YjCVMuo=qZf zIqSp=Q<6gfl$v$XXE<^Ua|DCY%;yxm zj=?CpxR0WX`}uUmKcBAgBbirml93Eq<3}*B;m`<%EcL?~vi=Weo<|kms;LTD@rN=8 z&_&;>`Q6DHKbWrLRdnI5V#p3Yh_2>?7_yNMWFAL5zEuN#`!Zx>?#qykxsoBsdVWZU&K zH{hIpW*vGKvP7@LA(OcV121zu1#2+yF#n}sHNKJdxRSV6V7GKBahDKxF?LI?BJO3_ zEnY_4%ZYm_cDqN3yNI|8aiK-bavUgHKrlt~aa=d19>;a7BW^8@>dLIZfv)q2I~PZF zVOHWmmpR0pjiWj~_2W+$h_z4-RBbByMlw_QGz)g~aVi+%oK@Uqsvpc02rsxMA$3O(JdxyQ!0j z8^mr(HE{#jO&(5MKX#L*5Z8y@sBt&yb z{dU6pvJozpjc~D4!q-v>FH6;N8r6Yag>b!;JmM$95GAVNfJ~TTvWxhMtVFhBzeHGO zQZDfmNs45{evvTL#2n%$au!h~eg(S%VY&&~#GgW38M{1T$?;jlpGsVb^n)WDJFX*+ z;xdSvMqH7&g21b6F?KSouYXW8JUW)p0y_#^?g`*Z5gy#8Jl1fs6&r?PWR*S|T>dAd zd2DMXeX@RmJ{nfvCmc?p_f2_l>?+;36x_m%6Res(wmVoM)0j!FCMDvf#yn#tq%ASX z{U@JUfhV-W)Kfsd8-;u}3i;5KtI*PC8JE+$GeW9+H+di z{;<8!wpqPeMM>RqR>0}+e{hl#+0kNI~?*T-Yfl@!_@tDnv#F$WNzz6IxkObi47j!$|_lHnr=cIH2 zN1^kjiZlt%TJ>`OrV@b%AHlc$K&08p73#v|EDd>0GYp&-e3CMOsy=fXs+?>~7fBRp zr2w=XV-5X}?Qu8~8GRXJud&_e3s;?WaM1YB7;9W?ykuop+d3PQllg9JvvHYTg`*P5 z8jK9WQHf*;dIyq>iQNhhz){WG($?GNvFP-U>};5y@2I1M zv0H|~EFQWg2<~}X^1&UvMF)4_ZC8L>dD{$d``k7P++Mf!0k`LEMc|g*)&X44Z5+5I zo9BUBym=zHT{jQ3p1I97NZ@;LX~6fig}Tan#vCDk5cpgPpF$!g z9AQ^)gTJc5+?t^+`T(^B{AL(LPAxu7ki7xMXZo1uN5UTueK@Z%Z~PMsn-Tcb67wcv ze4beU2Mt~`q_O{vDZJhQOxT2a6ETr+tp9_m)(k#p|KmAA5g!Py+A0fUfl#n;JUWCITPm3j}3FC{8|G>d(1}5}BmLeGRV+L>&-Qj*l zS0TXoeX;%ztXeamo&Lvizz_o4v8}TFX2cVs{T~SZ@87x)-mu5tY#uhY12ADvZ2X}Q z{Sxxh#VrJ)OnzIp zV2itM6DH!J{T~4RuV~c=xTnKqy*ce@UX1YtV*Q6clqcpTOEJi(ec={#hy4i_X~6g! z=YRjfYx*SipQeB|L#@rmES48A0dK7T{j1jWZm<7zO91%^toCh`1$!23leGW+q5r)| zJA6bpht?K`70lOi9B8S42?k^R@4s)SjjeJEw=y=an9*JVkBG99XJ1RoK!1-_RqKI!lE$ig?SfP1jpMKb zaJ!6Oj8n#OeBL=~xVW|WMB)|J0A@7y=5p_YcNF%fu&egv*>5z^rZr9jZSP_4Aj0mz ztw2+fyQWx2d)RN*k>~bu!Z;42iYxt@_K4RX_6rD7?L-yNcrvYheeC5)Id4D&oQ+kE zJq!B(vVy+z!c;2nXznQSfQ`Nq|Q(yW~2_Is%;5u-YY%t3vh{xI+>w(6Vo>-E|C5WSCX0#_nePt!G>1AfGJj?aM?(cpN|@f2_&?sjZ; ztan6LgVIthFdr^*i~-g|e@8Ee-%;!+bYwYF9E$e0_KWtN_J#JLc2s*odt7@^+pgWL zU9YXsmS}a_Ol^`jN*k#4*8IT0FVwQMWKFUEWB<|qrTv(_!Tz%Sp#5?C1NN=Na(gx<*|B($gCCLUp)WsRq^V zs!L5#Mddf;JLNNBuJQrMRG(4yDEBFMD4Ue)l&G>$nWc56hVY!QTi7OCCtL=fd4P-B`AiOu z4DcVDtneuuY-4OvDqq4L+jDI1u}7QS&TU1yoO~x1QtdtV*s;AItoopSM$3p&op<9D zvHv32gBdyj#;tYyUIEh8=^Mc@p(am{0!2m7gf8W#!s1I!AnyM%r7;-0y< zvv5QT1pSOf{R2s0FUbT5W^<$OR+Ud@Lt*%Dc%#oR^GRGV!a4~IF<-|ZLJvJ*?;6GF zKsp@^&TRC7h8g4tGPlIw4KcXR!RK(nKrjHyb%43MS?EsO28?6=ZS?)4@i{EMc0q$8 zQxXF{QWx$NiX5=pp%FMUbmcocp9NWbrZ*6&PVfh8d^)7?`c3AuChrlF&mZtJhZ}t_ z6EvK(e9SLR-ZKPm`hu(x^O-D0^gzJGk$)!m z|G;Ay@CQRMT0yTlxp^>1Qo?cBA7pkU`0v1Nf=KA=i%s6=9XzNiLq`HZI7UVbn+4rA zJ~M_)Y4XarA2v63gExzE@$(8L4w&S>)E_RjrD`#c^G%i((Pgoe4} zXC7`AdI+b&?PR{e6UGm>ZU3}JpBHW2Z_l2AYXN1$Akey7fY z*yG9=yn+-OFunfs8-0TteO06jKKOTR--HBz1@`-KJRr(Ra_moS^htP<`N*os{FdPV z71cgw@6ZnqjL(D*E8t^(P7ItS#4!V~n2u}m_9d-11I$-=2%uCSu%l1!vlj+wUR+O* zmGEehD)CaxHib+dD>fxGnQu|~WA+SJtSpmxywSIZP|WmsJ*Zoqz{Sh!yQs+9#a^ZzCmpaW%}z1b_4dO#=jF?rrkkL%nd9U`~^!d%dG$@Vpoth-rkSj;80T zChujKn5LKco;1-DWUeO3J;949^p1+bArwZvgRlqI|1mK*AO`#661<>(Z^K>l`e0dj zztQ&|9#QDau|04N7w`Z;AQ7;ume1^+uU1nfG+%umx4$s0*o4lXUB2DIa-19LyXu?XB zOZx~C^E2FC_9JguBm-@`y1Qikdz9sNIE~EbD{Mon7qv zPH@F6I@~{!Wc|^#T#`}s#y|&DcUeG@m?yD%5IXy_H_gi2ki1G(@a-s9t6-3=B0Xo* zWTy)boPXI7n0rv2abjiycVOV(f*lZKPP_~gW*F8ez)Z3To755yY$VVC1KB)qWZ)#? zYy(ep20~u1-xFqy=J+Uo}eed>dg}nytgb61if>=$Kz)mZQ!AZK&db6 z1%4W<_L6J+H?{1|HK4!}`5*`OEBHO>jy?B%FPh0oP!SjSeTi) zAGB`X0^OWLx~1;|GmRbkZ6F%|uf7_MbZVol7oFNc2RiXVi5OLgq&B1w5p75zg4d8j zq_IKe6?_>FDnuzKs1T)`phA>#0tykl2BsN^U)vxTq zh4~etNaa_EB9&hmz6;0tlt(BaJOQ8b5DgL0tWP2GTAxA~52jL$ai+40f|V2yxs9pR zqX{nU!Dvul&lo>}+WOVTCB_J&1k{j@fxXIBxUt`ATy9)sR2nW&UwR$vLe_)w(nH2| zMji0_eTEIxl@9248J`&2z+P|~+~PZfs?yt_Uw}ZT_zNRL|Jr!ZNHU%>ZZw`VPU}Ay zW%`T8UdO6t|DnlwpjLM%PkYrtwVOCfWI=fy^F%0(c}ioB(pXRq6BHpaPf2X2B<3iI z1?5?if>4;J6qYE3ZIr?srLdqpN)i$R^9s;+Fw4o5z>-1;%uxah%7Y{&p)XJAYp3+( zD18M51i;W@LS9~}w=U|T)i{k=$}Zq#y@Zt+q$IgFYADzIN`|%_7A2t*(yAR`&9}|A zRR;0bVFA4~R7*;OPtpr^eV{lD#&5o$`X#WJzD9Y&`{rSN#@A5AyXBe4)wf)Hi)f_%A2! zW!N=AAb5vXB}08|vbqNB-xQ5SKOGFGZ2BYPr<8TT^>|S|pgykdR_|BuRJW*`V8Omn z#?wPml5t}dHVGAdY!9Q7D+*RwnIGDdcuUXWZ{pCe<+9$y=0fgWS{LNmr3qHmE^TSd zXh0znb%jXL6(TuTh|FB+k3KyB`lSh+w1ZlVlh)BiGPy`57ZtaYOfJZDG%*u$H{d!O zaGec}bxt7J$CK>iNcOQL`xwZ6JTZGBldXy{*#;3N+d#r(8$g(B{e9M_KWO1afxhlp9h_oHn$b@g;nbaY{=i?3@+^? zc4#0^IPO{M1L&0-9A)vAq_*7>o~-7Yo(=hkmXBtKdBAtTrD^IA^!go+5T5V2CEZC& zTF-Z)dNo>m4DxX}-+A^-80ufKcc8iy9e%{oGychRJI5#U5l-BXd@}#T-k#)>Aq5B3 zE3Lx^96g<5dg#yME%RaHdSkvZ4y?fPfN6b7KMJ2kFpei`zykjqL6K7k&yzipfM@#J7Mh$pQa zL|ZwKwsIhybOU+P%z?C-186e`@Xz7y58z2V2heu*r|s;|lLJ+Ml_%=T{rRV@em^+g za~j4+`d-kywj9^%d5(7tKIgJo3l`S} z7hY1kFcO+Sch05OE{A@;Q^yJsLA?EX;h)bka`j*4XV`4Dj8Ut9q7MUg$L`u@O|>t! zeFa9SdF%B&gX~hb?;9gcK@r4><}l85LBFSYRO}h}WoiJy;659iB)t;W4Qf zY?Vwn%11!H?JL3gz#=qK5}Gk1?3pnwFl*lAx&^f}7t}0VIJai{tV`#*6oo8Oe7!y% zSB$>cs%KzTXe!^vMkT(GzhyO06DTW3Ky(L2nF-Z^?RJf4>WmONa)+Lg1ErA0lC+?S z5_TynQQ?5f#-Wp2^=w)Z79?Za(||Y9LZFMSn&4`Jy9(=HVnsDIGkl?GzQ&5kH3+Bm zf?9wVDk4ieR5UiBA}m|QFwHDvGBC6&gQOM0Ovj zXiQ>7AjE{10f4oJEou|R?9c?bY?(f6mej1Gsot8YL2u2Bgo+^(l37U;oS2`K)ANrB#Q#0)}#LrH#pqyoj3N48#&lzumAy?rp`&Gw=tHE`7OSV*UY{*%Ppj zOuO;eN9M&ig2j45W3i7=cFdY12XyPm0mHW|B0tAG$*y3;PsJnRlj1$%jp8!#683&> z2p8n?xdq%LZZo%k8(EFvE zg>}Le;yCUU_b&GwpUnLu%n(KieS{*R1FVwY^B>Bq0;E8YlO&l;zGcwpiJz+@vg5<|q@C{)$JvNUc)+YM!bozbl_B4a(EpQkW;FxiS3b z%5t>MOzU8+uXp~=b8@k@_G;%2R#37T0ljm%vlBZSU3*ZHsZ#&5jU=lxUmUwDplSKi({;( zuW=3Gz`jQ_T*7dY5`T(yP;p;nX&tUW6**7a_b!>de0s{7u21 z6p#~)&iqD0zfeGQ*>&b8bo`V(4_)`IJ-f5cknL1w$Zl$5uEi;BRQ1}%kkgorS&c7S zSLOVJaSHPn1>{DE+YvUuVZV6|cAN9~=co>O;ix=32 zUum6oC1upb?b;*F?AkBkzct~Yd8%9NBYkJ?f1}YuC9<9qfTy&3aDiqPs&Haay8Y;*k*q`mS%hl)r}vL@>3P#{kZBz zqm{muvD|*pKzWn74C~ClNvU}mHtiH+>^7zvDf$cWOh{+PdyZ=y5$%+fotJz>iw-N* z=qZR886|F^aH1dv*&vmRz+)B(n=3i~c;JnrFkEpO_jl8$IVTJ&IahJym;*M}ez5)p zfmN)yXzT?cFslW=U=Y;U8a2F3kLDadtoYpJnZ%IU5BjyuPiMd<4VHPKI55at!Pn|YChA7%~_ct7((3_c%&&k?wjc{TceN`%Q7#v0%OFc$zb7tiB4X3Sc6@#Ogf zhYUY|&g{}l>Sj9Yxt{Uvfta&-O>j;&u{Jt9sB;cX(CecF`*c`x$6?`1hMYIE-w51( zqh2VBm)rb?1XI~8^ZLN_ANc)^Uq(z6(1`KH%8d_%XaszdXUy(v_6zsJ?bfZ8!;
    6%;>hpCsTwd!PUhSl|L94W%wQskdkMgRMORX{0$$#6T!&YYMl&UFM zXSxmhNZes~4I$7%?-M@e7$)qQGJX2A(rxf38N*g){9lyk3xS;@CSbJb`LkGoz7U9h zp}_w4=fR&13QTXWz!>E~)aq$5_DvX{7s_Lk>fle-hpp_8P+qiEkK@@)Z%c!TMhu{u zdJF}oB@}qB^1zT3ZokbY6D}_Wk9s)Z^Fx6#?NQx2IVZV*k4|*l#K3m64C#J=c}T6rOrDJ0k7*}5L1}?&!9fISTA$@<=77*iF-leu)F@9 z{s_zipW_#YMT8eqjY9oPeJ5~0iyhxPc7f31R^vh=M?Ve^c1_beIlgk-2ODkVMq`Z8 z0p7{ltY4((g8kzTVE0@HkNp_%#@9xDte)=pz;PQe*H#$=4Ml$iv=xWzPRE;$n^0X{ zvfKK&F4+Q+W~yI|Qe%6C8r#bpF|w98Vq`6H#K>CU9>?b&o+CEa9JddjTR0*jQmL)I z!VwXX%n=ch#E}D*$Po#Vz>#wnPqjul?je$!2#8d$w2$Hw95uCTq9fbb5N~q`R-cnyBoKTfENa4;#gGy2$dIA#$dIAVWOks+zw80D z>My%fA)}ZIR-Ee~%9g^c#jQzUu0;p_vS;>ArWc50dVxr02va$UnnWgDf`=(-7S7voL^?q_@Q*zo_5a5n8b21t>;16n7*E`B#O+JmO6+Q&KMigLam#U`HfALS zD{!1`9&zUqcMfr9qvPKdrlVW`vFCOoCW|UDVpNF{qZ-C(lxpG-s(W~>A&{en|HBr ze&3dympG9R#wT(|XDQC_Boo<5CbE-EWM>h`n359&Q*FN)#S<#hJgq>+lAboloD%Q8b;3Sz z5rcG}vc#(21xEr@{T4hyx9s`Cd?3Sm7Ofwqiq_TNdah)xpZBFWRgqQiVpKFGuS-9; zu}x41U4KEklO8CRAl9u`vMQ6f?ZMF!4i50Jf)|($jh7UB)&UIs0h=}y40|Hzc$R**XMhW5~l? z_=*K@b0zHCHwfLO_C2_}a32KrGQ8*O2iwjTr=vy; z+;fMXR{?(k````KHmWf%7BmLI#j%@?uMYaI-Z7 zE_kHWa0rZ%V?*SFAu4H|HvkXIw76--@&YCp`|y20=Hk|Q;TvlH;WyR`m`Kb@&Ie@f zPRQ&hUmz_V@L*%xR)52w;0|iiWS#R3*?^Xp+R{UbIm3i^)$BWnl?fPskb~I_xqbZL z_0^=w=#|308mjMN>&k5q5;_4&ZTJlwFvf1;Hqkq96DDpZXaWKF)_FYvP+e}`iCA8E z3D%4ezytzt3Gzfj6m;ZZyFA8PfBjVOCC6U2DT!TRjs30Q5hakxEW_^xyr!2sZU@V) zh49#958G|(w`xe)Dt{@Dksg=a;#}b|couFg_YOCZ-3{;BBkwML!0h_WdM=4>zI;-b zOt)hgyajsHBI`$KKkl#iXNRccgjq7 zbiZ=+@cu(X!+|eTGgArD#%R%|wxp4|ldg`X2&km=AqE(lAD*fi=qzwT|h2*Q6sL;lgfF{5n$i+j@r54{~6UOfu zeY(0u6MzQs26!X!Az9p~L$v0C^UR?GrzSQc<;qwigrqKQHUebkL`B#OFHgoxrHfG$ zCKzHK-@dIyD?qnDo<7zJ^yT3c|NqXMik{7RWG z;%W6tStBOoC8L5yUYMF{Yuxp`=)~cavgnjchL4#zU@##;tXA)mc&#az1Z~WPxSBJ5 zMLXUnN`poWjFG51YcE~YY^?y(ka&92i$?-|aX2LqoiTHIZROOFq!B*a_0+{plL01V z%k=^Fub3(|l-IHijhK)R+R$PcV7W>-B?W0C7Wc`B`n<#XkC-?ou@RYT) zqll?%2S8b^k+3mBP(^OQ_|4j!k*ym6$DT%7c;SUMbm#m&Inj$NYs^sP=)^`Cmo+s4 zCc$~F8v)0mAV@plt$-F^CR~aL#_#d^TYs6cg}ZTaGktaF)59q#v6YI>#Mp2IE^V3< zK#4Zy1Z*Ef^PGGY&G!5zjNik&`+mzg0qZL^Yl+VbuMe+Mk?30E@zLG-noLSHZ%r6e7gk6a(OPb%*ve;&VlHROH zLz@@Us-9lhCzI?&$XL|Jo)vFn;l)k)pp94I>XHhfy4g{h@4r!KqU%UXahJ*C`d=|( zMqoavwmT(A$C>f$DR>W?jkBNK6$xdxq%l~%#D>H)(d6Bc9$88eEkd3VFM?31A1NZI zcPcutJ5qp&bn-PI>_6Z%X342($^xI}T%4uyh?<6GJ{lo3y7tjXHg0q$q(2ssDWPK3 zxu!Seg?U8s8havS2>*ROB^PJ&WGUTf<80HKQo~Awr#{*+J(Px)9HFCe+mV!xsQ2E8 zt1(Nbsj)1ue#a?#;%He1v~DkL+^)S5m?%$0($GJ9BL!JXS6Y=irKu_)C8=uucrgv_ zI7+K39hZ{_E^r0MDzCAD( zP3hZbO-Df%SpH8TO>hWV;$7la@fJ|Uxn5i?E=OPY?c+uZSLCIlr03J8lmgEJb9&Vu ziTf>azaZ{EG0g8cWW$eGv6F!JGLc2w0;O75^YMAC{C)+p>gBVm!Y3VrHN8%={cO9@_MPp0 z+Z(o5(2=QTXREY2-NO~BNh;XE*{-uaZ+qJInC)TPy|!((TWw$3j%#bRmD*D6Qf(eQ zPf)F0fU2js-6%RW-9Y-Z^y$_u)6!>)X_yVisZ>Q&B?`5i`ht})D}5mwrMLzHsH}lg zi7p7Ien)X%QE-xik16iBfbTO8K`yJKNauRBlR4)-4ViTjkQ9Jrgu%dbngRHUhc(6^;6uI%wlR-_W*sP<8dt!(7W0g9Bg;4g z>TDy7jYcuyUs`TY()}XbY>L%{2M+Ly0OWxKrXCyY1tZiH5FcBqy&gV1F2nYMaE7~z z*bVw4S0>nWd#=EdaI9E@wcp6zzL*-y;@vHHIkABTAGVmk3?pE-5%G3&DcbmN%Dgq~ z$d2%T*1hb=Y^MYRwLqw|HVleve`Way-yv}fouwJ-ESS~Dv1gEEFuYwU= zS_ltxM+zAX*RSYgTph&t5binpi=dd2o*JsB_dqHnue&};+cx1L@#=I6CR1=B1>-3gO#xwZ^XhptG>C$}6!f7WLP3B6F9jY7x>3-H0yhQG911fj z$e@5om3Wm*d0tg%q)Y+%#(0IOUGd8ABvSc_f*&aOmICq>^9qp+@yc-;d5nU0DR`4C z20S&i;;B&;uMquzo*Gc`$}=?S6BIl~0TD9t)F6sicGAeZC?N77ULjIHULlNkULis} zUb%rLA@U(!SuOR!#8>KR>{S#jreF~TwG_;zU?v4qDVSvau{q~ax}xziC6}xaob)dR zWG&*QUuftI1(ZP27c_K&f{!S8p8~SX@zPr~bd&<3zs^gPKGJhE@&FN|^3u~ZNa-Z) zqoF+%?4sZy3W)rbm+qz^B30w1+iB=l3N}$Nhk_9l45T1JfscZ030?^0czA;alTsqG zM_#hg5Kn;k7X_3E;`cN}r-w-Ag-E+Cl3jrp>8B#n9*RUP&5L_!KH3TK9vZ@uUN8p| zsbEE1hmLQ|$;{wII&32Sy2L3o@kDgvCFxW5ZOai3@?Q(HSyxx*+QCv2UfoCe z_Xl1>+<`!mwYDbr3Y+j>{$`NRY$z(UI@IO<$~m=4t&F~3qoX5* zKZtHxm|KnpeDCRos{ip6T6v3df0KFrCKjE%%$a?69t(0EhgY(CU6nh59j5OfRztWm zitN>QC4_qDhY~_1G)b}kVM1gPjqIlXO(N0BWx3h1F*z2{y%#1Ma}$!Mg1t_7QxfYZ zEl|K3ho)R_c)M61MsvFy#1>4K@?{KYt>l9y*S5-nFW|@VWw5SRai}i81H5!iv}5CsemhP!vzKa)JJAmAcssaH z+QH>~+z#?1hHRh_$+z2>whdwxN#69EUt3Z zVaH&HqP!|smbH6l)_#fFo0*^wEIMI&S4;h+u97C65#L6;((($do=JJLICL;2FN+l|0Ha|J z*SN2xF%llJEbFbbJg@El>u(fv=jn^p3ROlBs4@ai->+8a8`T1Rzgj@uzAemR;T`tR z^HU9;>LBy<2M82&ey@zw5}y9z08ihj=IO)L3Vpa*pf6Sn3|({a?+^6I+ghQp#v6?B zhOxt{sJ2Zp;5azFM@fasWa8f(QrY*d_aA+Kcl>rpc^B~GIUoXyfDwCy`~uIu<$3J3 z6d2gY*pC?Y4EqsR0ngNBZ~{{D+||1Bbd$O|HwImt=RSiLxZRhaZDyK)=B#mcGeA@t zE~%M1y(U=W3kz#d@fv5Pk@&)@R~&6!oDV+$6~!vy%^x`xN3{`mej9Nk+lU*{M%?f= z;)dZk5E5ALb#)hYk%cVwDgGM{u5s>*xKy~d8G_3H!v6qQyKe+eyjfgtO&{f!Su}sN z`{FQ1Z)^^70Xj?E&x!j7MRXuQA-64s+^Q5%Xl5^kwPZfMyeTTE9l(XG(AqNAeQ_Ck z)DqXbK^^y?ttn3p(uixlyK$V{r2GPeG-4C+N#-uZ+(ekT{#Z1t(fJ+v+kICdd zCX@S^Jl?u#le^Bw-fxN9-2Y|Kyf@u8bW3Hg9P5$o?mJoQqC4Fe@$4h8#6CdIi7rl_ zMZP|{h61u{aq@p?=mKlaz3wZ!mi^6c;O}AhhxkwU_xJ|>F#jBXT2SD2`v(|-m_m2q zB4MmBTo@$G7cLQ^f+g${-V$CD4hcV?t!F*GG~sLEq_9J{O}I(;FKRgH_MmWsyC_vy z4QK0V!hYdC;X~n9DOGYv5?a09?Xv0{+?gD5zU3}ThVpQ!he)ZfLAgJmvbWqOs9Pld zqwRf%0AUgV3OPh_iiBp5b$4~jrzr9kn)DD0i&eU96C^6DJBZ>7Nw&5&@z?L;DGkwxUy`-5p0OKT>2C1<5qc7c@l9&79bk zhB{FkEmXRKgro%&H=F=fH-@k(OeT@uE0Z|2lp<(e(C~MRaldPweb;?~(hGK6y@^^R zopM{k&I`{}8!H<3VNM}uFix3eY-Q5W@ek~2*_={t>`6!wq=op5qfIHg8J{Plpch*u z2kNC|D4ddPlLoMLNIc!lTqx9`T|3-6Iw~{e2jtu38{~TV3S|mB3OH67 zp$vw10ehoKTt??&VY4tx*eF~tTrDhv+tcU#$HEw4m@rT%7s7%UjGGFCY*+$xe8<8U zuOhZ1zekYy|M5Ta@A5ATmkU$nN9DWZo8@cdg(%GCSEIU=3^%&(tS6@<|DeF|-||QK zyM;R8Lg_+jtTaLz3{MBb0|;k5mqmdjxFaHV1om;#Dd|%R$k|j-?j<;GGX>;?EGS>o zB;+VBD4!4sS7vtJ;NRRXfuVncuwHk%lrUE`x@g z=-0R1d!j1&KzQYEf{b76exf0INLRk3p^qsbz2xb`BC$6uc!i$FmAh#YdYg#f!8X#! zbrdY7;4%uLb19@Jb^4A4uS}+q<0v?vg1!_~P!OWPq@X(mf5WeHH@zs(;&cnoZdAgFu(q%3QVtbYLXO|2<sB%T3?bP;FJGd{~ z!F|yV?(-J7ZVA8GS^L5SL*c7~(47(I++T>)X5u{MJrkzqW(> zr5#+e*B)AoP4uUBGXB^O?rb}_GwtAhXpV~}{`isO`{u}IxbND*oo)yBZ9BMAwtLyS z{DZQvihLzV&&$lfAIJ3^+Y8mzl@_Gr;ah_Ec;XELerdI`h!cKB)%hK=qx8TT``x7J zjyDr)Yk@o14(^S1a1HI?qDR|79%%>ndONt++QGfr92dpEb2w1a!T9o%y*aauy}pC#|KSpCZiI+~e)wtQNRv z;%Bt41u_x$SUb4A?cnybgL^cKk2dYzEqcGZos7HM!9CIr?%`IrXwxF{P%C5;?!k6& z543~3za89t7#EHI&|Hh&?`$XIz3t%cX$N5cab)-V2%?1#Y?!tchx%xBW?@;tG?fj z4sd-NYQVK`=wvlq@gkjBG%`N3vw=pr^y&u ztYzdO(nzt^cAa{+azK8Fli4tGcSxTCIs-oomixzoW2{_#wIro497cZuCF!?<{?psnTyRPsS7Bz6)6*Q9VKCjUD9h4HjHcr4>I}Py5 z!Uv7Vfj8MoxWAwfg!^DUFQB`I6%Q`xpv=HF^>V&aL!eukPGFugjX;+&)jF}LaDrrc zh8I5#wogk7U*^#1Va5ITEiV)*_$^{DOFmfm9uNJPMEP@8#i7FIY|7JdwMUhZhEV*x57i;EUz3J*CL` zMt%pY^i1JR9H)JXwyjsXqKkei?3}A@(Kc!8v^Cmt`1R#0`Gfou@QWY|;E5m*Hfpoc z`jxpMs$B5uPlb0WX!PfWU!ie-7nblwFV>o$?+4a6jK6?t|0)dg+3ct2yUz+|WE634 z;8quL4aSv;Tu3zJ-$Fk+Kg&PJI`nU0xs$(B9B9eTPCI#YWkC+^$2GBj3`y%`K|k(+ zejH)YdbXrL@*GSrMrZ2X)z;#?PD4QH>R@^ix~QNNbYh$~LaWj$jjjAkxC{KFRDMc2 z(Fu2=5ADR81)VNX(D>9&r%`%IryB%gD?1n}9T4k8x8hD=z61Pr=dUT9CcAPu!lcRN z-o<^%<=%n$o4`@E9_-O+LIrbCGw!RmNLr&FSETzHYO zs+M=^!=sTY=@E3`Y>sTLUfHRFTGFAUKXMLQ*VTv-4mJFdvllHJu4>k*YdS5L{~r~- zv(x`!@4VxysJ6bJ({g4eGjjp~5?TnM2a=p#AS5TDBo-h*8chNyqN0RmyXc{a?J9yG zTe*rT7UX&rugX|ZgNmpiV7=I`AohyrwW7Xj*6*Zp60gtmzW=>`aDOwiX74>S`^=s- zYp=cb(jQJ-6~2>kU{n82%~yrLBKQ9OM(+IsUOl8MYO1Be@m!L8zr01h&0J9ZUGegQ zf;)`^M{}|)V%q`d1kv}~oEovol4}l}dSTJEc*L^HGed^;`<%@-F+aawXXCM-a;mKK zD^C&~qFJBgr_YLK7d7mNy^pYBs^)e>wF5zU7M+ z=9|TfuU<%VwwMQzuu_h;Jy=RGMdAjU2c~||w)rPm;HqIPZd|-XFL-G~LwS$c0+MHkV2PsD^ z739E>+$}jRSxt60eslalc9>7e8R0q5tC!)*p#~TY* z=PaftuReW|C|sK}Qk-4iV~DYCZO$aCcxYdGSoB+;6Si4xQ$_9ioDpI%?K0k8pYv~v zG5w|VE*4||O*x$`6f4!1Nxy?`aUZDH_oQEGF|NHeXR%w&q#x~TN%C6x8hIstw95_; zc*HnzAV;&9y<&yv|7y-m>KZ+HR6-O#TI1mBIS<%6eIo4N=4R7XLX0Fne zbm)c-mUr;e&3-3mA@|QiY$0*g?|lnwLu`3s^YOkT=#Rc)#jkzWh>wr=ohQ-+om zLpij34HfW-yd|m0v1=98eSkw;*<)q!Cn=FZU$Hh_}m}46DP6eiz z80Fv*m{E>N*s1}l0k)iva_|`1C`X04bEIP;Facnz`bbAPw#ETtfiWgVI8FtOPmbsG zvPjwHR-vP}Vfig*rA1u(d(KeHr();tIR&cpi&))rQ&X1Od2HTfPR@WSJ zY0f!xBd5A(G9Q+YjL)XUB;If!(sIc=dS>DhTJbHu^j?VOl#SuZUFMQ+jYrUv&~h?g zGl?%0UwSZP-@baVWt&sG(Q=_JO5QvR`VJQRqh5ztGNaow;)dcO!>lw;b)b02G1A_8 zNWyImb`ZmkbV(Isj&uq1ch%D(npfJE+Ag%!+2+`4Z8bJpM$#5-smqA0y1pmJtXAnp z`5RL!k%WAdxn8Cf5or4c`77o+`Ag|TM@|(<fuP`r?UuIq?A7EY} z?`NJb?_(~OUt%tjY55Ae!iDl4<^q}HQAzV|2&IUtpEw#)&kq_gCmM#iWiwA=>ilhj-N%6cvZ^H&CPzL%5%%)Lr~<{qUV z^F^gE^97|3^LZtkxm)SYd``(??oxU&pH(uM&nP{aPb)o`JC*LtdZiolDTUSovBs>@ zlS&5fctS~M?ohfgA6GgvA5%IpA63$rk0>3PhSGt#U7_{A=#D+CxR?(qI`ctAWByZ7 znGYx_%x#LoykC)>w%L^NK1Jdk|4^LFdzED7-xUXQt72yg#m2lxu`+2nN9Ns167w$k zcjle)Z_GR7UzwZb25K}jMyKQz)fb!qN*RuN4L3>N3C$bAy;4%d5u zYit?GcNse_%PmWxaGP8Cr9k@Bz%{u`td0l7fdvIq*I%DoVRt;|*edGBTTcJ}C_jkT}l#_U#kk8sxxJDc9_dC-)%9n8(Nhz|8#Kfw0(w{pii?9ECzWR|dP zLhoeb`Xjl^?H2lOskdDk*WSgax#wPPztobIBo5FhjgeKCw@@;6mJI1k-)XnFyNUB6 z`S)06ao}=e#l?A-KHNFEmPd6=Z!c%GVN6r>b>}Y;tB)3EtK{$c1t}B{k>}$Qky_s~ zd;QLyU9z-VTIz71>jT&G(!J7Z?IG<(ZHcq5*}LJ3S!7Kcl5Gt2$!}*uSS{2l- zol3g4BTH*X*0CK~tV27()OKX9c4T@xGOeX-CQT}Bx{Yc}VGCJGJ2IsmnT&w^X+!g0 zkG1*%-!P0)1`S4tsc3~?Z`T{BkS3Y ztVdQm!tT@|a*vnbM5T7}IopvXw=)P8G6_G>$`%D_W%OB@KS8z)OOeI=Rry)AkbIvR zZ0-%w$8e4`mYMQ)hy@+v!EQapp8^efB8ORz$dw9ShgSP`L)&f`u6B-u|>Y9{uY@cJyiiyR4wETiNewX{fir~D8^M{TOjjKNOx+M+HZ0uWNlIFt z?d6)q@0y-vQ1On4Gi9k|qiq}8`OA%ihujma;s63Nxu7}M@kO1B}lL(NREbM3_9i^rzOcaJTx=JZR`+ri!(jb zV3&|!mylqWkYJaPV0(~YdyrszkYIX{9Bg`!9Bg`!V0w^XdXOA!dXOB|;+BP(!BhvE z5+nzk5+uhMW6hWDIx8;s-iFIP>Yiy8<*(-Sl^SNwnU~wmyxfs?x~%Eqtt0LNVgJtE zzwuHVE)EyYhLVN@4LWd%ldM3N9MZtabA*iF|IHP*ynAeI`M+?*g047VJo2miRI7cr z?FEY%yE$;0Ii552;fFkV)`8kp+H&nL+9K^-ZMHUDtI@`5Cu<{UY4CuSrw!1uw60o5 zEk(171LLhUL}2rrW~{e)oU-L?`e>ZZ^KrzCi!!^P15a_uiOX=ZK}mw2uHRU9_ZTf#okk?N3XQS)EO1NBS$N8&(z_nx%)&Ql_F zV(+Nfw7hqf*jF3AQXIH_c!ug2>hRG_o_>x@N4jty>pRGGs(lnW>Agg5dJj0ZIyQ?_ zYr|c8<H= zRV9t>s*-kw_-s~qdQ8%OKmp$~lzG_t68HjOk8Mf&3|pT9?*i`tZv$@uZvs3uQPTEf zYaj3uu$M7J<0*=g_8|8D6L^S<>0)Ea_}?mh>?=l1<5yehRiu22L`eIQjM| zPWv8dC&kOkvK(WTMpVuT&vmNlJdeS6eoi=Ip`gmh7zIjzA|MC^06*XZ3W4DOJB>^F zAZ!f;1_1qmK0r3W4&{<=NjH|A9bRvaZY1SUU)&$M*QmMS$8FndJ$AQkxU|i1uJ+8g zimBd^LhqtH9*DR1>Sf`&dtoTP7lz_{S$HVE7X`MM9}ev|ZokPhJ!lT3U+<9PLlIq4 zu9x>X(#>Z(<(ibsQRdgsXINca? z#Phf;JWB@;qLKJKwvjnRH016fE~^grG;aCYb7r}1ovqezM!g@>2>vTwM+wgeZ@yUl zYX4;8u4%z!i{0|L<7=aCq<39+`%1?(WW}4Ao=M$`w|}bRD+(w2isM zx8z^2#XU>1%(uiTe+}7Jkns&lmOsJP5y;**AxU_aBsK*~5?3TiM(S+ucU`+Eu9up^ zKOCkY4*#N%4lmJKncfFo;x?D9tMSow-po{6M^by8o4kFj^8M82E9A6_lN?Ds&n%96 z-7TbefIcyPlANZ-2STS)T>Ue}_^sZ~E{f*$hK(RY4mcQ(| zIYA- zw%D=CG%?bDxcA&uI;GpWK@bVRDRGbM#JZ`;(mjwp3_K)4SNI0>PnK@u0;EmY{Rp)JaaMmKUwAI5&qVIJT(1M0`*J{@y7f+ut z?a8itg>=++y4ZWvmm}(n@@eAnH$L)C`CCE$An{Hx-z7vae`YJA&)^e2wwu1SbJ~#& zYDYG(9oc}2c7*-gk@agw)|Zz&6{mdXdq&JG$d8CpbKO$CAiq)==3m*N{GMV&kcJU{ z7@D795mSEf?Lw9j!}EL6E6aK+bsOg7`4g>TecGuvyB%5Yc4X}tzWnVOn|$pQ>TO5n zX-DR6C7aRA*reyT5;m9RwIj=IM>Yhv{^L+S#r3Den04Goll{$AYsDUO=ly1~)=Vxi zlcG?5SnQ{U;zKOgiQ3`$^DH+Z!;zx=%sVaqL;d7uE$5T2Z@Y!MPO}UB(e{nKlYNjq z+kUEj9xdzkp8cT1D%=wa(#6a33p$Is_x;_h$v+GC(>>Ci^POiqXE|eH(}dmy8PZkK zavGbtQ`#sA=`raI=>vJDJcZscXGstEdy6)dTGeF$s6SDw)M8p?4xM8 zxscsW!(IhLMfoBB`{K~f9(J$OlKd@w8GLA;W1nH4Y@cZFPLZ~fZNF0|A9wv?r!V$s zQ)Shf@(X!>^j;w9Ud}EPzrF7tn4J7Gbsqc310}1gC_3U#>uh#AiXG~s#NCxDCyUK< z!vk_9DQHSni8T~S3Y%Nx6oV{dvBj#DBtdA};&De=?OD#r75xl2ic{i^1oGvlI!lm{sXk zv2S7Kctw?1w^yahMd>hiNc_4avztwoE*9r3$($}SKl1PCrAquVP$hmDsECatVPd5! z?G@jby4{w?MA?$eEGmu_X;nH&94>Wt?Vw7dQ2j2P(+F|L3>`RO}}KWhm!nZ1H!3V#nn< zuQqo|n5nARSzT3~S5S}UrXFobT$jA=*Ju}7KjXpa;Ue+U)Nr7KD)SpmmH7>(%00x; zh`YOZc~UrE{8P#(GX{L=e~Xq$yxg*i)NLBp4dsZe-aSi=i&6vMSjDyly>pCpD>6-A zC~~DVw9bKxWK;9U6l&wv%)lArd+ClqlB-z1LVH&IMfIkfrEHS_CF{~C=aS?H9p5>` zd|DHU6y8I2`?6s-*NEOzLtRg95kr=|R^TM&5BpjMD<%mAqVk)ecKtqo!`uoivN$Vr zdc<=^P*`%@y&Swt96lQA)zvf<#4}OMcZy!sOR6cOnydc@HT!6ZC%-%F{!=xZnZjY8 zFJAMgo2$f(QpcaXW-25Qrck?oSn~rvh6ZKCubDCheV(Adv1YL*t)SbVyV+ERpB8Y7 z{Mm}h@y`qu#y5M^&EoJkp+8r#+npB>e%#Yjw>zc2G%bIr&Ubd&2O)vVI*Yt+pX{s%SFy0#v_$N$H_ujVzInIaLld9zXT z`2SJOURs0GO|h&0i)-fJ7dxf-Xbs+wyRl|5e_!#RX=XUK(drnH;2&2k72}7EOtdav z$lI*q)Be=&3uVv*jKCjX@%%4`_Y|og7OD+RO$%xSydiI>vG%e5vl~vsBfdXw>NVB^ zs@@T8UcFg=Bwl^d&0|FI^gq>~pmz=VY4OEByzMhQMSb|fkts|c%VDb7>_dY$pDH@! z6#ki>tf610_`iQx^ULo=yEUuXACCCFgByD9Q_y=i2I-B*38Ij{;k;lZOpE$83_ivE zj_EBx>$UhJbp8!Bw-{y@^JiuCa_}yGZ*+!%*~}COxg*?_RhMpG8n9>CKepFN#^g14}WzjI3KAJIPgI%QgnqedW$>ew3SB>ZCv*N8jE6&8!s#{$=zFWt;F#oaIg z=8jVf*BHCT6uxIMI^Gxf+G5(vKDN^^sk=kQ3gg{vfk9T0vpKL_T>fp(Y;ol*N9Ott z8E$dcEQebx*&J|-nx zG5kt#&g;3Fc=h$%fyS=)0!3N&Stt0P?lEkZ;ARVjk?T9q*k=vyRjigRq|w}A5q0*# zj@W)$l$hM=Z2O#Zm@hfcWbSp&X6|vG!FaA%@0@J1hwUlnB;N6)vxfPEvzobs#)A&If_>ez!e!?q z*ID{&dYINk_+33G<+YTka*xuPuHq*-wyZpfTFGC+ziFt*w6e+||)>zEB`9HD>jC7oIy~!6G{B z^m*r=v2f8@vx=?DI(2CKr24cvDGGUyg)>PZX}KyAOK82MkjG04ur!>8m;P%!saS6O zLFHvI>A;}JotxV1q-LDC;H+7T=Pp{j;0!vi4ykRQSL>TaYpulB)}*lGjnSo19j#d7 zrTAfya4ZsNjJ!`FsGCkKeqN0SlEOBm>Abo$-mDV3S+2HE>cpEBUn-I!s+tQd#ab-E z!>h*7(o4;kwH`MH>Me%AITQPpK8jlMG13AsltJyEByVl~Q4A+?8f2?*gYBzH{Hu8o# zZI6NC)FWN`chr-#AGM>}C$y5|K^iZ8UaMa}t4F6!+9TRF8amyi-Pq)PF5DA?ZeAo; ztbDw1pm_c9!g6u$j=~#_#TCH;vbgv0!a<_nj>0nGc%pDEyVP3yIL8@VP76+2WA?sm z@J(Hs_F^hc!>e~~axJyiTQ^ykT5FB>Hw8_@@3CO2D8Hp>sW^ITk!<{QEO@31=71G?jupjipXt zuY*6H{%H8apy7|Tq5s|~Bo-p4ki{W#3h9*+6!R|)30rr0pBU6B@DYN-c9-wnzBFV% z0N2>1M{~-Jn)2`-tC+taG|#wxV)$97Wg(s4Jh%#2l_ds!Gx}{#d5UGe>2p(eB!4Pd zO2Vo*`bu_=s5?Ahf}IQ?w-{1gK|N(!nl()9B-dX*rnof)1|@UlRpy*MGFqPNnoUc` z9dmuIrmLy04@`46roo8=uLSycGA$x7RjbN!{`yr`h&8jrC)-r{keGUA_$T_~I^p># z+DQza8}1}JFD~#1+wAaKp`!~e>!TJ5;8qv@eVoIRBun($yuN3Jm|7psp=c~N#j3w{ z!;*|kjpUu-ADtX(D$_Z~JUu)74D4_zAa7mltT6_^5PtJ~njH}p&S+$hSRGAGri$j! zkNgL#Ydj4-#Fr=u&^idAq`Q0Bid%HsB=-yr1oOgfT7Wu~bXP(-M??(K0xU^)8kI$FurIK#lY9F_(|9@X%jAJ;qDze$NHWb;fd6CkeKFN5zNb~Lt*3FX~ zyR0vbRcghe=Y>Nu_ju`4RJk{R;v09%mk^0(OH@ejNF5w>_7 z!!EyrEjCBlWwx-{Wj1-)W!D}EcLUEDKaVO<6pDiy?qw6>4}0hfVL>0#LF>DBQRUM)Iz@5Myz-E94ELH6`Y;6K=1vUb= z05=1F12zCRaY$}eyAhiLSP$F)tOM2p*8^*S)xdSYD&Sh+8sM+MO5ieJ1z^6)VpdgK zhRvlwyhSd>)`h?VU_MX>%mdB?<^rb!vw)ev44@X64xDD9T-Bywb1E z3aA9wj<0GHu{A*q4;FVbvO~qi6cjLAOdf`_ii&T+^Qg`dQ!XkvOFVgL!4@H61!IiY z7Z#9LTXnGbx$R2}-gX;rZ}W7t3T;P0it*z=3yz#?yzL&IPGS7Kg{tve_Hf%JPW2+o z=wLYs%Ryruix9f) zkka2g>5$UTL=cNx1kslVm2B+n4P*hmfJ~sLiGb1r=nixPxE~8(W>Wx5WCWBLzY+pU zXB^WBNCUY04JaM3#r{fu_+9uhGs=&(HT-y$_!aH|{p4syXW@fuh7Yb8K80_%Pf3Q% z0oeJs<--IkpJK&c3y{RXi^(VdhOJ+LkH8PW_rQOE?|^TCV;q3rCx3%Y z?m2yM4e`m`bNaBbiBJ9lhkOov27C%|=jxL`#@0u`hrkEG5#W8`FmQ;UcAxwnHvetH zE58f81H28q1-uCy1pWoQ0lW^p2D}Pz-|UrN#?}E~Kd_HbLlwS+&AkBk-(LAeY;phX z#X2xvc{g@G2kZi#1)c$(26l>#_Ya?CSPleku?Y7o+267Mx_DjtzLS1jHe{eWO>ZpEv_%Qyx3`?0W9$i810c%&~(^}Fi^2dlLR#B3F zS^fs0T$jIAyl`3m1aa+C!_U}$Ah5Bms`i^z?J}$KqAIUh)iYexo_JL`W>ss=sy3Qc ztu?FKXjZk(tm;;?s&!^n``fSTJ+rFU&8jADaQTtH4-=1e5NF&QVD6TXu*=?st8b{L~5Z86c=qZkRXvlHb zh(cG)wB1QBak`h&J)F`CMzsG0PH7b)`g=F06n&fi-o@#&oIbfqGQsf|-Brxs4x zE-d|S{w@8+>93p~=kym&f9CWjPH9~(I`Rhx|0cfYjsI}^9jD)NdW=&F5>JO7<@9S# zzvA>uPQT!kmj0q+KI8OLPCw!FV@^Nf^g~W5*gPG1gwyvOwis<3=8Z#~zQ^gmIenMY zcQ}2U)3-Q%lhcEo(t2Q2!W*2v&gpBMzRKw7SMwYXa2fyIb7r2=fB%@p&#s;FY0~-st&ZX; zuI5iZ$HvByg|i(-$H|3PvSmb~PeQxp|3ALg|Nr>T{(t-UnnBxgox9@h-3HkZGAu^+ z(vGuWDHS)*_VnmdikUs7u(*|CW>2ZuH`|l#ABEXFqhNm;OorVuBEo;&44Hr(Cwh>5!W`?jb!$`&{b!v zcg=Ctx-wifw0>K;OVWRImC-70M_p0<6IWP2q#ty-^#c?MZ<~IjzS=cVe_pTGx9FSn zEA^$WEb{!U(+BEv^enwr&(Kr#8eP)M^(4K_w204L%DV#S;_0j zPCkd+gtyQ{s!dusg&HW+qS|ULOv@}~X;;$pqzo-ple8rDNA;+-RQ-e|D&43aR9CA9 zsLQ-ieO_Iv)~WUC9Q6@e(6C0`rk1N)C~R3&-K2(9w>mK8keZcpP|Zj=kn+5mno{3G zl~Nv2lTx;&Y)Sc%d|QvE+?eu-^;+p3b8O5AKUf%*#Gzgk?VY07Ibu8Hpt;}rxEx?U zCi~;`F&~w^%tvGo(~#Y9<}z<5atefF!OOahxwR1i210@!9=W&$Q(>0 zW;JAvCSu(#_u~T|mN}Y;^&y#~i4ZxOi1k64qlpkXnuztEGDj1!J|J^65h6zuv2K$& znuzs&nWKqV?~^&22yL6uM69&U!9=Y8kj-Es6cy)QnWKqNMI23pD&S}$Q~^g5p@KP@ z2o=oHM5rK+CPD>qG!ZI@qlr*C98JXfcbTJ!Shva?O@zqNM2Hkkgic_qjFFG6G6fT% z`e_G86S3YSJNSTmWR506`#G8j?dNDB)-5te6CrXm5$oL&M-#E$C2=$n>zxuu6Cobw za_*3RVQ!XwX8v9JiMdt!k$I2wgEMBH(H7}@-f_3|ALd=scg#DbZ<%*U$C#U?ZNN+Q5lHOw8D7_iyL8g#m9HfVa_1}mK zUXSy&_yMoR`AU5M%W)ov@88c{FYSx-CFTv%UgkP!4|A>bVto6B`1bS6>toVx{$q{w z9P=h=7xPBxS*DPlVXl{+X5Jv}WUiCynQJK+rrCtoOHVS_NKY_VOFNj?Nsq_*7;}~M zXq=BQ#SKpt&TaP-c7LJyU0LW)mR0@=?xj9MpOuBzT8x@Kg}p8O3EL~>5;15|Xp>N4 zA^Nae6q+bj?Jqoi`+-7BG)1~CX@RA0k~&!}6n=M~z9Or>r($(nFV?yH3>vqX7O4HZ zWwqtF<*?;B>lmxonr?l~`lxlIb%k|~?R?u5Th!K%Mt#1fMT30y4BM}?-r8@NGv7^5u#eUTOy8SWxt@g|8X9+2_C@gL?lfIrlSWr=grfU|e78nVt^Hvl!fl<>I!DwJ8moaEpW3Q-OAbJq12w{K zsKx5!jaTRMdVE34<(ueV;+(;-$GnEQ>-ymm_9Q%v2JFot|E3ZD#tKN{4<|iSPX7|h zJsx);OchWw^yM0+yx8hEn!7|^Xm0W=Z83IFH8e;f-k^Q$A^MjvCp%sYmV(p_V$JPC z)BMs4iH`Gx{SklTa_n(WDz3qlhz?~%XCR{4&Oe{9(4Z$ko*yl5 z3`z*n(zBt2cRnsBU(^uQFn3*VzAuw@CoINCUX+b)9xcwABoS}IJC6#;h{(5^kN#9}auDF21T>oJ(B%P;rX!>t#ju6sMMzbhafa>4v)03F72v>Ul9s zQiIC{DacWp*p#FnayK{#k;`@>A9oPbjZEFus`59 zBc4CTVMgPl+BksLH;#lIr?*u>C>$hzbjPeV<>bv22|8w;DE9_T$3&lp+=@ev8IZU1 z1)>8&d2SDVZA2Wki3=dP+ZXl(9n%xbgXRi}YIsq!c zM=Lys98=pY!0q?b?Efhz%FW+3V z8+D$Ji3#NN@I>;+!Ia#g9244<2RtE9*fGABE!NuSgJ-1XQ4G&W$m1w)vjDf>{1uOD zOCAn;BJ>*?+on9=@z5O@)5|DcSM;7_WQ|RI!4e}kym&|HF{(|^V*bq!(nR1bK8`AC~QO6F}Fe9=$D2H!t_g~8|ibL({Mm;^Aq%toK^z$ zdK_oBDW}&~(C0X-wH$pxD9;}X(F&lBIdOT{6Z?XIFBJAW&fLDO;9K%w_-j$J@zd=^ zWFg2}U)0T*To}E}vVL<>H!q~2t2dMb4Gu~-7bb~ST zr4;W6edLYkb~f~bjTJP?J^oukFl3XEUEd>KC;Gtzoj}Ov zra-#R1l?dfzlVCsu(OSBFpw9dCzS3`^KP)g^ELjElLLGp?Bss1RWF2I#1kNAUT30i zkmX@|#64kWqHYj!dQpWU&Su@9*t)LBWn8qYXl6=$@cr6p#VI2HU^LnI?UkbBTw8k5 z;v1aNJj>!6I#`PA%lckDMp$%TM#;!TCm0S;N7};2o_cUp9dHLdKCEp)T`4WVG>hgZ zDCrK~B}}jWPIP3$!DeSulkSYrnBhv=tn zj+!~rn4w{3kfsqJ!_dYI<`0APy-+ydYpS7fXCxHQ5NXOlcZ;U(_-L+zr?Cd}u9!O` zep0W^YcSF>qhEC}ESrkHvQj6_w~Y>kIe8^Z z^)2Pxg~ZR$oQ>v{o@#jj>%F*w0NsXw^kmy|f57jPo=7Ms$40vAq+v=sTFB9b&Et4joxjOOe6Ms`$x@;*q@R6+fwg8;fflok%Q*2bq&G{ z)F8}24Z;l6AV^6K)-SD*-8eEI$OCeLA;4fD2N(nl1O@=?^HL+T&r3~A?rZL?miqwg z^inOe(@V9?PA}D%99oUZq17@wy;RHW^inOe(@QnhO|6#M>7`oEKw;?s`@B@k?DJAB zv(HO4!Z1|JF?M>Xmf7j0T24g{7oY>0i7HtI*y*JTlWD7D89OC_EkIQ=JH1pP#6uNA zJXFax9Kt>?Rfs}SB`2{%OciEFS7A}vDlG6?g#})#BzAhKlGy2`3R8ZoFy*%jaVx42 z#i9z~U#cW_da07w>7@$mCs#@A^HM1tHP50_`WpC(9bzh_FR{r^FO`U9QHf|4l@dF> zRALp~O6g-9$xbho5<9(AO6>GfDY4T_rNmAzl@dF>R3aEgC1TN3V)flhiG5xw&BdT& z=Gm~*ONGQvFBK9yy;Ml-^iqLo-W8bUT_Lg4O9f_oS4iyiQh{066%sqWR7eNRGpxXz z>^cQFnc+AoWlmC$0EPiW z8OH9KXt~959`?-z&H~N=P6uj%>A)nQ2B-$gfpHASSl9D$Hx}~*V|C5LTeO%K9MUJW zBOBk2th^oBxR$cfWX;Kq&vOsyV_OPa$i}oIi?`KZaG@6i7XcRn7Xar2i-ASJLSO+f zpJAj=jt0m}?5Zx|P7bos*j-;xY8meO#r3`G8`l>`?@iKMu7UQ_E~cy#B}xZMWEZ_P zlVsQ4B-gjDugDnmw(AYo%dWkKUKic&5{F_@ySV--XJ_NXShQD`Z9vjx6zwTGO0xPb zPg~|BeJ|Xr2fA(Z))a_hOE}H4TFl=Z%@l9n7fp3TRboxT8}_xDCQ8Ca9ph4IqC9WS zFtUP1OX9g$y>JI;ept&-gJz1yrTRpvdd*PrK<7}JxbKdrrwf(YT=Sq}rFm;2d}5+* zb2Q&9n+`Bl5Bm6Mxhzhjgq4y@)rrpPHDq49GdeO2xf&G`Q)aBXJ-Sfq>D-W%Vq27? z-kb7UN`Gat{8wqa^Qiq%=RfQnZHq`}uCm#ebz9k8+)^RmY+cz+46Bqkr>vZ|GQ*jk zn`^!L95JLy?r$j-GcHil#o1Nz2jcK_IaB;TO&%}u&$1}uu4*|To|`Va#62}~CvnnQ z(rMz_pXslxv!zaA^{0IbyX_Foz42 z-sZ_VMRc0{bmLvT%Di{ojVn)+3oR$!BWaL10MjM;FT#0rcrGtP+#Kp);@f^7C!HP%293TK#T&?TPJG&hfS*ho3CpLi0k1Ei0T$gMIn*|6Es3o zPSbEijZi9FvbXazTZ`eHM(a?R#+h0SN;Q}G5FpjVbnRRrl1*i zCai&qZ@Jo5<28^Z;y$rIYLc54z`+t-!em@ReWD7;3`f(p+miSKiJAeI023lL1Jy8z zYnbv>t8&=f7NPK!;a0ySQX0&W2p^3-ChU;na<)NIGmNAz@8uk`%X>0m4RkALf3r>- zW+tkEBmqytX22P+6_c7_Wtt;SwmG30aa7HUlbPLn<``)lkVb7~%cVy|l8Utt?5t!&XMG?gCrsHIq7} zBCNwj!qS^!I>GnY@bnOw$G?C+h=I{I;!V6Nva&qhkWGE}N5*tUBf- z>GIxFu(=1|NlCiQ_8A?Ml5|W;(q*>K=rY@9beZily8I0Cv3*7tbIuIUGQvMZUl?du z$_s9@#kA?BT+&VhrU6rdDZpf45>NwF164pJPytK?CII7sa$p=V7Kn`jPX+i|CGBKv zodlEtq;;DoIvN-Sj08piB|tF{1&V+|U^q|!4C?_71tLHg2pK#27N`^uJ9v@hZhe3ZPW}dUSr8o>^E7m?B^#rW6lfXVJf4}h|}vF?Ck68>Fh#oXz_UU zVq0|3Hid&$t~NthibLP@^$)RMZ~rSy| zIxnXfHx#JeSt<^BichvWeiKK(iQX^X^cElHXT6WEU0|NHuAL7o1{MJelZPjnQJ3>! z;O_m0M~g#e^u8{pb33X!x1*|aJE}UjqpEW|>KgCVHQuRf@txeby2fp*YuvUv1w!T% zTc@yv{d~roHott2!5;>Rf=Ta{;Q(1*kd~ zpz0wmT=xKOARovxq3XH75MVHn1N1YY>wSSNMkl=&HZy^q(w#|L=Yg@UDv+lY}zr`v81yo+Zmj#zpfp`e(sfYje8|sYqjq5 z_Gt0f9eL0yVETr5DVkp}Ab;3=NF_cf%W_X7NJC-r2MOft%oHHkmq0*1(x#k(etG=z z`z_@dv_b(s8Wr}-hg%-NuUE+3^aUJ{549!d2xNZwy*A|`FP(z??-p_lTA7xgU>EgL>Y8{7zePZ^RSygypx}l!pSrkVk&2xja7ZO(#G`q!2j_y1nw7 z%@05m#O3sL?)S+D+m!oBrS!=EYEw?Ows25>qnW&6+#3~meB@%~lV5LkK-}TWl!x-d zq)~<=@@s9$Ly-XaSjn%pDW_p?k5_)BNgiwPC_@GG-4F;yTcXp~c+tVmusLa{C* z@_{zxL2_>J$ot!rQ(RK|5$|i1H+a^NjSm%2yhN{GeyQ<*xMK_C!90qVMgBqZ-Ztg# zFntusd)ktd^N&B|mS1d;H+t4IRNx^Ot6)%mq2YiA&l<@6d9>oVd54~FQy%bB+%I`| zn{u+V1l;m-ad~quJM#`u1@!Um^~k#t6hNjJx&!nZqQ~^vHswJYI}XVS2ER?;B+5_U zy^*jSAN=mt+`S}zfR`@7FYgq!ol3eG>q|>sv>LUOi;r2vJf*~GTy$~?P4cNNwxk-C zZJsZz;>%tos`1kTnjW-1v!sg{x4T#}PRlI0onk-rD(UJBdP2d7x_AA>#WX=^N%0n% zLz0nHYwbaCQEIcdiG5jJx^%N9nZrcp0FgO3WGS#@C3VMYZ?w8+76zQ!K88Bpf>RK zwiW+c)K6NSw1`f^j6aV-t(N0cW^8)LQjt}gJ(A9q&bNlooUefgzmhO4X05YUGz^@X z17b8)+TA?jJuRx*rIYA!v^Xg0vbqcut5ds6B5OvjDu#@Y&Jw%FM|+6t%;fj+(XjZt z`PaM&^w$ydulFWID@4fLykcUsQe=&fb{BWkrsXyKy`myoCwvp56~>D1iYdIit1_yY z<+=>xKgDmde|$U|vUz)At;TC=+8H9LZbw$tj;yjBnWciy+E_6qdWoI?w5)rm#GY!{ zw|PFb8eeuSS?)Anmhp##V!e4n+Q37v`BNgKmIbLPw8MD zIqUi(ZY|vWfJV97OFgyuwk55vzGI13T>3AXLwHd)v+KyBRu%SWQGWL&$(m!MBj3K$ zK7oSMFS3y@pmm_-QOn6m?}+j&m$?MN+_kX1NUhvq8(zp1N|CO!MJI+=dC(l!N@RO! z$Z5XH2diHDIcuxojelvva_EIl-tviRAc^0X$o3Mift3NOVeZ;0%!9ZjVKMYm3%4?X z#S8F~OM5Vp?WI9(Y7bSSuT>o6Rr|&2T}&8ptZ#+AA?$ z0tG_%MG`(PI0M$}s0Mmm#^P}~KVc2zAKp4%X1oTHL=ujjG{{ZOkZPE_b__0Ial#6` zGzX>i6OU6QNg$lC8RBwNv!n{>aXA$=EIP3U(vK)wc*{XJymTN5C4L&H29mRGie@+k zH7rb615IC|sR%89t0;lIMm-4)_vTHa8d$qUGn|ZOSdge3PsB}ckG3RXf5NAMYk+>t z&2SPfVSd75LSA3%D6%+33Oh~%A8j=Qy*60CMl+P5hPo4LF!gMj1=hObrBj3?9BAul zXwcBn45g@HUcws4)8E(1aBp4%l|YhU!eOiixvAr$8AhX1Ixk@j<_JxKW}q5K5==OL z60d>361W+}ZIuD)l+I05L5RZBCh9Wi^-q#;;+F?5k-sv~4C3Xphf}9Cw^a>LGicnm z!Snjiw8_$035y{|ZW^*nRDm}T@FspYpaTBZGMmBJ zKeQy^u$MUN8y8rcWp^HO)<4|A;-`qZ6d0A~NKot1)W)zmPgEJ$TK6J%0myllr!t^T zxzC)Vsq}AC&QmOvel6vs{!#@r?n5WQGbEM1Ee~jtd(1&-3L)2~JZMf;RI=NY^Grjf zcMCbxUka~HLA1%epQd3bSuGA=^%rt-kfwoJrB|DBnxNwgE17M|Nj;AQm7dMzaa$1u z!KPuP02#|Xex*nA1EBuK<+KohJFIkXQ%-|_bO*Y%B`0H`HxyF3Hj_8lil_n~8LKGn zemJaTG&>+}D>CJ@NC#<^{)m#^rkrMCMFL8fHsv%?*h?Y$n&gePqId;lk@Q5APE7|i z*osK*HRs=wEhnU;wIwIJ0KI3Gj%~`RXA16u_*{dYCDJLh1 zkXvy;-eN{3P9Q`dS>d2!Ph0@aP>s+>YDBRmmeWK!nsVxnDAqRR^qn5@D;AcwoRMjs z0Ig0*GgjyfliDhP`Vn$rkbiGePNx?M%D=TK_xinLQT^4FxB3M21c$nPd8AWPpnv&z zf&w5XmChHCe@QH-2=jDV$bO?E!iQ;#oCyC#BmvnEcl8Pi_Ut`u0 z;^jA^MW(+;ykv?q5%!1&-j0@v-PtWNvXQVcV+m($y2dc)+c~1ROswux(!JTavhlF- z8pRr0L9=tES5G*PzJWYqO@2v{I5a+9CHAvju`z43>GrTXNP4Q@FFbEVo849j*xcBd zuc%c%8u>DB>od)pgY%INLvPW>ODt@(X}Zar zxT1J?(~pj_HrP5Fvkv9E!@q#Isgu6xL!$S@k{bTiG_!v;=7}`jQL=8D=1-bqD?0Qo zY1R^PfoT_Q%olE67gtnIY`02^c9-Q24g!66fZrmvy`TS>v1w=FWJ_$c-o+e&9<6r>Hf4aP#*Icm{Ly+cb~*q%U<0gx1xR8b9{y;=!yk=! z_@lMsko^Mu4E#ihSx0L>nwz7vAAs)xb|)C6eTOaf9vGz^!`3&zQQ&LfE8t7u3*d9$ zGvHI;6X0VLu~FJb*!&Rq05}4?4;%�q+6-2HpkUF)>nm8+Z$N6JQ^QksA9rjD(NF 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
      }K~8Wa-upi`(|?vkv+<=x^7g<7R^mxv(v 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 delta 46615 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 SPa-Y(=&~|$^JiO diff --git a/invoices/migrations/0003_historicalpayment_payment_stage_and_more.py b/invoices/migrations/0003_historicalpayment_payment_stage_and_more.py new file mode 100644 index 0000000..f0c30bb --- /dev/null +++ b/invoices/migrations/0003_historicalpayment_payment_stage_and_more.py @@ -0,0 +1,23 @@ +# Generated by Django 5.2.4 on 2025-10-09 10:59 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('invoices', '0002_remove_historicalinvoice_paid_amount_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='historicalpayment', + name='payment_stage', + field=models.CharField(choices=[('quote', 'پیش\u200cفاکتور'), ('final_settlement', 'تسویه نهایی')], default='quote', max_length=20, verbose_name='مرحله پرداخت'), + ), + migrations.AddField( + model_name='payment', + name='payment_stage', + field=models.CharField(choices=[('quote', 'پیش\u200cفاکتور'), ('final_settlement', 'تسویه نهایی')], default='quote', max_length=20, verbose_name='مرحله پرداخت'), + ), + ] diff --git a/invoices/models.py b/invoices/models.py index b93e4b4..b61d487 100644 --- a/invoices/models.py +++ b/invoices/models.py @@ -350,6 +350,11 @@ class InvoiceItem(BaseModel): class Payment(BaseModel): """مدل پرداخت‌ها""" + PAYMENT_STAGE_CHOICES = [ + ('quote', 'پیش‌فاکتور'), + ('final_settlement', 'تسویه نهایی'), + ] + invoice = models.ForeignKey(Invoice, on_delete=models.CASCADE, related_name='payments', verbose_name="فاکتور") amount = models.DecimalField(max_digits=15, decimal_places=2, verbose_name="مبلغ پرداخت") direction = models.CharField( @@ -370,6 +375,12 @@ class Payment(BaseModel): default='cash', verbose_name="روش پرداخت" ) + payment_stage = models.CharField( + max_length=20, + choices=PAYMENT_STAGE_CHOICES, + default='quote', + verbose_name="مرحله پرداخت" + ) reference_number = models.CharField(max_length=100, verbose_name="شماره مرجع", blank=True, unique=True) payment_date = models.DateField(verbose_name="تاریخ پرداخت") notes = models.TextField(verbose_name="یادداشت‌ها", blank=True) diff --git a/invoices/templates/invoices/final_settlement_step.html b/invoices/templates/invoices/final_settlement_step.html index 0e7916b..97a3861 100644 --- a/invoices/templates/invoices/final_settlement_step.html +++ b/invoices/templates/invoices/final_settlement_step.html @@ -60,7 +60,7 @@
      - {% if is_broker and invoice.get_remaining_amount != 0 %} + {% if is_broker and needs_approval %}
      ثبت تراکنش تسویه
      @@ -193,7 +193,7 @@
      - {% if approver_statuses and invoice.get_remaining_amount != 0 and step_instance.status != 'completed' %} + {% if approver_statuses and needs_approval and step_instance.status != 'completed' %}
      وضعیت تاییدها
      @@ -318,7 +318,11 @@
    جمع کل(ریال):{{ invoice.total_amount|floatformat:0|intcomma:False }}جمع کل(ریال):{{ invoice.total_amount|floatformat:0|intcomma:False }}
    تخفیف(ریال):{{ invoice.discount_amount|floatformat:0|intcomma:False }}تخفیف(ریال):{{ invoice.discount_amount|floatformat:0|intcomma:False }}
    مالیات بر ارزش افزوده(ریال):{{ invoice.get_vat_amount|floatformat:0|intcomma:False }}مالیات بر ارزش افزوده(ریال):{{ invoice.get_vat_amount|floatformat:0|intcomma:False }}
    مبلغ نهایی (شامل مالیات)(ریال):{{ invoice.final_amount|floatformat:0|intcomma:False }}مبلغ نهایی (شامل مالیات)(ریال):{{ invoice.final_amount|floatformat:0|intcomma:False }}
    پرداختی‌ها(ریال):{{ invoice.get_paid_amount|floatformat:0|intcomma:False }}پرداختی‌ها(ریال):{{ invoice.get_paid_amount|floatformat:0|intcomma:False }}
    مانده(ریال):{{ invoice.get_remaining_amount|floatformat:0|intcomma:False }}مانده(ریال):{{ invoice.get_remaining_amount|floatformat:0|intcomma:False }}
    مبلغ نهایی به حروف:{{ invoice.final_amount|amount_to_words }}
    -
    -
    مهر و امضا:
    -
      - {% if instance.broker.company and instance.broker.company.signature %} -
    • امضا
    • - {% endif %} -
    -
    {% if instance.broker.company %} -
    +
    اطلاعات پرداخت
    {% if instance.broker.company.card_number %}
    شماره کارت: {{ instance.broker.company.card_number }}
    @@ -200,6 +164,18 @@ {% endif %}
    {% endif %} + +
    + {% if instance.broker.company and instance.broker.company.signature %} +
    +
    مهر و امضا
    + {% if instance.broker.company.signature %} + امضای شرکت + {% endif %} +
    + {% endif %} +
    +
    diff --git a/invoices/templates/invoices/quote_preview_step.html b/invoices/templates/invoices/quote_preview_step.html index 0742094..10fe329 100644 --- a/invoices/templates/invoices/quote_preview_step.html +++ b/invoices/templates/invoices/quote_preview_step.html @@ -2,6 +2,7 @@ {% load static %} {% load processes_tags %} {% load humanize %} +{% load common_tags %} {% block sidebar %} {% include 'sidebars/admin.html' %} @@ -56,8 +57,9 @@
    -
    -
    +
    پیش‌فاکتور
    +
    +
    @@ -94,13 +96,13 @@
    -
    -
    -
    #{{ quote.name }}
    +
    +
    +
    شماره : {{ quote.name }}
    - تاریخ صدور: + تاریخ صدور: {{ quote.jcreated_date }}
    @@ -110,7 +112,7 @@
    -
    +
    @@ -121,43 +123,48 @@ اطلاعات مشترک (حقیقی) {% endif %}
    - {% if instance.representative.profile.user_type == 'legal' %} -
    - نام شرکت: - {{ instance.representative.profile.company_name|default:"-" }} +
    +
    + شماره اشتراک آب: + {{ instance.well.water_subscription_number }} +
    + {% if instance.representative.profile.user_type == 'legal' %} +
    + نام شرکت: + {{ instance.representative.profile.company_name|default:"-" }} +
    +
    + شناسه ملی: + {{ instance.representative.profile.company_national_id|default:"-" }} +
    + {% endif %} +
    + نام: + {{ quote.customer.get_full_name }} +
    + {% if instance.representative.profile.national_code %} +
    + کد ملی: + {{ instance.representative.profile.national_code }} +
    + {% endif %} + {% if instance.representative.profile.phone_number_1 %} +
    + تلفن: + {{ instance.representative.profile.phone_number_1 }} +
    + {% endif %} + {% if instance.representative.profile.address %} +
    + آدرس: + {{ instance.representative.profile.address }} +
    + {% endif %}
    -
    - شناسه ملی: - {{ instance.representative.profile.company_national_id|default:"-" }} -
    - {% endif %} -
    - نام: - {{ quote.customer.get_full_name }} -
    - {% if instance.representative.profile.national_code %} -
    - کد ملی: - {{ instance.representative.profile.national_code }} -
    - {% endif %} - {% if instance.representative.profile.phone_number_1 %} -
    - تلفن: - {{ instance.representative.profile.phone_number_1 }} -
    - {% endif %} - {% if instance.representative.profile.address %} -
    - آدرس: - {{ instance.representative.profile.address }} -
    - {% endif %} -
    -
    +
    @@ -214,7 +221,8 @@

    تخفیف:

    {% endif %}

    مالیات بر ارزش افزوده:

    -

    مبلغ نهایی (شامل مالیات):

    +

    مبلغ نهایی (شامل مالیات):

    +

    مبلغ نهایی به حروف:

    {{ quote.total_amount|floatformat:0|intcomma:False }} ریال

    @@ -222,7 +230,8 @@

    {{ quote.discount_amount|floatformat:0|intcomma:False }} ریال

    {% endif %}

    {{ quote.get_vat_amount|floatformat:0|intcomma:False }} ریال

    -

    {{ quote.final_amount|floatformat:0|intcomma:False }} ریال

    +

    {{ quote.final_amount|floatformat:0|intcomma:False }} ریال

    +

    {{ quote.final_amount|amount_to_words }}

    جمع کل(ریال):{{ quote.total_amount|floatformat:0|intcomma:False }}جمع کل(ریال):{{ quote.total_amount|floatformat:0|intcomma:False }}
    تخفیف(ریال):{{ quote.discount_amount|floatformat:0|intcomma:False }}تخفیف(ریال):{{ quote.discount_amount|floatformat:0|intcomma:False }}
    مالیات بر ارزش افزوده(ریال):{{ quote.get_vat_amount|floatformat:0|intcomma:False }}مالیات بر ارزش افزوده(ریال):{{ quote.get_vat_amount|floatformat:0|intcomma:False }}
    مبلغ نهایی (با مالیات)(ریال):{{ quote.final_amount|floatformat:0|intcomma:False }}مبلغ نهایی (با مالیات)(ریال):{{ quote.final_amount|floatformat:0|intcomma:False }}
    مبلغ نهایی به حروف:{{ quote.final_amount|amount_to_words }}
    @@ -232,14 +203,11 @@
  • اعتبار پیش‌فاکتور صادر شده ۴۸ ساعت پس از تاریخ صدور می‌باشد
  • مبلغ فوق به صورت علی‌الحساب دریافت می‌گردد
  • این برگه صرفاً جهت اعلام قیمت بوده و ارزش قانونی دیگری ندارد
  • - {% if instance.broker.company and instance.broker.company.signature %} -
  • امضا
  • - {% endif %} + -
    - {% if instance.broker.company %} -
    -
    اطلاعات پرداخت
    + + {% if instance.broker.company %} +
    اطلاعات پرداخت
    {% if instance.broker.company.card_number %}
    شماره کارت: {{ instance.broker.company.card_number }}
    {% endif %} @@ -252,8 +220,20 @@ {% if instance.broker.company.bank_name %}
    بانک: {{ instance.broker.company.get_bank_name_display }}
    {% endif %} + {% endif %} + +
    + +
    + {% if instance.broker.company and instance.broker.company.signature %} +
    +
    مهر و امضا
    + {% if instance.broker.company.signature %} + امضای شرکت + {% endif %} +
    + {% endif %}
    - {% endif %}
    diff --git a/invoices/views.py b/invoices/views.py index 1a11c31..2bf0f39 100644 --- a/invoices/views.py +++ b/invoices/views.py @@ -115,7 +115,7 @@ def create_quote(request, instance_id, step_id): quote, created_q = Quote.objects.get_or_create( process_instance=instance, defaults={ - 'name': f"پیش‌فاکتور {instance.code}", + 'name': f"{instance.code}", 'customer': instance.representative or request.user, 'valid_until': timezone.now().date(), 'created_by': request.user, diff --git a/templates/sidebars/admin.html b/templates/sidebars/admin.html index 3e0d49a..a644505 100644 --- a/templates/sidebars/admin.html +++ b/templates/sidebars/admin.html @@ -51,7 +51,7 @@ - سامانه شفافیت + کنتور پلاس From e2e4a6dad8fb408eac9c210c33048ff6f7f3874f Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Thu, 9 Oct 2025 18:53:46 +0330 Subject: [PATCH 28/28] add logo and fix sign. in print --- db.sqlite3 | Bin 4608000 -> 4743168 bytes .../invoices/final_invoice_print.html | 6 ++- invoices/templates/invoices/quote_print.html | 7 ++- invoices/views.py | 6 +-- static/assets/img/logo/fav.png | Bin 0 -> 23311 bytes static/assets/img/logo/logo.png | Bin 0 -> 59182 bytes static/assets/img/logo/logo.svg | 13 +++++ static/assets/vendor/css/rtl/core-dark.css | 6 +-- static/assets/vendor/css/rtl/core.css | 6 +-- templates/_base.html | 16 +++--- templates/sidebars/admin.html | 51 ++---------------- 11 files changed, 40 insertions(+), 71 deletions(-) create mode 100644 static/assets/img/logo/fav.png create mode 100644 static/assets/img/logo/logo.png create mode 100644 static/assets/img/logo/logo.svg diff --git a/db.sqlite3 b/db.sqlite3 index 6ef6823e95ac0b27f18b3e0d1af73dac0a3766ba..312b49abe85aff65763808eb41637c7d1ed8e962 100644 GIT binary patch delta 104006 zcmc$H2Ygh;{_mc)r|j8t(nu%S6fh7H_H5q($)toQ9?w*oK3* zvW>~snZqp>e&be0Av<&U-kJr2n0L1y8DxsZmh5@lSO!I(ALn3_w?8=e9HB912se5A zt+^?vb&9Mo#`cWdbjG*6ICrqHJ1d{7Af%cpvcME?-k~SgtE8_JVw6D@c8^5rZ^oM-Q{$7^9*O6Gw3i}1zu-?)5s4P zKEvZ=LTA!Ffda#m@AkXBPJ<~jA=NS&3VPFHA_wJc`7XhV^NY5kW{I<+w-0AuVkXMm zDJz7z%@m`!%URU0&EPrdHrb4B&PlT3y71`ahZzaxKN7jKMF@DkDLQa!&97yU)U+O{ zrLv}x%e`L4tNP;>)YO)cXb!9#xkKMt$)lDnGA|i%0>?1USac}Nh58H?MM6bEs4ZNG z3)=ofVk0*zO1(mzuTE9ZR=sML8g2U%*JpzbZQ0F5hlA1FS1zIJ2C}grv4NkZYekw*%hR&86fH)RHJr;P z`)G;l$GCl7Pq5=hpyP+Xq-uH zdnH_MZ_w%OO7BiKTt2twOmh1R6L1?okGpTO)9duQdXUlXdasPaBg?F&^G5y+!5Y*a zu;{-btum_~cY;eJ!yOgRV3W+lN3z|F`P;+16xCO_*B53CM#~;f$u|Eu!dscXf}Ktd z;pAW(+>gXoeq^ThruM4#qV}w2YJ2r3^t<)3x>wKAqqRS^ueA5Ie`xocGg|o(v{bQb z5Wj>{fVh6_s_4}%w*Ka^ulWIZbU~^Iv&pmPhJ4t?e< ziGI`tP2==$VfyB;(0|o`)W0>OYiu9liGbrr`ph5G1+67j)el)HRX?SFrk~J1)Zfux z*N^Bg>W556n{bD&@SMz4W2Xuo`BU(9P8ms$Wmu6;CzbSST!-{3^N?=s@38&dVqrcL zI14N6Gfxe*-cW>R|Mp?(_6J?)>5WBmH~qTEihf-r%BNE_Gui~4T&FinY} z|Du=;VuWHQnvO>CdQwh7C5g&axUe#MagR8R8)m&0iA~}KiBhF>miUMGrucxkPOK6Q zQL-Mh?z3Kt2a|5)2CkWkw%#Yk^@E!D3*4^!fZOFa0vh`^KXA>IE+m&L-|KS+-F}sQ z8)BW0G9DCT;|+-B!>fbS9Sr!LG}?JxX-;Rp57r%@lg69enIvsDuRCCPRQ63sa#AM= zR$+g>%ME}2B=${d;F^h@BzJ+=m+yzEAn4NA*Px6OC<$I^NHCc1@;HNrTVsy^>D*3| zr@$M`H(Y+N;a1rrkXL0ViB1GC6L<}keHlpOyO5k-*bI1l9#0bcG8AK6C&?)Adh&g4 zBk1#M?2C}sSVA%z?-7^zrFiuVJU*8oHKYzPV;UWgs4PEv*Pfz&=-|mRUJQDJ0k52o z>|coqb}ubkz~v1}uOkDzP~)5;QSmzchBVJ&;a*3M8;g?7rC*6#C-8Olm1Ozbi?&23 zW^=3UE6vuBbiIliyb_PbrNrEBrjL_8Spxx83yM0C`HtDzA`MZ=k{hmO-@!YFYW8gk zZ&7%Y!W$G`r|=quqZC>&RI#s8I6~nS3NKUmCxw?Nyh!0Ng%>bPHMe{yEoZr5+ANq{ zq_Y(5Hti-YtgX~8M)|E$rlK`#JG5(Ig`0&cTcvnjyI0$Y$LS|_fe`X~BJx?RuFA2uB=@@}mlnF}%<1?%2E-ALWb9K^A3Zt+Mx zCjZ2xNKct!tDMWK(x=i#(p%CI>3Q&iA=Lnz&=F}u?q()M`~Ev|^AV`ESP za#kzx!(c$-ZGOJj>vRV^r#sMr=Wlm`3${WA?1Wsjp=ZxBTuwjChp7T>S;pQKS5(4UFLi zG2LrXfxWutT5gssQl4>0uiEl(mu)oFM&%j?DYvJ_n3*B#RtERk52A-(f6E}CH{22f z?&_OYfxGhNIp8k8c^tTlZw`RF=;lmt>u$!qJ7@O_bJk7D&Af(31f&0glb_dZyzuJV{4`z)}ZO~W&pO6fLB7hu!_#C{&!rp^I|8ORm`wDI2io5P28f@*m2zvq9 zVYTnJ&_BM;PDP(?v88nl+(-iBqft5uogPGo_SjAzjgriarp_SMBuEtmdDs@>Qg{Z5 z&9+>gPvkY^YPP+`^O@ks@3p2vwKJ|;opV)0LSqlzE3Jv)p$%jW1fzB=#-en}xGS3HgS3yeU%&jo9v z0sMj#w%#IBSLddyD=EUVQtZ^eFXwNpoqraFptg8XBcI)&9K} zuj!hkG4@|jLzJ3hJ|Cs#!4e0D;&6eShhO*t*+s#i;G{5=LOzC|oJhe=fh8b)MV~S$ zWKeKWNT-lSp+ALG3MmxiWQs{-@ie>SRb$F={)TEpU`g6R%t1) znZ7~4M4zS?>*?B$+AG@qTB9~Wvm>WNjhmpY)iU&t^d^0^K1(0157d6w-q8N0A?+e9 zPH%w&tQF?`MD25Jq5d|UCu;P+>)W(4{Tb~_twKMgeWNYc3t+h&p$*k??0@QyYChE9 zP|q@-bEpOFjb)>aCD6uVWztx@>=Zbel}TH1GHELtZ7Z8h+Des4TiIw^Niu0GStf18 z%A~CXnY5KCleXez(pFZPw3Q;KkPMPV+*F*LWL}xC2BP(5=_h#SU%<u^>XvX1!`tgoK=4c=T)!&TmMo&roRFG^AujG?$Oh^ z_i<2{d^w~u1OFT>4TJ>9ek##=y?HFG4v6|M7Nf)hx)>E$HsTb5mJJlvqlJ6aU0jMh z+7z4AR2BtW5>zwmHZ@74jGkZTW{fp&xL2KT?K(d-s~tz83No3MqeBPOZqw625`xTN zBuF|0d9{0xmd+s6BuEtmIo3VM=}E4FOmgKx^UycySx(!2Xsn&MC%Nb0)M(cnNwR)3 z0}Xf?oGQPB#=}kcl>Uf*kB*Fk>2;*z^mKkOuC~Yi6*T3C_@_&~9-8tO{By8PK~Igh zkIKxjoq*K28?}qI!+NXjggR3{sFtW}?Q6Ar)J*j@?MgGd(*Bf zZ`~=v%aED}wT#G0g|&cpfM;=v04oW<5FLzlq@Xp^>{*%IcPU(u?R|r!L169(avU9= zVjiDnU&}CS(d-#^hinm{P>@gxIv!n=4Et#ddlqukW~QJQX4n&%6K3lSdkmA@br-1p zjfEK53OR6Zz@xZ~xAjxL#q;zYrJP^Za}>j*Y~X{K7bb0|Px}b6E9n^q=1mysaG>;i zoF2cn4#N0%^)KsZbNTaw1}q|eEy7I*AV?9{Bxpu1NP(e(lTSxQFN&-mvsn_@n7z&azpS@|LT8hx>To<2->09)is z;M6>*&4q#6G3Vy#G1`B$545MXby^j2w%FqW+9NREe$+Xid-Npj5ACFOSi4@Ug<1J3 z{S$4E{Hw z&on=6wa=v!|BMQnc?I_gj#0sp+$(7AO*9S)HJXTTNk0@pVWZ?_GnGnnV`*3Jsd zanD3Y_GpRyX)5Hv2|M|q*OM;EWOED|Rdr^BPX+8%2QfUth+d(H}M7G?J(NvNVy7orRLC=Ifx7Y14c0H{1Ba!2X3<6lD za9jj#Djb<1vU&VQEeoF$4_ow4^_TU(>DTM=x>Ng2I{_1FxjtK8Z91B?do=XhLt1oJ zN42YyI6r2CpKg$ja#ooTP-5T+vDpHwz-_<^+^z4|59yoXbv&itr8ny*Oh+@kKF|#b z^axRnf01fbZQ6Z6Gj|`*=Qi^ubFBp_ZL!nPOHnz~(82nsoMiSX_C9tOyOv!DJd#nY zi%nw{=11lPa|9Jc&0(vFMex!@oVVCFMOsSE37tOTN34302_xHa7d5( zl~Lt2@@4W;xlW!V&p=nzBn&b0Pef&(-bEPZ_AjEw`E1w1!Uf!A;KMeWr_!Sn>pM8Y z^LucF^Z1|_=HY+2!1;2J0u#BaKYJ!)_!a%I{;d8Q-YeZs8N+dyF&t~Y@^G}@5ijd6 zS@aL|7X26f2mNdPbNww?b55AaEz!-CPt3yJ6qvgn#5X6!o5`)6{#D@r4fa2X{oA6S z(9xbWuD{v#XLOt+RaM7W^u78_JytuUE!PIx-?neI2h}gto76F;!x1w?Wyc!m)R34& zKfLmU^9jNXFTC+xPS-&3z-*K6@dKyH-9d2~YE<=DCyt!#1}+dBV*J2{^eVSu;B39-&;OBMi zEYi=UCVp42Ckv;&CVsceRXcmOusVeQ#f@E;(vcoI?i>|2yuIu`5CwNzP&#V`l%OA{ z@Ny0OlVZoNOYW8eG$F0M-|6n7_I{@yr!XtO3I17Q&2#6+Ji>eG?1>h5eV&BFU`S_S zxNp=(Yl{74`*rq8*vLEv$H<`eD~OZAAk*aR&)GNG&q2=mn7A?a273t{6z|sO>A4_s zdKkFFZu`IOru|a;Fmk+{sb_1S!b)(lHpKq5z1hCR?tug44SKcSUpuDVs?E{{*gv!1 zYoBk=Lk*Ck$3ELW5H?9ygD6Yaj%wSr$y$Q_UHeV;>GpK}8GXGzN|&^kv}?3+T9o}Y z`wshg_C&L_J|>`|P@G2yQy#iRdFUcb*w0p$u%88%u%CIBu%9`Wu%B7>DBj($g!?R0 z7P`a|7P`p3f;TW$maxzTmax!ymaxz{max!S_ArS}IOsC_yw%)&Ma*2b>q)91rd?iz zK+I-kRVPTdV}OezeQ1h}F}WaAU!0+m4Lg;*4=iBFX}^FWhy4O32^XS(q5K3U0Y3$S zn<3s1^ZUTA86E7%NQyG>nJo%(dNroonT-m%@R^MxLMaYpXUAefQC*X1>rAGaBva)y z5B=FA42bC4WpHuDIIGwYI+Pw8%8Aj};hpb``p>ZE{|M&fbuc&{gx$eb==8f_*LoFn z;VFF&@E~I0<#NQr%jJk2O4+H=0<#-ePGW8%&CcA2t{)m($H(Yv$wqSkGMuqlDCESk zoU!@svEpc~SQ;yqxzR*Lu?reRmJ7k5O-8kjvr6%V_#GR2O>IIHeT6SYOom*{$o)<8 z#n^MKw)g)=|GQ>tBC0qUO3i^c3AkH6kXU(x!ERGJQ0Q*R2*QQ{9bX?Bj9Qv~s+o3G z=ve{1H+EE%+8MwZn7XeemUl4QOrb57W3tsrSn8xEs=Teu_5u3?+seMoKF;33HnOYO zxk8OFMhKWgzKy+GWXPb9IMkApA%uwxqJ#A-Y{e^fcSfqv*o)tmUi_}>#qZi){I2Qh zCsCfWaJ4!2x7h1vwKGtE#b>We^j}Xi++#R?#fp9Par{AUFPmeE&VJ`Jsq8iEN_I9| z$qr|8*f`e0oMPT#4l&KlZe}xrlj=iw%N2_r9vXjc9L_Z03j|>qtgVH0A>ijfFo9hA zRf1KutYLC2!cW4-LW}UEaF4JOA*=P$_tXME*Cvl|RJa!(YSK^OJy; z3TJ%oW9~4sim74Bm>ksPh|dm7jnXn{iZonuNFQ4)_>d3H(1~3S{&d6GA+pi-M4;Ug zfp&8@TDY4WNZZ|w*qydM0`2k$w96vUE)7Q@u8cstBm!+k1lsZ*v~U+Gn6|73u`6w9 z1lp1aw8ar<^(kEVG-Ibn|E`G;abpD9h6uDP&!B}nWq{h|Gl-{YS4E&*6M=S91lo<5 z7Vcnc^{D*~5h7k6frcW`cJ)FFw@W~^oxKn{Xgea%wnw0Ci$L2-X<;fA?os>32obkL zpj{V%MrP&ilcD%@Ec!h^{%T%wSW>qZCt~)b7VgFp+#4aq<_NThBhVg-KzlGH+=bWK zqgft^5b^#9wEH5^?(InnpB9U2_w*!oq1_#Uc2@-2oe^kv04?0f>FrVb+apB0EduS< z2(%_xYg*y|E`P}R!Qdl!B-oLCP`qaTnG^qo5NVpeIzsxJBGA@Gpf&WMb(^Lm6=rph zh+U`fDaXs#i8qF32|ud!~`$eJ27Dy6NNY3DubH5 zG9OT`#rt?=6LHrPcO`Kb5O*eV&nNC!;+7CMU@n}TuuI`@=Wei|_nK1b&6PC?+gMa{ zYl>!7RaLP40sE7f43s-7K{vk=yZpIYvj} z3z#8h+p9@&^}|xNuPne@@q(7&CjD&K#lNN}fo$<_`fTkN?JMBFT&CX%DiTF{8*uK% z>)Z7qdXz4ZlYp7wjJ{96N%HcLE<$O`=1u{$Wn-rR+OnZt0Bu>nDQSGNnKVA-@p^5n z_#<$YWL)ziYn6HIK+1q74sjsUs!9EXMQN43xLvO&jYjpeQw8(p)!FF`Z;cj5nDD&g zUtEr5F=%x6AAw4mWAeC(+omION|B9#fj~&{{VRbt_9uO6GW5H0~tJ~>ydvm2K zY2vnNH0~=s;(}5Ra22P2;|NMqH1xivm#>rElOR1YHo>%y2tZtZ;gi9v8aPj z4LZSohzsp}K8<_$jJPg;ANl&-K^&Kzula0_%nKxLerF$n#*(uef29irl$jvz zqHU9rF&(=1d1RE7rlW(!r94un_E({!+fQ!5v+vnx9h9KY>t8KRl^1QB6e$%@Jq-B0 zfu3CssbC6J&hXJxCX!S(B~R*aCQnNH(#HM4t4MZBtIZ8HX`49np?`R5m`!za(#*O! z>DL#ito{Sc?EHn8n@NvVTPtOr_ih+v{_=3TSQE{*TGlfTi{eod;V9$Kc{oNVC8Nr= zVX0wznLWp@s%`2U>f`Jo_8vHR)pMJu)xFDskjlytb`oMc;Xn`;|mbK2sRpOg=jgUTKJ7~aXpaX)b%a0j_NgvW*5aQK=n zj24CnQDU>WLtH7M7aU1C=u9}`1`2NoZPpyCYOS%B@jqBs@$c|Y@=g5u&XW@_elEU@ zYBJ-~y6s-{A$`y4dTs>T;0Uxqebcm)5q2-SyYGm)D+0}kKy&t_b=ke>LwgcW?_Tu$ z2(-MuY1#)7Xzv59&*RK{5hA{;R9XV4IEwM~vI9LHA!2I;+OY_8_tq8O? zBhcQ6)Ss_MhQx$rSs?c*(gV z#>`wd^cDu)w#b-arfqOcl!=yHk+s5Hd7a~$rB05hkF52?;@TY+FVP z8hbK(F#2$N#)IhFqh*It!-gS(xDiJbSD7<*X56JP&8E+{c6NyqCCthye@_ELE3C!Z1LgovqI84kF2a1WJB65$toOvH3i5@Xs zjJE!UR-C3{_Voye-K5ySqJWnQ3 z&8)(#JDGiE>NCvSu*+ z@7S8-Wkb6B?sYX;nhaXm^bfVoPP-8eT$J?@SexEyiuGAj;Sjww)oRu($tt3Pv1o}Y z#ub*Rfvp6_uKQPJmH&s|#Z_96R+~K6++UyVg1&0V%|T;M#t)2vGpM9nw4by#*y6To z?`SQ%W~Ihuf+T&@O6e!bQR@_;t9kQLqm?t%FdOVyB z{|_)94-Y)Yf%~S;ehD!sxCb>i4OCbSMnDsj#e9fbng%{(UU%!jFKq3$Lc^q)=)(sG z4zOZP3igFf(nAAH>7lcJJC|Q0G+0p0nvz31U(ShRh3j^<=1gFP2IOLL3Rz*3S&&_a)iHTP^z8+9vx8c1`u#E?1tE zPs-WS9MNRBoSRtOn_uwr)`Zrk#IwY#g^NBbCBr_^Qf$$|(jd>Wx$7~KXh31jaM0}T z#lWVW;`3UMKR$2a%-V(XFIcvucHz`BvCfcm860T z=Pj(QyI|>@Wy|X3EC3UQHN(~>pDtX#4Ey-b!fonNxOTO37dHRya$<)(Iw)>m(5kdT z;i9^h4(rdOZ{$&_;o#8O^J*_zQoG;+BY)|Ni+ZHeMeRMW_mU?4-<34Gx1#=UO4>yM zzt=XMyf!hRv%?cI>}&e9H)?`qV~6;4rI%sVj9#-K<^Z^~i?O%b4Q!83-ZZ*BbPa>i!Zt2(J-?b? z$uHsS_zU?Oz6zwJV6z`5#!0=yc2dn^3woeoSZ;5@Mvbz4OAv`2__ zf6`kx%-ZpH0MfX^Q=awWcE{uV3R`%_M==i}ZI^#(jacQ=)v zjzlrVkJbcAVxv2}{LX;i0KQ%Y(&b=3FL$!n6n${rMK_jWM|2qb9yf|U9E!y@#iW>C zP(3qX&~i|Bp45HXiLQy_Kv-wo4XT^IZi#lG00)z*CG{TD2h1`UYUOoXIFf_+cyHlc zAoq9m!hr?DVW9X7)Rt2e7fVay0)A@{_^L9b$&xgyyY*~G*??gP=DfY;<^y{>&zWQ5 zbWF_Bg)sp+pr`LJ;-($zH5m^SrT0Pu#cNP~uij(&;2q4B1jxWbtME~;;aonazt@I$ z0R?QMqU+&b?=geU05pW!~2X$pH=}VsQ8soT)&Rd34AWEAClxC&C5udn_iqT$b50e;DW6Jqe%NL zCYZRv%{7jv6Tmb8=FVH_Hac7(Y{k333Zan#kwaAo*U_hIDO^M0Y7FJVRTPM*s$3w) zuX2IdXOs)X+^Ae2C!=zKY%|LRvdt_P*3x)uD3DEOxh#a~xVYyKJOwggMCYY{VK`>2OMXlxYNiSE>pA zrc@F9Rhdfg7i9{;pOy0o{-m5o@IT6Afx4{h%qevpiCeh-z(=5{7$JP_^mRY zV4E_I;5W)xf?q3R2!5qh5Im)n6a1HQ4#6*#(FDIx&L;S|GK%15%1DBrDrE#eQAz=) zv(m>(3Gq0o6caq5ga{s2iU_tUg#?c&BM5$^3@7-ZGK}B{N&&(5l_0_QlmNkZ75}E3 zaYM|Uad{sYJNdlP=9q>&FNgMI7Dt=gxGb=E&f1W7T;Vqg=e57p2;OQ9CGK>A_g4T=yh~1VqMG|%jOF&F>9y)j~TY>J}mUliQAft8UczmY& zfgya2N}EF7b49rnznL~=1qMY~NT24@C&GbH6~Z@BlquA691T)IpGqkNH{G{0&%AGE ze$|(VZ^>M4UfMA91vo^mOFID!s0~9;D7|>^9C`wbd-#c9Y%p{-hmPMmq7wc6o5x`eUoCKjVV z!FbX9?Jj2p#{n+{OT#l5bN>C#Mci3yv)mA7a`As*xP%_M!}(abZ}Hf91>?tf7R;YH zcAU3#?l~8aEvZ`OpXyuao;+pYd80>7o-?-WvPG_v#pf)TeeQ~}9V?8>P0W?Lm^|%k zc7ibPAlFQIF_q?&R_EVX6xte-gVJtGDMX`BIup&!C!N2FOgR?vj3S)?8x^u}NOa+l z1hQ~Qbm5Q$vT#TOSvVwg^Ur1eff8K@B)Ser0$B$nfvf`(T?Qm!HCnYI&4*V1<{V@` zcFH-PgMvNKQLr}WAy^4s^OAy<@h~hUl=iVR&Ajh>=er_01be{$_hmDoZ0k5tRhT2( z-&yotiM;BuM~!+mRo$*$qi#@FgT+I=I!~RcR)c!)Sap#D%Ql-- z2CCCEH{|Z;He8qo?9-3$j#2m%p zd&)A=;}c-nf^lF`Vi@)l(L9EwBCoIo5}_;bjLKDwoBfN+Iyz*2;3HH_3MUDDm8 z;ySUKmvmwXF6qQ-Uebr68*eDnIBi;Mw8EeSa zLDC1(^oZTJq^Hs+qBSq+L~CBsiPpTN^OVL>U@0&Jv>z$_o5BwizNhdVg>NaeQTW6f z#vQ1AOdp9wqNKe`pWdNBuDy}8BlL+F5J(y^Ads|wQcq$)AZd%~Q$2-66v&(_X$$C6 z9R)fAi=SILR5iu8i16$s{VenF6k|L`44x%Dj|A0+P{^gwP8&p@a?Ijs#zD?xnny%4 zrnA;)V9-Nr9m`DXBO{(>(B843YBO_=VOY(@<3d{)l1;hTWPVX+!1SPw3(eVAZ}1M_ z(Cz@!1>*|VD%~dC1P?GK6tcNI;|fIFb3dE6-C)f0@i*}AbXmPzXv|T#W$ej`36fcL z)L6mMH$ad{7Yp)oTxLO@O`*#C;SIxX6ZH$2M`3isjAb;kNNP3uqrIU)OReI2;_IMK z(0nie0Oi0Kuuc&clz>8KdOcDY@ zs$k(i<`1LBMyVWqUh7KMgqgx9VX&a_-|=tp`%x;xWuUB?t}U7{PZ%p0LO=dz{zLw0 z)Vwt#-8?$ewU@5rVM!rVtE`YV6cr*#uqtHfloZmUvO?qvqC!TWRiVR9xfnNztjxn8 zDi>ma4Il_V{#lx9KI0ozBHzt7x>~uFjHTmh5)BP+ z^6f(JwZ;rYHA_56=F~rYP6nNGxhF~t8lHfMM{q#{_+PrjeYKr`n7bKdB;O7WpiqOm zS+&R71@#a0dG&F1ui4h%zL7};J(~Z3Ce0V>3H5!@r+Gy^px&q6uI@%xt#v<+o?P$F zH+QUa&y-lpJqX7C9b^=QMVUi^m)Y1ET+i?}KMTDO^gt>=>ojA;t3o?Hes*Jq@n zhSrS!;`vG?Xbt6=&f}hCjKdaZv)io7pP=9Kt@5RE6104lDs{>nWrlK&Qlbn4=}Z45 z=8BV^N-JxbhiCISq>7RxUxTxRb@-=H%0NlpNS@^N7*v@Y{8U-D&l_PK0#cQxci9v7&=^0I0*F{Q#i<6c87NdXgD=mEQGX$xYwclX@zxY z{e9lwQ2m&~Ec5pJz29(g;^Tz+C~+Sl?%&WUoK(@6LPG-4F!LLqXxUXOtTi8P_GWU( z8J(Coyf22T_N2BCgjDxwcWAfpqxlkkIPZgf+h7n>ZPTvdv-vbWao3~XL?SWL#A`@~ zR}=RtbohQR)L>fSXtd=%Z<_hUqu#e=O}vs&HxqXgI)%ebpH?`62${rLsObUkPIJ!z z@60F=8at*lC~5*b&75)6JD0gTbDe`VGvD-%m$4uV|Bn`b z2fr2{;~VQi*jvfu9!7;TlVy`*d|xrBs<|-LR5{;u3TtV`@5}?Jp3fD+pNixx&V3@1 zvpDy$NY3KiNs*kzxf3Eei*v`}ibOaFa;+jcigU+Aaunx263J1V`%olDaqa_=9L2f! zMRFA9-V@1DoO@R!M{({QksQUjw?%RkH(%C#0RwK3J7Cf0!6i5W`_1Z~>U`T9wvckK z{F6LQI)E3rJ#d3uGVF53_>zLrS#nbE=AUpODQvrY3YG9psaS~ML1W8($@u0Zdc7j> zVuNlY%H>+RpmxbJFwzAB(TkSMo3*@d+43cG;9BB2vzD=Il48@S(OO2dE-{Q9?A91v zkHuGf>HTF(w}Jq72=;|w0Snx0e@~_)y-d+F4wy`xBy4x$>4>_rRaEL{e_*W}0GCW$wr%YEP9$zQ@aEIVtW((q(_mj>6Rg+N2m z0+QE*YzVzqUziF^13Z=FpjOw27_{hPzlff=vB-gvZYrul@7`4OD0;|lx0x%y^X;{v z7jG;o-*q4CEH1sN=zLVayGTYi>@M0tf}jP3HVNHow?j8Y8SZ8cWOz@n_noR}%+1_5xhs*uPz7+Xm%uc+CZakV@W!BdOKqKPSR%2{@ z$JT;wqrs%?N`0+X=1K;t|C-Q4% z>$j!*twdcQfgTP7kxZ_;HMMfSVxy1LxF#_*5wsT_(P)PF5rWnW|YHL+JmqXh?oiK8pJj)qPt!T;iNx^E|x zwqLi1@34cx?g_4z(xvJ(aaTtrGDMI(C?Nq~OK8t%7l$$b{md~ZG(YHui#UVbO(DtC z>?O4qE{k_WpSe~s!N!6uEorUoF;SNs^Z4T{f+v!3` z@b|wSop7V0$ME)52zbpD>Rt z&5k^lC8MKbM>r7w6cFuLEsh|xSqDpg4~zc zY+?UC5FMXX5)aDO9n(@U;Pa8Ct_oIt=5$fIuloPPsRXX3g`H_%MH%%27d1{r$LqaG z;r7W9)DOG{?U}f%Eq_%hydeATvlOt{vFp*WwLXO|cbzQ)cW4FMJ16d{@LyFH+&7?b z*T6rzL6D@0dVP>8NDuMifkpb-8GuMozIpb*9juT;@AC(tx2>C@TtX(V})l@auD zm^oqO@V_biZp?fNZOs9}OJ(455R6S69xpM`_>^gDwRz}S zPw@q4kheGsCHspFbdkR}i&M4KP2TWu(;FV~io;}UjC=;Qo(tT zECI&Kog)k@h=Z72xKp>a4}50^zmEgrOx9hL(I4W?8}I^w=frD;Z3+;WwBNfV+XX>xsLLxM0E!{%eTa zK-@5KR}=RN;;tg@<-`Sh1_*ztz=Z+8@*CVsh`WNg%Za;;xJ!w%A?|E&r?c`b@&G31kVGwUYlsVW7T`03xYLO{ zjks`?6ZlsVcPeqG5EsnV!T&tsPA2Xo^RqF9$sFdX{)sj5|JWP*8On=Im}c%dx9}Vm zU9&fKiD{iwxLXYW|7m?FFKztr|DV?HZ2U>2z5e3XN6`8{bMW-S_gH?6^;Ekw3~Oj@ zBpO;{s6N7s3MvM!pq!oxDh95g#wX=elfRs5@|TNb-YcifpmM6$Uru>K1a*H1ODi_2Dz`qsI zO?wLmgylpzN|vO9vPF6v)PkF(d!#n0N%~y69+ZO{rOnbiQiHTos+Z&3ZZ zjo1c->H23DHnB+pxzjNGj!d+>*tcb(-33Ury8wxH7yFh>ILd&8qYVCpqYOwm%7BEU z3`jW25RPz^**9gvQ3fO&W%do3aFp5CWx`QrUy}((ISfAtOPM_?6P7aDA`_M}`;JUl z%8)S8?t+Agb{8Z_w7VcdqTK}v674QXhiG>}Iz+h((jm%S?5i?S?qZL~M7ax)D0i{1 z$XK~6%)$?%-33Ury8wxH7a-B@0wmg9fJD2CeOV^jU4TTpi~Xlew7b}sWTM^0z94;3U)WMB#DkX+gu8E7x;{U01Fng}J~<9f_V?=C9t@QpkYv)g6`< zi~|ID^$D}l1J0~zD(Eb{z%d9!5G6g=~GsMV> zV=ts^nvUX5RfiG*8h|)e7+}c|OevXjdPZ4PU zi9q`?0`1@3u9oRhfgd77{5}Hhy9l&zd(g&o`8JT&)`QrU_DuxZ*LIldvMm=P(NUC_ zYE^|>grWRX{CKXFTMQzv?VwNgC^O3Pw&lXD#qr^VJIZ3HRSv`P_I9qI)XgFSj#%^# zcQ|wfJB2;%YS$eUu(o1B@7nVG^q#8S?IGMAw=-7_TI+U{wr7ZMK1Hjdilu4Y%p*Fp zbNb*@Mm^Y*G%+U_-MD+z!EUDqf=&Z6Q|9j|LB+X6u~pq{B|37ztYU9ZO?8q2roeYd zdegzCbj-mELJoC1knv_gtWWA@I?=LfCOM0475V0CI;D8qDMc{@hK7$223fuJudkp{<7y%dL$4hlPiqPVy;@C3`DM%i^ zfE!q?y(QrbfTadCq==znK3@QvpFpBAG|baSU9r=o)?Q{g4BToBmFJ>~yK8B?S!!7mvf&WO`{CxOp6I#qHISqCF;5)(1HVbvuTWcA3`G zl7fbFLT!6mA#_lHz16EF1*HQ=4b<(`pjfwK7|FrY(~^RO0~Bttz5_jtDM&INc;DT%gM=d7{!_ zxrDKRxouS0Y;;SLFCK35($mmOjYawJIo}*??BD*k>pyI~8NapYVtLn$=s{iVR_O=4 zi11U`+Vfi*9WpSmG=gbOXzY_tB!TZ)cHv-=ud1%iLD{UGy0-)FcHH>&^9~slV2o0wNVt?`{Hz0bi}6?hhopJI4w1R zPxC@!iGBA4G5!<#>CUFM8<;Y-iFtQoD=)(3z*|T+9USe z7XfUvCX&ABu^7;?;KL?o;uYOm(B1jHZ){P9Eyl!E-2!x_6Z0?eaum9`D9L>H)uP-` zvQ3y`fy>dO?1`$wmZLc3fD{r(TPuYrn5S4E@N1T>Ek@JpV@vhZ-!Fl$ic793|G2W4B7MvRzWkXHXp%ms~3iAkZq|pBa$|{%6O7qsM`xM1v#ixPYqu z5WWDvRev8oLvj>8NAfaUfd6;+e92GxL-+$&*XgMK8-Y*nxNklIf8pKj^(Entufqc6 zi{d#8lZ=jrL;VH(GtvA$9MbAVdkyn29{8HpO7+)Os=ux(R0u;QbSl+mSE-;*rAqB8wO>;eqF}8m zM8R5Bh=Mg3L!w3V15K`pv;m0pPNnMWszQW#szS8bRb?CvGM2&^B-aI;p^@~dj6x}e z5(>o>LKKQ9fTRQW#s~_-A1ww|*_%4$fGZru1uS}KLSPwctPKQ^b6eR3=FM5f6(YKQ zPucV+980p3$wtDTEHt+!cybtX@6Bc3G3KKD;+>4P6h?>mocNSz!flNAqNb)1CA+rv zPY}Quf?oty2Z4Ol92(S&esC7oIi(NbYrC%kZ}w?vzx0UofOMz+s(x61THnvl3beem*xH}u zN&ADs?-YImu(6u~9>c|(kQ}h8Ou%1mJi-0!OI>M5LL#5+T zRy59A+{Vpf6uc?0f}jz;-JPNtG^~@tPzw3t%Uxm$=xTp)8c9^u9>5_~?S2aPQMi}F zJ?Pl|Bd$b~1I3kL?4xPND11cWLkb^Ic%Q;s6yBup28Gu#sM>23j#6l$@G6BDDIBKo z0)^)(JV)%cRP7Lbe3rs96rQGVkir29Pf_>>g(oTeox*+!Pf&QAf=OW?g~up7O5qVJ zmxGJ{H~P4jLNkSjDLh2sLGz!%;@hZ6q^kXgdVWLUYYJacI7Q)K6uzYJ1%=Nkd`96@ z44QV5!U+n;DYO!>zeC||3U68Ca11-?16BJO`>NVc`$ENVS2hz>`UBin1;&r&9}|ja ziYWRkF%~u6RcbY-jw`tvzUz&j558MsMNf@UMHH%nuc1zzR(wxsn4f3az+^N0E&N(( zgEUVXD;ZKh@n`WvWu`Jp8LVjXE%I9VLb+VdhkIUrgqvobl5SP2)I#_cr`7hQ?TGDf z;?v@t;+5h8@m$d>CRu;C9=AScz1MoJb+L7_HE8WGeQ@ z5omuzp#6?%o!{r^QTyl!IqFe;r>g4_Xxf>yaA)=HXA(PUY6O}s0!@iPlL;*WKFBj~ z)||W^)t8VXy(k5p<;xm1tJ`a?ixHBvMxY51XduYPxxJE7bT9dZ*Iw*#X-d(k?jk=u zF+ws45oqxdX#FD4;sOzfu@Pu7WXdxeQ;U{yz*#E(eT&Id7JtK1b~gSrw%Y(J2xWXP zJPVM(03ALB?{+EU`l9*H^rG&cD z!<}M92tcJtN>SGU-RMLXq!ji^$JbE#lo5T>i5x~5-i02{>zV2e@@}DoYqJ`j?tIJDnRIeRM=Ey7|C}Y5QsnuypQSt8izp>D<(j zjti%A2&eOE7&vz%)~8EsYmYHhk@!Sx6_>7y1>w$I`9ky11fL^VZKx zXNmlO(J4d-E9OZk!rA^e6 z@I5(Y41Fr5;5Rq^T)H|Q^I%W4Pv=<9<~IC6LtA=!q<0_aUXT)a0@{*Z==2Ipmm8D; zw8eeV-9ZpW2etYhbUdBYZt>zf5q;XC9swvF-y-Yrz|C&j!d~g{9gd(6j0F7Jg1+cr z65#iFw7Tx}33$4O0ysVSzF;8e3TpGa2OxC#IAjnqFkm*(F7BNUACGjqK@zXQZOCzD zPHX!*>B{$dJz#C7^(LL5lQ>)_=yGX2q!V3M5y&;@(|Qw5v@Zf6{|IV5g%cg?q$}S8 z%b?q@^(LKw1dMzz{_;AVT6gJ0$0~wX0e28g7_{Dm6GZe11}i?VSG&A>yL7CRH~}Yo z0mi3Y);&Ob4e=`C_rqsxv`hP>gPn~ppsnna?(#zh+9loS6T8#^gxg-9Q(Mt3Ko`0f z#7_agw!BX|^r1JXE!%ZY30x_WTy{6N&r!xZ5Z_Q#$@tLGbwwjJvg?4#fFvs54xpz; zl`Ts=?FSZU{?#nUs_DbmO!IcepfVQtRCK`C8Kc7wjLUHh3CHmCi~%3^JtKzU^0_-> zxJe8<8QWMa6M#X2)~qaAl0xd;E|-BloX^u4$JHZ_KN$3(gQLopLq$3wI6-pV8NnbC z(9QL5ef;lbWqdB(BARVW%Id}T#qiHTWs-T>Wo7%|)3=Auc3^ILQF%+BXBQ8+2dwwOE##xA8Zi=sOH+L+0EhuS(ts-fJts-fJts-gvr?u;VbECN4Dp$0+yOHg4Z#o0UxZSBs zdlVbn7}sE`vCb3&1`O`lfGHLZz1wFSQGAC@F9`vXa0w~cfrJn`gc3sjfizO+y(Rp= znNM0tt6fa^mb<6&hAcm^WOKAS;ZriS;ZriS;ZriS;ZriS;ZriS;ZriS;Zs% z&g%cBAVn*SM<^?cM<^?cM<^?cht@BTP}VPxP}VPx*p0GMb!C?E2xS@b2xXP=2xS@b z2xS@b&@$!`DP;z>z^9W@;^9W@;^9W@;^9W@;^N8;&GoObxNe^w39-(ZK9&tCTxr=Zo z;SR#>gxd(W5^f>vAZ#bxOz0+b5w;O-s&m6K>=8He&l?EW6Vin12wMqT2%8C=giVBv zglh@c5UwU%MYxi11>tf)3e8`}KQAR*Lb#Z45#d6@cL^H^7Z5U!a6SJzpKu=GT*5ho zb%e7CXGu8L!$=tqBV{~{l<_c9#=}UNUK3t<7+T}O{CRMC+HumZpGUZq+6}9i($3dP zm`IpF7*7~S7)#iPFov)Bz9{T*W7NJeoCTT%! zoVKSnKojZ78;4)!)gIDzXmhoMHe7Ci#`Rp%Ic-;sB(y*bsyCIweF?5XX+lW+gbP1 zx(Dm-?OFf9wC^|@>-*O?)qPX<@4DCPZtHpX!)Y_!&WuG^=A<8#VN9Yf9-iQPw9C^E zADw8~SL4aLhbQYA56V4M%ENZgjCPC!ja~~HJm`mgHtnB-Yn^>Pm*>Tj^ii=S z$0Tz-=M`bqZdC)ux`WWRor z{rXAr=qJgepCpfdl05orJ!)L>*RJmwFyx?j>uQ~SJR9?L6-w7rm990Z4l3J0Wjm;B z2bJxhvK>^mgUTkUY?8_*sce$UCaG+a$|k97lFBBjY?8_*scbUCOq{G;f9deC2lWge zJN=(^$?@)Xr+BX6<%TO74)A^iCY27aPkU55OB;`{mo1(d^MBC7fJ6= z^$oB6S8Z4AA+^rBsJK|@P5)`Sx#{qx`o^C%u4vrD-Cpx!P*#m}zu>+^p1-~Ba?k9X zDA~=1gy9_(lipWYy9Wv#7xN|YAh;{=PkY16&QN~AAU169St{^7WkE{xIQ?haYiD)_ zO$CDiBz(;GQ!)xd63@8yw!3C_B2z<7)nF^kNv0f#*@99M)5#m&UNfV!Exn_C`oJib zn#L7zticN$K=UPffDWMTGdo*Vo0230-GeqG(P*Iuc)mnWWV**ayK^ucu@BTd4&+a4 za++z9BJH7IYeL6Hrr^f0K+j4*uI>y@bjbhf4YTKUHkGa}7(;i!JZN?~jkISZiGbt! z>n@Q0*YWIJ>`B#L5Dy(2$-*1}`I1sAJopMxy}8Vdzx#L^Z%S<9c!cm z!vU!c!EI*_Aytt+W~`*68I_H;a5~L8Dk~H$CDIIK{ywlTN9YE!6Io}opUFd{7DcGA z669=47A;-6?zqO4iX=9<(QbV4^WO3p%c?nvVFkqu~-djyQ3# zSxKd1)1mX6`+$V^ms1BBMh6--GD@~>L%iLp=#bOReY3k>!NR(Hl*RYfy$3*>;Clo{RErNiPac+EW<>^Gvl+$b;9n zW!p+ap+VnHA^Gt|Y`dpH9n@wN>Z?r~CZA3A^@C|xF@wz7FnZgH^!~G_Pi;uFhXSCH z!-y46_gx(woxXqe^ic!UuQV0Q8(1(C1(s(ENGq`nc}Wx$Fl@(0fo0hO%4{6ak##4( z1;dzZ6j+*9AQ6d#BT;h!T9=IiryB*NT^U9;Qwv#Zvr*tQ7NDUShuNY0d&o0Cqd=p& z=_N)1Se{||i-z)4LV>J3+9+_UDv(ainhtlJ-)Z~yteiD{W9@{dh7%qAy!$ws{^@(5 z=?32kzUHP`jbDk!#M*`d-rqES&wEzmF^$5zPs1Y(E9DyYYYnF)N6Ax?Jtkr)2FoCL z$wQbu3+5Xx(!xmh0@wCvNBx|O4>uQqPrSKExIG$cjU!|&oam^TbMc|(B2naB&mY^- z3gc}sPX>b>uGtsQOTV|@RR4ZlcxH5qgk#oOq9S3;k{u%Eknx!O-<*q&HaDuvRa4%C zf=1)*Vd#nE;n73~j*;e@iy-G%!5WQ4uv`LRP9oCbnRD@x<|0@|m|G!hDDtR<^^UqZ z7aw6Rg7XSgjs7=v;_hvSZ;?U7Kc9z|qeFp0J3! z8ky>Mc@C-nvi>&YF!;Rgmby8$pVn@#omKOPnp0|;+&8($x_Vs4IRE2Z=iI|l|0HT$ zu^IVAjv3MHd?meT;fMh<@up`-gyL@?CIdvU3&f5$Ut5%+L`D+_){73$5u0n$JFW@J zTHn}vYX7#9wKA(ALQbRc^&VLkEbh6ot-C3Ub3G*ViX~#}8#_EJHm5)M;(-3nmy2$u zczBDpV^OKc5lmaKMn`j$U?Uw1q0;&ln~?)ncF{}bT1$WPrY_=WfHO!in>BXS&EM=u zKQJIJYh88Zh(UQ>WKk0Wx9=uR_g=&huI83+7r&k7bs%g5wX=qoTt-zZ03iWbeIT?mf#| zL9whOz)J^XXoq`6=egAA`67)mSt801ZIceu*?aj{TRIM{|uWjk+ z%T%iz6EK9~k%Up};hpQ!!4AB7uci-NFrqo{C9#;)GT*J-myY*zXoq*6&9bkU%UaBC z*>4^*BFcIW?>viTUoI+J{2^t_Vv&Th^@n$!$+9n*%UZnHnX)+752I||;hk$)_V=o6 z-nVb@VrR<+;#hii)E?fMK6IPb>~g(WRJQo_&6JI)oNOI6D7#_YwElRTOx?+q`ovYG2{xwOyGqT;h+qHaW)ItqD6tdkFoh$hg zKg*Zcm`ipuFXq2)D8m^O(VJ0x8VL95T)|qODXO*P)LB%koK!J?gv0Aa(lftvIX~8C z__5~cT3oA2`-)c>j$zQqv!ZhuHG0~l5jq!3=DcMcYRy~MSV~~BiiFoUChO;SE~Q3K zn>4bn6{bf-*hX~>+_LQHy(x=zJm^m2kxbdsdQ~fqcC=ZQE4_bJsZ>tNlflNS?kHH^{JvK zUUFGlRIBvmh)1F^*?V>KI~VglpHfe})p!R(SVk7CW+1_53Qm47bVkGL`y?^lrdM6o z-rxD8S)tO4Lz6;WHii)<9EC!dZBOKF{;sIjlIurPtz2ZouPTzjr-s?~1lIb5xz^GP zbjw=dG9zc(Bxc)1?7Sz;oo89AOnMC0Uig`Kl9+AN2mXChf9G$D6e_vqEmBCXhUHs} zX)%e(_Bc+qkE>b_&OOc2I|@^+SbfXA2G)R}m``F7*mOV)6Ueh_G!7e;S`DdOxQ9sq zj<8oO&?Al;)Aifox#v9J8FKt19XNj93GSJfE;LNLs=4wqtJck$d1;5KARhAW6Q+7+ z&A1dymA80@NP|0DEGrKx8eCv%P=?)GXJ~~a9Oa3F8wE2);}J)X(9(ZCcI@b$=3Bh) zG!2)Xf=mVup0kPP#6`%~@pjXWrX!m)X^D8J5#4h#8&%6C#br=VPH5NcnU^juEGYL} z_NktOA)m^LTQhscr6;j_vMuf=opa`33k{xF*q}_!Tq0?6IMY2SctT;nmY0~>gMM99 zSa5gwmU-l&q2TeRf@LLDcA?;Lrh;W9ORh!1V@(Ci%7I*ug2$+W@$AbAHl8w48`sRj ztL3=!wY#@odr(Vy@>9+A>9*sieC`T{dd52sdevJOj8A|wXHVUJ)4p&wB;||fY#8fk z7%N{pf5Sm{&xr{hHoh>z<8V4P)4+gH6%#-Vj*;fciV|!MgTbC%I}W(IMt>F289KyVLVA(s*0}H-whj(`z28ak}TY($2p)+u#U|Ba#_4 z8``=Wdv8p~Nn#xCywRAg^*GOX{K&=A#?g+hihqYiIj7ykiP7a zY2%ED6Pe@&lYHjbrORvBt-sCDkUUg{;UOHg?TVIMU*yh))UnI$J9j#teP_FIG^FZ^ zgZ#(P5t)P3q4c*qzLNFIt!t^rH8N}LFGI(uT)-JRda9!%4i{n4D*0ILj;|K1y}$`( z>jxS$T=H1b$=a~S%=Kh_)wG0hG@{!*?UuY#3R6#7YZ(XQ9u^fm3hb(@nwI!F6G1yI zN7-vR_w}956_fJbNqOjtv(Mb~uC1DmIE9YeA3&{GV)sst>1lBuG;?L{yMd0O5F!kW zeypjMj_{(6g-Z=Jb~^64=Va&P$;apGh$G~9Aor}@RnrkZK%r7c({|s@h}#{`_GtQn zpMxgS2z$eN6gG3CCtX$363-_Qso;$?AE4vgW=w>kqqAx{!jV2?Ka#IlV%L*J2k25s z6_}AxvJE8uy*@yfmB3deWcwZ4e#V6d=&BwW1(H=}TdIP27m*-1?@E;Fp6ncAK0ucW zNKc>a2imr6y;7i82k59If)FFUjNZsQK$oRd08935*>-+)-WD175{j01Hh$ZA-(n`n zhS3;Wo>vtuVT6c>rK6eMch{@=O4TNVc?>Pjt(ul#sSMjb*wjfDyqrQab4AP!~>7mj}D+UtO^|&S!L*WcGYy0pJXLEnrBt1ql)e_ zbUdqSI)-pAYwL}Iezcnlif2`+rHV15mU6eYm*ZH6Z7}N{jh{AN+Bl@) z9=Nvs&fB5At(~t4Pq(KHR3?XkzGQWsyLLiW`krE943Ugv&}r%_SC z|CVk!)u3NKz+e~Fyrw-S98KZr8;Zq?_-74CB>lkClNJ9ge}bEFQ1Z`$nD-Q;iChcj zT`UV>b5!V_jIFjIi3KfLdNXo3NPuOvM$+`A-`p5$UZ{DjZUX6=F%H{F64o@ms)+~~ zly%8j4VvC`aP)r7DXreJ9{5QVS!r1VB#{V>JJuz^A|N@R!P$FKF=ww;u7R5e zKH)-9PLhaaT{kVSh=5l?wg}GN6D^)ntz{t)5lCl{LLyY&A#%<|tr>hXav9f)_Q2qK zLQ#8~R%6v3e3#*IP%NnrwnCH$rGt-8ZI+pzR1;XZVA4SocuIY>P;*Rk7Z*iI41Cz( zo6ltMn#*jP$et**nx+IR@wK6a95 z`n`Q74QNJ}Ne$o~orvIu!2Ep-$)LZnEQsX>vSXSbgRB8$2jP$<^EX?FN*-ynfB|M9 zTlk-4Jt0KHTDK6An-`lgMQR{z>5>c@LrMo*_^)LPaCHDRwbea9qDL&5zj+U!)CkMR zjv*zfT1b6uRS&31Vga*tPt_nLwnGZ;A&|iFyu1etDGQ7jD@OzVm8rS8tQ8-4E{}8O zFwT&~;vmb+mv%WIk!Y zzp!ipgONqtgVYg{SlE&VoGnOaSB@b^smBuiytsi#D^_=bBL8nxKuI)^;q%Y@qQe3Y zrNQTar12n(FWmE)sR4C-iKRI9P&N|0Io4k|i=uPmvXk8S!qd;+8AeiqPc3VbZi41_ zi&em7F%(X}kAYBfnZqt950(?MQhe2i^NaYzvQ9)B6dnJth7fWCCM>_|j2t{X@{7P% zeVA&Y<72B95<2X4=5J2bASDUi@~dVG$WaiN@26ZS9Qc;ZN$`|hn6i!77WXtNBZPYFum$mTu-r5d{#(ks6OOFjQ1z^ zA%9@m0w&I)FM!oS5|7$^$Gk!@F4dt$`62H*G>Q-Teal9WhZx>xg~K1KfF!P4e#jZQ zByBkxFLw?Vy9$Xa(S+*c0aXUVLys)HwLJLc`%;AUpu4MzT<5+)ZaYU#DBL<(p ztWq&Wp-LCTyCBIFSTLIZAZC zuav}Nwqu37Kyp{1K@1f$*-ihktO$pCg|U1_6Oh0W-WV!Sr{cRpofs-+s5%$^+p^9; z2-C2Q1Wq${Lj_t;j9F*_L&d>t;a^tuApJn7XnIy%CMEGq=%QswMY)9*FjP!eEp+_T z@;aHM#Nz#wrbjq!S}y>ofgWzVp676X?tb09(|w!!GWSyVy!7NiTmSUNm4gnD^p%(OZ0s}acvpJm9s`G^ z@9o?2Sb9)%%kcD_{qU~~`{Q4a_G?L`Z*6WFmTvFcvMSv(yydZ;dk43C?o3}QFFalT z>q>cbxEU9I)ejer8_;rB`j^cuzwY_rz?O*9`H`yK`5_zms~;ENIu!qUT>jT1^1rV2 zqwF8$f9>mUIU@a;{I4fRwyaDy4})OR$d;?pvxh-&?g%J&^RSlxhIxv4ruh`}XzfBu05)-?a!>+u{SBl#+f_aX;6oG zKL-Ey8xQ4->8uT2?(v*4eN*u;4hOkpmeoVO-Ce| z57?UYN*JQ7bVNR#FuY_k$7KF$=@^7PJ5cI)$Ii%e<30}OqZ85_K45Bb)sa{@Vt6r> z99cCbV+hrb+gTmYv_D^7<2v4XL-e`K85DKI>ln(tkRz(5V;Jk}QfE+hR>u{~FK}*| zkWCg(9l=^CeWf!GdwA7!#L}gNz24q3y5#-I&TB@!QP7XD4hC{B^0-?EbB1CV#pbf zPzH8TTi2k<+74g`RqCxW+Ri%6uyoR| zpz#6?sEUqqV+>1xZtLbz_Ur{61Fe{|Zq<@mf|iSeW}!-ftoXiULE&=Bnu^ zupYG?MLc4i-HXZE3XGTgQ^`%pWx54AJn%B!gFbg!bm)4huNPWLM6JKd|O z?{u%CzSEhWNGHLr&h$h&(-Y}TPoy(FkyO2LB9yi^aWG{FZ@YkaW z^9e^0jwBpGIGk`8;ZVXn!Xbq35atr*5M~o*5oQu*C<;g2docf;PB@4#jWCrkg>WEY zGGP+o0K)!+{RsOK+6g)#L5NF8cw=?$o@L+Lf3sWh;H8(}y8qriJ8#{8zBAu~aedR@ zn*xpJHvFccuXiE*us`(dU)q9^sKSQ{n?oF2tq7wmwe-y{_Hq^s#Z==O_Qw|2p|51! zDp{8v1ZRmcc*LuwBc`&b{g&2tqHqm5c(QBGGg-Gv>Il|k#MNcD5V5N12vc{|eo{lo(f`C^xU!_S~V?k`eM&ZWN!&__37E@I_SDAFA;kZ2^9jljd!G4 zIwHs|u9tcvZKevBbL~7=eFyh(CT~o? zxiUIL`ESHqaXyXMP~(jZRZT_ka_OavEH?e<_;lI(PG7(DrWYpD(U%>G%JLRi!K!Hq zE|rk&cVq9$=lJ-odCsPjOivrT=3uTX1JzLyL9sYWjoKS0ZJ)Ml?hO~XF1t1tYk;mq zZ6PF+&wbo&Rnrozd-h)Z_FZYCCDL((vZjP!S8H{&gcljkM(s`J_F6hEOy;N!_V;-1 ziBGJWmT|C|RPb8bXo>jJyzTOYs%aSoD~|0@X+NAh?>=p^^Tm&IHcIK;hXC3{Zg(=i zYC48-TwZE-VlxamFPygBdH4U)4?LAMnoA{d)SO-U;~ZyP)s(~sZvW|&Fq*Hwf2Z@d zPqrIIO64XA@08ptIks9l!cz*Fqbu0vtqWb??Ed%80v%yv%9|GVshW;)8G=xOj%SbR zYX!dQHOp`1N&@2csD6x=0(1Z`Km zj$1ZtbUe6=>$HLNUX-ja!R+BfTi58`+l1wf$^p!N2FwL7q(8lg0i5igU?6Br$ZcJF zskWDzeHOF4e8ps%suFlLL?Y$1o!g?wGuDOko?Cp?;QTjA?sdQhkzM=mS)HdPS(O9u zBrNgP+YNDfQ`!I-Qia=y{jo}F1Ii2Sa+5rj;Z+8~p5)ODXqTBT$jCte0_QC~q+Mz$4F4MkRC@RK~onP)KFSc zejFt?NS-uPejIfJc)_xCOS>c_t8wrrBsR|j38MKAI&1S6h|2H^k^2jrQqObFz#qeGCiD%<|&}8#NdL5hmm%w z`4ON8AkPxyXs1}p5#K_p8|`EZc^;jOwwUt5IDJXPp+6>K-?U9{sZD##;h(T=m0gB@P6v1rHI%cWDfc8rv#OnzS(Iu}sk#k7UC z6~K&wp}50dogUw`scw1gH?`N+w$waWGu8cj z_hQ$luFDY1e2;Tq$5W1D3L~brrk|fR3Bf-yh{E_XFnIJLgMf8OJTQ1Zx4V~aZOC|i zYHq{pQ=3>=XijeuIusUV$v95yL7>;z-mr9Qde@fy5HK~N=(-49+2O2XzE?`%_*?90 zt@;AP2oACle~T7s(ZZ+~N27)Dmi5H(F%*R2um-dZNi;4=qeUxq45*wDk8FDYEIu;U-Td}ZLDPr$X#lYaYFVIB)SSwVwwr{ zQyl!EXkqErx}pZ0+CG*INR~zHTuiT=tPPS_oD4qJaxA*wj^6IZn}v`l9q;ZK(}jxf zGa|DG6s*nBC59vsuzb>#hv0H1ZwODi#^R3lE^IEvS`l}E^+oHYEmX*Sl8!S2K!2#L%EPH=p1YCxdzrB15*aTu769@s3Z-J|*2~FF}vI%Vb z3;pel>fm6Fc#y=D=H}c_GCUY9$nWpAAfC#emURZ=;Ua=(st8FUWclDJ$7UcPzd!e~ zt&YqsIP*r7J@T6iwa>-kp!_Twg=Mov5jZEqW@O08t}PM7-i@-lZg=T8lpndYj;jP6 zlE)f#!jF7?(Q|NWEtU-+IAr%}J1k4WksE<=a4LsaIf6Iju;{nEu&neR)+O~^0Lrdc zN8`bdw7d>i?LH5PWl8xN%jW>E@^dZvY(!z9J=xPG(}$#=e|^dTo~q!X$Wa#rswx=e z9OKP0f>E^Lg$-otFEho6Wm(KX!Eg#KA{b?z#Vrl9ELB!!66=x)Y(>!=B2&&bnll2V zHEpP6snXd@(wlZoZCsfexP&EMkL;8z?_%kyTloEGFbjk&VBF$Bt7>tsny`pFltJeVIyEicv)eu^iCc-Iw~CY^^3AO-7e0U1lNn%Fw zBkL>RfgQ?>Ov^29s*h!GzAZ#|fZ5eH!zGpFtuT!jcW=E$_nXfBl?*&fJ* z0|nIa*>?or5aw5#P+0VS2#d~$Y;Wn7rABkv)|{GPYpsTbgi0bT9TXOMi&djJNa75x z&mMmVv5}O~lJ4bOPS3WGH%>JbS5tmAG^?@*h{h?gq>8{emEQ567$)Gx;tO%u1UnVD zB8u*Ul33VwXp$F5)to8EOYCLXY%FBMoa}@V3f;* zuy{KE0wahY21ps49f*miY~{GaNJKnoDM!{4N$#7_#qaXuv=J)>!bmuRv`Ddtcp~qD ziG~7Lo5=X)Xi)stR*uMPWTAiDRvv^Ke?t5wC(qc3l>%r0(;CvIiC^a~$Qz)f9ILx{ zL_B6I$7wKChAklOfxO5@Oa+vifw;yKLp^cwO9SD_2L` z;tsz%WwsG>mIUPn&Y#8Yb`|hMSlnhU&z{AKTW#ekVprVa=vj2y)c2g+Aj^nb6(uWn zSeBD=6`?A&+sPRmDsHxwtH4arZIY{5SOsHYQHS6_(Pg@Ta}*T7@P&v(vCU4-Xh3n3 ztz1Roi5m;$oP`+;rlR1)4TTqECP^rOG{lHh6W80yRWzAMTgdYwxx{q^^2{up7e*zv z7F@ttSe;=pgh_0%m8<9>vDsFxB6mb*zC1e%vjG)0BR1t8CG#70}W3KtRA z+R9a^hPWnAZp^|;0jwkuCLylQyC6FYD>^0@73s1lawjn4itbnxxf2+2MKvsP?gXdjW?43%cz%V+ zpFq8YN=}YlaS^!$F0tkk(CaU%d$w+9?c$pI-CwzYAK$>%zj0D?>QA$XuIay5?3(GZ5W_(XNDp zOaEfk3N_=BG^1ItYmT8=E?9vBWKlm#9o0_F&~bXzbcBmZ$@ox@Lf!&deKL&pQFr6Z2mD&iqyZjyR~XCm6RM#$97>eBX8KW1a#X zl_|&2@qnu77{rKS|32D&*si_%&vP9!u<%(cbCRLs{?*YDRwikytsum|c&b5N%A#fH zxL?(D3`+LoDl99cXQr~M89MG;6&;l|4u>?Qz8Rb8&?>YmYuhulY_FP@l1$n*PS-xP z%SKCOVKlVVtEMH~X6$oO*-zT8DUO}4bDw6c&k&v*(#T02n2p}E#u~mr_oJ`?($B@LLb#MM;$?_8xEkFIZHLDjbKjY-Z zt6>Zcg#)qlj(*cercPS2=#dnFpmqAl^wQJ%@0B|4h=UHBIdAGYtt*$~u2o|j25+d%-RhuGO|wmX4r2p% znh376II@+;DUj&8>)D4Lrsm;rmMakquS|d4I=%VuOz*dzapox=-Q4r?B^uRaPM8(f3?Frch-Mhe`wtuwO`fFtGV6%rTY-qZO$*8M>_73wusfK z4P(0&=ROh-{x>S?so-?B=RYK)M`b*n`8{HfB1%4H3^*Vb4a6p%99#@$(i4L-mtz9N zhF|@fi@8ak9-K5p#foHVkkqsIG&~)%H?(w}WN0?%TWSWKf!FA=wQ-Y~$U@kOD1|{Vtw)3I`d1$NZfGeO3brZ^N zb3%1=3u9N0r)$4NC_}d}4*Nnl1~+tDR2AJYrNQEWI1AfpclWxX4je?niNetB`0D5u z!!wP9O6-}+&<%B9N0X3b7<{J3RYx}j@C4!Y^sV|0bs*?o5p__vW2>SYj^1JKg$vcU zc&4%rX|t7a=hW?(>ga}1Iv7Wig>R!<*15vaZDDnEgHr~aPD}6)?*4rXWF0#U-8!nE z8y!L-$e&R87?S5yV(6Cqwz^?X&N!n;pTpii)49_Jr?NFjcNS8A9eehn4#HWRnRQsS|&3qRrsD|YLL!p&`h3djOjYGYMKRO zNFV>LG*e!2hGz4sr5RolJznXkq56#ec!p+&R7W%T@de?cRoNFXRPH&mo`BR$5*<#j zADAIJOt*+5F`W$ZG=|BM8X8Z zc)~csSP8Rz`w+$u_9l!b>_ym= z#n=4vE5etAF9@F#J|lce_=NB=;UmI_gbxVs6W$}dOL&LyHsL>YDf!gIzxn6C2>&F! zMfeBd?}Wcem?i#7_zU4p!W)D?6aJ6zC&KH5KN4Oe{GraBlC{0cKVKodOn8a#d%}x^ z7YNT2o+CU%O3@P4@)|ZG=|BM8X8Zc)~csSPAVM$=iKn_}AWq(S*GSdlL3gkQvF_eJ%Xe zPZ&uUK^RULMi@#MLKsXKL>NdIKADWJYpb?BK842{#kE30;J3gqsLA5^f+| zPe>E4BWxvXA#5ge5;hSylI!AH{&@}IYQj~7D+yN+E+nyjzXro3kVNK{(s%>GPL8`Z?vA{MGbx8>S4r?uDRQl3$rwk|#NkCpnNOIglqg zkSBd@vg)L-l`xSofiRvhjxbh22M6*F4&)uaz4_y4!d`?u3418W4CEag$UA&~3P%z~ z5QYAx=;S<8ggpUXx5n{fjlYRN!cBx52{#a~C!`725w;Sx5H=G!37ZHU$deq%lj0iwdNtuH!j*(82$vHsBV0?;GKXk$5gWb-d>DhmsJbWJ< z>?#91PVYdRX*xDnJd8*T2DaSvn-@(UmwxX4SYyw~D<(f$n||%QXwy+BoxKJLtUIn+ zIHV6fI@YC~qqGB^MKSd%CN&K2Pk7tqg&N~$rG?~yPsEGcnmgS$GINB1aM!4wginif z9&k6E=m6{0l%^AEUV&RmJ?Z+bK+OL%07xT!=Cg#8KC#!R%q5mK>5KH%33sis{3o5G-wK%8uS_DAUi98KCAE@4Hp(=nkjv~HQ zeX*`0E#Mu4GoMPI2(&r*j0&^>l_ugOzeQij3P47Y z?Tfaq)udo9f9zDeyNH#}%X3@uy;!|w$)cr8*BvLlolK*sswx}+Ge-6eY3o{5nLdcS zjg|L?>`tE$*edj#J}Y~#PdL(wP)qR6l=a4z)JIj7Ktx;St!e98(R+Qs0u0Wyy!0fM zKQCET6k(j|L=j(fTi5d5>mzxY<;+>$w^Xu!R8J^8Qg(A(?3I zd7W07K8R+oM*m2CKwuNgtz4F0^ zHm9n-nBU8`!|`}TH|X%~+fMIzY4W%sq)vy*h>FT2@KJ4_Qd!#wZw!^OhE8vKXv%ow zw!tX`rU&DbJ-M=`!B~*<+9+|`8*ZD>oc{A)_HRhPaop6V;n^(?lGz|R1(lE|Fhe|t z<|PemarT7ncMVec0&7z=*ZFC#^V3}Cr@78gbDf{&I=^qC+)ny^6A0r8;|OC3`w+$u z_9l!b>_ymo!{3;VFSTS&Ax=;S<8ggpUXx5OFW%xc{~-LG@HfI=34bBHNqB?sXM!@<`Dw26i`V(%9|^A!{s2h1{5043 zX|D6rT;~@r@tWTgUL?Fgc%JYaL7D6PLYeFQ;%WZ)6yZt2?+8y2eoJ^onJh_ zYwjl~bDdu(bDdv&pFe(&a4+E=!rg?s2zL_hAly#4jc_X=bqjF^VLRbwf-=|nX|D5& zZT#^j!i|I*2-g$RgzE@f30nx837v#ZgpK_EXs+|qT;~^8Q+O5OO2QR{%L$heE+t$- zxR`Je;X=Z92^$C(5HiiK&wPL9^VjnT=Mv5#tRtLFIE!#5VJ%?|;S9oR!YaZ_!V1E2 z!ZO0rI(IWhRGRDjG}rmXlJs%!P1(_N-Ctp?i%8?qK*wti-+XbOsBK!<_`^m=!(8u; zV0DjpHq<{;Kdf$b?IX2~H49)o`p7led9~xUG^}BF)NE+$?$_JdNAbGDD;-=xyIe2B2bS<)qu)x3acj7R;rWDKYcydX|$en?{l&W^GnY_fbvvVx2=e`vkUY zWvz3b-86L^EoD(Gj}V#4tk$Y+UuA7enmNO<&;GV!=|xQwMx=l6@sy^V0+MpW*tB#D zrNHUsFSKy;Fp^>25-dl7Tnv=l^bTLN-JeK5Fz3L5YVpOYV6}^8O+;oCzsgz!7wTg&3dCf_kpPzDxfNn}LuL8|5VTgF zA+N+HiuxcYWjMQO8Qtye?Ir=0fQ<(MPKk2#F*XUAVmeGd+0}Blruw26n*>&Z6gK4; zNOGHmOtBdJe2um}m9>rZE`f43DA`Q{n?@qFh_N^7uCJ_Vgfqs=*hi-eHwhd!K|DZ zY>6=yPNej4RiqD$@R4%n``z^q^ae7qWr`i0zHOIKLt-0*H|?Y6@2h&6@n)s*Yx#G zGaSAEWgs@(erFtX^^Lu!_HRSk%z3$GtwvTxXoRv_`DL-L%w}v{-`L?X2qSpHPo9ojL42U;7Urw(&a>StgyRob_n*x$$>sa;`RW@9* zCt@;`p6MZFPryLunCx++pV&C5ZR^TDhxLTEyUwmp@BGx&M+VJ9OVHnjB|WXTh(FVi zgYrHa^A_=EX5}~m$4R<3pFdO4V;b@}c+$dNGks<@8>TdpOQ#8M5q~BtkcaFt!X3+judZEI!@JvQjXKQXuw;Pj?<8a@4z6$%~oJC%f|XN5%F53RKteMUgpLPOd?B1hoE5ODL zBjtQ+IpzwaqzDGQM_I@fm$M!RfkxPSq(23=`TRu#zEfU+bOVX7_Xyhxkhvz2@E&d} zmkAFd-oxzVNE(8Cf!;%Xa-~=!4s!T9eS3-@iJrda)lPBuOy2JL*qd6qwU0%%mE!D` zYWV<)QH$k|`kW9_Y?M~l*#zVS}qqxXb-6mn~K`g zv^L8^ct4{go>>2I zec!rMVagv^v&{XNdzfpr^9g5*W3A-7ngs6c?y=uCRvXJ0=p-2)@O~S%I>{=Xm>5}% z^aA<`v6&gZEA?xR#7S{)OaD-#4sgM8^N-m3(cSx~P1U0EjjG(afUGsg^jFdtQDkan z1;_=aJTtl39#er9Q7m0C+?8?Mp|*A=gEzE51#q5=%hPshv3CVpz^e-WojDq&UiSqm zz>ueWBB{mb3bY8d!W9uNVr6c&i~9l=M<@q+fcFR(?$N>$IA z?nZa-S&uJM>x_gfbw18C|nuaN;dsOeWz}_M% zliihJ=C=MuR0Yz@3g3wGUhZzGOp7R1e--zI)B>rTjN^vU-Tun7!1Aa}|2~T+BDIJ> zjog9D$O^Q8t7`zOq;kz-MPF(N6$C@b{%Smt5xv&}4uRMZ1uB0pP(dUBUt6gKN3G!% zXaR~)*v7);9YR<<5owmfCb}x=lGjyczqAt&9n|~x%^lTL8Dg1`Bz0%e_ zv?6_Qep;3j8NS)w>Vx#H0eLhdpHf@*klyNpr5MQWkoUYQN6eCYFM{;ehCYKU&sPO$<$$Z>g<&PzCzHz8QhNwY+smX?;)??1gdpJ}bZB?tzu* zgPdkLvd?ePKhOsmGUK^p-T@Wp6PAheU|c9`J}%uqvML>8hS5L$E6@j96|6m@(I{oEnymF1F8ycKt_hz8(s8qYqM;yD;%&NyX(o$}$M|>l!<=K^jZ+K3gu~91pjH%lp9qxR6GV+{_I@>@*ImG#V z))nBaN;#7uaWXR8?{nEUZ6axd=1tWNM|YO_2l!~$}tKA13t}G zuH1)w9wpDWQB#4eYmcwqx`M2$jjzs9Zn(bqYOUp2R}^23lo!~jl>&xuh|g_Vf#Iv+ zb6Lvq6(O7)n=GHxTAuZ9@Hrqav{5SsFqzQxKzw6eLDnfi{LfB~1mZZZ7yq@DtN3W~ zb&-vl3gDPPg)WP)EGsaAip7_9a)$egFKp#15LbL&WTS=xc`>r$Gm8rHqF2SI*79sz zsrbZNo{jhv9~YfBQh{tRrufLZ0=a{g!I9!aJ2`_D#RryhBY04x-nYEKh~^XTS;}QJ zTS7+HiFa+~D%wrFV=d1{pQXgxmKVq~<%kRi6aTT5tMDxGZ(F$vp%VYHldCYNR6zXG z_5u}*B;K->t2iO?4-0u-UIX!WTRHL!r0|*i&EkSg!T?G3FaByR&l2v7zgWs~-bvDX z@usz05zkMCr;~WY`hqO`yZE!Ty?eF8ta43YE$fbJ(!w6Df`y$+VVNq;Fi7;u!k#Kz zPGb$O*t)wz)zM8Z!;ufyF!2`YR+4|ca4B!-7OaA9nJqvN4wKm}Uaxh_+eR3=1*)SP z)>Uu@&26tL(Ji}$F?4IIf^PUuF_IyqHW$L$Yu#9f+C3S%wN^(r?7Bi>B(tjcnL@Yh z&dtzmVs&)Gjt}A9F~f*jNxx-xjfQR$s-+uj9asf^n|=$na>r`uHohvlVWSJKXZ>60 hW^9%X-Nsc#H@V49MBrgjQNQ(98+loW+Ne{v{|7FzI!FKj delta 12502 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 Yd=yaoDx<(xS&^qm>3_KY0}7hr6951J diff --git a/invoices/templates/invoices/final_invoice_print.html b/invoices/templates/invoices/final_invoice_print.html index 702f083..167306f 100644 --- a/invoices/templates/invoices/final_invoice_print.html +++ b/invoices/templates/invoices/final_invoice_print.html @@ -168,10 +168,12 @@
    {% if instance.broker.company and instance.broker.company.signature %}
    -
    مهر و امضا
    - {% if instance.broker.company.signature %} +
    مهر و امضا + {% if instance.broker.company.signature %} امضای شرکت {% endif %} +
    +
    {% endif %}
    diff --git a/invoices/templates/invoices/quote_print.html b/invoices/templates/invoices/quote_print.html index 292d345..cbb0c13 100644 --- a/invoices/templates/invoices/quote_print.html +++ b/invoices/templates/invoices/quote_print.html @@ -76,6 +76,7 @@ .items-table td { border-bottom: 1px solid #dee2e6; text-align: center; + font-size: 8px; } .total-section { @@ -227,10 +228,12 @@
    {% if instance.broker.company and instance.broker.company.signature %}
    -
    مهر و امضا
    - {% if instance.broker.company.signature %} +
    مهر و امضا + {% if instance.broker.company.signature %} امضای شرکت {% endif %} +
    +
    {% endif %}
    diff --git a/invoices/views.py b/invoices/views.py index 2bf0f39..0313143 100644 --- a/invoices/views.py +++ b/invoices/views.py @@ -1104,9 +1104,9 @@ def final_settlement_step(request, instance_id, step_id): step_instance.status = 'completed' step_instance.completed_at = timezone.now() step_instance.save() - # if next_step: - # instance.current_step = next_step - # instance.save(update_fields=['current_step']) + if next_step: + instance.current_step = next_step + instance.save(update_fields=['current_step']) # return redirect('processes:step_detail', instance_id=instance.id, step_id=next_step.id) # return redirect('processes:request_list') except Exception: diff --git a/static/assets/img/logo/fav.png b/static/assets/img/logo/fav.png new file mode 100644 index 0000000000000000000000000000000000000000..ffa86d7622533da5e44e1b5d46632c98cea425a5 GIT binary patch literal 23311 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 bKRibr+NYC#Y*h*bv}C@Oz2${Dyxso;?u7B( literal 0 HcmV?d00001 diff --git a/static/assets/img/logo/logo.png b/static/assets/img/logo/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..71216c8f28f6e8761db6b4c2f9e7639fac0acacd GIT binary patch literal 59182 zcmb4rc|6o#7ym~}%9gT}QTkHJP8gImAuU4MBnICQV^3LYic~aOWJ#8h)F?uhs7Tf# zONAz~L{cOnMab{mnUB8H^ZWht>-BnG&vV?*z4zR6&v~Ei&U4<}%!F^T*kTOB_)NEM zvBa>&8W_eU$jt?RnXowU8vbjM*VY5R7$(0R{f8r6CpH8A$l+^gvKhPAApRMM`OXGA z4KOVCBG0t_0u1|DVYpZ`{lKbgH=sxa@*G};0mM!aO_dBUH?C|Og>i65Q4rT%=AvnM5-daX$C&mR~G zN)^>R-f{o=1G#Faz2iEM`G5W(cKjeCo_$f{4q>8GkMW-mXexE(e=VVQW5?e!+G6+! zs%%`C-`(@~jAo~n9F=7n|DB~^zcl$pCH2o9`hBhcvqZ+uzn8Fbdj0njF?7klmME*f zv-mGAaxTmMee}$%fxnk<%aHneiQ0kxS>npZzn8eW_xRsOw@l#vdsD03e~b5P^S^)3 zIHsY8Er@qLTL-(2W4#r@4i&G`RtVIT507e}om{^nw3^PB%!;`{$_@lVL# zTpX=j@;4VNm9PH2L>=G%aN%J1Hy8QMOaA6UL9O|Jmf-y#E+h^A<|02VXJi+fA-izc z_u8=;UC!b1>P9xpCq;%)?bxieES8(#$p#e^g(bvJGd3*YTSn~M$xbgNDoXzcEtGI> zLY?4$R*=c~FK=$wX%Bz2|(?&4P{`~?NXQOFr>>X9vwQZ2QyR0L`{P?E%ni`_tlpX4{{39B8)vY5Ra?+n=TpMx9~XpC$@4`~G7c#~{c%6{a5F=bm+k&G8Zb1)*=Xxs3{81dJn=&+Q*l81nCYhZ!Vx0TW^;24x5U;Rlhsy$cDG4^3vC&>CW$Ay`nX{+dxRmX< zB)2f?yDk4&ciCQULNS$X{pv-8;z%~ycoE@%@qgdzJBCrOvWr`=+_;u)Kl4rYQg@g9 zx4*d@(Cp&`d#OS8aUP)A$F=OGuCtHJ0L?zW!d_|*`}iWD+0ZCQ1!%VKa|D5Avz{EH zy_6r@{2URW+2?NnntlFKpxNe|C*)jS$7X%&jTl>ZvsthFTJlX(w%hxu#G{zNwZy-XQf533WTTT|KT$S%70}XbbQJ8T!AA1~ZNf%J!G8PLXnvrb z+2|HOHFG$=lpN)=MLfjz4M)L!`hK-J0M%`8F zA(sDQqlIC<6FUv_KeE$;#LepL^b+D`KQ@}Ml(@NoordvoHrfrwb=YYb4`HL_V7!E# zhVdCTdhH@Y>Iyb_FAbwMiT`&WWlPJAU1I;cuWo*zli6sIa$^QR+xL87)Eu2OR{kXB zr);JdRdYlSNEZcrDe{{cd_d*e&7`pd+Ph@dMb1trqv5qMoPw___U+#*#~PJ-Tt>Xf zO8DIT&;zc_$@I6cC0;#9i_{b(f;-ECtW|#dDV?hyCy_W+kPv#8tOV);iI5abg%HYZ-C#CSg`SYxU75 zd}GzWZ@YrVeBZCs!LYJekXgwKOZX7O^cUQ7qIcaAnu3q@2VtNC7j91Kh~^OU5Ef)< z#D@;>(X}4U!6*fND+U58y)%~*MO66U4~3f<+#TIMtb951DX%&#_LG~Cy2*wWmQaLY z!b|xmQHjbQjw@x%5Rc&2QV-5;b~@BM@Pw9Ol7mL8RTvT@&9vP3)2h5?=6>eoAkYR7 z=n(VV`R+ijuha&62zW;tH#dqiJTK;Ck`tsQ!Ubc70eeP}M#b zz0H~ac7kb5+ZX)V^zdpzNssmatb0@6VKeyf`XL_Uah<18Bs!=4ZC5PGLUaTo7ApF;~ zWR!@+lOLdylm@VIFZ{@~H_5**mDZ~^yDuj6k7=UI-YW@HafjV>aMzPv*{`NYE8dvp zKMQ3#2Ff08g1tX3>84Gvwrz5%nG+q@eF(y;m^)y}2GCgd>#3!u>X0_Cg;_-r@IQcq zGnMnPNM&cVL1n>=mlJWJ9qk06wO@5WX8B3mUJ4IIX|Jn$^YxybORF-;PWr?Z zja29O65_nKES;sL@mGJI)b7!IxQuAbbQlz<51hJ)Ybee4o-@6IsknCV=Uv4tY3tvH z8wbVRL?Et_vFpO(4l7}$@9PBu`;ayIIOwXXnr#N+z}Y#P0SJ8Uya{wRy5q6V$V>| zhy@Ha$(0+^cyUF~^6|R#qru5L-~S!DokI}-Zo+a zf8zxYvi}TI5w8T+H5M)HVn~??3bxp1N(deNX%J;^GFTcVEV{8@6;jYddp!%247EYU8DI$ z#h!nk+4ru$hRp02D6Q2~+`3(zk^D%@!>IauaI9#S1%tP%eA(06Y75&m9RyKqbIJf_ zz#QrkxCVqd#Lg}6bp=>BZbL9cOr)?$R{mTgg9uzcAP7nSg=_X28_6( zFkrbn98?`YXyCwSfzR#Qh6-fzMO;(uVQS>u)bHP?zRT7t>Ddg;&l>4IgxaRqeqf%u2~Mpj$J9rP?edGS(*i2ny|Qu(I;U;?l>{(M4IInSBo;JLRsklA zol66002n00nwT$CYsvF}HLzfU5({?goChJ*4?~tx(J48C%jdDc zN1tcqh1VCI=u_#-tMuT^P@Xa-t)E+TYjUdYqjL`;YfKP=q<~ZmaXfZ89~zo}oEVu_ z)$7r;3EdlICjexs3QN11=D`t0s()1S`ei49P|C!>q?X|4%Q1>mZO-!-mRYqBRt+{_ zaP!8ngh|>CPJ;=9-CV%OGn^0dQ-Ian9B=)IcqCwmen{Q7aJyDp4@TJ76R=HX5iADP zD#7KCB~OU5Kv(U<^EE@s^)_zecdqszlR;{}MM&m^D$XWF+fe7>xn=gfUL8D0AYK~w zQe`Q+!CtJuk+zrVnb#XKxV_d^c`Dfo-9`Wb_L6{11R+#n8xPtSqONWwnX2r`UAVre z`~NchMQk+ZAxwVyJ%jiz6AhzcDc4r55*Z#1#g)flE<$KFgH_5D;0wF;JwGpA#4SOV zU6Zln%ZT%W73zEXYMhz=7Q|D9(_xNwTjFOWIXS}Gn zm}!CX|B&Ywy}iAUpo+8U_Anv!#C6Lr=q6Z$Ju_`xx+QIM-I-R{VP?`ueC-=CnKY*B z4P6Iow5VA={yi#@z>59$zkI5xlVT!%HU~_R0%->JVEdT=WM5153tS1W%ta7bA2)&H zt9j+4ii)0&owK$0_)_ruE+RGM#;q1>5Npa?%8edqj3Uv#SlG zUc)z(gXryxWT)aP3FzZtnfi#QyE!A?Z=Wc!BK!TCnp=aw^sKeNa#_7VsQ4XHnr;sx z!6&~P^G59*omi2`^2geSCH@Bk9l{gDkhL^z2jVg7Zx0IzJQxe-x{zz7c!NjCq;_ z5T`zjiErO>;;X}PdoB6-{p|OlPm&PEk?TrOAg%vq5v+Abp8NubzQDo2@IVg~zfi`R zLuzx49(^T1Zl-AkGfiuMG-9&0qM9i{5Y8qEXZjgxe$~tr@?111h+^AYmd>@eX#0{+ zq}VFh(n}9&e?`H3rYVCv$IAVWus@vv4Nz({mu5P2#s##xbwzb1cr;)piZJIOF2@E! zfE@w>_R%orP?GT7oG2WLeS)%I`{>12w2N}BDvP<*yjmzzr3ZS6 z%DrViarV8tsv;R1SRSTH)`|Z4x`WUx2$(bomsMA=miz*jUlz){{zUHjXPCo(np9=2 zEB{M31DVl2IS$F85PFp?E=hMmWqWq^onPS^_yrJM*_PP{XAl<^$ND$UWYFsHd=Bhzp zpvJtleSeyE&0kU26TnSaaVrSLgp`MfUAc&f0=Yl!UDue3YPFxIz}Ha%K{2)k%)Yl9 zIdl{+!PD#g6Ia0`(3i*@LE6=yv%i-J*gamqu|N?IGF`nPANnZh$;tJV<(15#qOC8J z1eeOXF7smP=zPLY2+aPR0*3$e$;~swiBV48;xflLpKYAvfSua5F}TfZ)#`h%-wUT6 z0Q`r4!q;}ZYG9^u-{Lg%L_4cEF?}Pr+w>1PBk$kat5ErUS*S*T0dT{^WH=NtYzyeh za*gy#a4Aqjf*mlZv(3Bu>iVAxA#4I%jnuQ9|E-uAVUwZ2VZJTL zC%jH;Ah-aXQ5FI4z4bl$=O#WL*ahIk@?#{0k0_O=L$*RH24C<#&$(*qlL||;IU9VN z%`NQ_=GP)q)cCJGD~ANuBj5|353@3c(=?d>IZft=FOnzJOaSZj_kaxhZUzLi%}m#U zibs`%(!BL+(^R%~u2NoF6xUZ-j+vX>M%jDZZx>X$3yXT5qC z%mgDN<%s&z5$-m-2NhIfW>AZ?cPa6=5z8;Xd)|TqDPJ;AUXC zj0F7G3KC=S-d!owYs866hjVo`oZ#>DbF^% zN@S;M%6DB3m86<{f!$Y~vr~rJ!6P>``R2YzS#k08iTImvRuZ(6^pBKRtDi$+!6=O{ zDq4)`TNX>mLrDROu*|XZ_?VF3?258#k=cWzFXus44wrP5xN~g6m{GI}m##aMVIl>r zn98jIxOo-AptEPsR;lgBTWm$gyaj{MPR!ADx8x@rpGV)qEWzlX1^wN& zjM%ErQVbh0$ftmVX>jAv-O63}6U9Fm$v)O0dp$TN)I*wgHP1ip*hBxMAN8vCjtY2) zp{QV6{gul+i3t%aAre~OFG~)d_;O%GmyRcIMfv_Krc&U5Wh7)ZfRLp&j)SYi2Ge`Y#1X1Uw8!E^6zZQg#_vjV zQ)CBX92(YGAI!l^st#(4;|Qq^EM3k=x~vTicGet>#wD-{{ZAKZv{z(TT^uyq@xr8v z64QtBLdHXTT$eL)yT>R;m=y(L^s}fckRQQX?FUOEV6|*JQS^m1I3DxloZOX_OnXA| z)PbOW{VoP$)!Yin$bR#owu%JsXpSFOBsj_t61g;)EWy$vn6BT*4f0z?ER1H|HYU6G zCdzrp5Mk0DR}J?ml~*78uW$Gr8T4ZmD>rSM+t8X>C$7hre!^5r07F?Os?iKUX+|R? zPt2q^msc0!-UGYCtXS}YYG;0!IeW6|xWVAuSsl_)b(ppS=EXdo{dv}ZqQ}TvEPt-O zA$x50#AC?i>DK_M*OpgD;nt{MU}pE^M=ChqK+p)N=6+d?AJU4>jlhVG0+6+@)h>EM z;~zJE%3=lG4YPJ2hMjP^asa*+6%`I*N273I+_6I0hrSLP6eJ!?ocpsHG68ew9h7Yg zqw3(LTFO9TX~1qIa5`uM;w>4!aebo*FK|8-SDZ7!InMq~?s))~5CM09I9@UL_YbyA znYMswXKrCI3|XdwF>C~1r_9<;uL6(u4^k{6!P`ca8jWGpl3u(XZbcgTr|&1M$p?GY zK3YtWfHZ2q<)?qb^F&@hd}P65RiKdH(_cQ%Zjn<+eX?UM}^WY zDg|J7O~)q87>twn zcxHoGGsc5nEc4E}&!IshL2zCu&m&PxGJPd*aCh4Xp01;Y8*```@1507jk)$d0?sy} ztCS*t*p62@%3N(9wt?30BVs}M{# zosIBGJyVzUmO|WXki?z7nG$R1zENA}B{g_~^1jthF9pBmdH-5`LDcd1_DhWcT|#T` z-ub?8!?MwtvB@nDOyj%`D4ISA>z^!rg35c?Hw&2_QcWv>Pp2VdQ^A%I{U>M7kfes4 zeIaOpe~C|Ht`)6>5BX11vHoKdae7m_*9De=F2O&_#YbI(=_lYI$GM5~65HQDnOPf4 zB)+mJTgc6-^pu^w`DxhWHeeQIcnNvFrp8m_h8?(_>5>Ww+u`!N{(&6K<1{rf(u=j{ zv>+rJL$nl-`&nJohLual%4=MMHHu=G(9@)>g@%T$o(0VvrL z@tdsS0d<+grL6O;tNsY$gMa=j$u4+$ix zvPo{D&t?1&E>dV>sS!+^o=+&=TF&wv`BV}Jvr7_0dm>=Tg9U6OCK07*%ySv=|6~Kh zf7muq#Ost392Wkytu{Id*HTiGApy|>2rO+0`NMq%3oi6~)6Z4d=j2L5RNmH8f z?C?^SGSFT|@C;^Wzksu2-}a%weJ|>#PE&2x6`=4L@~XEp((OlJ=kBZM41A%~C!;g! zaoh1TuG<(Pbo{tP`+5$n%nsd03Q6j9FxhN0jW;)@b-8tgoyeSJ%=P@p#jCt2t>f&;G>JhAj1)oLiEFxM86In`Y?rf5D zuD!kea{y@e!TAJ^hF$P}SP(yEvgLQ@N4d=`y=RVQ$6vSOAzH3=#TzlRDvHL zvGYKEO7^{vRe*0jXq{m-hQAzbGZ|mXW7QD(b^$%Lpg{ZQz?xRysL}o>LKwD#DIZ{H zPdV!{n~fX1e?B)GFyfmDR%m>(F{-5JmCHXE7O(l#m@>9qCV6&7^fc8f+8S&F{ta}~ zHJfbjxaEwzw)=2Bsn;J24D(U}28?~cfNO>*5p#;^y8UI!P_<=t+%F5mloPQM9}R-D zjf0%l{enwiuqJq(JfBXb9u+dTz`3#78=+bBiW*~^eIicbFrVLp%+!WLC`Q-_0XLVq ziIzNbAGV|=4dsid=RZt{TUaxaU*wW9Rd&00%RFp(D2ROPd_o2l)mOn_sy>JxKkg<* zmUp8s6bu@9PjYPbCai_b3R%+4l!dvHjID>}v@k~8PjYYJ@mB`TFOKkyzfN>i!K`m2 zh9vbC6(FPSzQUZuOH}N56!(im-5%G3mP6CmvXO_CBM-z;plquyM$7T=6Y!`rKMF*o$u zsp*})frsvAX7v^CJ1p!*PvvUs%@6-|q+vKEpA}UwgmH zyWY%9JrN+jD>AMQHuZF+H|A#SRZv$pMH@=PTe?Lo%k}cEuxV&(=I;svYUWQ7jE$qJ0Ha*FHpORyR+zHv(JyUof8Y#ZRqZ} zqDd00No6Y8_=3iilhX|eObT4gasYDoxw|vfiV%8md{BfOe8?~)V^5}*i96AHUcFU= zF5GlJ+QK;Jav|JV=X>WMy#yuQ7XoHnzDdp3f~IP?0=$|(A8QEw#?Y&io^k3s?)(di zs1RyrS|y%Is;vF$vGGDeyc3__0Ep+cN@7S&g*&y5L)i#qoF?PcAM(_=ZFAA(R=Lm% z0heOad`Ekq9Z`u(txmL?B}rGU9(^#&nK9v}RkLR1d&)`wTaDYjKU$y73$dL%>Mt!3 zGX46M1@Ehr9^Q@4Gs9nlXU8_a)cNH*J^XttrZn^rut5=%X~^QwKI)kMQ*%6R-HFoJ ze!FDGey;qwq)h>-@gYHi(McgCwjm$&%=r*UE4ThpTc6C- z*ADX|S3=n)8x>HRoOHgxR;lIVsTO;_ac{DaQoqBtjgv0~HgN8!^!j1+-QoTe0c+R^ zfu-7MYW`)|esnM0Tj7?!*K?D4Vb9vgs!d}(t4G^*%}$=3**bYZdZXRlZ(K;ySEqIr z4*KR=?#(UTcz!(5Q311dKqfB`srvIEhw@=`F2InijT{Oic0Yf=E|;E+7QKA7!Zs(@ z_G6vh1A~UClRtOq9sR}&t0{+ob^P$4o~9n=8wWKLCC_jB05)88hKmrrGr#ODGGR~$ z;xdn$!Y6*U&-#yPN(`r@wO(^gXp~v?yF+i*YZhq6I7h`Sd|_6hI&sT^1BX1kg}hK~ zSY#v9;{}1lqeq{WU3*?Pj#g+dx4pSS zb5~t-T}NyDeQVe585UpM*>B%%P3uei8OpVtC#6z)5KS*Ldi3OA8mV`{)%Kn>-}okf zl4v{~mP!n9rJuS3vFY-iDx02&ki*`D5sqZ0e4VKocj#_hNR9Q)oFNaJM6%YO{;|&8A@%E z<&TUTSV|UeHBYHL;T}qT`_Z_2I^yjEn=@jrlwpK|*GN*qVO~DI@V*yR zL$ZC!TDJeg8_3eJ?k}tW?$rJ8Uwx+93M@~P=lN}8^P$h~)C{S2-0o{&^ZOeZMMsBi z2Nr&_aLqV!HDzeVMb|~uPn^lbCFJ`}b4D6me?R`J-rN-pz%OC`qICTI7vHaZR+rFC zz}|^ukDEt6h7zwc%~kgUeOd1Pl4$-LJ+)#3aV)52dd9Seuts{USQ~`9q<>FSmFK-@ zrY98QR#vFDZzl38?izUn^5!XQ$V}A*Fzrt>e)tdYi~J%8Yx!kXFi8pDF1RqSqsStX z)C&x17N2-Y7aJIUruBOX<_T`Aqx(0<#)#=8m@xK8+P22Z5@5H(51lVM@A~w9kjZdOqGRnRRl@uLL)0f zqpUM!ieT8gK*<6E80p+(U#rp$1d?U#+n=NUMOofj2^AlWT~@=Dzr6Y<9--vo(S=&g z7zBb}$1T%C*Xh~SjVbLS%X7B%H6%TT>nfoK@QokeGo!OmQxDDOCYFDgn^!T@F_bUJ z6h{=br_UzeO8Rbkc;SkM(sQ;SFuEH0e$jv5H@91Ohx#1<=^ZE{d@EecB@O(LsrCi& z2lHqsi!hE`=sgt~1Xp{coE3uj#oUl!Mm5c&s2=k{|LJt8r5A?I+JPHr0%5&Kb$(3e{Xpd&z`+&!h0fix+3H z3QrtpP7!te+0M=mS#P$-@IMdvb>PH)oA310-%)Q5yf=2agSarw?0Q9$_0%%z8*gZF%mRsdw)N9N-%_S;T2j0a0Dwm)(YZ&5%r&eF}eCZMSDC$k$~tp5fh5G}1G3IDA}V zrSX{<2mlMMa-&iQ{CdjX7Tg25&d1s6!!uZVj*z#1IzbL4zrue11J7>bx7s!Y3p9g1 zm3;zx9L-?8v7pm?dOi%wsX|7$M}txHFhO*e8(lOsFQ-6ItQ$Gf+j-d~PmO8E(9J>O z{2EV3^wm2~-aj-H8NKOlK**9@!NfyLJ;EMNeb1X#7HBr-97mwF@u_kAD%?I?A@qav z__ni!1z@ea+kEQ}M}G|Ukq`E2M4S{k$xR!b+h8p#aWNN``Q^P-4mn`iJDI7g5_vYOjZ7FJ z)dO(G;l~gN+FTXIDRLkC-+&5+;3mJLD-C4uaxi@xS66H6=)1f3BlhsAH%Z=BZ{Fog zoa(&$PLtQ_3X&aEHy+H3--sXU^TQ{P4t2OMff%MP+FuNOv51UwSGOO%z3@MowcKFk zE~Jf75u9x?z}s-<$Ho@(UGWOe<^hmLNHpkzh{Ku2VW}-j4s*?AfcU~U+)H%UH+Zx0f6Y{iplEsurfGWdCHZU}js_mO%b_I;@?B|~yQp(NGy&N@mw&^E%SDCkOz{wo+RuMb_6-i?Ro+Z z;0Eqwv2q-n3lM!=E6Oc7^pfNVrguK%Y4vui>11xw9Wyt2y)La41Xyj!MTq;_v3&-U zt;b=L=hB>?>=Zd?FFXi_E$+rl{(=Iu-?bKr?}*rGqPzfSQw%SZ#6LFK)ShwW>C=?# zzR5Ugfb=1sely$kPF=S2)MUCW*F@@Pv>!-cJq^F#(>_s;9traiWA|h-%NCkCNtv-? ziU%Q7B&dM+ba3(Uy=CdR@`^vANMi@e(~%@MDH}=r>z%l;FUYZKTejnh+dy9XYI674 zge%S0-~KowwJ>X>XU%)#BKf&f;IN|{&MM~Y;U%6xRf5b^5prhKQ~l-Kifs^lK_#te zK0YNOkEL^@qmcUVUVArLZ$@5EUeUYReBX;NnO;&hOl$_>k$)VDASXXHVxrtO@2iq~ zOP7$ttnuqzZh#kissPkf{J2yIE1)rzLs4+ouJ|Xo0UVqZO%Zx_%sL=MdnhRLv z&Qln@6&^_X!BLM~#j2;qE+V*<<^|}sQ`<{y?^yBmvzJ_un%-)Y+4fR^bOYUGH13(2 z)|9h6lf?0p$2Ylesmg>R*waC;MjP{mF^j7=9|AO<)C_czXj%ip>y-(m{`{Km%%Qf8 z1w#JWiM<}eq15Ah$9}DL&IPpjEH_?U%cm{}L1~K=qfTeVW>|3YVTB ztN!8IascF|w5#XHh>tG4B(ZlFN3fOF6j!!k2h`oDQut+wvg)k*k7BOh=E}7y0Pt#= zE*2YbGEJIr#3ZbkAtmUX*j9WST^#GOVkG}0-je?lP8#z09XblRm8JkLy-m3E@-4kp zM#p2W?H?GwvyA-MS6b<@_Ic5N7>up18Sgt_l?KxBWqD9 zNB~Dt_jR^4?Kj~F-VUb$WgsDC0HiyHn?l=%^_K5CLK2gWjCkGXyL#-s9evsH@s}9y z{KEH+NY=ZFig2}$a7!P$#0rS6^QTDywEc`AT%W{T&O^Ev9|A?BF$4GdhQ%7?XHkmW zk7}}%y@SkfNWTIq+>oK|k!9>}H9ziPmy>H$OHs&wcZ9D1vj0Sz zo0hqOWmJY|{J)@4?MywD**obq#mls1ZmiqYkA?ssiFiYDuGG=GSBq!fOS9u&Kb%31 zR&2mHqt=kqd@TsYanp2NO7Af&(UKJmslBxDo+!S5FcomTs!b~js=q@m1$`GpWS#B2 z35S1hP{H1n3oA}eZI^c^`%~sk$l>C5Vuiq{;L8EdmiWi*xJagQ`bWa~pzM3wzLeNOnPad$`Wzw-(Y4hl8Y7ZdrhX=3S_0 zrX_|b?Q*c=^9#DU#N%cMQWHoY5=~hkGqB$1)DQw`5yCE)K_uYeU67sRLM5&rZ(TIkqq4<$ z<@)~{H$}F;6mVHF_x(DSOZ!vnU+@Pr%WAmiy<7re&Z?`a9SMnaKOByz;cG2-<39ZHk+RX z(9%J5>IPSOK<|3m0wk?yOY!t`F-mZBLEP%C_IfY!LCp;)%+F!wzd|y1({Ck*=M8Jx z3gyAgy1=bcMiL>8D4md8$yIi4Zp#5?&0(=-R%+)taV$#(3f30qwRpX*q0Iosc0{o1 zqUKs!H67BMGDLS57RL75#_Y)ioKt|}`%Hd(RV2so6>?g7F`5Hf{%6kGxlmyDUZ}5W zpTAvIH%U?H6F<3_e#++upY7R){qtyt(X6@rsqEjQ%mxx|F|>4?d#Zo@_|Eh>{UF0< zr>Q%P2P!2vW$(p@3|1gVkdIRF3FtbO1bse$?KsD(|LO~CLkDHZR%vCG5JKsTXWPZ% zARuGOwBc5Ci{)z+RP+M!DxPMYPuczF@dvMscf4gqmtVkRC{nCl@3=xSa04$9>eW1` zmJ6aRTF>$wl#J(EU-wF~O4Hlz=&2v)?evqAc?`e_Ng6<>CE7ynCn!ljKK6b0|j_E3H6vG5p@@#2UuyD ztpUOFpqT5POq+ye!TAoqK(}~6cU9+RRI!4~?)&df-q-1F89@Q)7~K7z^}F zAI<(7^iWg++@Writ@k2TQF9Je)t3TAqzbWtbJQNLwlAE_5?b)>r`1p+UR%x#tjcbR z8$~>Nbn$gw{0)SbE#{o=P%wFd%F6Y+ing`oZC21fEt>$_m0iMWH&(~ZIYmbl{(3;M z52g)SG?d0k=VphCb*rPhNf&CI{mla${@RF2o)`*%Q9^ix8CLrAgN=*6g=Qn_8FDQ9 zfn@6Q14Qu{pjBD$?8!;rcl?yac-v_CfdjkMnf`HOgbZX(3-9bdB?46=9p$N_U<6CD zC>D{#lPHyv;Sr8b90xC;U@2d4H?n&6GHG5$>=6{u=vRT`*%1cms1`1gfR%od9-f}J z`&HILiNO2Y#&;l0KN;W>$}@ciD+Y*DSSJ*EH-Wm(h1q^4ksGOPo=&Gwoqo80hNl7q0prD=xwV(|Q7pQ1Im^)SgZutUG z82f6b!ti%iKZ#m=r=eJaN}Z@{{pVvIJd_*uZ9c#MZKvr%l?85Y0bg4NsfSUU4$s2r zbcixvqj*seR&mEU>WX7F1Z_Px#;rUoJjhDJk5EvU=}ZH)Kvng1;6CWWxJ5m<$?S;6 z@6EB`Q{NfAaioTF5z@McVy*+Lp>tUTRYzcGHLwj|0@CCsdLn@=yDy3 z5fMiUc=%>G2mfA>F!~294N479;IiCaKQ$*btUCyqEwmbO|0IS7EDnW)#-NL@t%xds z#Z_l*KTvMn@4GMzC55stoc>Bk!IS3vl0F~4-OIt9(tr-mllBcNF=AxOk^Kkjd?B>~ znDbLtT{c7ELAs4942y89-Trf|K)Xw!LPtwvp4h#K5D#A|Lln1xA&I)uIXbt4R&M~) zTlb0Sq083FhEgHFP*TiVKsa)yS~YUQ7(z!W8AHG)*>~z zc8?QzC?f0K=yt1WUib9*=yQID)&Zt}I9=%M$&*StJQOb6(u#yY=W{hL3z2X7HCsM- z1JOn#=sMPYMX2kfJlW%80p^0SBDC)E5XfYG;c-X)ZjCTP`=|WyKs!Fb@7+1SyA6^B zC<%D(YeV0_h+jA&k6DwL-b1P;i*n2Kr2s}7^{KQOs0NNKvF7+W+&ploz78(&;558Z z5OAX}0Dy}x6ptLpIQ0;Z=M^i#;n^>#*eTfLs;Wv%DljNcFZ9($9uJ-rR{Uz+Ys*bZ zz^`)My?3@E9jJY~K)<2`BAeR>UF)^Q6b{?FWAy0z$$^)2j&e80;U3lEa89o8(y79@ zrvwuN$Bs$)xVS2Wur2xDNUEOm|J?PmJcuZueAgaWvgRE_zwhzXQT4d7uY2JQ!kM+> z&H8h-f@NdyAY%dH)GaxU=F*K(Gvc|+n`UNLbyw^S3AJi)pafTVQkbTFu3({E zUlm4Q#JVJs{9%Ul!(35}4|ETZfVSw>>f}4Oxdt|~GSKDQ``5Id38Abz2)f$Q%TOI$ z9R<8?f+Nh?wbY}r1Es=R9t*yiL4f9QI<96!%|sp)QjHSmN>jvD`7-Yyy`pd-?JYCA z)|Fpq-fGznp(tN!vKXBcXJ*X+{nV{T&?@qcD!{@mO@IfnEjsGv0XXy)XQYLzZgb5T zboEn@YZpUEC$v367=yx-c{ zs&ziZm%lU{yfoINKejJBC}$xZ?-O*tsC9Qry(Qcr-#=k!E{EQ%EQSY1O|n`ZGl8l~ z3&AbmINPdaVZx{OCaG~W3w2sC+Tn-jNO(Q9dq?;|g73S<6t0aOJLJmvB$UC>fomC) z7l$5+?Bb+t#^s}$TOin=1hD36ui1;9ku^DJIRyBsw*Sj-70yz=Zx)5bau<+FE`RMt zS5ELw<~n2)aqx{_+~!wFcJ@!YnQx?>0o~cM+e7il|)witcj#`x5?}4U8xejo6jB+{C)4lHuRdk6T2}i zYftNLf%}23-99)pcd2e2iN;*wTUs8wz*p=1dMOz6fmD?_YH zvqbzr$Z{W;{IkykUXAM+H@U<*?VOq~f=#x&+- zj|)`;>fbg|(AecVa7aP%knf9y%J<0x1-R5BOLoDnibAUuMOOa36PhCPX!cy7Jq)Hz zO{@X|p26|2b2)Gm4c$PiDhK#_*=;xz{<^P>Ak*W?Ni(prtoWA>ZHP`VBQJ}&?S0@+ z2}WzxcNhb@b5MR-?&7oI#tr#XLy`>_!QGm&=s9%ote&EkMZr?N1o7FaX7KFNCDz{M z;9BqqHj9Cwn{!@S`oLQCCV8#5z}5z)wM^tp-hI<+54jMI!dI^hIVoG1E^%p#DE{#P zw9O`2{K1KmYjK>Ud2<^Gjr79L!mF@#ed{r-fkptGeU4i}>H8iImkZFG+#K(wtitT8 zV-0IW?ataElO*lHHOJh0GG|FyC6uKGjtm@i(1nK^8S5LC$7*PdSz{LrSkgULpzdd( zpU2C*rTi>C|4aRxBwY9O9|s?)SkWXe(^JE-!}$Jr5lr*R{p5{)a5-tXtE&CA_d3D8 z9QDC&-74C82>nX#p^rQuurc0W!9+>$l)>A&wbf?@L!>R-^!djXn6d~6Y%6}$ z^?k)9+CgAf5pFL}0^74gFYrN4!s|R&fU<_X39aDw*OZe*63Tp9Q8%J5M*J*KTYgi| zXq9-w(d_TD_I-Bzs98?g9wYTJNvL9e`lp3hS$yZ6+qR1-s>@~G6~XJ7pU=D7vbKh% z2!%S^UmANisC__pM$d$6M`Tx!`@RdbD$0@dHM?|^3^FE?;w{DddnZ2Y&E}+7>OPYm zX+JrA^7oT|lr7|+$)fIVK0k3CTHE@4iLJY52li!%ViMl>tOw8$a^FP|uj@@ZnuVUd z{m+eJc**Om+kaGU?>FWZQu$(lvF3dV|pE9KZIylx5J10k>j)94cjjRE3_k5>Z$s^ zAH?D3`Cc4cT0e-y`{bqH%!YY2nA}QF`a?~Hqr1FMXt2+40b*Xw7(Fy|IR~NPd`$5L zz)o1QEk{lRi@ z$I((EvvqnipCF>aFly8Da^NKX2t0q;9_oK5S#09o@EJl~7L^0Dd1zLvf%L*9?AkR= z^rEN%fZ&@>*J6z}c+>uRw}+>EXQU|lg8nEC>KpKe7IVIZmhklS5U&L2*zJ2|jQJ3x zAhx{Kn0CO)3B7)dGlXRdJp zgj2>Uui?0WitA_me0x`agbzxuibCXp(eI{pbgbc?uV!p%%7^W!nQj>zQKsw-TIL}R zPe?E;gPNcXh@rjr-}Aa8z)ManJ{*TBm#ilq9y?A8Vde|8dOVqnLAck&r62l1{3JI< zk@*}R=<1U9pqx4hKb)m44)z9bkEyrpgt)!_iu=t4*e&{m^}k=+3jD?N+nQ zfeF9Yf!`uvsNx7ORp#r5-aG}bD*#U_M?X5*^3ePs8MUG^F|^q{LX(@~q}A4emc;h3 zLUP(37NlULd0bj22pHcL1Z%<;t-EjE1AYiBbjRW;yPTlbmax`jIvd0gfr9VULvvGY zv`(}Srl(;pm&7->gL%?#hl}97I*PYnPXMO&LRu9$F29P$NdgomqcJUeE}v5VTW2W%Y|SU*597kh>6|e_4pb189c-t&k#2`rTI;B z58IU^gl16b2UEMyO~lMak)7YY9exY*q)zn?it zF|HkHw^bVF#AwD~$1c$IgS&y~C0pE%XBMM2p9d&2Hw+aIA`k);Db;f)8e9K>*ie~= zxge1D$tAb-hIbG(@4a*&@r*J)b zMV*2Te3`+3p(-9OmAzf`8>3ozxaY@+U@qJsuO)MSg6r@%_=N^7Ra;|9fEEf4Tn99Pf|lX9?x4^0olkX$1EkE%hG=95G__&5vjm1Fa%j>&zqkcb` z4H9=J-%NvFz%qZjv2$;*`!Dj8cObm3Qg}(V*BL*hs!11M%8w#=^?lX5^JhGyKaQ>b zy{@*~A?i%e*;=f3`uZ;M$GTRQ0dAWj38U zkza9gw#)ldlW_N|3}AO?o5t6Ln0};?iLdXQdsUFjZo>*#@%A_V!~VJL)Z*xKXL>&P z>ZVUz9}X9-yX5eD-OYGMvX;PXC(rGZ*;S*%hkhTw`m{z#!}p1Q$nvC#l*8R4ol36_ zFfR+%4@+pp^NTnrdu5|KP;AnceIh21!-}QoO|D&SW%0c=hbb!Q?+1$wbUW_vPtf=G z-Z56pyNBPQcv>sw;Ht=!*H2ehdG@a1|JvcJ#i#sFBPttXYJ1=Y9ew#RmxA%09p8$_ z)abfQ5z*9ZS34ecREhbgT8Kx+A(dCD#Nj{zRJ{ z&&GKd{y{x}2b{F08{Z~!Vr^NOx6L|0=$2Rvs|u&q8k#-oa62<#Rb`iPM3w#OZ`ZpW z?v-z-UR0YKFDcT+zp-;_bGmHVwGw`!;yAL`gu$0Tj%@^_ER<__)x6tqoE1D$M|Q@m z^iMqZk^`jfoWGn9^Y8Sz*Rj5Pb#~UM0@?RwT&Yz&Ay(T&8VF?3%=YqiDP5{`_ zi_DN7H8)oqCkN%kc!m_mqD@B;(r=(GUlDSZhF>wpmMnGq;Z9{2Ua?` zo@<?;7@pFMsm(8RJ&f1*zxW za(*{>PwUo6dv`7Sj2Tvt0H@$l^!m`5ec3g(id~#iU%ATOzRPw!*KWg!-2!)MmB2I` z^MKo@s;^J_#e1s=oVHk`H7_{r*wgCKnVk6dQ&sXQ0u39hoSKImg^MnSQX| z{Ty0B*t2D~(gJgtBqSU9xeZMdB)PbQ3w~zXM(TYuAXg3sZdB9{@H+Tg^|z1e?1{12 zdU!a`CG*P%~Ne6)pK9v>Z>T=S#!UG1(q*D}oI&THDPq|?-@zP1X3C|fLXw{*>rZFXQw1Y*yA z@ZiCKe<-!)%y#9Dsv|?+vl4ryRs2^v$=j;#)bdC-lm8v4+BM_(WLqO7GM1I^V>~jg zR6dO<_Dy|g8LW8NT7_xeb~yH~18SKT|MVHE9qvdg=EAI6a{AUlSm!z4d=aZu7I%l& zjeH{JO`QTYV2ObHk<7%&o-&v0Y4ydF@b!xH($Wp8nNC9{d{;SWci;4!`MH&}!t#kmNZay{YP>N(6Bk@+Gf;+Cbazk6Hb!DwfT+enS}IclP#B0Y2T&8NEh=^*tM zeNO0CBzYiRckO<2J)rnCRTLUckU&g5f*&`@R)S&-tOHM2%kmqFRx4bmedLC3gSv{> z86@#)e7X80oWoqtq>9=+bmvU4?!UgO*>UZ@I`Af!?(@{xmk;6>s4(3>wT_a(a%zf| z?WxA&z6C_P-(q(%xLns7>2c-ePig8zCNSQ;5b&)u#xC57U`@@NbkpPRw^u%_iefHh zgTr){zMgK+)lG~whj)&D+^2P7yzZzTCM$0wZu_}<+pzb537@wAr8tyqnPU%rp18(8FP`(d>N_qnEks!)wL12>_aI2IJXO)$;Bc93fU zELx`$|I*sk?ZIUlKJu~SA2_^p%+_4`jR_ zWdZ2$p4J!cpyrX0bzO1)6jF{q_r5zFvJ{J3-Cy+RQBv!Tbs&y<@d~Ud7`s4o^=$+_ zZ2OX*Y@Nnuvy|x^Ae*>Ha#uv`AmFAAIWCv(aQ2CITxqx!JrMpeu+c9*^(uaep7@ea34%U*o*aIW9W5QY}0C5nrrj=JVlgz22s1l|F-V z3d*CkE+ib!A@bS#w0oS!!cNW_izr^N=BqR=J$^hrDZ1liKmmDl-^qa+4hVJbHC)0E z71Tf=I~t_O$GZ*$Jor0C&!~zyPd_+dafc4J7&5*Rh~@I9C*8b>GmU86mvY3d&MCO2mdcO7UI`TQk2?v8<5vD@U73T133-oC~G$E^+J)K^`;j_7j7Xmjq+ zQStq@p@4TNs^ZTAh1CS!*XkVH>fdknsOQXXYOP6mnx&uWBH9qcy8aMO3IO@i@*VZ* z>kpDi&to=4tCF&mY6z%%*OeVXGj+tIYeKP>P>Bn;x`F!%* zerczIKLj!r>;_D$E)jVNBUivO>t%aBzLI5A{3|;@O|{;?0E@ZZEu!eV_OEQ++hG@C ztISnNw;$9J{Fkzs1uk9qpu(i8!VvIV<>EdnD(B-!2jpGE)ckS2nu| z6c>PW-zq26lV+yAJTdCfGiFs40_UL4_o)f1(ry#sz6V`r*ofVK2Kfv`)_%bduS!t9 zSMrT_kFiPun~M{%(@NV`F7ADS-9nAeotz%Qo(nEtQAbxlvX}kMREEFkJu(~a@%R_{ zXdS^%YA`4faOh%7ARL)>v2=1_`M3Kk3r)7}e)u_Szi=O$(IK^tUxd`!=`w1T_dS5? z@&g81CtpxZ&0qe8QGRi+5BnB*mn+ZKFS5HCZlg)bfx5XZE%ynMhw!BqdcI`DI6phd93(e|c>ENl&wimE?FR8EC>z3bwmXq6V|EEXEz~ zB0$DSyQI!JF-lg86!)44+@c<61)A#8XT)~-c!M>1ck)-tU;7jr;GluZNMLZ z0}HD!bn~^D^sqo8jPz>Mo#vG5Y-u7=$)DnDhsj+S;^Fvd?G*tD`C#MY69u`;(7IR4 z4F$F{Y-?z%%loPK1;3H}7^f@EQ#U;t1$D}_VAbk-Y$i&DyP5>QDgFgeW0NS>!Iy2&frUePp({{kCy&j+t=mmQ>AyOMHoSZxXa3-JN2>Q%?33+Ypi?v#1!5cG zL$mTf3%*+tYG<_zyH@c$h8Eji2Ho#EQ*n(^jUYdIn@w4HxEXSHsorh*ydY=w#J8&c zuf|0w&J3t3HF7eMEXZzM=@=AZ?YqwW(LVFI1wR5)_=q+Og|d7la)GGQNEMX3NR(8p(`b?Y|UVwMh`f+t}4|MKV5nDx7dk=d@$$#I5 ztbG-9VJ^-b_|fY9ZzNI+9=9ZkTK%;@))!nj)VANxKg&Epll}X7u>Q#j0SHCxcQVn9 z|0MQ#8;ZIW)?u41t3=U-gN5g!h@;%akP?)a^G@gz>P8B|42+|U_jbA77;`yS?F$&(e2r!%5Sg8%qplq+BV z@*DW$@WjJ6hvZ=oa#xG!@Ej+ixjCAg`C2X+u!8=|xcCLwNL*r|Wc1MmfPU&4YwVeK z^VU6X`{dO@@wy|jl$$qHo~XMT&2o^?J(;^jK#SXcdSj3iiUua0>N1s?({OUEKecq7 zcSd@=z5B+e5FS7p{N=r)R;MCj2)gv_adKYVRABw3s=Ku9(R9jTKNrYB@AVYRfgsFi z`SXY5XUX@@k3dQ2z(?u&iAmA25JJ|U5t`y+*)>*5?3d39IQhxWC?m>=-npXkLWo_- ztl>@jjm5`8qPR%={@>ZWS+R%1BdJ2*i1kz{Ve=}9Wn6R&9S*{N?J`bIQ+3P zD@8xjIAAO`0?G=I0x#&QLtW>6{hi5KXC8P@P>3MZ{#G;j-RrcTGfY;C=gA#btLvJs zn%N5F*?b?~nZ*yzo(r5V49vW?79_!3>X0DG$_M1&=T0mKUTb*U_O+($O?7pU4oqN6 zlgBXqkIRBK$P#hMjwO z8e;!jdEp$C<@2&{9K;1a}#e1p}>=( zf56Ek+edTkDRAU*?IjWRj3(mJ6JUwLyVphImd7jU$qcs<$?X*{sY;cNi|qC5TUov& zG(OzvuVBbM@7h-A?QHQhZ8?%l?3b!uEZNk&(_sy7Pe!Jf1CL{KV|gMZ6Sy!6Gr%;< zQSFFRdbuXlUH;Ud0()mZ7iGXJJms^El2l~no~Bd`b(a@ny2mw_u29b zB-yLMZQqEZ%DA5ZP7@Qoqt+JRj{Fm;S~Zq$2pj(P9^W%ky|#x_CE#}RXH!3K&!2OQ zgYd3-F^2Er-=5WoQXf(w)m$C%b3K^7D#Jos?2v7?-`Tjia5wed@Mksg1D_H*1IH7e z{P1_>06599I3`QcQM+WV^b8IUo5XqeYZB#%nsV~O8m~r5Ccg&^t%UsC0-yJ7Z8+-I zZ`Lej*|^@|;bk7D>6Adz$*5t`2J20G$6?{J-EsV959mvZOpiwd=C6TBFa~(!!o-$Q z#9(yC3zO4nVHXDTV*)69_A|`uK3#*MFepJk2KzjarQeHXMAi~&7Znfa#r$cPvEbUy z+xlO=EgUy{lUs4&C$kw*>Oj$1?PN0V`Bf=hoZC#hWc(wftxZ1{3PF=E5eENcDAL)- z;G5BYfURnQmBdL!ij+j=!^LdxDoBbJz4gsINA6rKl5R2ms%bC-_0fCXhK{>F@ouwN z^otbn_V$g8kXhh`C$Akp?={70e8{i%+Xt!oEDXDqs7ET5;mD)mTtjH zVaqCnyI5{*z?=VDBojDSGuvd%-PuM2TQmc$Y~hNM3&%;aRz!N`*|A*Cj7C55%o<+y z3~3L-*BI^S$rA_Q`2t5kQW#-kaxBkKCP^0W86x!TXf7vu775P6W5XpL2TywtIUKKF zIULk0)nzJIkdU8?qYr^MgjZx==E;kCA^BA+S#Rp3SFn(2*f_qF5s<+jcU1ZhGoRGS zU=#$`p6{1Jige;gpHdpbkZt4DP{`3Eq7RCW>ZPuZ!`%N20Hi{_a*&ic1eXnT+ZNoo z?LEi~UYb{-9%J#6#=(g!85AOo5Mjb_1@1gpf_lFst6sEVWD#OxPiyYbs8H)>YM(yu z?u^|{oZ5mNI=}2?qO?y$SZ;J8scC%YRyNr~IKRgIo8z+kKwPXmn_?W{6z&WCUm^rY zjgS;#=BaQ`UvgHN_K66fX~vEwB-+6L-zPe0?@ExA8P$%(&iR!B{| z){|m+P06CeHwC&^%2SHS~lr(7-!$=29~!yM|t0^Z+6-zFLK z@ebxb--6cNXLz}G4?jCt2@pj>l>3sI56yFh4c#F>L-Fwe_XaX=;8DL6EwhBfSx9H^ zeF8G8ZPkvXOvg;%1A1g;;-0E|wB{5y2>GBYla>-Zo|>CG%BdWn^=fGCZ!W6Bw7UOB z+D(Fv?e7~>n8;O7)y%l;h;R&BeN~vO6eAdm%8T4PtxCH|q!_dI!HRrH$RqsU{`0eM zL$yGMqw{p|gX#grXd)3MSJiDBAW^@FOx1)F4ERO~5r9NUa&mzfK=nV3A+Qv$7z=Yx3;y0#_2$tRX$22fu~UX`c75i(C=|`3VSU7^h{C?>yoCKu`}d!;G)4Vc%X65D z&W5@q?)k_oL{K-0?I=>q3zYCFYAp)iE*01H6_DB-f zElO|PVsT8Jx@Rf+k~naeKD6Ud+LoVEyKk|dFUp&F{cKX6r+E=&`<-aNJl@2}O@#2O z7KV33k$ByR(-Qh#-qC}G?w6U6kHikYsdo_*rxbg4)O)*J_0q}~2;?L!OQkh5PkBoR z>?tQApY|g;Z+|qUzkRo`OnoIT!QAcT3W%0CR(Lx6{JWLxg>O~ZP6s?~@I*5Ak{K&K z!ge;R)&B;|zT($Z08SZd>T-(kmPi9`N!#3jK9#8QP?j?a99RSRG z-(k{G^DbG$y7R@>*2&NI(~>M?`rmpCahKWSDXTQf;4l|lNLp<()uy3W^ySjowjM#? zUxVWo#J87`QnJdo?acFH3LV zp57i)>cu2#wY7vmbacQ*!9_{QgE0>O$NbBA3F{J0$*&{Pw2gOlD0+%$8#Ur%dE0cP@5bd49y}$A0Y;TY;q`W8!t)b$4ExJjqsADBA~FtXZx zZzynqm2nk)=k8!`HqLeL5zsN59#aTZ-Z@k}!j~0vi%9DrhtHpN=DDe5$ESP`uBD|| zs(p=2%)R2v12^GzPqh?|Y<_#lYO8olNaZ0h1_?eoiPP2+6l>47yg;>owP1*&C{DkTf)1;a<9<$U0{G)pTv`={Ax4pNU=l z4^28t6+6-g++S#TFQ%O|>2|kTVMHQy))`)4pVO04f30<8FE`PbHr!oIbIytK z@+z2Ar`{3=y7Wwb(3J-Dh@L6C@?L?{I)y}kd-q~b%?XX>CjCy+uw1Vi*YRUx$3O4e zVOJwMwaY-0(46Uuz?B5G)qnMA{q*sd=aT>SU7_vm@}gIuXbsJ|qhI#;2%m%4vR&Nx z^2mv1^}%N~4?A!dwXdoBi2F|If-iNDk66j)&c}cvjeT52BQfzY!>^xtSLg4_TMhW- zi1F+D$|turWbmws5(n-4RMiJ_3wuhtuO9=N}!v#Bp%egE*+hQx;S8J+Pno#`(`18!)x z-5dlYA?{#q|8Pm#=?ZtdiL=|T|-@*%@)e6i>wkaaTl=S0K4_=wpVO4?-u=MTiX0u68Yh7?8yJo0ggGJb~4bVzQ_6hoW$S_v+i9Qbm$p9}e2P=4RXVx4jH}<6G~yOsl~z zYpsCisF}u4(?`T3KTr6WL}BB+NqKJb5cZbMW41`cri)5l=;ia-*OK-mMHS=0I%@l)}6;mi1nN0RVsm@$s$R&DlLWYY}Mc@ z)Ijs*t2z(XH{0;_+;lOwp$A}iU9Nv86~H9EcM*LPV{(dIf<^bGQTX7ex-0Mdzg%hv z$vY8x{8PpXE7$E<%PFP1hff6b5*;Ue27=R ztKt1Kuh<{6B&7SVJbptIH<9{!;T26p3g)cu;01^lB>Z;r$ zrnl;n)IAe7&mJFN-l>BgM#M+zF|Nj@dXN0Q0_jB@86G;|r!H_;_XmAC=9$CL`ko0H z#J7jY6WSdJPHLNz9k?i9^6iU6;Kr(Vu`7R)7;kFh$H&nR`pA{cj*oV=SE4Slv!51U z(vjP@p2cdby#>Fgm&j+H?icN+F=`-sQKXD;(GQ4v~5v~uMmRNFI zJT!E8bl`4t`an}WGOZ*ee9s~vaQB^6JvH@hp!rr^ed5;4)9+U>^lM*b$1=+ME+GsY zqupkk>XJ!O`w4uvt6Xo`v!}DhO14j<sLjN4_hwlq6v`@0Cos&m0p7f ze#=AbWtd$vj@xC}`KcmmqrlP{-BiA@Fl0`=AWGZDcL9Y%yc3wgn|u4o`}ICns+CQN z<{`(`%BWzwf?t;%8ag3~Rffj<xe}g%buyrhBsNkn6*6EaKIdc?^@1Mx>L)Uzjx*zU;osGsnZgT=Mpul21J_ z4Ian2*c~TUX}W%&^0T?xBOZH_oql9YgyF))Ts;zZcssSzsvlS*LtIx*TLHQNHJ-z9 zr{q@+YRpP$QWI3cUD=hiv7D58wF4VC^5|bwL2*YGs|I4iyl|zq(IcL)d9(E6uW@rA z6}DA-h)s&*=6UkMd(`L=@g^>fx`bBhg0wH{CJ@c^`cij2S!HaU`z6bZ<(ARRt;XEyG%;yu$jVqP-w!@RX z-&#eceaWl@r8PHk3D&?p-sFSE#SG8)frv@bk_)G&!W>4vnK`p87>Q@Pk_KzbX7hbd z@bEw2dmE7NqbJMP)^X)PxO%Qz~;2IGXF_=G^Te%^yjbBcS>E2GTPR3 ziK~@WA)n({JJ-{gh#r`557ii8TH`)`I>;%rbq}GrgT}#OuhIesEd^LhV$V_ka13gV zSz1i3wZ>Qd@f-t4r~{queEg_{CIoE*VEVo zq`h?u#YXdhWzlDrG>us<;bjT0;9A5*>&p@X%bMjQn{ZTKjwDeu?}I>4_*1crf!ezmgiP81`Zer4{IqFUD1N^Z%X_coM^p@Zv}b!NQ(P$OchlCyoQIc1~>*CQj=H%x*8 zcsO{+TV0bnlb^pS;jVdeL(i4tEl$HaX!J(uVP=LeR!^C{FJo!RL_a4a^f_KJx{#79 zjJS3Zgv|`6L1iP&1gQ8h*;VMrM-9h3fwswM(rEc7Gy7h`morUQsjDKvUGRW;hVB~Q z3R*ZQB^uK|_vEa>KI)exdu)_igRl_BEV-U_&4*b1M|j2t@z-f;YY!$Q-X3Ve6no>^ z6Z@n_0(;5TE5kJ6cTf$_w!$OOdpFFxp^xB|3M4mBHL@A-Xn{y~B!Nip@A8OaU>L^0 zaB2m92Ci|_nxKZ=N(8SRTuy}-M%#kG#MMoAH9hkNzh&`4C?2YFVg)NqRHEfuGDcyk zmpXRUf$G`wGdq3kh|_s+IM_p}j8 zHFKl(d|Ua}6w466m*XTO63}x+{B|llNOk$0OLScC{`->#ZVKG+_KV$n(USGFwFLI? zeu=#J_T`G@sP)@uNM@Yo<}>P$kql4vmDBVa@?X52>H#)%bIn#Ec7}_cdNlo8&r^rP zFxt|9MCZkB8s984oY={%Fv;MsBXNeEA6qSBSoXtLPfm6%d%BmGSl5awOS|q9iEC56rD{5XeAhdFt6-csI1pxcGHT?rVsChBAQ$}^rK01g#k7S8% zW>{mPmpt`vTX;D$kx(4M=QI5qbhb@@H}cL^k#Ct^fs8mX=_+rPg2wv|ZPF>SR_BO; zryg4G`N~~pmLfjNxL1co!Am}aBg5JN^gA#@x^SG39>@(| ziUJ0{D`-b|L)t0=C|941V}({r0ruVSAd85CYmB@S@#Kq)U4XrQXeueg8h; zz_tHvE1nrA%R{1U{w*(s$!xXKatBr3vh>yHEugWxV6iG~8^IZ_93Q2D<6PU}a3prx z<4Yyj$!kDjl-HKj49@X+{Y9;W4??^rMGTzo7%)DGF8o{xE*>SjsA!s=zC8I-HXFV1 z?keuJ1I_udL6VgqFCjZ6L(dJ>>JelzNWXg|bQRPU{yf%{KG5K;iKMJjNU5Hnnu=o( zy{NWdhKpB{2ad0D)%ZZHJFdp@ezdzIJ5qd8p-fW-HaIB1t~p&hq1evuw}HfW&9JkL zNlFQLfVAv9l`Kr9n8-vfraoBvT+doUPCUR5vfa}eGT6!gQYQf3-;%L+sCZ4Sh5x~4 zA}%iB&fP+p%t!!d1$!=9kDIe3{|zfq|F?Wiz*AE$9FRx|%erPyxKgb)1*Vm*+KA>_ zxTW0C4H!y{_iX0^Mt$c4OXm{`KB)QAHHbd~vy*t_DQ|~Bar$?`8l>n*1O?Q=oMV%t z@TMUQYX)8r$c<|I8h9c0n8!%xX>tjHt%EL}+vE8YkYdFLJMu|j%>jejS871xWA%-k zCdPY}2sJ*0W&KqRP+3tAvDB6V%S$%2$erL*(poYBmOOPmV+jw4B?KIqeeW({$bDkXBJIkcseQNjP`3!mV~{s^kJ&rKw4%b2wJ%RMttqWw%S*$ARWib zlZKp05yTRw>7T3%+GP2iS&-t+`HAo@xY1D?NIl>>AFvWKA|5uQ-)Q*TH3n3*T6DhK zyZRg7B&E%Df%2H+DLfDFn9#qbxrFcsiy!hQ)(E|YSt|;4pM)<~!bHSk84mMPyhzTP z`_lJM5Rb~z!k%{o9F^B1+10?_@_OH;OuVq|ZF)Yu<4zNQe_L*p4v7nb7wL4~x6A?x zAW4)`5B*a4ob97kh{Co8=jlS8zhzj3D5VgA5yi2>xkJvB-7tcbs@%tdvVIEgFf996C31bVbB z*p<8vvzMF>$?JHwAqyz_WSJ%SD<_77hsXK(iX2(+PFkwHWSI!F0O1P6c#PUN5AspB zkP!6-E14;fwgGg5%a>PaV6Z>CHLL>g;9=xi1Gr8SR>k<_l&3{YKP>6)<1CSb?cB9R zAQ~jF{)u1}O_`worE2F=uie951Esstz~d_)wFsKWv(Bn86M(}H!R}w7Grr^RC9HHo zICDPNOk`5d&wr5eutM!QXwkaw>{yUoEYp)+At}MIZ3aw{@Fd}*iax#G0k!VWIx&P{ zjCn6BC~~TzG@h81_geV!2z)8rlHTztWY9*!{%8XXqh6JAXH4d{(pk{f0}l?lv~UMw zo%O6J1#`b7Mw5LV1k~8-(AfcdjHizbR-8Jt_~ld33=e&^*;Uo6#9`x!&RO-cG+p}r z*jZ|fg-P8^ySySRO*i2zLFra$B22?j{fPc<&+L&H8y@7aDfjx%*8IDb1FR)779~wpj0qbuys50rsPiQ0qk~+I!63B}*rSQ8{QIE{#_r+THg?n> z(>?jM1bqMt;oa|1%LvO(tw`NARzSa(bv-5$E2q^ZnXGa**u!{_4YFcyyF}ZmlhTB4 zs2FR+CzOIIieY&a4U^LagM18QxakV6l;Jy%y*o<8k*vPj06Td*0L$7E)xuzbGLnN8 zOv%h(=p^|z7SU7|KJ%^{bMc>Hg4Gg9v7~39NCM*aN16Nl&oJ#83+QUtk&7F;=t4tq zr|Oa#+Bncj_ng%jDrg58t|s%xSFQXKSn!L8#vHh@>Z>gbjqX0R8RIQ#@RcZrlc=U2g2h07m&=Eu}?Lw$Hq zbyi$Q2%PeP-ubN8#X`^Fr4hCGT`~$+8gvXkOpRy(7qV-X8M`8+!T^cXrDFx;Gv>NW zu-Z}F)7z!$K0I{QHs8yRu08L5`xnI?M27yLVTx(Ho0w81W?j1wu+9Sub)X7ZqD4U4 z4?tTA@6&Nsy)Hd_Z^GFUv3jvTrGeL@gc}1UH^Bj-1lTgT zT^voHeR$|hBc9k(n3#Wc{uJDU>1+C3pc4bWQ&(VIz%w-%EJ=4%BQ9Dk+w(h(G(0|tZa9z>n# ztknVkHqN4jv$g~l$cJC7FOR7G?u3aO1FzU6o;~ZgE)EWeJF8p_F{Qj%hx_-d*4wozCKa-wX-aBZ z*>gNI=h2RH{N7{>fQ|M%h(14!FjqTI*22WW<9{%Gp`~zFj=cER8e@amKtxf28Gf9h z4{wJLl~yhADDDE>aaE~G@mir`d|S8r`BwF%Xpyx|+f290q>ty_#VD_)HbjHA2~6Dg zKVIt4q(D=-p>4d-kn`3WwrlYqL#b&@hYq=JMiei-29D#5`S=5MPJ$weY;d}xej=u9 zYt3xxRFo^KCUQJ4OK0`ZP8>sMFtQ_&i6GQ>cz=#&+=*KCn|FH57L1O&j+ealr|MlR zC6Q}vt!<8q&yKbL$z0)z4nMNn%hg7!L43Tqtk)Tdfrw>a6ukdtq~*14uRG%37>y)eoFSi{J272~_%?*poDy`IaRib^7p!-A+Dx@xm< zv|+sbAPWm22>}qn?{gBOvtJUt|6as%Zj-_CFq*8|WEC4lhePmN*mcMkwf}kj+o3b% zSdSbaJF^46sEDX_0oi%b^`o?V*Q}QJMotv7&hgP(=YX&$ThdsOR^`YFjGL&k@@1(a zNX96jQCuQ8w=>q`@`hnHez6;Oe*K7-gQ|I~ZQ|KP4w~U}`Q(s*Wy%9A?H()T}27gP83&$Z6Xh3@67 z+gm4-G&46FICE?jQruo|n!R;eAKD{S1v7d4N-cq%nEd!$-|XD&gNVNtmIQB1+sqiN zGVXddgK*Dmc=&GCa=C5IJ6Cp-;^=7`!nW!qate|fVV!Mwojo`s0RQ$G!X?aNWg-_K zWkJurBzU4!BS`a?pdjk*Mu1tEJR~7#`z1?ikle23MH{)-l(j?+eG8oJYj`vEY@*Hco~x9b zdD>RT_-WZ$o3%$-+LMB)Cwl|3=8^^mp|}p#0kN3f{$SN?FL?kMK2fKjOjWM_P-avQ zs+pT3@;&nzfFPs?`2jqi#zDaXmjJMw2j10u9#{0bf%w~U_*+hR=M|C+-Yg|=45Hq_ zE)fWZ83@Kl=vWR%(B$Po)XI6r_QGqyE@Dc=E((PTek|^&7P39x^}rKBTsXQ&-SZNl z2YSIzez!*V%}7z1O`|c|QXw?|=L2TRQj&Qv@iR!(KR??5ODl3$fJ0-u(2dZVu5W4` zxfsKvLAhnl;2f-}v^BsautPJ5ikv^`*_(1=+;o8L2mEs~pjLZ7aH#?tdMo^*B>p!F zL*+pvZmo-r#3RV_<6mjQFLfy6ur3)Yo=*gX_xNXGT>&tkE^N3{H!aKumZkM7qBiv} z46z4*wz#noxAi)@TGn-eNE}Yn-*XUBih4m4R7C)O+^~f+m0Fne{O(Fz2+ZYm3QSoB zXZ7G8O_-5?W-DUlUU?8+z=gb39! z<1Q$WE@U#V|2)ugN{DW(1}aH8m(L*xT*7}fVup#90CNxE*MsTX<|*R=ypaL_DOCWk zN)D3xL}QR2`b!`q@nCZMzZ%PJ2RB3v(=iT?P2$!xIiO?34TH|pNZM5l{0X7oIyX1a zbDi!2CpUEkE}>{YyYM%h+5?ixVXORzu*%~L4CrFy@K{k)2QXN+4vyV@H<)Kb4j^Om z<3MJLKFGwQ1WXC<1(~pbzAH9sQZJAmg=3B;E(jiMwWOZvLRk)(kUr(< z)C4vWk+k;$sqpHDyJ{wsDMZ|?0GmsAo%p$Wt7E04N5tE>^DI3EV@l&`3W6MxI~P_5 zBR>iSCi@oyp_VLY44#KuC;GSzSWqo7-vgetGJUVD{LWo|9hw%ALvdOE56~~zCCGZD^zkg7AXKM3OD*T=dZepGJw)Qc;BF-P+b75L zBn^fYwLG9Zy#H#1iyPn{0kK``GjFrR9D@iP<6Kw~pe)V&v_NLS%(ovJlp_{k-GUc5 zav@%xoNa5}*=p${Kz@gFFGfgT4tGfLsh?yD*RNkRgBMe;@ZVo?{-Iv8 zze?}u;}X0Xh-oZn^_mrTZN$ChFvYE^sMPnwD)Jy^_{YlYT=*|EVb228wL*DYAx7el zum1Dv9Pw-Me|}wq`*!$O-yDKB@w4L;-t^Cel}IMm37cB{AVze~gKmUVQ(N?gpJx72 zC;1An(Q3O)Hl70NweI0ElCxe{i^-eH6lqTUI+{AdDgh65_lm&^O*j3%LZFccwy84L z#Q1SrvSyzjsT|nw6Hhntzta`O)7Ag)bl2eN>OcMWbgLubd8^p?(8jyD+sDZ5@ zULj5p#z967w${mz!HGr3r7e4 z`n44!<9EJ=UxkFb-zKTe!iprWz_t7YvkVso-N+^AUR;A{s<7Wc0JZi%LW~6*e*F_u z_IMEdANWUTBd{j!0?-3uTjED0Kv^u)aZ&IigtGr$WC&h5-Uz^Lv15V7z-3Q|4x$}g zm?DFoEPPlgV*W#VE262|f11i+6Am6agY;KmBjzylya9SXh%(fj|-T@E)N$E+Al6@qJX;lH|` z=8`^QMf(v0%%BNJc7n`cc6zGNb3kS(tr!z)i`;||!th!#z(y2ARO|oGsIeH4d?3mJ z`L1vUHN^bO6|@Q~h6}!)U@7XgR$Gb?=HM|eX2%#1fiFt{J;|CfWk7ta6MasU6&GPt zOKi&iHL65O1iavmA)PTv`hv+c63P{%t;gO{@GtT!aA8l*Xg&N%5ii>Ge`YI&cW1W$ z&*CIL;9)9Z2ex%)*{H>vG>9aA#4HGa$+*_Qr`9M>74i)X)wn2yP-cdBm}KTodP3@U z3*y8e6%6`JxY!KJIS4Da>O&sd3eN|Z?+~iVST+Pphw-wBV4?Q*)UI(OEUqU(6|lDa zcny=P$3}>(*$?bo8vd40B0Cu(J<;D&iWtt<< z_#~cF`J(@sQ}Q*C98=iLnwK2fNk+l|OB?Ng2@|q<4U=TZIORDc%@w0Bz&-=n6=oNM zJ$)j=U`QS9Bq;DxP~d0Sg6QMGh@oN`P*QEA3>~rpzpNyG>kx=kZtKOIf!$K`Ut04I z0U|L0^nYW-JOQc&FadD&=zoTm#iGdde|#VXAGlcmFU8Do8Iv4rNBoy!-!R3p|Cfto zm?~jX7`n4CRb+`{Hj!U2w6JJOU={?IgA4)2!cY7GcCaR+y!xGxC8pIN@!8Jcp#=Vh(pVxklBsu_> z(?}y%km5!BfxxrXhMbkGxZ|po(kiMH3 zjLacuJz^Zh%7!W!)bhB|IL z|M?P37$w;B)Ycn0b8_M&#DAQi@xrLVc+?dzYAQx4xk_SD@a%_?A}~)0lZO?&$L9lo zj=LiIBpw$bY>cdSW9GQO)Pb#{b~t$QrV4+Fu>C>~ct~NW3ewJ-=7t?K7dcErI`?iS z%5}iQM>l|dK7czjSJxWIs3TQ&Y_$+!&K)WEZ{V)YTnpPPNSdHs!iz!VG~kgS;1wkS z3d9OOpO{ud?JXNx(qH0HCvJqle9M7iApouy1;YM-()^#tuO1PCJp4$itF!!WaBSMe zb1YJ?vRS3$owpSvWs2pz|gPT|s5Ghm{4q~?+&aEgF)onw&R`Xps0 z1%i1p>&0Ey(FK5%JdmJ+L6x^@=5&o@lE~li*9c)VZ=?#8-~lzT)PQGM4GGzs>Cji&!pb0m%Qtq(X5psyIhk$%=CQfj@V~`XiXlNFg zsX#PvWWHc8*%7GTTPv$G#!TV+ZKw+{R4NJ5Mg_2RrKQNs2FssJ+lgIFlw+{KFZf{A zqlSa^s*7n_k_l#^NU`jfC~0C&DM4J+f}>|j@9hQAw5Unk+-%`!; z+gH611MB06#M?*wobqNF~@~h$i3sNFjqAYb+6#%9SO-geeZMoPG2tInJ?ARg`gFs=Xw2r(GfeZw`_fvzq8MMElHrWh%GKZ^OoBPIs2pZ${KlIDEgcuLh&JFcP8S<3giJcsXZP~lNqKN!wRP|D?MRl1O$G!#A^eM zzju&^YRjO4X@1EfShRq{oiawK*9HnE7)VTU2hge300#9>l#CB?aq%#$9~xDq>Y`fU z5XBw*hH6D;^ci{Z0AIAuoLz9FASL}O`VoN<+yPFD{cqgRKGfx;DxPeZ(f!TGPTFS`VqOp zjZcNC1jv`V0+{yznCHnMSTU~d*cUn61lO6q#L++H7I+t?Hz2dY3xvxJqIPXz)Gp*W zpQF;Vv4aH(DsWn@?qUKd%@YVV4+Scp+-l_jUkclzyiHS+Fe5zkE<7VpUQ8_5r!oiY z0)|c`X9l8t34CPq8K{1>?>q@!!YgBVwg_#iZ(4A$e&Y3q$xGBa zW++ei$09+!Nu&U!6|a3*(W$@xZqn9wP^7c{7p7BoyTMW5e1KLU-_$3s9h17S*W>;a ztNlc3c;|YgOb2n^jl~%b&tU-&>9)3k@;R5K1mk-Fz=s}qaWt#HSKHOZcD+vM(*0U_qJ1r~3cjmHR;Zx^ zZ(s`VVathfgu|A$J5qec8h23ek3OydmrCNg6b3Kf#hjBIKH#>?R&1L#08^o<=siD1A}{C!K@ynI{X0nA%Z!S3jRB0K}!3hEeQ zlx`%H%F7s*tH8NpwHdhC@Wn42`T?envKFf1p@4>J2z8R{B^n{bmUCozQ}J7?bI^(k z)BxW|(-riCAN3HPcsax1NkS) z(^D1x@{i9vh;|UU8t2H72cbR147XNKTMSTNzb?JTqsqQL5AeV!;VYd{_CP7YlWmAV z6u{4Iv2MkgP_S1;#L03b7 z#N-<}{Pp4nRk$QC{!h=RV&C22ga+Uh%@zoa&!?XRLc=aq)*@JJxU@LbEJ1CH)}yAc z(@H1+Yd9aENfsEa3|%Oc0ldNbM{{gR|M`|EyJI#RgI59_IUIhpx+A zp_Ip6OuD~(H@y1A{x|z}uHX!EF^zO|x0Kp)t}kbHaxF5W+jDW&F=wz#a#yb;eRz1y zb=`F`uZZ{hR@bq~f@ify^f%wk;y%)oDBk-ty=KM&YJRb%lsexnwnXcp#!v<#UkXk& zWI^I3<9>)YR1B1jd5(AHg?N!tvBQ`Ar{qR1%3qbw?p89{L6nOg13z74fuA+H^{PuA ze818^aAEfNb3vpJ>O--wR8}qzK%b!iNah7zyCx^fT1%|mG%7xR;Pl+)scH|BizM!P zC;!|UbOWd#1^z8r376va%+j8U**yuRMrpe6=P8PC}*LF9${p9xGX0p2u z6OqO0!XT?@RHk$8@s~PQ2LU*Z5(}rr@^W~0mY5%UlXp?@=63LoGqC0u&v$-4HSH0w zw+pbE9APUcxSfUNC=eqKkO+ZB$bb<7rhe>FbnKgh^PF-RPa~w@DJ(qK<1kmsTWDqu zfgNrJ={s}mtk*u29@>ajY^;mSe1BS2DdQ#dHVa-(J0!L3!cx;<$F^Mxuf{(8bzpct zdR1he`}d@I^CDRY94Jpfo>lQFi}j9=urzUE0>znRGBv=Mhtr_NAdqqbaH8?3t8vuV z3}3SY9eZIFV&NA@Wj70>2i+eYlc8dep4itzYInrMl*R*>=vtgl9U2NNp;F&6x34IA zoEID0WdTn{jPxE56?E_KwI$s-s?CjhfSljifm5$L?r0g#3W$Jc%UCZG6puY7fXE+y zZf@zfB}3T`{rK1jJRJkr$HnO0|NQ9|kD))2IedUFRobYaO&jYFOu~u-Gz3U45fb(@ zx{m%7)br}jOD(evC;8C9XotGt30EPOtLJCnP%-R}Rjb}yoRJi+YATs#4-4$?A2>cD zU<&I+ZeN3e4%zTUdVysz^(xL}M2b7H*hK>|!1EG2a?<8@ANz+@FH7Z)2%spewd()S zm^lWV5XwW4T1AM``H+45wRWT)BhjCNzOkuMwV@JIyKx!)92K@Zlb2CtK3DmAY1Bke>%cyulSvz#U zwT;E|%v=%hh&JKXM>bVa9AP+JJRF3Xc;C4C&cQ;}gWveY(`f?Y*6@M>LC4eCEsI}4 z(YhJr$0)JD8byfwcCS!A@I|Dlg&QOtZ#e8c*><5F&+a7XD2)?$y5mjfP z6qi;Eq8`Hv0tOIGj=nwRtWiS(Eh6imZ-L8SPV*!BW89j7`O>EZl*a=7_z*v4A+uKD za}O2tRH2S?9)cWt3$SoKcvHArpi1O1(8}H48?g{Cu{#fd(ENA@i9C9*X5edQVQJDV zN3Sy}o9xckJ;&PQWzR>qBRT}K?sHnMtaYjFr+9J?DdXte7ln`aYTTCX zvx#oNGzK)OKA#dYZrQ|%0pc-M)TvMK2qo{-I>*I85*;9kyzN*z%Ax=QDB6ro?b*dF z$_*3x8&3$1(va^0H^7NFSLsNgQ}ub{4qB}5bLL@%x`7>YFH+|GKb?U5cxeU4vUz7o$efooFk7ut#*!cs!QSk$R)|GIRTu6AK zWgX3l;Voz<6o{Hxc`+mI&OOKo(wZ6f56AfRMQxBj+q>A>W{%l!HR8vh?Rm-~FVRtL z{EP<3CM%%jcbDeoMMjVt2a{#`1gj$KbFIc*m(L!3n75RoQTfdGIYzl=6>zA$O*?cb zoZy!1ep%|X1bQBcWuvoVsFO^;U1Z9Io3kq}bPaOzS43n*Zxs1sbjRjV-&zQ1G1&`5e5JLO&<7lm@PQb|-3R=f)5tS;geM{XGX zS>`!@79jhw8aL{f5DU;$=Ru^?(GH!%6KQqEMHa*qp^EzQ-x$147(XHG;0R#{<=ll) z<2!9ZxH??s39~4N`$@l#brmnRCyxf-N;0gq)G zH+6_fln}Qwcy)*1Yj2ROQS;cH{vR)4<6Lyv9H4 zO%L$7PaQ;YMX*lKQzPC=HyGmc@TE-Oy>=a#2MspjDeU;n;K7($08bg*R5^SFI|g6l zF=kOX#AkO7CQ*A#3}t!E&lga1Q{`!7SLzrb^iWU`=DK8FHEPS?TCZ^k*iH`XCHlbD z^f7FVH`~sPw3yBLsc=z*KomJZ6ph4HRG6CA&5NS76BlrdXgbD92Iw=R>QypjVXr?MS(G*){I1vsRGXs?HX zdGWy7c;Jm^7GoXA6c40wTRSlm>Y^<3W?B{m=0f&?!jzCeRu@Sa{?!XukQcZF{gPr! z^@}vGiEj{fw5fF`G^H&&YL^fVu@p8(1Ig<()E$gb7pW-++tY2ufg+%ZCjTRPzkVlGr+H7 zm}VU5P6b&Fj(kWB2H%VamxsY+!95N0o63jXxAsjK8iQs)yLl1m(n2e!r>4uo6n}4Z z^>AQopoaS8XJ0dfSjbG>W&tx7as!^bVE1U)mj^XNrZonTpc&lG+n_}_ulczSxbbwq zB|CXVx0zr!5R|_fc69*4LBgHpE#bg=$L1vz_r)sln6^$K+(jS}Yk|D@jDAKDu%m9? z2#t?v=N67?7quYOGTr)#O^A}ASN!uMHb1(Ux?q~C;ZQ4GDbK%2Q(8JCb?6{^yiECk z)A1zVR*#|AhkPj`5KM?>8h2O)2z@&g_EZpYL_1K`LvMJEyu*ct8Q>PUY-bo#w~*A0 z9hoU1NhBAjr$?WaS;%61Z#||+SK(M&1|T*%Ih-#{k;ZfiqDBbXj{9Y$?SX0rNZ_Hb zRo!K2Icad;(tEIbP=!mPS%Bu@gs1My(()TE^kdkONa#@qU4HC3a$1N*5pUt01Wc9L zD#X0|sYFU#!xD2m%-4RAHKh-r<#Knb=|L!=T?*5IOhQ(WDqGCaJ?3iZf?3$Wy9vJe zIh*YS=*zTBlob>d@5ipv;6!i4LeFgIKg3g4)yF0WArGZFN3PZIdHFYnX@OsmL3Z}? zcA<_{*o$zhIWb-fEpZUo%qJ2AcnQ8$!6-(-FkH7daUE22@jR9Ote=>;)UYHDQava; z;-ZI05c7>_hqz<@Ewk5gBuCFIrlK|mkvJel^OhNZie5boSN+mGWbdAy$3d-M1_u>&drPdZKZA<+!L^=`eAmhMCIGS0IQx*mFSevH5w5h2@8(g{5l|JBl zeXQbFiLGK1We0+V!s4=^o)XuhG_Lb}ZS9*ol|6T`U@2vD^eDR8IQ!1}5hpk zYITPW4bqVFY5&p_fx10<6Fui(2aZHJrpbwG+;3{~ZGh^XGa*)rz%wRAU7$or8%eb8o|tg z{xnBo5ZqUc`<27}VvK^ZRXGH`=6QBv5d|Re=z^X2@Or=&Zl!09nFxsxG9xrlhmZTzvumKGv?p=zH`rc&$~SD^S zAdOs(e2WRucXS4ost?2XdoXU`XCh-V`i=kbQ=1x6^9Eu?qSHO8k7TB=YuT)mg=H5dOrDSpZPig zJeietgSL8|xtoGIHFrvsu}B=CpTEgIS0%SLv3(k}^E1-UWCwv0J{l#D;|?_I9L)Lx zjt^D8TU^zIC;P5d9t36L1LA?z8z;5>h7gTINT7*eODkX?bbA0?>4`;ERRzVYhuXZN z$6564%^^P#e%F8Ez~6P&B)g9d_{ym-CO*c+bq3k!oWWuBDrK#*f8vO?Yx=dx!ukOc z&0*3!{lW1OcpC#08hG#`n5XSI*)v%L8+IT3)kb8FY~ug$LC78OEwd?jF8^ZNm^Jc< zN-a=P%R)B*xwR<*xvAoiiw5(vMdtnMB(FmaCAV)~orNPYK6Fuxo{=QS(lT;vB37xg zCnEit;8hOI{cuBrjq`iVeY}h7WW-e0>) z;X>qfx#hG*bf2;MYksjc?FP!kxKPQ1xgtLidkj8G$!Ftte%n6x!MQzF|I$GXNoDHr zJkLsAD{56t>+@Yx3`x+DXLn6r0D4NimnQ|qjyagute;m*p?ys%8bTx%c;C>>aj9xJ zoE;9(EZd6UXwe45fVLqPbwoWUh%#H>hDprO1|qOQ)&~#s1@hj0#kZOA{nLCM*cMn9 z>^%twl|67iglVDw+7PX0@SwAfRbEYhgR{W?=$T=mNkgnEDa@p^=lO|yMX(J*Me07EO4fw0LDwH3j48PGZ>^sd_c|o7Wb+f2^ zALBneWCgz^2k3)SQf$yBL0rHYX}^`fXn90dOw}+RpC#I_&i0qs<%i)ZMDE~QHfkpm z`L{?4)PmIRyl_^<_|r=#yP5kabRx>c`F3uoiIXQL$85%SSWcBTV**yo*C|RBj%-Pp zJ^#eQ5+A8z!#q}>jxQg|@o376XMF)$Y4{K%DlO9Iq4MXD!EU$Av;1kCntyq=vdF;h zZC7LOuWXntPAY35abpO^^fX3_cHgCAd}i%zHPA~_ zeuGQ&n`ug?pxN5pd#3n!%dNx$nl?UcJ#IC-z)T|fC|o~=lNu>_d5ja!iy!$M3th1Xef!pH0`WXE2VRjy-MJ{_I4Pt9HLzG zdX4+n2A*qE0*KQVBlp3_2eLG>R?E#UnamEXfIr256(ka!b$)*&zdk@H$!4`(NytwI z93VO)g*u-^sM=)j*wtxd>#AX9vkXfm9d%i^W!Jg3p;ow-LJangO;UwB+DDWut^+u4 z4ZV_%=bqbj&fC0_vRhF(ZHhkhQwa5=86#QberNXEIh8?M|9RpYEPovd7|Vx>&n6AC z4*k8B=k5MYRLCux;z-vq?L?_ZMMEbufwp$S8E1fFJ@_2SOdGktpn-9%bz4)jM{uH| zD~&|gk<3Yk1N1MdiYxzzW^FgcIC?(sMsyodiq8h9<#HA9oB$#0<}iNeIGoUHyv=7$ z*hVYGQ?*1P_2e0F24q|Ac`=Aj;xRbd`Sj`QQ{))hC(wu$$&G2fo&JJPgC+p{U4eDc zT)~_5mv_M~srO8Oz1{edqjie{PeGcn2=RInlW}&eb{6~wH(SG^!*cWNLv&>IP7F~r_AXPTD_I8NC4%H7#>a|QIi3Gnh} z9K)%;27+;$z&3BZav3U=qTZG{<=ie8_6RPxJL3C zDR#cPeMIo{axS4$T3_j_>sL%3$fUe9Lj2Q^Srw7Bn{wn?ZmQRLmR| z(K#;Ww~xkDtNsls2|6uFBH&D%m=WuVd*jq#5?P0?K$HiQi40QpEML z+T#slFeYQeCN*ql7ghM3KlDB683oTyRa&LJ^6<&}TEM_ObDl;h`s-Ht8N$Ax# zDtsp;aWV#5nOWeFQ){674(dm?%gm8z1rea0MnP{lzw;>)&M{_+z~hQm&pw=dh16SH z5?fXpftscQD?=ak7`T>E$Cj=_6e)kVo%KB^Q5Ge{RPimE_Qvu6sC|Cx{Z1+ya)W%) zW-(H5Qmp!D&^G45@#<{!o4{O|`O~jv5(%Ozos-wvK*zA8{zBoQLRjLo$tTXh633PJ zvkMz!ANvy@oI{X?N9>6N>mb(5kD#_TlY(FLKvnuE8S60py_#$}H(IOx>w6J_z62yU zz+M-m(p1Bu&-6MBbni#uCud6o&#ItzPv6?WNV&U`T)vWTt)lM=yyt_~O%LF`ge~7j z|M{=Yen~&DcF<}f2dyR^nKHX_-}B<>S+IovEn2clR@EBNr%E{-2c?F`B~!2APC z_E0TFYzk1MjqNzM;kcf!QL*LwjPcUrkVej{BRfOgq?U9)$v7JMmH?{z$=mUcO<)aYDK`zIxEuQqvmmpyp3}*p9VZ z(gOGHiRA64G6qTtEK4`-Y)Cz%aa`AHbE18*b<{)L(J(q=d=E8EuKD#vrGJvw@e`be ztGk~K<9VN*IGuiG69AMg5a4n|c;7+NHkqQy+1`1j|7=b0VbkQp2iwgFl1nsqP0>TY z5Hi}IQF?PH+R^UhV2tOPqo0t8r@z~{!xjt*4T?%;8C7j#n#M<j#!KNz`%Xxj_=)jP~3vEX)5_K9o!qs;sLgVLYXJrE6gSf zb_iVoXEQ*Z7`_Q`WVLcf=7UCECYtjSOG6B48EMvlu7#t?20}0YiHuv_$uaIdA;#lL z?aa}P%)}EARP}&JU`~4uynE6!5+P>=)u7HFbmw+uaLg}+haN(SF#!peo@VqNWl0^nQra~Q8~BL{(y#l z@D~#}sWg&eXMG7nu^apiz`kSvqp{qxVU0KCY?YD^H57>s=m`%EAAFET9k+rfCE#!& zs?m%H!sbK&p^ z+fhDSNu<_-syHP4J;dy;am&)ZxbV`>Whe_$uCe((jT{6}w`Neva5yQxH=|o=)QvRAer_9KEIuC4NxtG-#tQ8dp%wekV(6K6b?WBF_ ze5)Uzc=maP14qkI#HFCT`-i>V)ow&dvqg?T?X4{Ob#LRE8*Gi?hmD{i(5Td4qko<~iGLuUNF z{QNVtO#3{PD2tlk5-p{EGYI66hpo(|&Dw|3TDqmMHVD70s(7N0DwdyPuj6m2GvC+y zjCGExQFY)KM)R#Up82xyYe)x82A&sd6$alyK9#IoF?Wv+Yku^JJ{%NB460ocV{D1F z^ic?rxo`mYFq!K2cj5&IlSoLUt7sO(L1?uegS(%VsIw`0Yd3=G={GMAvjoHm(e3w* zAO7VHD{jWjP`fSF`zzo%#V#X*2~jARjrc7T_ZQ= zmrZ0TTVSpS;5pnjM4O}}zqSNr4w{Lr{JC<^oj}JuLf$m^yQS$F%0LW>{Mtwu?6_Dx z)eVOtG%Dqj`LzU8VY5UDWG)(R+|^kWIz(G3QehHkhxH*EVr@sZ66w#2grP5t(5w|b zQgCkq;G(g?5^dm2d(s~LkBbkdH}6-qrIwAPlk=Drda$#onJ;AO5+0NQ5taR!Dw{A+ z2Oewr`B#&eCV)ch7W&PSR3=2-lUw-D@fNBn`w8SMep2x9!8*Br5-*x)85#USCb){l z*ghzY;OOQNOQV(IUVj>TFy)?+k<)7PgnP0WPcB_(SV2$rx!(DBcbT#hH+G;~n)lAw zeOy$!I%>`VCdx-#%mgi5S_J}a?b2uol|BQfb?Ay3Xn|^Z@y`NN`gg2mL-eRIf#6*f zNi_taFPsZ~zrUQ4q3iY5y_YM4dJrgX_W8lBTgPKgM$o7dQ)z-*f9|P8n@IareV|L! z>8b1GC9cVQma%^zd~t>el_NkBsUN#n4$qmB26~|DuP}ZeBH6>dUuPP6#ZW8 zLWufx4hg=BJApwp1oup#$pHIGAW>#ckU7D1D2kg@%Xj={QNitUEHSPgkoXl)zB`*_ zrvj6_VozA_K+sv*zq{|R6_znhJf?NI)}f_4&#z^v2e|{EukA{DgWehJCg5d)Q+?~9 zb!NEU0o$L0@@)TZqzIxvns57AKGo++P^!*EIf!iF{0#uscaAi>>GDm>Db&i4yD_cY z0f&~s-P*t%TycRaPbDL~S7UazZ)ylKSnk5lwEjX>EH|g zsK2UnN~1;ex_O!aEIuWSF$63j>CLp(4cST_h=T7=^_g0H4|EI|Dy~vhSQ%Py_$ktJ z5bIa7UEIo!;)ZtyNL2=;K}+l?wig_VupGkKV)*k*GQ$J^@`?tp!?aLpW^_N2J1`ah zP(({pW3S~$ot|R3f&J0hYfS+$OFhF@YT`927+?@QByrM%5103sfAnRgkgT|gBioUr z)7H}}MH%pC)FKglHGKlgh$fsaI!k(A)L2fOP+0x_Mm0sMnmLofu(HmtD4V`+T~!5^ zo-^IL$D9|F+*BhPw0q~&mnmU@>+a|W$5yyoTX<vsnuN^e|flR z3rS*gAwIQ&{F-(U1PTQdaaNbk*8i9fIVn~QF@rneR%IUlX3)QMXj|N$Sk_F55lBrR zQ<`S%s|K5dS8g-8Mg8b2r5??~H}8Yr4qWkgxjaB~cPqff5@!BK&?GQ!v zB;od=8r)#=SeCty=W*((I!iT6)S0Q6!qssVQVo-ftS?Fr9;9Em^3e0*c9;(LQki|X z|Jkq=3MS=ml||nscDdh>6LVR(rVaeDuJFt>5^&bp36ynoaUDYyCK)=+W+zJd>*Vzy zLw(eOW&urMaNK8u#J56e*U~x9b6QT7-swTuDhXg(X#rz9JGkn zjGkwqFvG;l=MMLPeRFdHK#u9TEUU|432q;FVn1K1oewgolhbc6@D&NKnC*<5&}J&Kh-xMY^^pG8yIVg(qAlO{zbsQP|LfnvpVbxNx^h{e zM^z2fZ__%(XhhV2F?vW~70<&P8QSL=R|EBWp}qi0CS}ZLM9y0@a9~f&>6793-!w2AV93p-_jIV3?S@g|88-_n+Q_S9!zrGQ% z1b6EZ$ujyWO=4_zY{D8y@esj+>9*CoG|7aw!;zrDjHO=xm)^SYm%&6-_n7F;WT77V z4@~avzBMcN?f2ALRQe{c=s?CThv!29c3zJGdJW(*AP*7JNu7o}Tk%?W&OB9e{U^5+;F28{liZl-_mPL-O+&+6) zg7ZxtPiKar*t|=}`I7++j*Gi6^+TN|p&Z=(bLq$8XOV zSo^Y-X682xHyKS12zu}K^;E|Vk=F~nltW(i^qD_~xf_0yA$%Svnl~+jOE9yj_{h|^ zO$E0&_WtGLJzcPf>5Ho$m4DDF-Rtq($MYe1ZyR@1rw8dsX#&Y|?kLC-zNjA1c;Q%Y zGeLI9ZBwofV)`D>;Vk^y(BD%7i^8~at`d~uM%SIh_5H0>aTEuS6c|DEZ7(?)lpn2& z@h-`9AEb#Zt_^hGIhw0e=t)A%8sYx_A8IT`HzRA?f~uySeEhcFt|_TN=t+{tRW~Uf zfAm%``EB7P@15W9n6p>!i^>;}ZMWmj|$ecGGql zg6%KcPTedXPqUMQUWNFgy3IuC8UiC!9`4s|jql5GI)=N-TQ!WygUeU|W&KQQ01=!FwrqFIm^) zt?cF$<_U`M`->r<}(jwwdMH!bb z<*)jvP4YF>5bQ=F!*IrzY4Ok7#%jwZe4VaSl%8oiEkpD*N0LP?4*mU6LEwamg;(%( z$>zFXPr?OKw~}um(ka4vaPhSR2EP=v)+Z)Rb(=ayqpm%<-?K+1(@dAO1r{y4bZ=)< z<43AXZ8dx&n<0BL@{X)E1Q76X`&@JANx$+Fj`&vc*+br8haQI9DU22L=l-t39+|5= zaZ+9xK6&R-^pHlmD|3SB?`+y_|L;*y-k-wt+p|@H2A{9>0fY-2~0@UKPx4WiTIbu&R0X{Oa7~ETws&jza)D?@Q*q41!@_G Vj8>TvA5J4IS!BQP%6#V^{|^Q1v77(^ literal 0 HcmV?d00001 diff --git a/static/assets/img/logo/logo.svg b/static/assets/img/logo/logo.svg new file mode 100644 index 0000000..ba477d9 --- /dev/null +++ b/static/assets/img/logo/logo.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/static/assets/vendor/css/rtl/core-dark.css b/static/assets/vendor/css/rtl/core-dark.css index 1c8f60f..bc86e08 100644 --- a/static/assets/vendor/css/rtl/core-dark.css +++ b/static/assets/vendor/css/rtl/core-dark.css @@ -24340,8 +24340,8 @@ html:not(.layout-footer-fixed) .content-wrapper { } .menu-vertical .app-brand { - padding-right: 2rem; - padding-left: 2rem + padding-right: 1.5rem; + padding-left: 1.5rem } .menu-horizontal .app-brand, .menu-horizontal .app-brand + .menu-divider { @@ -24379,7 +24379,7 @@ html:not(.layout-footer-fixed) .content-wrapper { @media (min-width: 1200px) { .layout-menu-collapsed:not(.layout-menu-hover):not(.layout-menu-offcanvas):not(.layout-menu-fixed-offcanvas) .layout-menu .app-brand { - width: 5.25rem + width: 6.75rem } .layout-menu-collapsed:not(.layout-menu-hover):not(.layout-menu-offcanvas):not(.layout-menu-fixed-offcanvas) .layout-menu .app-brand-logo, .layout-menu-collapsed:not(.layout-menu-hover):not(.layout-menu-offcanvas):not(.layout-menu-fixed-offcanvas) .layout-menu .app-brand-link, .layout-menu-collapsed:not(.layout-menu-hover):not(.layout-menu-offcanvas):not(.layout-menu-fixed-offcanvas) .layout-menu .app-brand-text { diff --git a/static/assets/vendor/css/rtl/core.css b/static/assets/vendor/css/rtl/core.css index d5f3721..ec1259b 100644 --- a/static/assets/vendor/css/rtl/core.css +++ b/static/assets/vendor/css/rtl/core.css @@ -24375,8 +24375,8 @@ html:not(.layout-footer-fixed) .content-wrapper { } .menu-vertical .app-brand { - padding-right: 2rem; - padding-left: 2rem + padding-right: 1.5rem; + padding-left: 1.5rem } .menu-horizontal .app-brand, .menu-horizontal .app-brand + .menu-divider { @@ -24414,7 +24414,7 @@ html:not(.layout-footer-fixed) .content-wrapper { @media (min-width: 1200px) { .layout-menu-collapsed:not(.layout-menu-hover):not(.layout-menu-offcanvas):not(.layout-menu-fixed-offcanvas) .layout-menu .app-brand { - width: 5.25rem + width: 6.75rem } .layout-menu-collapsed:not(.layout-menu-hover):not(.layout-menu-offcanvas):not(.layout-menu-fixed-offcanvas) .layout-menu .app-brand-logo, .layout-menu-collapsed:not(.layout-menu-hover):not(.layout-menu-offcanvas):not(.layout-menu-fixed-offcanvas) .layout-menu .app-brand-link, .layout-menu-collapsed:not(.layout-menu-hover):not(.layout-menu-offcanvas):not(.layout-menu-fixed-offcanvas) .layout-menu .app-brand-text { diff --git a/templates/_base.html b/templates/_base.html index 0a41233..86d87fd 100644 --- a/templates/_base.html +++ b/templates/_base.html @@ -17,14 +17,10 @@ layout-navbar-fixed layout-menu-fixed layout-compact - - - - - + - + @@ -99,7 +95,7 @@ layout-navbar-fixed layout-menu-fixed layout-compact

    - © {{ current_year|default:"2024" }} تمامی حقوق متعلق به شرکت زیست آب است. + © {{ current_year|default:"2024" }} تمامی حقوق متعلق به شرکت زیست‌آب پرآب است. طراحی و توسعه با ❤️ در ایران
    @@ -112,17 +108,17 @@ layout-navbar-fixed layout-menu-fixed layout-compact | - پشتیبانی: info@zistab.com + پشتیبانی: info@poraab.com | - تلفن: 021-12345678 + تلفن: 02188728477 | - تهران، خیابان ولیعصر + تهران، خیابان شهید بهشتی، پلاک ۴۳۶
    diff --git a/templates/sidebars/admin.html b/templates/sidebars/admin.html index a644505..c2af955 100644 --- a/templates/sidebars/admin.html +++ b/templates/sidebars/admin.html @@ -5,55 +5,10 @@