From 83138fc3ed7d68bd0a589d35b7ce89d52608779c Mon Sep 17 00:00:00 2001 From: Marwan Alwali Date: Tue, 4 Feb 2025 22:35:17 +0300 Subject: [PATCH] update --- .../__pycache__/settings.cpython-311.pyc | Bin 8179 -> 8130 bytes inventory/.DS_Store | Bin 8196 -> 10244 bytes .../context_processors.cpython-311.pyc | Bin 912 -> 1159 bytes inventory/__pycache__/forms.cpython-311.pyc | Bin 32383 -> 32474 bytes inventory/__pycache__/models.cpython-311.pyc | Bin 82446 -> 82351 bytes inventory/__pycache__/urls.cpython-311.pyc | Bin 26318 -> 26596 bytes inventory/__pycache__/views.cpython-311.pyc | Bin 172500 -> 173936 bytes inventory/context_processors.py | 6 + inventory/forms.py | 7 +- .../0002_alter_carregistration_car.py | 19 + inventory/models.py | 8 +- inventory/templatetags/.DS_Store | Bin 0 -> 6148 bytes inventory/templatetags/__init__.py | 0 .../custom_filters.cpython-311.pyc | Bin 10079 -> 14741 bytes inventory/templatetags/custom_filters.py | 96 + inventory/templatetags/num2words_tags.py | 11 + inventory/urls.py | 14 +- inventory/utilities/sa.py | 9 +- inventory/views.py | 39 +- locale/ar/LC_MESSAGES/django.mo | Bin 211221 -> 212753 bytes locale/ar/LC_MESSAGES/django.po | 1590 +++++++++-------- requirements.txt | 2 + static/images/.DS_Store | Bin 22532 -> 22532 bytes static/images/car_make/Chevrolet_GxtMDMM.png | Bin 0 -> 48749 bytes static/images/car_make/Lincoln_6AdvXuG.png | Bin 0 -> 9879 bytes static/images/logos/car_make/.DS_Store | Bin 14340 -> 12292 bytes templates/base.html | 2 +- templates/inventory/add_custom_card.html | 15 +- templates/inventory/car_detail.html | 133 +- templates/inventory/car_form.html | 4 +- templates/inventory/car_inventory.html | 2 +- .../inventory/car_registration_form.html | 22 + templates/inventory/inventory_stats.html | 27 +- templates/inventory/transfer_details.html | 84 +- templates/inventory/transfer_preview.html | 44 +- templates/login_test.html | 153 ++ templates/plans/account_activation.html | 2 +- templates/plans/base.html | 15 - .../plans/billing_info_create_or_update.html | 13 +- templates/plans/billing_info_delete.html | 22 +- templates/plans/create_order.html | 8 +- templates/plans/current.html | 2 +- templates/plans/extend.html | 14 +- templates/plans/plan_table.html | 9 +- templates/welcome.html | 36 +- 45 files changed, 1480 insertions(+), 928 deletions(-) create mode 100644 inventory/migrations/0002_alter_carregistration_car.py create mode 100644 inventory/templatetags/.DS_Store create mode 100644 inventory/templatetags/__init__.py create mode 100644 inventory/templatetags/num2words_tags.py create mode 100644 static/images/car_make/Chevrolet_GxtMDMM.png create mode 100644 static/images/car_make/Lincoln_6AdvXuG.png create mode 100644 templates/inventory/car_registration_form.html create mode 100644 templates/login_test.html delete mode 100644 templates/plans/base.html diff --git a/car_inventory/__pycache__/settings.cpython-311.pyc b/car_inventory/__pycache__/settings.cpython-311.pyc index 88b24ad384b00d6489ad9ddbd205863c4599de19..638743e06e5daa5ebe6eb19f47009bcba6b1d651 100644 GIT binary patch delta 1245 zcma)6OHUhD6rLHz7(d1sFa%>BNetmV!8{Eialk-c4iJn(IC+5UZb%4rK*Y-?WR>#b=OTQbrGdfH~j;ay6dJr7-7Xx7hK)%yzV{s&Ufy; z^LOaykn%!N>;kvuKfctzI8eOe%Y)9521(Fl&GuXrgs&M#?Wz6XV}I6h>~5AUa-xzH zSjnXesCp(+HESDdH|$gc2i3CgWWNpydEnA4oAt-5JZ(6(-qxBE)z2l~oN?525mvZ$ zA&Z)4q9LL-C+i}eLLD{2gL*XJR8BHP@}d!59&bcbQTmFq*${P^nwV7;TFP0G53SUU zHfq6XYQ-69!&y2FKb>JhXBmF9Q#(4S1Lx=*vVQ7BCw1{aH@c_?-PDU7^y(7zp^v|^ zpP}X?>c@FfF+k@LpaGs8z#t7`h=y1XW0*!TLZi%cbdT%ERK`wJm9cDjStxj-wBS2g z;~1xj6J<`6XKrLgx_}EbiAlQ1tS&J^jLVoT7WZO#aW^DfD#kae}@L`29%W^JPL9@6*bBrsvN>_1>uHiae&*BE%fF13K@YI{e;a!Mu$>*_T5({rV z2)YfKRv34f#VQ_P4eN;GJtTl!B@rh{(8`(9U2M=j=yV@)ROo*HrMxbhA6YhAhl2k& z0%L>f;D8z!P>1&%EDt-2@w7GnujPqFw3tsE-#hmDjpT<~GLuU0n%_D+?!-(D>UDwjv`5$Uui0WQXX%%%RV{922 zL)%uj<7za%17kVBZO$o9Iq>5EDQyZM{X?6CS>1)(G=Y#w{T=CV{4 zghNr`R-}Dfp*{b&`E$wJCpeWyfk&~&!B2zxRj=zBUkUElH4XbNGt{PwPV<|#(dy|} MLj6%s|Hym&2k8hScK`qY delta 1239 zcmZuxOHW%z6uxtPZ7zOe8;CK10C9*RaWDyn1c>7plb0dj2MH$+;^s5Amr{^`RBfaR zTB#M0BDLtMJ4=bOAX2KT3vasZLtV8JQnNs8+f8?t`UiS!8XD7%<~uWU=9@EfzPWRM zi2W6FymUCM5|=-Jd#2Hr!!KTMbq{nxz_M8XzLl&(lBI%Dux$%T`kJv{p4*Lx?A`jz zJ?(hoS~%#D6LsW*N^VU;{R=@2+*-Nyz(!u!$;V>{j~n5nCb$abh2}R=o*$_MUY80^ zxVL5AlCfVj0Tq=$KkRLv3K_i;bj3Y%^7ZiXWEj;f>plVyI_NXp2g<3fk z6>YVt&{4Eg8;(&sI_MZWsRLc>)QRKN#VH(T1QDbYI6>X$rjzUs;Ux92zZW4og&sPM zUYyco3ga{%GR!zrl<5rms1Ff}pr87geHLfw9L~`Iw^0nxAfhzHX%0TNNfM`W{w*0y z(!LH|6&;3Zb)XAx5&z+JS9s?S@rH4MM*hpKYCBxZofkBU5xR&`it$k|G2)EN7_BOH zu~xBp8L_JW(qTV~kU*Tqcx@7wX&ecRA;~u|hHmzSoN7xjn6sQEoP5;b0# z141qRY<^}IiZO5d&X}-&E<&Z(_7O!4ml_(r5Z(m8ioLqUWlbxrtUgxy!jXZ}H=dWG zZpFegp}g^_FV)(lFMUv0T3cTEDEw$mU)0z1!fJRmU!|0O_5Gp*-DAn|crKNlOXSk& zfMnV_v^~{e3-uhGmLn=cqLjgk$Ln4@60;JO!ipzqF@^bR?(t*Y?Zhj{w z$+)rM2b&->kP8F~+(5z=WYNaL@640=WdcQ*Al7Suq!}3)3_$ec0-4^;jG`YHvD$4+ Pl-)pMIKb{I29m`9emgZR delta 102 zcmZn(XmOBWU|?W$DortDU;r^WfEYvza8E20o2aMAsI)O)H$S7&W*&j3Y@2_Ii!ll^ q1EqmLf*VMdrS{LVa?UnP)(5u%@Aay-w}&3{F{Fak9QGXem%rWEV| diff --git a/inventory/__pycache__/context_processors.cpython-311.pyc b/inventory/__pycache__/context_processors.cpython-311.pyc index 6a44893193419b847363714001883dd43bbb331b..95a0b392f6bd14a23616bff6d9d34d4222b2d0e0 100644 GIT binary patch delta 456 zcmbQh-p*OSoR^o20SNxxT9`hSk%8echyw#mP{wCDAY(d13PTEG4nrCVUfdtTW_M+6n($wOTVvvr>+Dsvqw*-<)i;7b7k}Knr z^YcnlD@uwufN~&B#UenWf#Cs%&{U5rBB~#lnRwVfFfg&QeFlm%Y_vGfXjsGsWEJs) z2mv5*i!rl^4@eh-tWyAiB6g4*SOJLOoZQ8xy7B5m6(^FuLra_4dPCa z-C*S_8NjN*`hRiQFN_Jc0RRivS+4*9 delta 207 zcmZqYoWO3eoR^o20SM;m9#4~IWMFs<;=llq4+fukfYfw`6owXtD25cqU(~UaR7;1jG0AjK)RR}NGJfo#62P05NVJa=E_{Cw9o1apelWJEa3gm(uP%H-|J}@&fGJarVW7PP-fJuP$0|0d_ BCb9qk diff --git a/inventory/__pycache__/forms.cpython-311.pyc b/inventory/__pycache__/forms.cpython-311.pyc index b0a88642fc9ae7907e91efcd05400985450caf98..38fc080181fb50d2e8d56a375f71d88043cb050b 100644 GIT binary patch delta 566 zcmZvYUr18{6vp@6?cQ>X|quPrC5uVghZt0X5J z)Zw&l_5Tx66eQ7HG%S|+vRC>K;H=XOY^DcwZSb(oHDyAWW;cGqKALckBgnfp4Fiq* z!2?0+g28Z9qoI(4Y~C~)c+9IqBA4$wE|J}@V3_y#3&3@%t3QKrp01xUVUiO8n~2Yx zYFa9xnKGegSjB2ftr4w!GCV5c7_Zrz1R{L4V?@AduIW4n4D$5;x6pG3BMFSqLgY3w ze5)$}T%&IXf_l2|pclAF$GbzA;HTZ4z!b?nEx5zUo_7N7ap=e!;33sS`*D{iqlW~{ zQdMlb^hD6_*hbl?llo$-`C_aYctKy{aXe==@e;_hJ?Q`n6xN#Xnn$(wMwGbsMB1b* Yf&Spda-nw2HDC5ie_=Im>1{Or0-)u(x&QzG delta 551 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 D!M4K# diff --git a/inventory/__pycache__/urls.cpython-311.pyc b/inventory/__pycache__/urls.cpython-311.pyc index 4b78d02414c4ddc4855481707c7fdbdad9d28d7e..9e152eda570a9c1499b547be826a1a62d5301777 100644 GIT binary patch delta 2320 zcmYk7YiyHM7{~i|?RL(#wkrb$D`RWNy9?}nhZ`sigM&c_?Ai;vwB4oayRi$q-^a#K z_-G>Vh~O82m~at^kjAKJ3|}M?BW|OS#*c!L2*xh*$)I@7c}hal{`35v^M9Umc~9GW zKT3~&lFXM)reqy^{d4Q$q0Yur<~91v4L1u0QlVRt!)H^^>v;fgSY$Y684~fbr7GN> zb{hxm>9StCa5^Caj;B8n!-Fej_;Mv$3s+Uaxm6g`)x+@7>OA53ZnX^N49w4G$nbr} zEs;OI=4^Q9+FvCBb{lK`h_yEU)|t>d4(*Zxr+Dr$pYCs4BX>zpIfT}g>a`e)!uQu* z(n}{!+l#|jv#9}cvXhM2tojtoY|Z&J@lt|Lca44UbxQJ`J}GH-A24KPpy36Av)4ix{A#!_vs zrovr{EnPYrey2RakhZoWIO2ZAAD-EBRgxNDgR@rh!>DtI)CQk9%MwFuZ6g}|3ajPpjUNf>2bQ&(vGJ zk?DMOHq-OfrA+TvZ({nQT4AcxY-Jh}`e98Gi|>f|c})R}<=R4~b+rylkXrPyTD{Il zkL`()9kA?O3H|je^!gxN5vHYDUi_k#Pf%LNTL)bVz!>iLvaLf;np zh0s6i`DliVkJh+&JSp^|i+8@~;vHfx-g&*7d%SM$IqFuKUKg2%ZU>7KJ>0X!qa=z& zJ7K#gFQL*Hgp(d#c1P%Q4{uuN<=WuoWz$~1-0NQMdFb7W#k26(n+0V-Yr-6BP;rpY z*e~?#!NPgbUrQ8+vOw)oYL3vX2UK37@*>TT(EO-5GiKBq*DdRqJmV7U#KwnTR>`6& zJ8HIZXBKy6ac5SnADtuUjFO@#F-1sD)MSe#8H|a`Iw)?SWc1}i%Nx|4a|q6)_>xr7 zyx;-dyhJxI(vk=*iJEixL=HZYgHPm$RVImzOu$5gOeTqdDfqY{k4z)Xz#@Yq2($2l z+2#+=S`Q(N(D)6@ zgm)WdGK$$*m~K+(9D*|$ZZs*RGFi-054L8NxDb2-{0QCPYF4a02m{ISz77~}lgS`v zr{J4rl};ntKyFd#5rjP^2(&0Adre|xwWj#7mWsQX6*aAo-%WNwpXr#y z>d@H)U$>~F8KDD~8H5lHLw>7D`VnTKr8SexAsmJIRtKF&IADfPTJ5CDEGG8C{ZgduZ$Njc(44`X%)y4%ft|DgOm(R# Ua{`W~EbmK)n_X)SM)nW-KWkmVQ~&?~ delta 2244 zcmY+FYiv_x7{_z+I6(+eV4A6wHv#zJHp1M ziNO#Q*ds`YLHs~KzaUl#eh@Gu#2eD;F%J1aP!fe`QVghkAo{-NDKR$9Kkx57|L1w1 z=Xp=ldpEgnZg4qgH5zpW{roZePV~I%XilNxoZ&*%P_`l*n^!K2f0ung0sC_+AjTQt zOztqekY{1*_^WwW6cEdoAH)ymD>=AWAOrV4jf2MpZrHs64?oafq7 zqau8n?y9atl>I>na3)y0Y#6RD!wlD1fU59aMfhvB`nhmcJ~C8vmxEXd)^fPS2n*@; zKPAI3Uy60zDZQ)!TiNRPjWU5R_Z>aLh0A>NRCPX}s`tG~wcK}%s=<*_wIbfM0)%*; zSe(xtk5_M2^6{3&Qyk}nUz=JvAFMZTae6)y9HzcQS31b)T#kcCx3p<+aw%)*EGw*lP@OQXen(lMtReF(H-J zUa}>4OOm%pyd~x5z3`EpHSv?3~R>WG8woOQ6mzjQFq-;Q*dP4LuFp){+! z(B95W2W7q5&N}*C)?z0Mt8=m@Mx1gYXKl4y&a_G{XMt2L5RF6(3!3GrMZ7BWVFr~) zOj0v6bH0m}QYUNFwbCWWhBMQx=ug*5hV?%f>c2JACk>k=!{*Pk6TCCYJ0;$kir_S3 z&)mk-6H;Z}RcnH`CwaTX+f#k$=!ZXD1F*zntR6%dBLA!I(%^rC9!AF~frzI@7(?1a;H1YyUP9UeH$CNKt013ffhQEK z2re*qMdC&Xf|o)FVE_($MPU$OQh@7T6PZG4fHgjmY*x$Zw#%>s!2?mBiFgsZ;BB9% z?M8^H(^pdlTE9`~!`)Fe%mz%t7}B&F>iv2$gVYQ$zmc?LrB6BL7s(EUcKFI~B2EO~ ze1}-=$8|U>J*AcBYNhJ>M3XDQyOX?I;@znTT4Lbspz}uPhXWm=unS>43odsQ3lm6_ zS#Y;QPo|I>K;20@&Q90TKw$?$J4|-!h!epFr#efBAE5(2qtJ;EgnOM8YeER&?DQ;F zooke88WLuAN~vIPDV0Y|QV}%v!^SRAy9;6bSyVL~=`actxVt|a&UNX@EK)NhyF}8W zk?XX>qHd8m5IUf)TU^zNFrZ1#srW>rRJ!I;PJ%Zld9%cuQ-kOjf@9s~!Z5;K4P5Qk zlYL0r;C^>GY0Qz&@IijSr1c{Na?*Y2*d3D|-0g?`0Xk%a$sG7NKwl)J26zylW6e#E zRo6quir@lQk8zb7!IPUVcll|Rq+4@Ili-_@e3QgCrM&3y!5JFsM+n31o?;R~=!K{B zNfco>=z5-mwxCuR!HvDS&>y6oA#DQ)($4bI)B7}NBn|{0JP6YK2m#QAMAC!M3oZ&# zgaJ4dqQ4o0(LA^oqVG1+bRIkjnaB*%77)WFD;9E=r&J1+j$OQtUA!)}RVyFftW9_9 zh6|B`B0aMin9aa!hExmMTH$0^BsPS0NKkMhbU|iBB;5#M*hC?M&<~>#dL0P6weViV zB#arx^{A5moBj*anXJPA diff --git a/inventory/__pycache__/views.cpython-311.pyc b/inventory/__pycache__/views.cpython-311.pyc index 845275c110f6fc68434e4cab89f031f49c6df7fc..2378a4e2d870da4bd92ce464f0319268c8b4e703 100644 GIT binary patch delta 14328 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μj7(yvm9aX<GMUbd^!gDhd3ycY2Xt@2u= zwC9wJ+RKAiIA`S(od+B0iQAity3OQRdT<5HS;c!ycv&kOIOT}{aO!;~8<}iE-y{*^ z_aUeMVx4j-P3PVL!Y1C_!= z=T(V6^WX7jnZ?Al3jW-G$Mb`g!o)1`T46Wwp$OzaBAwi2Jh27Og0G2C80-!XND~vG zA%2%827(@a(?xCkwwG|Ht+R7a(F8?r(F`~Bq`l9L-bNKBiOc$tUybM`Ji!gqUl2`k zSTB)Eev1jxpSXjjq&$L4C*-N8*$|B3|eXxT%k50X^|TAKG#Zj_PYOo=F<( zG;&T>U)xdrn|;L)Qy`Zz89?oe#PiQl6Z-X|UB}S`Q!w+H48)!NL_?tHD7QU%lyJkS z{-T`|=N-m4Cc~xu*yRP0j9>N_ohlj_!2l+spKM@+qk*Fah_bqm8>sj(+Mh@s{b--1 ze~wT+wKVHF(aKk0Edh+;CiPUDO^)IcCgYxLa+JetzvsmWQ(eX|nZiTrl{_k;q@5KWCp7Y;hgNndJLUWfr{mFCa*k+ighTAA4mr*=d6fhD3e7Dt(+Bc z8V&V3^nQ+=28mX+DraqD!p6GOkS`u2>N!rWayB={uLg)-AwAC5H z20&|LgoroF(@O#-jSzM^$*me8J_l1G!eIr=23gF_+By)G5dP7Gyo;z?*HEE*-IRiL^sipeieqPnm`3eo0@NNvez zkqNL6A7+Zt6%PqnW5jH@jMvAA2c~CP2a^l9JeLk&wX$gWJzGV=m@JV64LB}TT06&{ zPhU!nuxC!l7@lPxO4p|hr3WiuAFZTus^_vC5$)HDlT`vk-0i)wWe$y8AI#06Z;N!^ zxGhI~1O4QhHb2J#OkBKiMJ_G*=cEZ5wIN+c2eY<$BGxF6l?j-gCr&{ccFCtLsukws ziwj1T>law&LB8z8@nWR0kP4!gO3nZgqf@m2k_sbWl9zNml%yND^!|?F@0b++N=f0*iWL4_NZG)IKedrx(I~~7;%{Q)*DcB}PRY+t_?r@C z9~1dy2Y-?w_dmI*$(@R}p8_hBpE$_x7WfMSh2Q1n>$`k1myhA{VOu^;%SUJVbS$5N z%9~FZzDzhIszfr0VZsqf8FrMxLK*RsK|FO|HttX|@Fw$aR|33n&q6UW z(ieKe4VRkf(TJv7yJ?n1!e)Y-+T=GyxX%A(kS{c2fo3*F HOve8MwUV>^ delta 14472 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%0D!>Ez8A&h0= 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 F{|mP?SM2}* delta 1786 zcmZuyO>7%Q6yEjEuI+VfXB|6^<2VVaqHG}|4Q=5-g7`^GijoRpA(|34OLk*6@lX18 zUEvGPAzX5xq{C0)06n0fDiH#5;mUy<2at+{_5w#ZK{;@M3-8U=v8X-LKEHW?^L_JX z#_v17EGIti>x&6E{%U<%{-Us-$OZNS`%}+J0l^AxD(q=FE3L$>`0YOS)o5l>I+71W zK{&+EA7*4%I6(EVZ4g!xR(!LsJvF0U{$#tF7VD~}bVaAy(ZTqU%nIUoxF0Plp*fQ< zlSiq80IrUoKg@nBy%8|g-OvN52HIKE=^j}HGqWo`kdZmb$o9w>F$cRcvh9qAb3HPK zy0{It;~&lUh#xVByH?1V11||$k=+blVRGnREQ+jwM3e=>w`Y^6d6BZ^>b7fDA&XNo zIRhwmgkP1+jrqO#TN6Jj#k)%Jhfonx>~8pjB*nmBTMV$KbV^Jee%e+b{2kCvmc(m$+jYIBb0lQTvVE-&{>vLm&B*osye35q2YHrX<87TCFdNw zp)Td0AT>=wB0)>SEQvYxw|Yi7O)8I>X0z!DWr60;khsX!(t{&>5Bs+*umCFZU|tMcp@b(=J<%tA)Mb#f6g3iI97e@9-4f>bh8+p+YsGiRZ*2hURkU-E>LruZv!44m1C3p(Mel&GWdQg&^rnRnLpTOWRwx$2TWGq)=8C@| z>B-Smah#LxL9XPt8LqO=#->`lI>(Pd@1KQU6p5YBBILv7EIQcz*7?{wo7G{#VRzk~ zDqVc2qWFfD#t+5R*AMN9k`J1_J2BI`gf6@rwDVp9&xoaO+v{6+8f_D}PwJrYA}?6Y z1%Nt0kjgHRxJ(7Y{<)IzF6a%Yz%}ylZc+^=jDqhbztH#yoU9`Qxaj^Vw>mI*uUq74UV54DgW`IXTa;jGf-(bc;j@}D0@MCaro8a=Mtz-oH4I_M}QO= p=*s>Rc@pnfqhig&4o>M0%6W`^eEyB&$;ZDF6M`yAf0E!C{{f$zcMAXj diff --git a/inventory/templatetags/custom_filters.py b/inventory/templatetags/custom_filters.py index 721307ab..9629cb29 100644 --- a/inventory/templatetags/custom_filters.py +++ b/inventory/templatetags/custom_filters.py @@ -3,6 +3,8 @@ from django import template from calendar import month_abbr from django.urls import reverse from django_ledger.io.io_core import get_localdate,validate_activity +from django.conf import settings +from django.utils.translation import get_language register = template.Library() @@ -230,3 +232,97 @@ def date_picker(context, nav_url=None, date_picker_id=None): 'date_picker_id': date_picker_id, 'date_navigation_url': date_navigation_url } + +@register.simple_tag(name='get_currency') +def get_currency(): + return settings.CURRENCY + + + + +@register.simple_tag(name='num2words', takes_context=True) +def number_to_words_english(number): + """Convert a number to words in English.""" + units = ["", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"] + teens = ["ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", + "seventeen", "eighteen", "nineteen"] + tens = ["", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", + "eighty", "ninety"] + scales = ["", "thousand", "million", "billion", "trillion"] + + if number == 0: + return "zero" + + words = [] + scale_index = 0 + + while number > 0: + chunk = number % 1000 + if chunk != 0: + chunk_words = [] + if chunk // 100 > 0: + chunk_words.append(units[chunk // 100]) + chunk_words.append("hundred") + if chunk % 100 >= 20: + chunk_words.append(tens[(chunk % 100) // 10]) + if chunk % 10 > 0: + chunk_words.append(units[chunk % 10]) + elif 10 <= chunk % 100 < 20: + chunk_words.append(teens[chunk % 100 - 10]) + else: + if chunk % 10 > 0: + chunk_words.append(units[chunk % 10]) + if scale_index > 0: + chunk_words.append(scales[scale_index]) + words = chunk_words + words + number = number // 1000 + scale_index += 1 + + return ' '.join(words) + +def number_to_words_arabic(number): + """Convert a number to words in Arabic.""" + units = ["", "واحد", "اثنان", "ثلاثة", "أربعة", "خمسة", "ستة", "سبعة", "ثمانية", "تسعة"] + teens = ["عشرة", "أحد عشر", "اثنا عشر", "ثلاثة عشر", "أربعة عشر", "خمسة عشر", + "ستة عشر", "سبعة عشر", "ثمانية عشر", "تسعة عشر"] + tens = ["", "عشرة", "عشرون", "ثلاثون", "أربعون", "خمسون", "ستون", "سبعون", + "ثمانون", "تسعون"] + scales = ["", "ألف", "مليون", "مليار", "تريليون"] + + if number == 0: + return "صفر" + + words = [] + scale_index = 0 + + while number > 0: + chunk = number % 1000 + if chunk != 0: + chunk_words = [] + if chunk // 100 > 0: + chunk_words.append(units[chunk // 100]) + chunk_words.append("مائة") + if chunk % 100 >= 20: + chunk_words.append(tens[(chunk % 100) // 10]) + if chunk % 10 > 0: + chunk_words.append(units[chunk % 10]) + elif 10 <= chunk % 100 < 20: + chunk_words.append(teens[chunk % 100 - 10]) + else: + if chunk % 10 > 0: + chunk_words.append(units[chunk % 10]) + if scale_index > 0: + chunk_words.append(scales[scale_index]) + words = chunk_words + words + number = number // 1000 + scale_index += 1 + + return ' '.join(words) + +@register.filter(name='num2words') +def num2words(number, language='en'): + """Template filter to convert a number to words in the specified language.""" + if language == 'ar': + return number_to_words_arabic(number) + else: + return number_to_words_english(number) \ No newline at end of file diff --git a/inventory/templatetags/num2words_tags.py b/inventory/templatetags/num2words_tags.py new file mode 100644 index 00000000..6cf589fa --- /dev/null +++ b/inventory/templatetags/num2words_tags.py @@ -0,0 +1,11 @@ +from django import template +from num2words import num2words + +register = template.Library() + +@register.filter +def num_to_words(value, lang='en'): + try: + return num2words(value, lang=lang) + except: + return value \ No newline at end of file diff --git a/inventory/urls.py b/inventory/urls.py index d1590793..b75f59bb 100644 --- a/inventory/urls.py +++ b/inventory/urls.py @@ -195,7 +195,7 @@ urlpatterns = [ ), path( "cars//location/detail/", - views.CarTransferDetailView, + views.CarTransferDetailView.as_view(), name="transfer_detail", ), path( @@ -213,9 +213,13 @@ urlpatterns = [ views.CarTransferPreviewView, name="transfer_preview", ), - path("cars/inventory/search/", views.SearchCodeView.as_view(), name="car_search"), + path("cars/inventory/search/", + views.SearchCodeView.as_view(), + name="car_search"), # path('cars//colors//update/',views.CarColorUpdateView.as_view(),name='color_update'), - path("cars/reserve//", views.reserve_car_view, name="reserve_car"), + path("cars/reserve//", + views.reserve_car_view, + name="reserve_car"), path( "reservations//", views.manage_reservation, @@ -226,6 +230,10 @@ urlpatterns = [ views.CustomCardCreateView.as_view(), name="add_custom_card", ), + path('cars//add-registration/', + views.CarRegistrationCreateView.as_view(), + name='add_registration'), + # Sales URLs quotation_create # path( # "sales/quotations/create/", diff --git a/inventory/utilities/sa.py b/inventory/utilities/sa.py index fa34307a..de5cc29f 100644 --- a/inventory/utilities/sa.py +++ b/inventory/utilities/sa.py @@ -1,5 +1,8 @@ -from plans.taxation import TaxationPolicy +from decimal import Decimal + from django.conf import settings +from plans.taxation import TaxationPolicy + class SaudiTaxationPolicy(TaxationPolicy): @@ -10,5 +13,5 @@ class SaudiTaxationPolicy(TaxationPolicy): return getattr(settings, 'PLANS_TAX_COUNTRY', None) def get_tax_rate(self, tax_id, country_code, request=None): - - return 0, True \ No newline at end of file + rate = Decimal("15") + return rate \ No newline at end of file diff --git a/inventory/views.py b/inventory/views.py index 4ce3cca4..29882356 100644 --- a/inventory/views.py +++ b/inventory/views.py @@ -319,14 +319,14 @@ class AccountingDashboard(LoginRequiredMixin, TemplateView): class WelcomeView(TemplateView): - template_name = "welcome.html" + template_name = "login_test.html" def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) dealer = get_user_type(self.request) - plans = Plan.objects.all() + plan_list = Plan.objects.all() # pricing = PlanPricing.objects.filter(plan=plan). - context["plans"] = plans + context["plan_list"] = plan_list return context @@ -862,10 +862,15 @@ class CarTransferCreateView(CreateView): return reverse_lazy("car_detail", kwargs={"pk": self.object.car.pk}) -def CarTransferDetailView(request, pk): - transfer = get_object_or_404(models.CarTransfer, pk=pk) - context = {"transfer": transfer} - return render(request, "inventory/transfer_details.html", context) +# def CarTransferDetailView(request, pk): +# transfer = get_object_or_404(models.CarTransfer, pk=pk) +# context = {"transfer": transfer} +# return render(request, "inventory/transfer_details.html", context) +class CarTransferDetailView(LoginRequiredMixin, SuccessMessageMixin, DetailView): + model = models.CarTransfer + template_name = "inventory/transfer_details.html" + context_object_name = "transfer" + def car_transfer_approve(request, car_pk, transfer_pk): @@ -994,6 +999,26 @@ class CustomCardCreateView(LoginRequiredMixin, CreateView): return reverse_lazy("car_detail", kwargs={"pk": self.kwargs["car_pk"]}) +class CarRegistrationCreateView(LoginRequiredMixin, CreateView): + model = models.CarRegistration + form_class = forms.CarRegistrationForm + template_name = 'inventory/car_registration_form.html' + + def form_valid(self, form): + car = get_object_or_404(models.Car, pk=self.kwargs["car_pk"]) + form.instance.car = car + return super().form_valid(form) + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context["car"] = get_object_or_404(models.Car, pk=self.kwargs["car_pk"]) + return context + + def get_success_url(self): + messages.success(self.request, _("Registration added successfully.")) + return reverse_lazy("car_detail", kwargs={"pk": self.kwargs["car_pk"]}) + + @login_required() def reserve_car_view(request, car_id): if request.method == "POST": diff --git a/locale/ar/LC_MESSAGES/django.mo b/locale/ar/LC_MESSAGES/django.mo index 403845f34ac26946d90012cf8f016a4dfe14cfb9..5e7daf72654f143228c786e182eb0aaf54d6a1fc 100644 GIT binary patch delta 50573 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 Va_-F*f4jQNG`3kwYUWEW{9og%B#!_9 delta 49366 zcmYh^1$*w9m{tsL8R#(uiMc)FBK*#?|C<4dS0vvO7*-UyFIU8 zfaeXxbohCX=UpN__3xgy8Q)@kT=j=b58CH>r-)y}lDKj|pair z%{u6Lt4XME$n#3zTf9X>`3`&DTH*XIPQ5xurh|zzBh_MArgMaWcUeFV8Row!Ca_{s-n_6nm?i{UTD|%U}WOg z&Aa9!^SSv36O!+5Oh@}(?311s9dlzK7Q!GbiW*r2#>G;o5!b>-SPx_4Ml6PZUO+^(-fEy)&4fO{|rp2bA? z7*+2-7!PBdb|X%S>Tqt<^GHzggDsHE_6T@?2T!0l%@ZI8sR1^j(4#f2A}b~ z9M}$1;#Aa#*O@yoKJkO7fnG*+Bxp^(p*oWAtec7SsF7wvM4k-xD;wnRmb?)098*Xvk$60-*5sN`8Z2hi0a`=RD;{iW0-*Wb<_;KKvnn; zs-fuTT?Z1P;%QL%vZCrMh}t9NQKzUWCe-=wM<5#s<55$+6;*JrdCI(LK0_U|&zKPd zF1U_mM$K3u)b(N(FKyS$V?xp!VrA@tVLJai2b`?RzH(RKoYDDKB~1WvqosiMPc> zI2eO*Dki~Am;sMl`b*RuGTs$ePi{;~Ji@Gx*@<^U&D>n{r6ce=0eKJA!$?=%F-nGN zC?BdoWz?;=8!G=))RJvRZKmC*89Ibof(xh_yoQ>wyQt0i997?^tIU5c0%@;#eyd?l z;)75OhB#WJXD1TP$PPc8u8z#kp7V>XaPt z5r{+J6h^|Es5QHX$?y|uNfO?6$0iGEkCZ}fzSu)t)-*9HV`@|dIZ(U27^>o`W)BE1`7FJJ#Vey`s;X9=Vu;RB|?FZA0aMhU)NZOp9Mo z4X1kGt`|VnR}{l&->XC*2nV8$(-71YkH!)>-L79WucCJQO^k%m9=eKSqehw#wdqo! z8p?p$V_~RzBT!3I6@6OMrUX>53#vdL)Chh=jdUXVj}3+rzlUL%@K4Xnk7Y3<4nXbl zg_eF4GZ6oV!In%Td%?UB@i=4zpqECvI<)M~$eZ zInrE(Dt8LCB#+JKsE)oyb>JK7cqe@729m=^KqD-Pn(C_N_vToPLi#FHMZcj&xCf)- zDU5+vuoT`$)tC7%x0mvu23Qz1z{*$wn_x8bEhi9@z&g~3ccMmcAGK*7V`Th*QSl#C zhax|79g2mVV=pZiER@J*O#2`6uPI$ag3jqd zjEmP$=}%Dwf?m50#YHuo8kH{;<6{J>p<1YVTA&8d8`ba#RD-in$8_R@N{H%6I4Zp?Y7^B)HPi&tVh2>dpDcX_D*s|sL+ep9vmG^KM^FQ} zf|_C9Qv#Zrpm#1IC2B_UVInM#YM?Qy;tpmX^G8(0Q_Ur)Q?b!Jhnl(nSv>H)8%R22 zW_(@_7x41hg(9e_DvK&u19d!GpgPpn(g$Ed;^R;qTWGFDjd&NTp5v&QxMb4U25chy{-+X1hDTAGIN0}Z`V*_)JW4*8e0j*n3@oA49!pNv380_s^YRE1?w4cA6h*v!(qT70lwpMcscb1(`1ikh(lSP;*l zW-`WS_iRav!Nkj>>Tmy<`PYbhlAsO@M8$`r92A+r&x z!-Fszjz^7nD{92|P#t=M;TY{7=07WelK(h6qHeuYQ59@Qt?hjb!DwHd`7tN)mZ*G_ zEWQI(-(%F;$N%OmhDz^%s%HvnAbWilc!YUKi0cLTErq#>_rkom%)E-Zh{p~H@Nc4` zs1Y|nEkOq?ghNn!Xb0-}?ln)KHuF`B`~I?oj~K{>7=Z!)O%@wzP`f)DYN_&| z*07MJmqm@Z8fs+yQTZ05rhX-=qdP2q49n^KUniiRrVnyG&4TJ-K2(F{P@Aecs-h;S zin^dWI2e`hCses9sE#egTDTr{YJwsKcm*&zs=f$}tMgyY5}KlR^Y<3_S$w?37h-9y zuf>%38dG7M$gTr9P#w&N+FWHZH4a8C$vh0kOQ;Tiz@)U#)^`cXP`f`JYR$4?Pb`2l za5eVEQc(lENw^)CVx?#S-eP=-MR7{>0RPVePh)Z7v10`If8tpMbsrgx>exK=>7lZN zKvFz_iSY(%CSF^5YuP#s!;n)+W+GqK-1j~dZ^490h;J&`1Sfd4yUVN{2{ zN97xi>d6 zPSa>qhbN)xTZme+wHQa|eKIfy!4IH8XWk4YWd4 z`~&J?H3YRZb5Qvgnk&r>Qs;js0Zq{XRD;)1Yj+QIXY>*Wcr76^Y9`vF^7lY3$xo== z|1)ZeH=;Uv5S9N7>iAtl)&It>e?p%!Mo!{(Z#+~5sVtrgs}e7aYG^cSgbPp=uSQMj zX4IWQ9q)tB?w$0K^;hz+*Obkbt*zpYg-!C zf!e6!*9`Tv?1S1H{ZVT@47C)aQRU{@^)==uR7ZEAI&|DeKqI<>YT!?-hObc-luY5$ zYoeB*3Hmn~s>4IfQK*@ifa<_3)Fxbm>G2TO$0t|`OYy@$4Zt^^fGV1V>c~vg)GRYs znd`6$>61;(wrK;0>z&#MwFjYB+6nXEP;yj9 zGNC#WYUzbBoOn6RjXqSz*P%A|HdOxOs19C4?mIs3rd@b|TH_a}sria(I94uaI@I1M zfZDw^QRlrUs-vsSb*Kh5VJ_T-I^KVwI{rV@(tW{5I{(RYyUmjZwbr4io>oAubuEiG zvv>#8F7A!meB)6aUtsBLQ5`ynDu2wpj9RJ(sJ-+G6YBg&33ZRn6sVq-K=rgN>egHX z)nGkT&%2;zXe?@KXQTgKkIHul)zD2;2cBR)d~fMF!d!Ym^l7Tf5YQ&6f-2YsHL~ug ziie>#={!{a)u^@Ih#KiGi~oTte+<>}OQ@N-iP`Zvs^iJ>xS7tJhx4zD#Yxb}%c3f* zjQ){Z#(HK~%)#|hsLu%-Q61Te8u{<2@|RH^xq+I2$L2fCKs+$7%a=JX=U)xwAVH7K zJg6R*Lv6mgSP47fRNR7^flB#Y!?jQ|)Ce_zUZ|NGfNFS*#b;W4xy3i4W_X{^0_RZ; zKR`{z>d;+Ohn}M9d5`+U^AD;X zFI;iXUnBzMiATi{td3c5AZp5&qAL0gb=-ENDma50*#*?c^{c2Q_<+hEyO2A^$x-o) zsE&oAX0QRanui^nVMI+O)<<0@?NTBtQ{gDT$@ z{Y#0;HyCvvnSnk{*+v5D*#T6;Cs75jp&EXOs_+YHBvFdE{0UG~n-Y~jy_pj=GvTNy zFNT`g2+W9`QT0wK!ueOjD@jmCHlX7BQG4P9YS-RE9na^eDGn&=t|vw9nQW-jQxSu) z0jgYo)RO&#dhX9dwX+9xY)=>E{HwwzBxq{BS%##=To1FNc5w;R8V|7a*{Dsr9@W4> zR6SQL{ROIlpyIB<)Tj~XLM?S!)Dm>{5y(kk9O@Rl16A-ms=#wp$0C(*>8ViZ1yBuF zMa@)m)bqTD#V4ckEx`=91GTAdq5n8WxTW^RB%n1-hI;;IL``K|vo~r82X-cjrS*X>s&dXz?!Q zP}GQ~p=N9`YE!L6HFO3u;{&XTG0V6CHNmLFCt(E6Le1P&EI|9-Z33FQBxT*yXFwIm zi~7V<1T{l-QTdvnHeW~7z21lF*kV+^^{CCb71hv5RJrr0nY)AP@L%Zv`TsWpsvuc8 zcWg4F3gky^u2QH1b?kb3R0Dlb`NpG;)f`lVtIgj~&y=mG`@n1S9qNAau^i`L=QOaq z8*zNpW=W13NqW>&XG0apkJ>yXPz^UjZPxFxAr3?}co|hLK?S#I)1cxRQ1#?Sow7m| zd~VHalc0v%qDImc)v+O{sh)@`uoTts9@HK=jyiUaQA-uIqN^u8YSZRGEoE+0M+@5Z z@|Ir1M?ekKw+x+84G%(fXdG&nPe*lNEvmvJsB&jeBYKEhs+Xt%1XOa@6QGtP3##Ke zF((#Ab;#GAfEwzHI^RQ48An=%si+EkZn53%fVRO`oC!nT!1?m=j5ZmE>?1Po7xlc0tu?+E- zsC@aVyK=Qq>0L1bH(@1whZS`GBWk#Bvp-=$E}TY9ZPc1>W>TTznNTxP7PHWiho2c*>sD~N7eHyCe!)fLqH?EjLP^HbtC$MsyJ>fH}%O-*VCZV zGg~}2YV#FDEln*{N4lW$^+HYkVAL^QXX*RVr!_l4ATwS;HSi6!woz+46QMeo4pm`s z)CkL?X6!rEOpHgBpMo0s9E-2A_y$xv`%pKcC$;VQ|CR*p-ha?P;yP~1lc7#SPSg#j zsHN93+gbWRi%&uAnO{&H_yaW~XE8lKN1c{<-??^De8>4$k28>vJ&an)7pR#IsOuVzjjA_^kAOy=88y;y)YO+p zb)=4^H$&y?f*QdPRK;UZ`RCj9Rj8%eg=*j!YGBtae%JgTsy$yoJ=e2%sF9?yct+Hn zEfiHjbySDyVlcKq-4BMLIxreF1Jf=3E2_R7sD}2TX6!7gV~>$?KJOy|jVy9~x5i0P zYnBsLpdzZ`<`{x~QB%AO)$ks>ejI~|-$yM~qz0~ha@5*~qHa{RQP+E6RGt4Z1hh6& zP@8Xo#eXq3qDHV6)zMQHzk@nXFD*T&p}X-UM$K4W)C?3x?U_=jc50i=Fp|!HCj!dY z4b@Oz)YOhbZNl;9WK;*ITYLd(1{Py5u0!pKGpG*SM=jY?RDJJI1Ne;UNbE+Oe{GiJ z1k`XA)G;f7YPbrj!5XNMHb9;8&Zte;1J!|nsCs^~_)OG*mZGM54Qk2$u=H!@y+(Ha zpOT;k-k^FOwXqvX9Mon>hZ;#3>U`5joLfouq-aY^7sU^U|19P z*|I?s&cAx@Bf)MjAk9ubK{vn_aBx~*(&WGxGG1N$_TY5cSP zUCfRD*!7$({2lgrMF^&M3F{&di zQ4M!Tb#yRlX?{e_>||8_B^X2Jf29Jr33Yz=qV~c$EP}646@|2RQ=AvoKrvK>l~Cmx zTfD2qhoVM44K-7XQMdF}sDT_sUlsyy3216lwQ)ZvjKCn`y-*GJLsc*YHImVmJ`L58 zxpsYprLV^tq;IwB(b~FliBWqd9jd-UZ8`s%ijpL#r{z%}G`>Tn_dxB1zNn52GDnzW zQJZcGYFE!gt??G~EEXXC4D(=yc5XA)Ma_7Rc0M=NgGkWvnu~f^>_kn`EzE_{+q=^d zj%uhR>R2^G&0IIEfYVUB{3fbg><;$91xpaGg?VubhT$O}0qy>eSPY|g4A5VT^U9-o z`~hcS_D-&X{aBiK(D&|+Rvya|pNN{di&z|AV-5`K9N_=kE=^D!Uy0gV`%z2eyGuZ8 zn5T=oPyz=NZ-T1u2I~C&jhfoTUELanqV9kdP$Q|26>$veF?#`r<9jTF{ksKt^KdU} zZ#C}jpHZLJoPgH018S|ip=P8PHpY=yJ%BqFYDx0`;C_VC6xFfOsE#c~?S;LlJLpl= z9y*7Cc*U+?M{VMV=>PkF|0AHO&fYV?+k;JT0H*5YW?~kq;-tOZ9W5QI;&Q0-UIjIS zjZhtGkJ{xUP!FSdsLi$k^^n_*%6}G9==|Rzpf&j$gE46zH?`rYQ&9nR%dLxA!_F2T zg>{H8K#k}PYV&?W&1m|*ZYHv!uIE8*+Ty7DMQ!x|{I4wm^{5Z(1~CFPg-a}b4XPvC zQA=|eHNq>X8F+Ts_&yJe2yCN zYg9$C`a9#HI+)1fsZk?NXJ$2XV{Ot4pgKARHGtWu&AX~U=U)x&Ai=+RP*ZgjwPqJB z;~iANSC|t62Dl1xqo%Y3YHjPF^0h~;eLvLFPDIVXuc(GMqdI)hM?h110@dI(^C9{h zw0OWkS0EN@BneRsrbjJZ0aV4MQ8QK>wZ@%M`G=tLPej$b1l2*`Cd+UPHIl2Sie8{9 z{%Y4_4ssQxKvk3twJD3C22ckz!j`CkbhLOc)JO+m0~}%TTSy0e-a`WF(ML1--~ewY z@f4_~xrA!yI;umjQRn@enSv#(LOefea}7fcWDe>$u0zehan!)Bp~^qSXnOuf9^y7t z98}K}pn9AdwHGp?DhNe2Py%ydJ=C5ViQ1f#P>ANs9@!wGmKSC{0;84ox z{HG$IhJ#TJ=Rh@>2Q{@NQ5~snHnQ|~W-rvOdbqjJ+>Kh2YpBz54^{tP=s#8H(-g-V z7T`_5_^1&qM2&0%ssp>sW2g$Rn0HW1^4NTbTFSuTuEPmY_k*;khBKks3qjQ%Hk|Vx zN}vb{YUq1Z1N~7mFbvheWYh>2U^)B+XW|QdgCj@Kah?(Ve+=-Z6CXD+!22H4k8*$V zVIpQAegfO#D|~_VMzaaN5-9hRdmNS>;~uXwup#N!up;Ik>pJE`E!8O0nomKEWCm)@ z7ov9g7SvkD8|OA-4%8Awpa#+eb-k^RfJQzPv*AS44P!f|!^_CPyuVRX_Zii&H{KZu zRX!TF!6Y~w2cnk3o8UHUeAG-wU|}lkjvI*k)=YGNOt#r1xAq(GBNqw3+I@n9N5#Y>r`8e2$qg$u#$vE{d6nx5FGb!QwkCeite4^I}hTzsC>7LS$@< zGjJiQfr2yKXSjx#k@#ecz%8hcR3A_?R&b{K^FZHWDdN9kGkk@*AJmxTZryEA_minu zL+5`LfuBhDj0Nz=+3rs;?ZO+xi_dYJFy&nLbj*t3q?bpHa0qIIzhG-TkM%Hop8Fgz z3H4NsHQ&ul4*Z39T`aHj|CK;lEVsaoa2)C*)o&Pq_fZvO{Ml{F(wLU`0@TR&pzd@x zEdCKgh$mUdCnqe8+DlVWr)x9nSnfujcH@2m+FU14_x7`>hsQ(nqZxCNOHX5lnPpJr z>Y?r*oh*HjImxasL3LoOxpxugUkQgv&~81A+TC|7{s2|sJ5&Qv7dum;I+z=EPcLQG zLeXUslw8BbSeWdK``_P!ZK|4a-mmRj{eq3ROXSRK6~# zk@Y}T_@iB)h?;@vmcG=|*P_a8Le=ZrMnF@v8#R?@QFpkzs5{y-RK~!iZj(htHIxCB zKPPI0#ZVQOGb@?ZQ1#V9b-W3xd@E$eeO_k*YM__dA61dh9FCfqQK*I{pemYa>GM%{ zz@?~qHlUVjE2^O#mVN+L?@{w4`hWj_mVnm&fs-w+Nd!)Uk_d?CYAXNF$=>PkF6D?sOYP0=KmduD`>~m}rH&gBCHHV?ok?#B8`5v*ROFxdbaY|GG7Xt#m&atc}Hp4?uNj zJ8Can#*Fw0Yhl_|0sg;I)dSlQKZ;E-_iE>O>`weItb^<)3 zw-7b8S5bQ+{$97%DR3e2RH(1-yHTHXQvB{d0p-V%#A{(Go&RYBN|SII%V5es+-_}- zTI(U0371;>G0Z~zDW<~&``q<>sPu;Dzvr7X%vI(d^Bl(4^Z!o*Ar$BzN4b}ymhv6y{Qr$itQYB^o&Tr`kdO@Z zbjpUB(&DI*ls6lpo`zjfr)H=*0h1D+i`t|cQ6Dz1pvu2PEkX1{?iQXAl|KS~%21zx zJ`#P8iVrtuqMiY(F%18(^f%a5pA*f zr6ZhweR6qZ7lMwu3>i?zuQY0;EzB;cJuv`P(a)$G$zIgbokBHu7c~>lP$Q3j%$@fT z)Qzq(s{UHXd~WT!k)VnOqZ%BKnu$563fEeEJEkXo5;euIP%{+!xVv#>KrK;GRQYPC zj~qZD>KST zxAv*ba8!qUbqHuGM_@i&ikgY5s0tpNUr{|ybjlfm%2x(;dTOJVatLb1=Akz6FXnpG z%xyPsAomBK_lgx65V?jdR^KVT8edCNU+JD~DS!U&v;T7nz5IRDzE1#Y{|Q34fjidw^V zsOR)-i|@yx#NVO51LnEozWa4T?S+}BaywAhpILgQyKVp#P@8%X>fyD4W>U{twf=3dk$zKU9+zp)s`eB}Qq z=JP5N&|390*Q0JI&rmav{ITnCX3S2!AZkfkqNZ{jYN~glHrHF!5{5rXOK||T2VUCs zsQ+_oodGq%(x@qKfVzS8!C+j5Iwgnx$NAT>`ACAEYAIj4V-${>>PD#ZJ`Bs@K}(PI z#*H8^s-m8#29~4t#s$ z&Q(+wRj>sH;{;T>b(jnfVpqIn>DAu5z0n#qgWb*X*ns#-9|28$&;p-PhIvgHgM525Jh| zqt@=4rGG>%Rf50W!z#bo(Db3EcBy$17ZQJuqjBaZSAXzlS5ILqr00JV0%eo|)x#U+ zBh<{iM$JT|FK&bhQBTXJ_6I>bkvM&Ma|TCRQ-3%ztDgF-xJW3#`(v6 zqsfTD#2cgTgo9AmS7LtLi(0#PSOlwob$engD&IC#!>3T2`YCE=qkePobf^v$NB{5t zD-+O~)wK&9Q3d*#lTn{sR-+m?hFZHjs44%5c`zMcE9zh!R0AtfBi@3l{|{7$E~3i6 zMxUlKMnIsOQVb?u2UVaKYR!K_b!d&HA3{}h4b`C!sC=;lUB#goOuPary#p%$IMhRE zCF)^zIxx`v{r?XnXoQJ^T*kbpwXcC{pe5=fS6@q?iaKt~P!;b%b@)1}qc2enM33a^ z4MU~ZFgv2YX^n{F3-sS&XOp0hR*O+N}&G+RuGlHDQe0)p$0VE;NGuB2>pRqB@=%bt|ul>cB7@gjcX4){RR(J^vRH(5Bgky2n39 zt?64-2cpGu@nAC_D!l?~Dw|vSaMUT8iE(iQYE$n+ZPpK%3zNooOIi;7fB(NL0X5hk zbqk$f{)`dC*JC66AL_VOP2kcyqDH(LLvV|EA5~wxgn|CwsANPfO(WE?o^Jk;m?LqZ|NFuZSc3Rwi@(GC#0w^I9qWwh&{|Zv>!^`u zNb2gZg{pTi7}$1*JlAcYOk?-0!H(_!4#F ziJT(PYk@g25>7Zf&6_#t$x zy8?B;h>_0Ssw<%G593i&y8%`H2&&#MSQ~Stcl8Xzlsfm%xx${2()qw}7uX^Fx z1HIC;?^P#|5T~N1^cU3A?Eq>s-L&+`IouSdM@?k}s-rDYo3Ib+MztLEm298I|3p1@ z14G;mDJ!NY-T-|nFpxk&oQ10B461=|s5MQOGtmEM!b)Iw;(JinLvy*!RLksv8o(6P zC#Q9&bAKIGPvYFJgLzTqtLL`oe|Hj8a005pYSfxNMBR{*hPqpAR@7$9kJ`o6QJb_Y zYUyU6W^yfR59~wLdj&P(cV@CM_lzkL=5v9@Bq+lm)E9|`s5Lr;I-U4rI#X z_Dl&>!>v)b?t!RNG#qvOCZJ|^E0)5SSOW9pb+`N;J_2fZKC0)xV|=`Ts_0Ktga0#Q z=5zTop+;E2;!RN_9g6vJ0cs{Mpzf@3^1B9`p{9Ne>PF^UL!b_U*Jk+wZuibZ_53Aj zgjou@4wk?&#A~DOjI%6$9*Yo979QyT{!jWP@sX&R*n--uf1vJsH&GQoM^*R*wI`AkcKHgRX0{fpd@qcJLr~?$`{SIy zd6uve)#Gib=lc!R=6Z;#AXbq;ZyY8?E!9%Yh1*agdxW}=d_#34V^L=rRQcAZCF*MN zap?d4KT`oN{E8aMepE#_Q6mj37U(s@1gLlq)Ch*5DxQp*nR%EUx1rYlK32ih#oZ?F zhzE&}MU|^rg7dF6ZcIQ4(@@9lXVg@!H+N$s;>R#Ho<`lEZlcP)N6kn;gd0F&GdJqH zWJS~r{a}v8LBy9taQ=e{q$?Td|09>BP!;Y$t=&=7ls!W=5WSQ;9jQ@wzTBv#Due29 zRn!bMMBRWonltSBKGc2XH0qQDl=itbDp=ZWwtA?w8-)o2xfP@CTszCUnYoHO*H2MX zp0J$jKyEV})q#?z5!b|E?105^3{J))sHb2s6kqDK4|j>V)E1O5N{%@Qn1{JTnl-awp!n#s78-BS885YXC&p?Y2bHI?No zy*BnCULU*R89Wfc2&=FJ7^PaE{~x1ESv}DIpYd3Oy5ZEX5$N5)mG~aV)O1h5p|t|N z?ZhwRFFOB|YX|!OLn4LhxQ1V%j@=hC!*?!T33Y?%jyfg3qMmApF$ABZW++8nH}#>Y zC8~hBqqfGH*c(;;2qx6?{~iIY)qB*Yic`v49}<}8C6S!>i< z4?*RR)ySn6MCGfEP4EXShi6gug=CFgd$rL2=l{DAD9D9bs3|>z8o_(iUP#%*jW{c6 z>LSdBs1Elu$DqnBwD>_(N3Nr0>@$|agiYP1tlO0HuP>idNeIT}sE5j7)Z;g>nd?Au z)Va-!8hL%QCu-MELN&C@(r=)S=|_vFYwpSwLv^G9Y9QU4`&?kGB`h=dqAI*<@xM`P zo3MrJP)5}AJ`8ni!%;V?lBl(AiaKUpusROIba)Px?=9+h$M>~#Q=SU-JT8Uxa5QRH z-$5-w>{jlBNea}IS3r%VDXO8~<`~pDUx2kSWoy?^SIkYkKkCl9%F=x&31|dYQ1|w` zsN?q%l`%;h7cYdmmp4aE?HE*r8?g%BM~x`7t+NPf^OnQP_?^WUp{9O4vR8cGF#;<1 z64mf0)TiEb?c7K!qRwwKi+4v=Fbb7_5o%8yvGfNRO#CZqU}@XCO_>$d@v0W@jfHgn z=MvCJE@C;1+`)CI3TmzDp{BYg>V7Z|buT}T!5F=x+nm`^p9dPFIyM${8a9}hu`BT} zsGp#G--+_H?~Ns(5v@V}9Pbe7M)WtTf;iv1U7i<}uNi8_`l0s52#kW0F)q$RHLwCT z1BX$Y`3&mT{0dcX$vtTcAB>^n0P=p_Yg{tmx#|njjVfjcP#s( z%8f;(uSLzoR#XQLqh{o~#Xs5gI6XN3TH`c5oJCMGQ6E*X8){@DP&cGGsEU3=l{;hc z=cp-;^@Dpzg`oCAd(=$KM0Ic}s{X^69dG*xR3i|hCtn7!0qVHS$MX0DHKMRyZtV-B zW~z?Gn_0Xc>bQ+SjeIKVnX&}y;vcAvBH0aibc7e9<`^Mp&A^4s(&)7<15Wg?z+$0>jK^hY)^)(SOQD+4fKA%VWWZkTpKS4) zs0uO-aC@Nw<|5u0^W#{H|A89uE6k0F2f7|S%5zx== z9-<0(gWSlHnb|Qb$wg6X+Xj`dmt7x^s_yvvz&S}sR@B|C`q@CmA+lEd76;RjTQrlBg_jcVvNYRaPw zcbhUJDqjm!{bR5aZW~Tdbs=bk`w3?V79c(v3*uf>k3V2O%<-e!T+PkVs6DbCHS+VQ z`u;|BDE&w`qh&Chcz4w1UWGC7sgHoB{ypkEMj7S4ey2u#;OJ%!Mdh1Aq8v3A?au{kU*P+Vo!)SOK^{nw-A)vL2`I9SH66+JMg4#^WP}l!JJ$yc( zDvCeGeO^d|n(`3TrmBr9Hv+YU3sJ{$FX{u%BaFbDWBqZT*M)%AcoS+QS5Q;=2-U;b z<6JxfRdHL?2#29YG9GpOW}rH_6Sc+{u?+@|cOOtXpk{OnHp0UgMbG~X6Wl#JJI3ci zThzV1FKWuCqc-U>RKsUb4PQq!_`t4zMGYX^M3*ldb*xLH@;61*-wyR`>4*OFKc0X# z-5S)nzHfd;eI!db$u*P?)v+R|eDzVMp&R=5gk4{U>gWkezl;@#KfplDIoWj}6n(0& z3;|7f3)F5NWv)V9KWRQSqfT*Cnh~|O-BD{j8%N+aY=y<9y8Ff=REM^rmT;e?-e9V&)upaN?s~ z+Q%g5*7y!J#Zgze8AyQYd0Gs{T&NpVbyP=tV0N5cEy_=bE z)G4Zm>R30_t$ijkvp#P(0Zq+C)SBEtjr_I6zoC{O@o#PfIZ@Am5~v0TS$rjGsvn__ zbJPuPlNCd)c{$WfHZc33|M!2>32176L#^R1R7Z}ZcIjR7DQcu|Q2AqTbW4^D)!`7# zg@sTJwYT(+5b>W5O<5q zUllb2tx)xJL**Zh8qjKNjAyVl=G^M`)|9QB|GXreCqW~Ky3LI^IjSQWQKzCXs)1^# zC2C~xj;I0jF(;$)uSRuruXz)7%l(Y%P{!@@+<>|fy+q}Yv&VHfGnOM>9(A9YfK6~U>R9@s?{x*zqt0_- z)DI$BqV5OFQA@D}+u#Y*Jv`6vZb>?!j#poEENYi8K+WVjREMviI`$0nV5C3%={~O@ z0iEN@s44G*AvhA%@J6hLM^Squ**^CTDLZOpgUkb{@-g?j)06_W2MVM1PJL7d+MqV| zAoTzDKYk{lhSs8v+X2+noJLLAW4j*tfV-X&HNwnhK~%*R%;uDmj|L_0)LqMPZ%N}%_Vj$Kez7ggGF!sjX&aKe2IUyZu34`T-K^SqPpj+N|Gpm(42L0AD>oOVmJ z3N^AXs1L2B&$t0h#Ky#b!&(^UY@q+YfYJgr@-wJY^u|Y^4}p+#ZnG`LP~v~!34Dz@ zj(g9$$8OLCX9?6M8-UuRvoQp>U|+nCI#rD?272dkH0p-c=u)6}6VIY%(zoui3+zHY zrH-Q3_%iC&dJntd7mOdsC!8y84Sm;K$9AEXz`O1?aVV->J5&dUqW0F$7zNj&?kk&- zhm+4cNT50icd#Ue-U#&WVh@~&b#4ZFNAVeIS8uuHPRS9}F$}ux8cJm5!SbZnz%ZPJ z1@Rc_BU#`bH^XT#qdxyvC!kL>JyDx(J?c2#$84D5uG>6iP~T))qo#H?>a-k0&Cn~< z=52A$xr0^Ob;(Ve|O{jbO zF}wZ-)!te3{H5*oyR;7>t`yA51R&$@y2p|42{;2_Cr)q(wDU5cTk=in_zK zFo$4O;y@>SsCX5NclHrb4@aSP=PJ~_`4DEn zzfi|0?q9CKoMu^6dJ_!B0hT@wHDjC1Bd8AFK<%YRI22#lbziqo7lFLJc(5D>ty*NIO2SHUUkg z4^?0$>V~oh^%3d?mcms3bLY4jmQ+4$h*wcFm+!S3c@5M6TBGWlgj&+ASQyWuc7Lol z_Wi#i0iDnOsD^(+ZN}}Wf`?FRdk59fdo#gX*I+Kx07{`|q9JM~hohdND^NG8GpNmX z7o*`D4CnsieIcN=$^S0UTZBb17;m8}{)Sr9r0-ova-cS2Nz^WGZt(%Ad~;A8U2E}U zs6B8C)sZKt4tzrY=l`G&Zc0<5M$in^@Mv?Pxea5Ieg-??4cv?sJ_dTL*ehRg7q0vi z=zSu+?HBh)HCy}>=yfE%A9aV#_0|1Qs>N5%e<%eWlh6#4dqMukWWRtQ{~t7bjFTwP zFfhm)hJRr?>=G2@pW;cV5p6aPVL9TLaT%tG6y$%J9zfk6-dQ|BSEb*n;?cj822!FqC-oL_uB&ENu42 zYQ%S7LtRfC~qi!%u z&0kUFwwU|PGns?j&;M?cppidCo#*GMj(tUSAbyr0{~awAMj{@LN-t*V6;LzS8dZKU zs=Q=o1HK4<&nZ1T8ch_eLFD%15REMHvb0);J#M7WgRvdM2ua4?iC)BOFzg?e# zD!;^BYi>t9D-KxvHmW|~Qv#~!Gpa{1vOANaMw-#giK@5&YOj<;m8*vuSzAl*hsrk* zwN!IZ4gYNEJ5cQ$bo#t=1eEbMsz(nj{topV|AeYAa}KvT!%!8JMRlMSYVWi_b-1-% z?~LkLf7GTPkD94Pc6~d>(D^@P8P1|Ae2Dsl^A=S>f)Lk%OlBymqeakvN>H1xw#7T6 zI@r@3imG=4>VwC8RK3^G|M&l%6Hw1SqDBxer!zUKf%IlJRKuYbFNs=;3aA-sih2lj zK;;{TDnAu9Lvv91=3Dv-^#A$4bp%xKGHT?nP@67JF87$tg-WlDld(Hy#-Q9m{?ByT zF_?H&%!^&j#pWf{LnlV4yH(df-7$X*<^1d3eUt<}wZ58#!gvUA5ATV=q+iP89>*V0 z`P1hO^8cF-_3%gHw^6s`Hu-}5e?Ss{NMk3VlCo(FbLxp3i9ZW*C8_h$Ey-XXxH+JtU2aYhqc>ArnvYW>M0m6Dj(0N zAQt)Ovj#o6Hpj{><$7iRzrRG`9YnTsAw8AFrch1_9HwAq!V@SMM8O!mTanhAeEOXs zUx>XWq@^KmEApM>t=9(PZMERMT9NmA!dt0-rll#p5#qEDttmd{kh+ir0X@0#{ROh^N81{@>bTs7Ow3joS6LOco*mTpVa%`R}JdsFG=&? z|0eTJ-gkLdr@~J(7H$n!F?&$S2CgNh@js~eEZ!rH&lvvK49fCz2(LS7?J2X3co^|Q z*obnY3F~!>{BF&k(PeX=o#3qwin#R{z=9{GP#n}IvNx=d(awUx6eT=-xDHD_Q z(=_^qJj<;^DKs*YjIE*y>A0eLq`g2T;#5;N1(eq-wf_9Y z8A}{wi9c|mH3fQ5pd|14RD6XzHwo*NjcZY@5yc}D=UcXygZDn(TkTpu>|k}TvbvQ& zFP&;*>H7TX1zXR5vVzLgjNz^Nl-bLeml1gLp?oHZkyY_(!Ci3Rr zoA7^K3$yf+r2R_X4c72p$`7G)+pNJE#Q*ymK|DPPAvUO$k(vM5mZK&;t4D@tR1lYN zDeLJGYpe)`%F@^Z-aY1PhY}ssi?j6z8cprl25Nhq*dYC9lJKwW?(zlCNYq- zyytU0KV|MxrZ;Vsr>#Uhf4nmk%0hv(ypNE$jkLam50P1q+bL?nUaz=TkP6;e1A6K$ zA>N<#WTd^a4xFIDtkm`IYb4=0)>)-ZC+{%Qe6?w$41u~N<|RWdtN7Rd6wXSezj2)} zJYGf8-%;ii=An^}g!RftxD9DZ$oqh>UOx~IWu*VUekKrMoj6ALH{JiMS>`PN$*2OA zt>Ro%ScHcEef?tT@#$!F%J8qYc-v@5uMfOSleaw{nZ^e2F2c3Qy!(+p4fVQdW%E;4YpXvg*Lv~(!8+C} z8tY$%hWc2B!4zC>7q5|?)RsXNKBU3DT>D6RC9C`jW}xhQ(s$4iz1k7)NF#^v24%vi zqYUYrd7mJjoOnF0T_ql-e}B6kiT}Q0aA7xvn~|QHbbf~5e=Q(gA5isb%k|F0$B`$y zb!0mo*zYcTg9s0$k>QkIOjxfX#H$c)O1UM(&r)ww;=V5gmXmP>?|WR}-;MFcP_bU! zDb$whvx)yjqqoTOnQ&SPmLslLDsvQh^{Qd+ChsHicHugo!aaV>rjD58{XoYi(!en4+e7>>uD#^_mhgJg zSNx})XXIu4{6ve2L2w$dbpjDcQ@Jzzns5qFy zgL$VQ?R(y<2?tQ7_kSu)syhGu{NLK9B?D>e|LqCRqOuocj7Gsc*3fzKF6P=;izgz_ zVH(Lwd@kx$m^|k(gXMXOo5m2>kaq+PbYd8#g>lHIS0UnexPF!RH_GX?i0k?uIf?l9F3sn~ zB|`!#o6E(P6sl$w9Hnp^()jM^eY3RBTu)27z9ye1ZM7=pt=A3mZ6>W0*PD~C4s|xB z{456ZiR(FuC*gWF()21yzE@iRC1kEb;sz30QVBnA@V-|X1@!t%yg1ixxTqISlI%g9QFE%3n>Y2rNUS=@bBvw z4XxqY96`TIMG{!GY zyxXMx`+8vmYHN-EOrB1<|3Boy8*;to{R@eEc=xe_ZD?Q{74e%A@2CHaj-S%`U!N%Z z)+!!vof%0dE^)OZ9nH-Et;~o~xE80oS|G=sBB_L4*UX9hEO+gJJxvjb-Ae zC|+3#>cy|?yf7*oX@we+)`YafRFr`90Msi5*LRU#k@ryEd9322){zSqFG1d$q}8Wf zIN`ePIzRulic}fD2KH`KAoYLJlzxqlWl~|QtTQA1_f>>I39h%cv}lC&>Ox(8E$mYG zY)JWAR!0E!ebIk^uNnz`nSs9<2|s`GRudo0#jeD+P{~>)Qxwg?7nQgQ3z&hHQ zGNmjWoomm?`;|H;QO`cYdOan*9p%%LZwK+;mFS;;JVIg`3e=;(L^9T)VZF9ngZviO z|60cXSEa&)Hek1Pz|2 z%yR3r@&yo%sQ|Clgny(=S{r>S>KIF%cdVZBguiI~acoWaRlonWi1<=6_n?t8yw8)d z8I|?qdLzOM3Gb%T6;w3M%50+~{~n$9ko5odWEs-o(w#Z90LTmf)7tZ%@|-R~MHC#5*-80Ki|j9Y}5=OXbko zErv}1J51}l$j>LYo&k~Ak=W(fGH5I+(wxD4!T-cEjo@nIeutl*#YpY~lz=S*=>q&S z5G3ONuFbu?WA?7hBlqh9D0zdumY%U7D3APu69fGu&9w$op0O*)EoWpJy~FjM9R(Y} z6h7hNBnQp5*y;tnH}0Um{Z9ZTLHP zJUxXBJ3~pOGz5})y0GCSY{PDj9-gcbQE=8HLj_M$)kFW%e_kDLX|Cva?^ zvcfm`Yw*Jum&}Nl9+29l%G-l_VYDVZqv2mp&jf1m@-FILoFf?q)a9&ObpMOw-vE9D z##GEay$64T$tyl}k)!lof&4v-)TFkHnip{z@l`YrxIWkhaGg_rJAcL1)}5e@o5MB> zl2yd@Xg;8zNeq@bTe%#AKz?!c9kuKbE+Urzp$~c(Tzjkqhd+aNpd!A+6{!`aCNd2U zFZ`}p*S{iTaYjKn6dMRIH^jxIh_uIl08v5I3!>5JO8lARMT#hHur8a0ct5ptYL(y` z&7e2*hkuxmvhK4)nad*n~>%0)^^7XSd!!lAnL~a5@ z`GABi5-m!70~(KxgySmqA28dfy@#96KiO81x8Mt8k#l^C$99b^n?hC&+Xs-yN9<@C zKcyj=cnS?=spq9xK3(fC#MmtmPlPBP--n#YAae28qvW%|Gl=|QYymJkQ7_^raDRoq zk^BD(#oiRE(pUr=f%Ql%pfv;)vC-ffP%EZ`mXg20QcvhPfW3*1W@smLnBLL;;8);R zr{@YbH~J^I3g{txdjQTA8d@?ygUNBH3NKamzn#fbNRRH}UK*Wb0kyNamzII?%ViTG76Z80(k^AdkKqr(y ze35E8Ae3!=A*@dPtLFAXID-5*2)>3W7AvwBZBD+C##vlhp1{N=J?|Op57#aHIdJ_U zkAFizWdX#K6iL(}rQD(Gnw8o~h($g^&>JF=&5HeAZ3k*yz}`W}P%o?bNxIN)^i?3= z3#|)Zu)K<%&k1T$xXv9o0I(*_uZV*I{j7~8$%!1GX#u$?21SxvjeSO6Fn&vhIk4lw z_1A|p7uad^{0^>-as+Ao*eVSs?aBv*N#klVO!Kbkw$vIi31vV3hbUpt^=xtg-Qe>QNSBHj*)Smz6xiJyU zdhKaT?GgASbT;{4(4G*-F=PkB*AjoK3*g$4shyy<7ws+cCqndrpd?_CG;}k5f13QM z4aN6DUo+?nT}*I`A#xIT)!bO(b6{fVxeVV^dP;+v43CB1PH`dFQ(%{nbI7Mx)&X8a zAhMa;Hy46^FakSl&SfvC=k@-;O#BKv8vISclrcBsg*n!GE z23&3R1@|p}S9G!7pH^`1B(6r!1+=03`}mxu&Vp8%3wRF1eaSBZbeH@Kv?*~>YPpqc z3vse8_!+((jY2PR2$5UpBm6oH9LHcM*mA^nJ>Xx&)qV8)qpO2UAM_(bZvhGy0K+!X zR2kxH*feYn@}c+z@I~5z&84LKsfjdk8`rf43nY;b0n<@&*%g;vwqB^WRnW_cSI|(M zTpI;%XCaTgr}kP0|4wp0wFSiU(1X-+U^i)fK1+5%C!!)F;G52YI?@xW-1Y<|->x75 zmLvBBvT`iJ6UepzKZyE9;##`7;HHA>PAx%ma~XUH;_s!1EXDVxwvJwd!E1w4)w zj!HV&W+0E~Jt4(kS?3<;ggxZbsf(mw>oEPlGJ?b;%`XP;$J8+GDNKGmQ(wXNm{}s# z+_T(Itq_uttlbyD6#P+WHvnTH@rL9jHk4c$FbCcJw)c>>1OF@eeE65~i-D~IrUmgr zda9x#qo_IXx8XNN>(e8WU%vJA#Ti0l5p*nD=3#IhNJQGwbeLvJwqTkLL41;0X>tY7 zc(6H9k94Abia3(KdT2#0gk!JjP=Clq;-3V&M4s9g7&-(y65=tC9sulz6?uzosmnaY zegZBQ;=$N`5Qq#^toS=2zX@&{oXa%-BiR066B+stJx%=**jA`Lo`x*|&nvhkU=b(z zn)vJ7p=}PaN6tfVP4N@4Q^6G{HyicHNSsad%wzB$ELPfvF%jTCKXf86KEuf2l`rwCCOu-fdP>;IEJ?t{_1HgzJRy#h!;7V{r zqQ}850kam4J*Y?>wc-y{zaRYe^#s?Y0s9Co&5&`#6&aA5*a7Gd9kz=63^YpPD#C_b zbQ{}s>aa z?*J{qkEW0pf|3yIBwvVpL8i>3)}Gp42E4>?i@%>*Gju%u54ub&)}UYHU%}`iUoo_Z zVx+c`*nV6S2@1*q*<8I<^RP(_szmJ_4Wl3pW1;)xbLfDM;63u3d^74ka9%=BE9WTy z3t6O=#@(pp!%vczHfISQ5>!CDK;{p4HDHk-a#1WW1^X280`9c!u-ftTdL&$X-hr(O z&rlZGL@rMAWdNRn!UA6P~^0p@U3EZ(0h{nPms<9`xxtyH*nmb{y_O9e;16eaz2r_e!iv{25B>j zpEKka2yQ`Mjrca2R|n3aHUZ5}PUI@M8am7m!b~jPp1x7kdg9Nf?+X^_j6cZL!NW#w zpZ2&?a{pTaI;b0UhoG!(I{<$I86wsMCm;oJW{+9)};eP@NEgWe@~oLnfF zqx7#+-dM#|1{()QF!>IyPF~2!_1$POINJHv7=>HOHbJpHdCBV5Ld77WIL~5@r z&P})G7|zCbs$|O4wO_Z0KF*dE;RpKWF=w$Gn}D-rde- z1^F5KayVY*F(&&AitHBIuZJ}%uTk0CI#|%C=Whjv7`F|d$f&`Q-J-0Ir47s1+FjA` z%A9im;0RmOh`~i%UX+zy&DiK`ZLVuf3$Vgk8)FRXOdDf~Va;r74D_<{bu^mzTK&5l zUl`VJ5yqc^R?G569qqtY5?Wq$}Cs@zl8t?oaMsf3VD>$<`*Uu4L&MUk1KET|T z+d5Uk?3~ZxSIf-j2(M*c$da-l#hJ1_by`ZIBeb?zEJw=5lnq32De>rrB9^_jdCAYR zH#9HjcC@Ty23Y((<=tkESa4fGtaV{GIHJSNz_`)jW_F9e!#W_RqiM96uTWg-gp}1n z4=}MviiGr}M$@z2=CDVbLDuAGvx&czb+#E_$T}2nHZiU83Fb`Gx|L|I&E&T|bxKNt zU@N4VxvhJa8RhS|e$WhYByBOXS_ucu!-h5Eu$f%Q8h*!I7-r=u=jAjV33JU)tY;Ox NVohstMXzC5{|CSQLAC$@ diff --git a/locale/ar/LC_MESSAGES/django.po b/locale/ar/LC_MESSAGES/django.po index 695a1147..f7ea1f67 100644 --- a/locale/ar/LC_MESSAGES/django.po +++ b/locale/ar/LC_MESSAGES/django.po @@ -3,12 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # +#: templates/ledger/reports/tags/balance_sheet_statement.html:20 +#: templates/ledger/reports/tags/income_statement.html:15 #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-02 17:09+0300\n" +"POT-Creation-Date: 2025-02-04 13:35+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -19,25 +21,17 @@ msgstr "" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" -#: api/models.py:6 inventory/models.py:330 +#: api/models.py:6 inventory/models.py:343 #: templates/inventory/car_detail.html:19 templates/inventory/car_form.html:35 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:31 #: templates/inventory/car_inventory.html:53 #: templates/inventory/car_list.html:67 templates/inventory/car_list.html:69 +#: templates/inventory/transfer_details.html:69 #: templates/sales/estimates/sale_order_preview.html:238 msgid "VIN" msgstr "رقم الهيكل" -#: car_inventory/settings.py:244 -#: venv/lib/python3.11/site-packages/appointments/settings.py:132 -msgid "English" -msgstr "الإنجليزية" - -#: car_inventory/settings.py:245 -msgid "Arabic" -msgstr "العربية" - -#: car_inventory/settings.py:304 +#: car_inventory/settings.py:159 car_inventory/settings.py:306 #: templates/crm/opportunities/opportunity_detail.html:35 #: templates/dashboards/accounting.html:35 #: templates/dashboards/accounting.html:39 @@ -56,68 +50,77 @@ msgstr "العربية" msgid "SAR" msgstr "ريال" -#: car_inventory/settings.py:325 templates/header.html:305 +#: car_inventory/settings.py:246 +#: venv/lib/python3.11/site-packages/appointments/settings.py:132 +msgid "English" +msgstr "الإنجليزية" + +#: car_inventory/settings.py:247 +msgid "Arabic" +msgstr "العربية" + +#: car_inventory/settings.py:328 templates/header.html:323 #: templates/welcome.html:57 msgid "Haikal" msgstr "هيكل" -#: inventory/forms.py:288 inventory/models.py:628 +#: inventory/forms.py:288 inventory/models.py:640 #: templates/inventory/car_detail.html:82 msgid "Custom Date" msgstr "تاريخ البطاقة الجمركية" -#: inventory/forms.py:354 +#: inventory/forms.py:359 msgid "Both exterior and interior colors must be selected." msgstr "يجب اختيار اللونين الخارجي والداخلي." -#: inventory/forms.py:425 inventory/models.py:1062 inventory/models.py:1277 +#: inventory/forms.py:430 inventory/models.py:1074 inventory/models.py:1289 #: templates/account/email_change.html:5 templates/account/email_change.html:9 msgid "Email Address" msgstr "عنوان البريد الإلكتروني" -#: inventory/forms.py:429 +#: inventory/forms.py:434 #: venv/lib/python3.11/site-packages/appointment/views.py:426 #: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1915 msgid "Email address" msgstr "عنوان البريد الإلكتروني" -#: inventory/forms.py:430 templates/crm/leads/lead_list.html:50 +#: inventory/forms.py:435 templates/crm/leads/lead_list.html:50 #: templates/customers/customer_list.html:45 #: templates/vendors/vendors_list.html:49 msgid "email" msgstr "البريد الإلكتروني" -#: inventory/forms.py:435 +#: inventory/forms.py:440 msgid "You must add an email." msgstr "يجب إضافة بريد إلكتروني." -#: inventory/forms.py:440 inventory/forms.py:444 +#: inventory/forms.py:445 inventory/forms.py:449 #: templates/account/login.html:35 templates/account/login.html:37 #: venv/lib/python3.11/site-packages/django_ledger/forms/auth.py:15 msgid "Password" msgstr "كلمة المرور" -#: inventory/forms.py:449 inventory/forms.py:463 inventory/forms.py:523 -#: inventory/forms.py:543 inventory/forms.py:561 inventory/forms.py:576 +#: inventory/forms.py:454 inventory/forms.py:468 inventory/forms.py:528 +#: inventory/forms.py:548 inventory/forms.py:566 inventory/forms.py:581 #: venv/lib/python3.11/site-packages/django/forms/fields.py:95 msgid "This field is required." msgstr "هذا الحقل مطلوب." -#: inventory/forms.py:454 inventory/forms.py:458 +#: inventory/forms.py:459 inventory/forms.py:463 msgid "Confirm Password" msgstr "تأكيد كلمة المرور" -#: inventory/forms.py:468 +#: inventory/forms.py:473 msgid "I accept the Terms and Privacy Policy" msgstr "أوافق على الشروط وسياسة الخصوصية" -#: inventory/forms.py:476 +#: inventory/forms.py:481 msgid "You must accept the terms and privacy policy." msgstr "يجب أن تقبل الشروط وسياسة الخصوصية." -#: inventory/forms.py:483 inventory/models.py:298 inventory/models.py:577 -#: inventory/models.py:590 inventory/models.py:886 inventory/models.py:1028 -#: inventory/models.py:1056 templates/administration/service_list.html:22 +#: inventory/forms.py:488 inventory/models.py:299 inventory/models.py:589 +#: inventory/models.py:602 inventory/models.py:898 inventory/models.py:1040 +#: inventory/models.py:1068 templates/administration/service_list.html:22 #: templates/administration/staff_list.html:38 #: templates/administration/user_profile.html:234 #: templates/crm/leads/lead_list.html:43 @@ -138,28 +141,28 @@ msgstr "يجب أن تقبل الشروط وسياسة الخصوصية." msgid "Name" msgstr "الاسم" -#: inventory/forms.py:487 inventory/models.py:804 inventory/models.py:1274 +#: inventory/forms.py:492 inventory/models.py:816 inventory/models.py:1286 msgid "English Name" msgstr "الاسم بالإنجليزية" -#: inventory/forms.py:492 +#: inventory/forms.py:497 msgid "Please enter an English Name." msgstr "يرجى إدخال اسم باللغة الإنجليزية." -#: inventory/forms.py:497 inventory/forms.py:501 inventory/models.py:299 -#: inventory/models.py:578 inventory/models.py:591 inventory/models.py:803 -#: inventory/models.py:887 inventory/models.py:1029 inventory/models.py:1057 -#: inventory/models.py:1273 templates/users/user_detail.html:48 +#: inventory/forms.py:502 inventory/forms.py:506 inventory/models.py:300 +#: inventory/models.py:590 inventory/models.py:603 inventory/models.py:815 +#: inventory/models.py:899 inventory/models.py:1041 inventory/models.py:1069 +#: inventory/models.py:1285 templates/users/user_detail.html:48 msgid "Arabic Name" msgstr "الاسم بالعربية" -#: inventory/forms.py:506 +#: inventory/forms.py:511 msgid "Please enter an Arabic name." msgstr "يرجى إدخال اسم باللغة العربية." -#: inventory/forms.py:511 inventory/models.py:805 inventory/models.py:888 -#: inventory/models.py:1003 inventory/models.py:1034 inventory/models.py:1061 -#: inventory/models.py:1276 templates/administration/staff_index.html:369 +#: inventory/forms.py:516 inventory/models.py:817 inventory/models.py:900 +#: inventory/models.py:1015 inventory/models.py:1046 inventory/models.py:1073 +#: inventory/models.py:1288 templates/administration/staff_index.html:369 #: templates/crm/leads/lead_list.html:56 #: templates/crm/opportunities/opportunity_detail.html:217 #: templates/customers/customer_list.html:50 @@ -170,7 +173,7 @@ msgstr "يرجى إدخال اسم باللغة العربية." msgid "Phone Number" msgstr "رقم الهاتف" -#: inventory/forms.py:517 templates/administration/display_appointment.html:49 +#: inventory/forms.py:522 templates/administration/display_appointment.html:49 #: templates/appointment/appointment_client_information.html:62 #: templates/crm/leads/lead_detail.html:80 #: templates/dealers/dealer_detail.html:99 @@ -184,36 +187,36 @@ msgstr "رقم الهاتف" msgid "Phone" msgstr "الهاتف" -#: inventory/forms.py:524 +#: inventory/forms.py:529 msgid "Phone number must be in the format 05xxxxxxxx" msgstr "يجب أن يكون رقم الهاتف بالصيغة 05xxxxxxxx" -#: inventory/forms.py:532 templates/organizations/organization_detail.html:8 +#: inventory/forms.py:537 templates/organizations/organization_detail.html:8 #: templates/organizations/organization_list.html:49 msgid "CRN" msgstr "رقم السجل التجاري" -#: inventory/forms.py:536 inventory/models.py:796 inventory/models.py:1031 -#: inventory/models.py:1268 +#: inventory/forms.py:541 inventory/models.py:808 inventory/models.py:1043 +#: inventory/models.py:1280 msgid "Commercial Registration Number" msgstr "رقم السجل التجاري" -#: inventory/forms.py:550 templates/organizations/organization_detail.html:9 +#: inventory/forms.py:555 templates/organizations/organization_detail.html:9 #: templates/organizations/organization_list.html:54 msgid "VRN" msgstr "الرقم الضريبي" -#: inventory/forms.py:554 inventory/models.py:801 inventory/models.py:1033 -#: inventory/models.py:1271 +#: inventory/forms.py:559 inventory/models.py:813 inventory/models.py:1045 +#: inventory/models.py:1283 msgid "VAT Registration Number" msgstr "رقم التسجيل في ضريبة القيمة المضافة" -#: inventory/forms.py:562 +#: inventory/forms.py:567 msgid "VAT Registration Number must be 15 characters." msgstr "يجب أن يكون رقم التسجيل الضريبي مكونًا من 15 حرفًا." -#: inventory/forms.py:567 inventory/models.py:807 inventory/models.py:1006 -#: inventory/models.py:1036 inventory/models.py:1064 inventory/models.py:1279 +#: inventory/forms.py:572 inventory/models.py:819 inventory/models.py:1018 +#: inventory/models.py:1048 inventory/models.py:1076 inventory/models.py:1291 #: templates/crm/leads/lead_detail.html:109 #: templates/customers/customer_list.html:60 #: templates/customers/view_customer.html:100 @@ -227,89 +230,90 @@ msgstr "يجب أن يكون رقم التسجيل الضريبي مكونًا msgid "Address" msgstr "العنوان" -#: inventory/forms.py:612 inventory/models.py:1477 +#: inventory/forms.py:617 inventory/models.py:1489 msgid "cash" msgstr "نقداً" -#: inventory/forms.py:613 inventory/models.py:1478 +#: inventory/forms.py:618 inventory/models.py:1490 msgid "credit" msgstr "دائن" -#: inventory/forms.py:614 inventory/models.py:1479 -#: templates/inventory/car_detail.html:102 +#: inventory/forms.py:619 inventory/models.py:1491 +#: templates/inventory/car_detail.html:124 #: templates/inventory/transfer_car.html:23 msgid "transfer" msgstr "نقل" -#: inventory/forms.py:615 inventory/models.py:1480 +#: inventory/forms.py:620 inventory/models.py:1492 msgid "debit" msgstr "مدين" -#: inventory/forms.py:616 inventory/models.py:1481 +#: inventory/forms.py:621 inventory/models.py:1493 msgid "SADAD" msgstr "سداد" -#: inventory/models.py:117 inventory/models.py:393 inventory/models.py:433 -#: inventory/models.py:478 inventory/models.py:625 inventory/models.py:640 -#: inventory/models.py:684 inventory/models.py:1175 +#: inventory/models.py:118 inventory/models.py:406 inventory/models.py:446 +#: inventory/models.py:491 inventory/models.py:637 inventory/models.py:652 +#: inventory/models.py:696 inventory/models.py:1187 #: templates/crm/opportunities/opportunity_form.html:35 +#: templates/inventory/transfer_details.html:70 msgid "Car" msgstr "سيارة" -#: inventory/models.py:118 +#: inventory/models.py:119 msgid "Light Commercial" msgstr "مركبات تجارية خفيفة" -#: inventory/models.py:119 +#: inventory/models.py:120 msgid "Heavy-Duty Tractors" msgstr "جرارات ثقيلة" -#: inventory/models.py:120 +#: inventory/models.py:121 msgid "Trailers" msgstr "مقطورات" -#: inventory/models.py:121 +#: inventory/models.py:122 msgid "Medium Trucks" msgstr "شاحنات متوسطة" -#: inventory/models.py:122 +#: inventory/models.py:123 msgid "Buses" msgstr "حافلات" -#: inventory/models.py:123 +#: inventory/models.py:124 msgid "Motorcycles" msgstr "دراجات نارية" -#: inventory/models.py:124 +#: inventory/models.py:125 msgid "Buggy" msgstr "باجي" -#: inventory/models.py:125 +#: inventory/models.py:126 msgid "Moto ATV" msgstr "موتو ATV" -#: inventory/models.py:126 +#: inventory/models.py:127 msgid "Scooters" msgstr "دراجات سكوتر" -#: inventory/models.py:127 +#: inventory/models.py:128 msgid "Karting" msgstr "كارتينج" -#: inventory/models.py:128 +#: inventory/models.py:129 msgid "ATV" msgstr "مركبات ATV" -#: inventory/models.py:129 +#: inventory/models.py:130 msgid "Snowmobiles" msgstr "دراجات الثلج" -#: inventory/models.py:136 +#: inventory/models.py:137 msgid "logo" msgstr "الشعار" -#: inventory/models.py:275 templates/ledger/bills/bill_detail.html:191 -#: templates/sales/estimates/estimate_detail.html:103 +#: inventory/models.py:276 templates/ledger/bills/bill_detail.html:191 +#: templates/sales/estimates/estimate_detail.html:100 #: templates/sales/estimates/estimate_list.html:29 #: templates/sales/invoices/invoice_detail.html:193 #: templates/sales/invoices/invoice_list.html:36 @@ -320,8 +324,8 @@ msgstr "الشعار" msgid "Draft" msgstr "مسودة" -#: inventory/models.py:276 templates/ledger/bills/bill_detail.html:195 -#: templates/sales/estimates/estimate_detail.html:107 +#: inventory/models.py:277 templates/ledger/bills/bill_detail.html:195 +#: templates/sales/estimates/estimate_detail.html:104 #: templates/sales/estimates/estimate_list.html:33 #: templates/sales/invoices/invoice_detail.html:197 #: templates/sales/invoices/invoice_list.html:32 @@ -333,72 +337,73 @@ msgstr "مسودة" msgid "Approved" msgstr "تمت الموافقة" -#: inventory/models.py:277 inventory/models.py:930 +#: inventory/models.py:278 inventory/models.py:942 #: templates/crm/leads/lead_detail.html:48 #: templates/crm/leads/lead_list.html:110 msgid "Pending" msgstr "قيد الانتظار" -#: inventory/models.py:278 +#: inventory/models.py:279 msgid "Accepted" msgstr "تم القبول" -#: inventory/models.py:279 templates/administration/staff_index.html:329 +#: inventory/models.py:280 templates/administration/staff_index.html:329 #: venv/lib/python3.11/site-packages/appointment/templates/administration/staff_index.html:329 msgid "Success" msgstr "ناجحة" -#: inventory/models.py:280 templates/sales/estimates/estimate_preview.html:243 +#: inventory/models.py:281 templates/sales/estimates/estimate_preview.html:243 msgid "Reject" msgstr "رفض" -#: inventory/models.py:281 +#: inventory/models.py:282 msgid "Cancelled" msgstr "ملغى" -#: inventory/models.py:285 templates/inventory/car_inventory.html:99 +#: inventory/models.py:286 templates/inventory/car_inventory.html:99 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/tags/invoice_item_formset.html:21 msgid "Available" msgstr "متاح" -#: inventory/models.py:286 templates/inventory/car_inventory.html:101 +#: inventory/models.py:287 templates/inventory/car_inventory.html:101 msgid "Sold" msgstr "تم البيع" -#: inventory/models.py:287 templates/inventory/car_inventory.html:103 +#: inventory/models.py:288 templates/inventory/car_inventory.html:103 msgid "Hold" msgstr "في الانتظار" -#: inventory/models.py:288 templates/inventory/car_inventory.html:107 +#: inventory/models.py:289 templates/inventory/car_inventory.html:107 msgid "Damaged" msgstr "تالف" -#: inventory/models.py:289 templates/index.html:22 +#: inventory/models.py:290 templates/index.html:22 #: templates/inventory/car_inventory.html:105 msgid "Reserved" msgstr "محجوزة" -#: inventory/models.py:290 templates/inventory/car_location_form.html:8 -#: templates/inventory/transfer_preview.html:255 +#: inventory/models.py:291 templates/inventory/car_location_form.html:8 +#: templates/inventory/transfer_preview.html:213 msgid "Transfer" msgstr "نقل" -#: inventory/models.py:293 inventory/models.py:929 +#: inventory/models.py:294 inventory/models.py:941 #: templates/crm/leads/lead_detail.html:46 #: templates/crm/leads/lead_list.html:108 #: templates/inventory/car_inventory.html:68 msgid "New" msgstr "جديد" -#: inventory/models.py:294 templates/inventory/car_inventory.html:70 +#: inventory/models.py:295 templates/inventory/car_inventory.html:70 msgid "Used" msgstr "مستعمل" -#: inventory/models.py:300 inventory/models.py:659 +#: inventory/models.py:301 inventory/models.py:671 #: templates/administration/manage_day_off.html:63 #: templates/administration/user_profile.html:105 #: templates/administration/user_profile.html:235 #: templates/ledger/coa_accounts/account_detail.html:67 +#: templates/ledger/reports/tags/income_statement.html:9 #: templates/sales/payments/payment_details.html:20 #: templates/sales/payments/payment_list.html:23 #: venv/lib/python3.11/site-packages/appointment/templates/administration/manage_day_off.html:63 @@ -416,28 +421,29 @@ msgstr "مستعمل" msgid "Description" msgstr "الوصف" -#: inventory/models.py:302 templates/administration/service_list.html:24 +#: inventory/models.py:303 templates/administration/service_list.html:24 #: templates/administration/user_profile.html:237 +#: templates/inventory/transfer_details.html:72 #: venv/lib/python3.11/site-packages/appointment/templates/administration/service_list.html:30 #: venv/lib/python3.11/site-packages/appointment/templates/administration/user_profile.html:237 msgid "Price" msgstr "السعر" -#: inventory/models.py:304 +#: inventory/models.py:305 msgid "taxable" msgstr "خاضع للضريبة" -#: inventory/models.py:308 +#: inventory/models.py:309 msgid "Unit of Measurement" msgstr "وحدة القياس" -#: inventory/models.py:311 inventory/models.py:332 inventory/models.py:839 +#: inventory/models.py:312 inventory/models.py:345 inventory/models.py:851 msgid "Dealer" msgstr "المعرض" -#: inventory/models.py:316 templates/inventory/transfer_preview.html:271 +#: inventory/models.py:317 templates/inventory/transfer_preview.html:229 #: templates/ledger/bills/bill_detail.html:213 -#: templates/sales/estimates/estimate_detail.html:125 +#: templates/sales/estimates/estimate_detail.html:122 #: templates/sales/estimates/estimate_preview.html:273 #: templates/sales/invoices/invoice_detail.html:215 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:94 @@ -456,15 +462,15 @@ msgstr "المعرض" msgid "Item" msgstr "العنصر" -#: inventory/models.py:322 inventory/models.py:323 -#: templates/sales/estimates/estimate_detail.html:155 +#: inventory/models.py:335 inventory/models.py:336 +#: templates/sales/estimates/estimate_detail.html:152 #: templates/sales/estimates/estimate_preview.html:295 #: templates/sales/estimates/sale_order_preview.html:266 #: templates/sales/invoices/invoice_detail.html:244 msgid "Additional Services" msgstr "الخدمات الإضافية" -#: inventory/models.py:341 inventory/models.py:1287 +#: inventory/models.py:354 inventory/models.py:1299 #: templates/inventory/car_detail.html:60 templates/inventory/car_form.html:137 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:166 #: templates/ledger/bills/bill_list.html:46 @@ -475,38 +481,38 @@ msgstr "الخدمات الإضافية" msgid "Vendor" msgstr "المورد" -#: inventory/models.py:349 inventory/models.py:1086 +#: inventory/models.py:362 inventory/models.py:1098 #: templates/sales/estimates/sale_order_preview.html:239 msgid "Make" msgstr "الصانع" -#: inventory/models.py:357 inventory/models.py:1093 +#: inventory/models.py:370 inventory/models.py:1105 #: templates/sales/estimates/sale_order_preview.html:240 msgid "Model" msgstr "الموديل" -#: inventory/models.py:359 inventory/models.py:1096 +#: inventory/models.py:372 inventory/models.py:1108 #: templates/inventory/car_form.html:59 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:61 #: templates/inventory/car_inventory.html:54 -#: templates/ledger/reports/components/period_navigator.html:19 +#: templates/ledger/reports/components/period_navigator.html:31 #: templates/sales/estimates/sale_order_preview.html:241 msgid "Year" msgstr "السنة" -#: inventory/models.py:366 templates/inventory/car_form.html:69 +#: inventory/models.py:379 templates/inventory/car_form.html:69 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:121 msgid "Series" msgstr "السلسلة" -#: inventory/models.py:374 +#: inventory/models.py:387 msgid "Trim" msgstr "الفئة" -#: inventory/models.py:380 inventory/models.py:1122 inventory/models.py:1183 +#: inventory/models.py:393 inventory/models.py:1134 inventory/models.py:1195 #: templates/crm/leads/lead_detail.html:44 #: templates/crm/leads/lead_list.html:39 templates/inventory/car_detail.html:43 -#: templates/inventory/car_detail.html:284 +#: templates/inventory/car_detail.html:306 #: templates/inventory/car_inventory.html:58 #: templates/inventory/car_list.html:163 #: templates/sales/estimates/estimate_list.html:16 @@ -521,53 +527,53 @@ msgstr "الفئة" msgid "Status" msgstr "الحالة" -#: inventory/models.py:386 templates/inventory/car_detail.html:47 +#: inventory/models.py:399 templates/inventory/car_detail.html:47 #: templates/inventory/car_form.html:150 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:183 #: templates/inventory/car_list.html:177 msgid "Stock Type" msgstr "نوع المخزون" -#: inventory/models.py:388 inventory/models.py:451 -#: templates/inventory/car_detail.html:65 templates/inventory/car_form.html:189 +#: inventory/models.py:401 inventory/models.py:464 +#: templates/inventory/car_detail.html:65 templates/inventory/car_form.html:190 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:232 #: templates/inventory/car_list.html:200 msgid "Remarks" msgstr "ملاحظات" -#: inventory/models.py:389 templates/inventory/car_detail.html:51 +#: inventory/models.py:402 templates/inventory/car_detail.html:51 #: templates/inventory/car_form.html:162 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:198 #: templates/inventory/car_list.html:191 templates/inventory/car_list.html:192 msgid "Mileage" msgstr "عدد الكيلومترات" -#: inventory/models.py:390 templates/inventory/car_detail.html:55 +#: inventory/models.py:403 templates/inventory/car_detail.html:55 #: templates/inventory/car_form.html:176 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:215 msgid "Receiving Date" msgstr "تاريخ الاستلام" -#: inventory/models.py:394 templates/customers/view_customer.html:137 +#: inventory/models.py:407 templates/customers/view_customer.html:137 #: templates/header.html:72 msgid "Cars" msgstr "السيارات" -#: inventory/models.py:439 +#: inventory/models.py:452 msgid "From Dealer" msgstr "من معرض" -#: inventory/models.py:445 +#: inventory/models.py:458 msgid "To Dealer" msgstr "الى معرض" -#: inventory/models.py:448 +#: inventory/models.py:461 msgid "Transfer Date" msgstr "تاريخ النقل" -#: inventory/models.py:450 templates/inventory/transfer_preview.html:272 +#: inventory/models.py:463 templates/inventory/transfer_preview.html:230 #: templates/ledger/bills/bill_detail.html:214 -#: templates/sales/estimates/estimate_detail.html:126 +#: templates/sales/estimates/estimate_detail.html:123 #: templates/sales/estimates/estimate_preview.html:274 #: templates/sales/estimates/sale_order_preview.html:242 #: templates/sales/invoices/invoice_detail.html:216 @@ -583,158 +589,160 @@ msgstr "تاريخ النقل" msgid "Quantity" msgstr "الكمية" -#: inventory/models.py:459 inventory/models.py:662 inventory/models.py:1284 +#: inventory/models.py:472 inventory/models.py:674 inventory/models.py:1296 msgid "Created At" msgstr "تاريخ الإنشاء" -#: inventory/models.py:460 inventory/models.py:816 +#: inventory/models.py:473 inventory/models.py:828 msgid "Updated At" msgstr "تم التحديث" -#: inventory/models.py:466 +#: inventory/models.py:479 msgid "Car Transfer Log" msgstr "سجل نقل السيارة" -#: inventory/models.py:467 +#: inventory/models.py:480 msgid "Car Transfer Logs" msgstr "سجلات نقل السيارات" -#: inventory/models.py:484 templates/inventory/car_detail.html:230 +#: inventory/models.py:497 templates/inventory/car_detail.html:252 msgid "Reserved By" msgstr "محجوز بواسطة" -#: inventory/models.py:486 +#: inventory/models.py:499 msgid "Reserved At" msgstr "تاريخ الحجز" -#: inventory/models.py:487 +#: inventory/models.py:500 msgid "Reserved Until" msgstr "محجوز حتى" -#: inventory/models.py:496 templates/inventory/car_detail.html:349 +#: inventory/models.py:509 templates/inventory/car_detail.html:386 msgid "Car Reservation" msgstr "حجز السيارة" -#: inventory/models.py:497 +#: inventory/models.py:510 msgid "Car Reservations" msgstr "حجوزات السيارات" -#: inventory/models.py:507 templates/inventory/car_detail.html:129 +#: inventory/models.py:520 templates/inventory/car_detail.html:151 msgid "Cost Price" msgstr "سعر التكلفة" -#: inventory/models.py:510 templates/inventory/car_detail.html:133 +#: inventory/models.py:523 templates/inventory/car_detail.html:155 msgid "Selling Price" msgstr "سعر البيع" -#: inventory/models.py:515 templates/inventory/car_detail.html:137 -#: templates/sales/estimates/estimate_detail.html:149 +#: inventory/models.py:528 templates/inventory/car_detail.html:159 +#: templates/sales/estimates/estimate_detail.html:146 #: templates/sales/invoices/invoice_detail.html:232 msgid "Discount Amount" msgstr "مبلغ الخصم" -#: inventory/models.py:572 inventory/models.py:573 +#: inventory/models.py:584 inventory/models.py:585 msgid "Car Financial Details" msgstr "تفاصيل المالية للسيارة" -#: inventory/models.py:579 inventory/models.py:592 +#: inventory/models.py:591 inventory/models.py:604 msgid "RGB" msgstr "آر جي بي" -#: inventory/models.py:582 inventory/models.py:583 +#: inventory/models.py:594 inventory/models.py:595 #: templates/inventory/add_colors.html:13 msgid "Exterior Colors" msgstr "الألوان الخارجية" -#: inventory/models.py:595 inventory/models.py:596 +#: inventory/models.py:607 inventory/models.py:608 #: templates/inventory/add_colors.html:32 msgid "Interior Colors" msgstr "الألوان الداخلية" -#: inventory/models.py:612 +#: inventory/models.py:624 msgid "Color" msgstr "اللون" -#: inventory/models.py:613 +#: inventory/models.py:625 msgid "Colors" msgstr "الألوان" -#: inventory/models.py:627 templates/inventory/car_detail.html:78 +#: inventory/models.py:639 templates/inventory/car_detail.html:78 msgid "Custom Number" msgstr "رقم البطاقة الجمركية" -#: inventory/models.py:631 templates/inventory/car_detail.html:87 -#: templates/inventory/car_detail.html:335 +#: inventory/models.py:643 templates/inventory/car_detail.html:87 +#: templates/inventory/car_detail.html:356 msgid "Custom Card" msgstr "البطاقة الجمركية" -#: inventory/models.py:632 +#: inventory/models.py:644 msgid "Custom Cards" msgstr "البطاقات الجمركية" -#: inventory/models.py:646 inventory/models.py:1191 +#: inventory/models.py:658 inventory/models.py:1203 msgid "Owner" msgstr "المالك" -#: inventory/models.py:647 +#: inventory/models.py:659 msgid "Dealer who owns the car." msgstr "التاجر الذي يمتلك السيارة." -#: inventory/models.py:653 inventory/models.py:909 +#: inventory/models.py:665 inventory/models.py:921 msgid "Showroom" msgstr "صالة العرض" -#: inventory/models.py:654 +#: inventory/models.py:666 msgid "Dealer where the car is displayed (can be the owner)." msgstr "التاجر الذي تُعرض السيارة في صالته (يمكن أن يكون المالك)." -#: inventory/models.py:660 +#: inventory/models.py:672 msgid "Optional description about the showroom placement." msgstr "وصف اختياري حول وضع السيارة في صالة العرض." -#: inventory/models.py:663 +#: inventory/models.py:675 msgid "Last Updated" msgstr "آخر تحديث" -#: inventory/models.py:666 +#: inventory/models.py:678 msgid "Car Location" msgstr "موقع السيارة" -#: inventory/models.py:667 +#: inventory/models.py:679 msgid "Car Locations" msgstr "مواقف السيارات" -#: inventory/models.py:686 +#: inventory/models.py:698 msgid "Plate Number" msgstr "رقم اللوحة" -#: inventory/models.py:687 +#: inventory/models.py:699 msgid "Text 1" msgstr "النص 1" -#: inventory/models.py:688 +#: inventory/models.py:700 msgid "Text 2" msgstr "النص 2" -#: inventory/models.py:689 +#: inventory/models.py:701 msgid "Text 3" msgstr "النص 3" -#: inventory/models.py:690 +#: inventory/models.py:702 templates/inventory/car_detail.html:103 msgid "Registration Date" msgstr "تاريخ التسجيل" -#: inventory/models.py:693 +#: inventory/models.py:705 templates/inventory/car_detail.html:97 +#: templates/inventory/car_detail.html:109 +#: templates/inventory/car_detail.html:371 msgid "Registration" msgstr "التسجيل" -#: inventory/models.py:694 +#: inventory/models.py:706 msgid "Registrations" msgstr "تسجيل السيارات" -#: inventory/models.py:702 inventory/models.py:892 inventory/models.py:1008 -#: inventory/models.py:1041 inventory/models.py:1127 inventory/models.py:1195 -#: inventory/models.py:1215 inventory/models.py:1237 inventory/models.py:1254 +#: inventory/models.py:714 inventory/models.py:904 inventory/models.py:1020 +#: inventory/models.py:1053 inventory/models.py:1139 inventory/models.py:1207 +#: inventory/models.py:1227 inventory/models.py:1249 inventory/models.py:1266 #: templates/crm/leads/lead_detail.html:91 #: templates/sales/estimates/estimate_list.html:18 #: templates/sales/invoices/invoice_list.html:19 @@ -745,72 +753,72 @@ msgstr "تسجيل السيارات" msgid "Created" msgstr "تاريخ الإنشاء" -#: inventory/models.py:703 inventory/models.py:893 inventory/models.py:1009 -#: inventory/models.py:1042 inventory/models.py:1129 inventory/models.py:1196 -#: inventory/models.py:1216 inventory/models.py:1238 +#: inventory/models.py:715 inventory/models.py:905 inventory/models.py:1021 +#: inventory/models.py:1054 inventory/models.py:1141 inventory/models.py:1208 +#: inventory/models.py:1228 inventory/models.py:1250 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/chart_of_accounts/includes/coa_card.html:41 msgid "Updated" msgstr "تم التحديث" -#: inventory/models.py:733 templates/dealers/dealer_detail.html:63 +#: inventory/models.py:745 templates/dealers/dealer_detail.html:63 msgid "Subscription" msgstr "الاشتراك" -#: inventory/models.py:734 templates/welcome.html:73 templates/welcome.html:140 +#: inventory/models.py:746 templates/welcome.html:73 templates/welcome.html:141 msgid "Subscriptions" msgstr "الاشتراكات" -#: inventory/models.py:749 +#: inventory/models.py:761 msgid "Subscription User" msgstr "مستخدم الاشتراك" -#: inventory/models.py:750 +#: inventory/models.py:762 msgid "Subscription Users" msgstr "مستخدمو الاشتراك" -#: inventory/models.py:758 +#: inventory/models.py:770 msgid "Name of the subscription plan" msgstr "اسم خطة الاشتراك" -#: inventory/models.py:763 +#: inventory/models.py:775 msgid "Maximum number of users allowed" msgstr "الحد الأقصى لعدد المستخدمين المسموح به" -#: inventory/models.py:766 +#: inventory/models.py:778 msgid "Maximum number of cars in inventory" msgstr "الحد الأقصى لعدد السيارات في المخزون" -#: inventory/models.py:779 +#: inventory/models.py:791 msgid "Additional features specific to this plan" msgstr "ميزات إضافية خاصة بهذه الخطة" -#: inventory/models.py:785 +#: inventory/models.py:797 msgid "Subscription Plan" msgstr "خطة الاشتراك" -#: inventory/models.py:786 +#: inventory/models.py:798 msgid "Subscription Plans" msgstr "خطط الاشتراك" -#: inventory/models.py:810 inventory/models.py:1039 inventory/models.py:1282 +#: inventory/models.py:822 inventory/models.py:1051 inventory/models.py:1294 msgid "Logo" msgstr "الشعار" -#: inventory/models.py:815 +#: inventory/models.py:827 msgid "Joined At" msgstr "انضم في" -#: inventory/models.py:840 +#: inventory/models.py:852 msgid "Dealers" msgstr "المعارض" -#: inventory/models.py:874 +#: inventory/models.py:886 #: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:3214 msgid "Manager" msgstr "مدير" -#: inventory/models.py:875 inventory/signals.py:132 inventory/signals.py:167 -#: templates/header.html:28 templates/header.html:55 templates/header.html:60 +#: inventory/models.py:887 inventory/signals.py:132 templates/header.html:28 +#: templates/header.html:55 templates/header.html:60 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:440 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:526 #: venv/lib/python3.11/site-packages/django_ledger/models/items.py:521 @@ -818,92 +826,92 @@ msgstr "مدير" msgid "Inventory" msgstr "المخزن" -#: inventory/models.py:876 +#: inventory/models.py:888 msgid "Accountant" msgstr "محاسب" -#: inventory/models.py:877 templates/header.html:33 +#: inventory/models.py:889 templates/header.html:33 msgid "Sales" msgstr "المبيعات" -#: inventory/models.py:878 +#: inventory/models.py:890 msgid "Coordinator" msgstr "المنسق" -#: inventory/models.py:879 +#: inventory/models.py:891 msgid "Receptionist" msgstr "موظف الاستقبال" -#: inventory/models.py:880 +#: inventory/models.py:892 msgid "Agent" msgstr "عميل" -#: inventory/models.py:890 +#: inventory/models.py:902 msgid "Staff Type" msgstr "نوع الموظف" -#: inventory/models.py:898 inventory/models.py:899 +#: inventory/models.py:910 inventory/models.py:911 #: templates/crm/opportunities/opportunity_detail.html:258 #: templates/crm/opportunities/opportunity_form.html:70 -#: templates/header.html:405 templates/users/user_form.html:4 +#: templates/header.html:423 templates/users/user_form.html:4 #: templates/users/user_list.html:5 msgid "Staff" msgstr "الموظفون" -#: inventory/models.py:907 +#: inventory/models.py:919 msgid "Referrals" msgstr "إحالات" -#: inventory/models.py:908 inventory/models.py:953 +#: inventory/models.py:920 inventory/models.py:965 msgid "WhatsApp" msgstr "واتساب" -#: inventory/models.py:910 +#: inventory/models.py:922 msgid "TikTok" msgstr "تيك توك" -#: inventory/models.py:911 +#: inventory/models.py:923 msgid "Instagram" msgstr "إنستغرام" -#: inventory/models.py:912 +#: inventory/models.py:924 msgid "X" msgstr "إكس" -#: inventory/models.py:913 +#: inventory/models.py:925 msgid "Facebook" msgstr "فيسبوك" -#: inventory/models.py:914 +#: inventory/models.py:926 msgid "Motory" msgstr "موتري" -#: inventory/models.py:915 +#: inventory/models.py:927 msgid "Influencers" msgstr "المؤثرون" -#: inventory/models.py:916 +#: inventory/models.py:928 msgid "Youtube" msgstr "يوتيوب" -#: inventory/models.py:917 +#: inventory/models.py:929 msgid "Campaign" msgstr "حملة" -#: inventory/models.py:921 +#: inventory/models.py:933 msgid "Walk In" msgstr "زيارة مباشرة" -#: inventory/models.py:922 +#: inventory/models.py:934 msgid "Toll Free" msgstr "رقم مجاني" -#: inventory/models.py:923 +#: inventory/models.py:935 #: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:112 msgid "Website" msgstr "الموقع الإلكتروني" -#: inventory/models.py:924 inventory/models.py:952 inventory/models.py:998 +#: inventory/models.py:936 inventory/models.py:964 inventory/models.py:1010 #: templates/account/login.html:28 templates/account/login.html:30 #: templates/administration/display_appointment.html:45 #: templates/administration/staff_list.html:39 @@ -913,7 +921,7 @@ msgstr "الموقع الإلكتروني" #: templates/crm/opportunities/opportunity_detail.html:227 #: templates/customers/view_customer.html:103 #: templates/dealers/dealer_detail.html:93 -#: templates/sales/estimates/estimate_detail.html:92 +#: templates/sales/estimates/estimate_detail.html:89 #: templates/sales/estimates/estimate_preview.html:264 #: templates/sales/estimates/sale_order_preview.html:228 #: templates/vendors/view_vendor.html:55 @@ -925,21 +933,21 @@ msgstr "الموقع الإلكتروني" msgid "Email" msgstr "البريد الإلكتروني" -#: inventory/models.py:925 +#: inventory/models.py:937 msgid "Form" msgstr "نموذج" -#: inventory/models.py:931 templates/crm/leads/lead_detail.html:50 +#: inventory/models.py:943 templates/crm/leads/lead_detail.html:50 #: templates/crm/leads/lead_list.html:112 msgid "In Progress" msgstr "قيد التنفيذ" -#: inventory/models.py:932 templates/crm/leads/lead_detail.html:52 +#: inventory/models.py:944 templates/crm/leads/lead_detail.html:52 #: templates/crm/leads/lead_list.html:114 msgid "Qualified" msgstr "مؤهل" -#: inventory/models.py:933 templates/crm/leads/lead_detail.html:54 +#: inventory/models.py:945 templates/crm/leads/lead_detail.html:54 #: templates/crm/leads/lead_list.html:116 #: templates/sales/estimates/estimate_list.html:37 #: templates/sales/invoices/invoice_list.html:34 @@ -951,169 +959,169 @@ msgstr "مؤهل" msgid "Canceled" msgstr "ملغى" -#: inventory/models.py:937 +#: inventory/models.py:949 msgid "Mr" msgstr "السيد" -#: inventory/models.py:938 +#: inventory/models.py:950 msgid "Mrs" msgstr "السيدة" -#: inventory/models.py:939 +#: inventory/models.py:951 msgid "Ms" msgstr "الآنسة" -#: inventory/models.py:940 +#: inventory/models.py:952 msgid "Miss" msgstr "الآنسة" -#: inventory/models.py:941 +#: inventory/models.py:953 msgid "Dr" msgstr "الدكتور" -#: inventory/models.py:942 +#: inventory/models.py:954 msgid "Prof" msgstr "الأستاذ" -#: inventory/models.py:943 +#: inventory/models.py:955 msgid "Prince" msgstr "الأمير" -#: inventory/models.py:944 +#: inventory/models.py:956 msgid "Princess" msgstr "الأميرة" -#: inventory/models.py:945 +#: inventory/models.py:957 msgid "Company" msgstr "الشركة" -#: inventory/models.py:946 +#: inventory/models.py:958 msgid "N/A" msgstr "غير متوفر" -#: inventory/models.py:950 +#: inventory/models.py:962 msgid "Call" msgstr "مكالمة" -#: inventory/models.py:951 +#: inventory/models.py:963 msgid "SMS" msgstr "رسالة نصية" -#: inventory/models.py:954 +#: inventory/models.py:966 msgid "Visit" msgstr "زيارة" -#: inventory/models.py:955 templates/inventory/car_form.html:23 +#: inventory/models.py:967 templates/inventory/car_form.html:23 msgid "Add Car" msgstr "إضافة سيارة" -#: inventory/models.py:956 templates/inventory/reserve_car.html:6 +#: inventory/models.py:968 templates/inventory/reserve_car.html:6 #: templates/inventory/reserve_car.html:9 msgid "Reserve Car" msgstr "حجز السيارة" -#: inventory/models.py:957 +#: inventory/models.py:969 msgid "Remove Car" msgstr "إزالة السيارة" -#: inventory/models.py:958 +#: inventory/models.py:970 msgid "Create Quotation" msgstr "إنشاء عرض" -#: inventory/models.py:959 +#: inventory/models.py:971 msgid "Cancel Quotation" msgstr "إلغاء العرض" -#: inventory/models.py:960 +#: inventory/models.py:972 msgid "Create Order" msgstr "إنشاء طلب" -#: inventory/models.py:961 +#: inventory/models.py:973 msgid "Cancel Order" msgstr "إلغاء الطلب" -#: inventory/models.py:962 templates/sales/estimates/estimate_detail.html:49 +#: inventory/models.py:974 templates/sales/estimates/estimate_detail.html:46 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/invoice_create.html:24 #: venv/lib/python3.11/site-packages/django_ledger/views/invoice.py:68 msgid "Create Invoice" msgstr "إنشاء فاتورة" -#: inventory/models.py:963 +#: inventory/models.py:975 msgid "Cancel Invoice" msgstr "إلغاء الفاتورة" -#: inventory/models.py:967 +#: inventory/models.py:979 msgid "Prospect" msgstr "العميل المحتمل" -#: inventory/models.py:968 +#: inventory/models.py:980 msgid "Proposal" msgstr "عرض" -#: inventory/models.py:969 +#: inventory/models.py:981 msgid "Negotiation" msgstr "مفاوضات" -#: inventory/models.py:970 +#: inventory/models.py:982 msgid "Closed Won" msgstr "مغلقة - ناجحة" -#: inventory/models.py:971 +#: inventory/models.py:983 msgid "Closed Lost" msgstr "مغلقة - خسارة" -#: inventory/models.py:975 +#: inventory/models.py:987 msgid "Low" msgstr "منخفض" -#: inventory/models.py:976 +#: inventory/models.py:988 msgid "Medium" msgstr "متوسط" -#: inventory/models.py:977 +#: inventory/models.py:989 msgid "High" msgstr "مرتفع" -#: inventory/models.py:985 +#: inventory/models.py:997 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/estimate_table.html:11 msgid "Title" msgstr "العنوان" -#: inventory/models.py:987 +#: inventory/models.py:999 msgid "First Name" msgstr "الاسم الأول" -#: inventory/models.py:989 +#: inventory/models.py:1001 msgid "Middle Name" msgstr "اسم الأب" -#: inventory/models.py:991 +#: inventory/models.py:1003 msgid "Last Name" msgstr "اسم العائلة" -#: inventory/models.py:993 +#: inventory/models.py:1005 msgid "Male" msgstr "ذكر" -#: inventory/models.py:993 +#: inventory/models.py:1005 msgid "Female" msgstr "أنثى" -#: inventory/models.py:995 +#: inventory/models.py:1007 msgid "Gender" msgstr "الجنس" -#: inventory/models.py:997 +#: inventory/models.py:1009 msgid "Date of Birth" msgstr "تاريخ الميلاد" -#: inventory/models.py:1000 templates/customers/customer_list.html:55 +#: inventory/models.py:1012 templates/customers/customer_list.html:55 msgid "National ID" msgstr "رقم الهوية الوطنية" -#: inventory/models.py:1012 +#: inventory/models.py:1024 #: templates/crm/opportunities/opportunity_form.html:22 -#: templates/sales/estimates/estimate_detail.html:88 +#: templates/sales/estimates/estimate_detail.html:85 #: templates/sales/estimates/estimate_list.html:15 #: templates/sales/estimates/estimate_preview.html:263 #: templates/sales/estimates/sale_order_preview.html:227 @@ -1128,102 +1136,102 @@ msgstr "رقم الهوية الوطنية" msgid "Customer" msgstr "العميل" -#: inventory/models.py:1013 templates/customers/customer_form.html:4 +#: inventory/models.py:1025 templates/customers/customer_form.html:4 #: templates/customers/customer_list.html:4 #: templates/customers/customer_list.html:5 #: templates/customers/customer_list.html:9 msgid "Customers" msgstr "العملاء" -#: inventory/models.py:1045 +#: inventory/models.py:1057 msgid "Organization" msgstr "شركة" -#: inventory/models.py:1046 templates/header.html:161 +#: inventory/models.py:1058 templates/header.html:161 #: templates/organizations/organization_list.html:4 #: templates/organizations/organization_list.html:5 #: templates/organizations/organization_list.html:12 msgid "Organizations" msgstr "الشركات" -#: inventory/models.py:1059 +#: inventory/models.py:1071 #: templates/representatives/representative_detail.html:8 #: templates/representatives/representative_list.html:18 msgid "ID Number" msgstr "رقم الهوية" -#: inventory/models.py:1069 +#: inventory/models.py:1081 msgid "Representative" msgstr "ممثل شركة" -#: inventory/models.py:1070 templates/header.html:169 +#: inventory/models.py:1082 templates/header.html:169 #: templates/representatives/representative_list.html:3 #: templates/representatives/representative_list.html:6 msgid "Representatives" msgstr "ممثلي الشركات" -#: inventory/models.py:1099 templates/crm/leads/lead_list.html:62 +#: inventory/models.py:1111 templates/crm/leads/lead_list.html:62 msgid "Source" msgstr "المصدر" -#: inventory/models.py:1102 templates/crm/leads/lead_list.html:68 +#: inventory/models.py:1114 templates/crm/leads/lead_list.html:68 msgid "Channel" msgstr "القناة" -#: inventory/models.py:1104 templates/crm/leads/lead_detail.html:115 +#: inventory/models.py:1116 templates/crm/leads/lead_detail.html:115 #: venv/lib/python3.11/site-packages/django_ledger/forms/entity.py:82 #: venv/lib/python3.11/site-packages/django_ledger/forms/entity.py:159 #: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:107 msgid "City" msgstr "المدينة" -#: inventory/models.py:1111 +#: inventory/models.py:1123 msgid "Assigned" msgstr "مُعين" -#: inventory/models.py:1117 +#: inventory/models.py:1129 msgid "Priority" msgstr "الأولوية" -#: inventory/models.py:1132 +#: inventory/models.py:1144 msgid "Lead" msgstr "فرصة" -#: inventory/models.py:1133 templates/crm/leads/lead_list.html:3 +#: inventory/models.py:1145 templates/crm/leads/lead_list.html:3 #: templates/crm/leads/lead_list.html:7 msgid "Leads" msgstr "الفرص" -#: inventory/models.py:1144 +#: inventory/models.py:1156 msgid "Old Status" msgstr "الحالة القديمة" -#: inventory/models.py:1147 +#: inventory/models.py:1159 msgid "New Status" msgstr "الحالة الجديدة" -#: inventory/models.py:1152 +#: inventory/models.py:1164 msgid "Changed At" msgstr "تم التغيير في" -#: inventory/models.py:1155 +#: inventory/models.py:1167 msgid "Lead Status History" msgstr "تاريخ حالة العميل المحتمل" -#: inventory/models.py:1156 +#: inventory/models.py:1168 msgid "Lead Status Histories" msgstr "تواريخ حالات العملاء المحتملين" -#: inventory/models.py:1164 +#: inventory/models.py:1176 msgid "Probability must be between 0 and 100." msgstr "يجب أن تكون الاحتمالية بين 0 و 100." -#: inventory/models.py:1178 +#: inventory/models.py:1190 #: templates/crm/opportunities/opportunity_form.html:48 msgid "Stage" msgstr "المرحلة" -#: inventory/models.py:1194 +#: inventory/models.py:1206 #: templates/crm/opportunities/opportunity_detail.html:291 #: templates/crm/opportunities/opportunity_form.html:79 #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:100 @@ -1232,27 +1240,27 @@ msgstr "المرحلة" msgid "Closing Date" msgstr "تاريخ الإغلاق" -#: inventory/models.py:1197 +#: inventory/models.py:1209 msgid "Closed" msgstr "مغلقة" -#: inventory/models.py:1200 +#: inventory/models.py:1212 msgid "Opportunity" msgstr "فرصة" -#: inventory/models.py:1201 +#: inventory/models.py:1213 #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:8 #: templates/crm/opportunities/opportunity_list.html:8 #: templates/header.html:177 msgid "Opportunities" msgstr "الفرص" -#: inventory/models.py:1211 inventory/models.py:1219 +#: inventory/models.py:1223 inventory/models.py:1231 #: templates/account/snippets/already_logged_in.html:8 msgid "Note" msgstr "ملاحظة" -#: inventory/models.py:1220 inventory/models.py:1233 +#: inventory/models.py:1232 inventory/models.py:1245 #: templates/crm/leads/lead_detail.html:151 #: templates/customers/view_customer.html:119 #: venv/lib/python3.11/site-packages/django_ledger/forms/bill.py:154 @@ -1260,12 +1268,12 @@ msgstr "ملاحظة" msgid "Notes" msgstr "ملاحظات" -#: inventory/models.py:1231 +#: inventory/models.py:1243 msgid "Activity Type" msgstr "نوع النشاط" -#: inventory/models.py:1241 templates/dealers/activity_log.html:11 -#: templates/header.html:408 +#: inventory/models.py:1253 templates/dealers/activity_log.html:11 +#: templates/header.html:426 #: venv/lib/python3.11/site-packages/django_ledger/models/closing_entry.py:382 #: venv/lib/python3.11/site-packages/django_ledger/models/journal_entry.py:325 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_txs_table.html:10 @@ -1274,77 +1282,77 @@ msgstr "نوع النشاط" msgid "Activity" msgstr "النشاط" -#: inventory/models.py:1242 templates/crm/leads/lead_detail.html:135 +#: inventory/models.py:1254 templates/crm/leads/lead_detail.html:135 msgid "Activities" msgstr "الأنشطة" -#: inventory/models.py:1252 +#: inventory/models.py:1264 msgid "Message" msgstr "رسالة" -#: inventory/models.py:1253 +#: inventory/models.py:1265 msgid "Is Read" msgstr "تمت قراءته" -#: inventory/models.py:1257 +#: inventory/models.py:1269 msgid "Notification" msgstr "إشعار" -#: inventory/models.py:1258 templates/crm/notifications_history.html:6 +#: inventory/models.py:1270 templates/crm/notifications_history.html:6 msgid "Notifications" msgstr "الإشعارات" -#: inventory/models.py:1275 templates/vendors/view_vendor.html:49 +#: inventory/models.py:1287 templates/vendors/view_vendor.html:49 msgid "Contact Person" msgstr "الشخص المسؤول" -#: inventory/models.py:1288 templates/vendors/vendor_form.html:4 +#: inventory/models.py:1300 templates/vendors/vendor_form.html:4 #: templates/vendors/vendors_list.html:4 templates/vendors/vendors_list.html:5 #: templates/vendors/vendors_list.html:12 msgid "Vendors" msgstr "الموردين" -#: inventory/models.py:1487 inventory/models.py:1517 +#: inventory/models.py:1499 inventory/models.py:1529 msgid "amount" msgstr "المبلغ" -#: inventory/models.py:1490 +#: inventory/models.py:1502 msgid "method" msgstr "طريقة" -#: inventory/models.py:1493 +#: inventory/models.py:1505 msgid "reference number" msgstr "رقم المرجع" -#: inventory/models.py:1495 +#: inventory/models.py:1507 msgid "date" msgstr "التاريخ" -#: inventory/models.py:1505 +#: inventory/models.py:1517 msgid "payment" msgstr "الدفعة" -#: inventory/models.py:1506 templates/header.html:126 +#: inventory/models.py:1518 templates/header.html:126 msgid "payments" msgstr "المدفوعات" -#: inventory/models.py:1519 +#: inventory/models.py:1531 msgid "reason" msgstr "السبب" -#: inventory/models.py:1520 +#: inventory/models.py:1532 msgid "refund date" msgstr "تاريخ الاسترداد" -#: inventory/models.py:1523 +#: inventory/models.py:1535 msgid "refund" msgstr "استرداد" -#: inventory/models.py:1524 +#: inventory/models.py:1536 msgid "refunds" msgstr "استردادات" -#: inventory/models.py:1548 templates/sales/estimates/estimate_detail.html:40 +#: inventory/models.py:1560 templates/sales/estimates/estimate_detail.html:37 #: templates/sales/estimates/estimate_preview.html:255 #: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:3145 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/card_estimate.html:9 @@ -1352,7 +1360,7 @@ msgstr "استردادات" msgid "Estimate" msgstr "تقدير" -#: inventory/models.py:1554 templates/plans/create_order.html:29 +#: inventory/models.py:1566 templates/plans/create_order.html:29 #: templates/sales/invoices/invoice_create.html:5 #: templates/sales/invoices/invoice_detail.html:61 #: templates/sales/payments/payment_list.html:21 @@ -1362,7 +1370,7 @@ msgstr "تقدير" msgid "Invoice" msgstr "فاتورة" -#: inventory/signals.py:108 +#: inventory/signals.py:108 templates/ledger/reports/dashboard.html:32 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_bs.html:14 msgid "Cash" msgstr "نقداً" @@ -1380,230 +1388,231 @@ msgstr "المصروفات المدفوعة مقدمًا" msgid "Employee Advance" msgstr "سلفة الموظف" -#: inventory/signals.py:179 +#: inventory/signals.py:168 msgid "VAT Receivable" msgstr "ضريبة القيمة المضافة المستحقة" -#: inventory/signals.py:189 +#: inventory/signals.py:178 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:452 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:538 msgid "Buildings - Accum. Depreciation" msgstr "المباني - الإهلاك المتراكم" -#: inventory/signals.py:201 +#: inventory/signals.py:190 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:459 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:545 msgid "Intangible Assets" msgstr "الأصول غير الملموسة" -#: inventory/signals.py:213 +#: inventory/signals.py:202 msgid "Investments" msgstr "الاستثمارات" -#: inventory/signals.py:250 +#: inventory/signals.py:239 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:451 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:537 msgid "Buildings" msgstr "المباني" -#: inventory/signals.py:264 +#: inventory/signals.py:253 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:466 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:552 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:52 msgid "Accounts Payable" msgstr "الحسابات الدائنة" -#: inventory/signals.py:276 +#: inventory/signals.py:265 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:472 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:558 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/invoice_detail.html:51 msgid "Deferred Revenue" msgstr "الإيرادات المؤجلة" -#: inventory/signals.py:288 +#: inventory/signals.py:277 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:467 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:553 msgid "Wages Payable" msgstr "الأجور المستحقة الدفع" -#: inventory/signals.py:300 +#: inventory/signals.py:289 msgid "Long-Term Notes Payable" msgstr "أوراق الدفع طويلة الأجل" -#: inventory/signals.py:312 +#: inventory/signals.py:301 msgid "VAT Payable" msgstr "ضريبة القيمة المضافة المستحقة الدفع" -#: inventory/signals.py:322 +#: inventory/signals.py:311 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:469 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:555 msgid "Taxes Payable" msgstr "الضرائب المستحقة الدفع" -#: inventory/signals.py:332 +#: inventory/signals.py:321 msgid "Social Insurance Payable" msgstr "التأمينات الاجتماعية المستحقة الدفع" -#: inventory/signals.py:338 +#: inventory/signals.py:327 msgid "End of Service Benefits" msgstr "مكافأة نهاية الخدمة" -#: inventory/signals.py:345 +#: inventory/signals.py:334 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:478 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:564 msgid "Mortgage Payable" msgstr "الرهن المستحق الدفع" -#: inventory/signals.py:353 +#: inventory/signals.py:342 msgid "Registered Capital" msgstr "رأس المال المسجل" -#: inventory/signals.py:356 +#: inventory/signals.py:345 msgid "Additional Paid-In Capital" msgstr "رأس المال المدفوع الإضافي" -#: inventory/signals.py:359 +#: inventory/signals.py:348 msgid "Opening Balances" msgstr "الأرصدة الافتتاحية" -#: inventory/signals.py:364 +#: inventory/signals.py:353 msgid "Statutory Reserve" msgstr "الاحتياطي النظامي" -#: inventory/signals.py:367 +#: inventory/signals.py:356 msgid "Foreign Currency Translation Reserve" msgstr "احتياطي تحويل العملات الأجنبية" -#: inventory/signals.py:374 +#: inventory/signals.py:363 msgid "Operating Profits and Losses" msgstr "الأرباح والخسائر التشغيلية" -#: inventory/signals.py:385 +#: inventory/signals.py:374 msgid "Retained Earnings (or Losses)" msgstr "الأرباح المحتجزة (أو الخسائر)" -#: inventory/signals.py:395 +#: inventory/signals.py:384 msgid "Sales Revenue" msgstr "إيرادات المبيعات" -#: inventory/signals.py:407 +#: inventory/signals.py:396 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:492 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:580 msgid "Interest Income" msgstr "دخل الفائدة" -#: inventory/signals.py:419 +#: inventory/signals.py:408 msgid "Unearned Income" msgstr "الدخل غير المكتسب" -#: inventory/signals.py:425 +#: inventory/signals.py:414 msgid "Sales/Service Revenue" msgstr "إيرادات المبيعات/الخدمات" -#: inventory/signals.py:428 +#: inventory/signals.py:417 msgid "Non-Operating Revenues" msgstr "الإيرادات غير التشغيلية" -#: inventory/signals.py:436 inventory/signals.py:617 +#: inventory/signals.py:425 inventory/signals.py:606 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:497 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:587 msgid "Cost of Goods Sold" msgstr "تكلفة البضائع المباعة" -#: inventory/signals.py:449 +#: inventory/signals.py:438 msgid "Accrued Expenses" msgstr "المصروفات المستحقة" -#: inventory/signals.py:459 +#: inventory/signals.py:448 msgid "Accrued Salaries" msgstr "الرواتب المستحقة" -#: inventory/signals.py:469 +#: inventory/signals.py:458 msgid "Rent Expense" msgstr "مصروف الإيجار" -#: inventory/signals.py:481 +#: inventory/signals.py:470 msgid "Salaries and Administrative Fees" msgstr "الرواتب والرسوم الإدارية" -#: inventory/signals.py:491 +#: inventory/signals.py:480 msgid "Medical Insurance" msgstr "التأمين الطبي" -#: inventory/signals.py:501 +#: inventory/signals.py:490 msgid "Marketing and Advertising Expenses" msgstr "مصروفات التسويق والإعلان" -#: inventory/signals.py:511 +#: inventory/signals.py:500 msgid "Commissions and Incentives" msgstr "العمولات والحوافز" -#: inventory/signals.py:521 +#: inventory/signals.py:510 msgid "Travel Tickets" msgstr "تذاكر السفر" -#: inventory/signals.py:531 +#: inventory/signals.py:520 msgid "Social Insurance" msgstr "التأمينات الاجتماعية" -#: inventory/signals.py:541 +#: inventory/signals.py:530 msgid "Government Fees" msgstr "الرسوم الحكومية" -#: inventory/signals.py:551 +#: inventory/signals.py:540 msgid "Fees and Subscriptions" msgstr "الرسوم والاشتراكات" -#: inventory/signals.py:561 +#: inventory/signals.py:550 msgid "Office Services Expenses" msgstr "مصروفات خدمات المكتب" -#: inventory/signals.py:571 +#: inventory/signals.py:560 msgid "Office Supplies and Printing" msgstr "اللوازم المكتبية والطباعة" -#: inventory/signals.py:581 +#: inventory/signals.py:570 msgid "Hospitality Expenses" msgstr "مصروفات الضيافة" -#: inventory/signals.py:591 +#: inventory/signals.py:580 msgid "Bank Commissions" msgstr "عمولات البنوك" -#: inventory/signals.py:601 +#: inventory/signals.py:590 +#: templates/ledger/reports/tags/income_statement.html:274 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:291 msgid "Other Expenses" msgstr "مصروفات أخرى" -#: inventory/signals.py:611 +#: inventory/signals.py:600 msgid "Transportation Expenses" msgstr "مصروفات النقل" -#: inventory/signals.py:618 +#: inventory/signals.py:607 msgid "Salaries and Wages" msgstr "الرواتب والأجور" -#: inventory/signals.py:619 +#: inventory/signals.py:608 msgid "Sales Commissions" msgstr "عمولات المبيعات" -#: inventory/signals.py:620 +#: inventory/signals.py:609 msgid "Shipping and Customs Clearance" msgstr "الشحن والتخليص الجمركي" -#: inventory/signals.py:623 +#: inventory/signals.py:612 msgid "Zakat" msgstr "الزكاة" -#: inventory/signals.py:624 +#: inventory/signals.py:613 msgid "Taxes" msgstr "الضرائب" -#: inventory/signals.py:625 +#: inventory/signals.py:614 msgid "Foreign Currency Translation" msgstr "تحويل العملات الأجنبية" -#: inventory/signals.py:626 +#: inventory/signals.py:615 msgid "Interest Expenses" msgstr "مصروفات الفائدة" @@ -1625,159 +1634,178 @@ msgstr "نسيت كلمة المرور؟" msgid "Car reserved successfully." msgstr "تم حجز السيارة بنجاح." -#: inventory/views.py:380 +#: inventory/views.py:227 +msgid "OTP verified successfully!" +msgstr "تم التحقق من رمز التحقق بنجاح!" + +#: inventory/views.py:230 +msgid "Invalid OTP. Please try again." +msgstr "رمز التحقق غير صالح. يرجى المحاولة مرة أخرى." + +#: inventory/views.py:383 msgid "VIN number exists" msgstr "رقم الهيكل موجود مسبقاً" -#: inventory/views.py:572 templates/dashboards/accounting.html:21 +#: inventory/views.py:575 templates/dashboards/accounting.html:21 #: templates/inventory/car_inventory.html:5 +#: templates/inventory/inventory_stats.html:5 msgid "inventory" msgstr "المخزون" -#: inventory/views.py:729 +#: inventory/views.py:732 msgid "Car finance details saved successfully." msgstr "تم حفظ تفاصيل المالية للسيارة بنجاح." -#: inventory/views.py:761 +#: inventory/views.py:764 msgid "Car finance details updated successfully." msgstr "تم تحديث تفاصيل المالية للسيارة بنجاح." -#: inventory/views.py:792 +#: inventory/views.py:795 msgid "Car updated successfully." msgstr "تم تحديث السيارة بنجاح" -#: inventory/views.py:804 +#: inventory/views.py:807 msgid "Car deleted successfully." msgstr "تم حذف السيارة بنجاح." -#: inventory/views.py:878 +#: inventory/views.py:886 msgid "Car transfer canceled successfully." msgstr "تم إلغاء نقل السيارة بنجاح." -#: inventory/views.py:895 +#: inventory/views.py:903 msgid "Car transfer approved successfully." msgstr "تمت الموافقة على نقل السيارة بنجاح." -#: inventory/views.py:906 +#: inventory/views.py:914 msgid "Car transfer rejected successfully." msgstr "تم رفض نقل السيارة بنجاح." -#: inventory/views.py:917 +#: inventory/views.py:927 msgid "Car Transfer Completed successfully." msgstr "تم إكمال نقل السيارة بنجاح." -#: inventory/views.py:988 +#: inventory/views.py:998 msgid "Custom Card added successfully." msgstr "تم إضافة البطاقة الجمركية بنجاح." -#: inventory/views.py:997 +#: inventory/views.py:1018 +msgid "Registration added successfully." +msgstr "تم إلغاء الحجز بنجاح." + +#: inventory/views.py:1027 msgid "This car is already reserved." msgstr "هذه السيارة محجوزة بالفعل." -#: inventory/views.py:1017 +#: inventory/views.py:1047 msgid "Reservation renewed successfully." msgstr "تم تجديد الحجز بنجاح" -#: inventory/views.py:1025 +#: inventory/views.py:1055 msgid "Reservation canceled successfully." msgstr "تم إلغاء الحجز بنجاح." -#: inventory/views.py:1030 +#: inventory/views.py:1060 msgid "Invalid action." msgstr "إجراء غير صالح." -#: inventory/views.py:1034 +#: inventory/views.py:1064 msgid "Invalid request method." msgstr "طريقة الطلب غير صالحة" -#: inventory/views.py:1056 +#: inventory/views.py:1086 msgid "Dealer updated successfully." msgstr "تم تحديث المعرض بنجاح." -#: inventory/views.py:1076 templates/header.html:154 +#: inventory/views.py:1106 templates/header.html:154 msgid "customers" msgstr "العملاء" -#: inventory/views.py:1184 +#: inventory/views.py:1216 msgid "Customer created successfully." msgstr "تم إنشاء العميل بنجاح." -#: inventory/views.py:1216 +#: inventory/views.py:1248 msgid "Customer updated successfully." msgstr "تم تحديث العميل بنجاح." -#: inventory/views.py:1228 +#: inventory/views.py:1263 msgid "Customer deleted successfully." msgstr "تم حذف العميل بنجاح." -#: inventory/views.py:1263 +#: inventory/views.py:1298 msgid "Vendor created successfully." msgstr "تم إنشاء المورد بنجاح." -#: inventory/views.py:1283 +#: inventory/views.py:1318 msgid "Vendor updated successfully." msgstr "تم تحديث المورد بنجاح" -#: inventory/views.py:1291 +#: inventory/views.py:1326 msgid "Vendor deleted successfully." msgstr "تم حذف المورد بنجاح." -#: inventory/views.py:1699 +#: inventory/views.py:1734 msgid "User created successfully." msgstr "تم إنشاء المستخدم بنجاح." -#: inventory/views.py:1724 +#: inventory/views.py:1759 msgid "User updated successfully." msgstr "تم تحديث المستخدم بنجاح" -#: inventory/views.py:1735 +#: inventory/views.py:1770 msgid "User deleted successfully." msgstr "تم حذف المستخدم بنجاح." -#: inventory/views.py:1800 inventory/views.py:1828 +#: inventory/views.py:1839 inventory/views.py:1871 msgid "Organization created successfully." msgstr "تم إنشاء المنظمة بنجاح." -#: inventory/views.py:3017 +#: inventory/views.py:3076 msgid "Opportunity deleted successfully." msgstr "تم حذف الفرصة بنجاح." -#: inventory/views.py:3054 +#: inventory/views.py:3113 msgid "Notification marked as read." msgstr "تم تمييز الإشعار كمقروء." -#: inventory/views.py:3080 +#: inventory/views.py:3139 msgid "Service created successfully." msgstr "تم إنشاء الخدمة بنجاح." -#: inventory/views.py:3096 +#: inventory/views.py:3155 msgid "Service updated successfully." msgstr "تم تحديث الخدمة بنجاح." -#: inventory/views.py:3219 inventory/views.py:3244 +#: inventory/views.py:3278 inventory/views.py:3303 msgid "Bill updated successfully." msgstr "تم تحديث الفاتورة بنجاح." -#: inventory/views.py:3270 +#: inventory/views.py:3329 msgid "Bill is already approved." msgstr "تمت الموافقة على الفاتورة مسبقًا." -#: inventory/views.py:3274 +#: inventory/views.py:3333 msgid "Bill marked as approved successfully." msgstr "تم تحديد الفاتورة كموافقة بنجاح." -#: inventory/views.py:3283 +#: inventory/views.py:3342 msgid "Bill is already paid." msgstr "تم دفع الفاتورة مسبقًا." -#: inventory/views.py:3292 +#: inventory/views.py:3351 msgid "Bill marked as paid successfully." msgstr "تم تحديد الفاتورة كمدفوعة بنجاح." -#: inventory/views.py:3294 +#: inventory/views.py:3353 msgid "Amount paid is not equal to amount due." msgstr "المبلغ المدفوع لا يساوي المبلغ المستحق." +#: inventory/views.py:3765 templates/header.html:259 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/unit/unit_detail.html:23 +#: venv/lib/python3.11/site-packages/django_ledger/views/entity.py:210 +msgid "Dashboard" +msgstr "لوحة القيادة" + #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:9 msgid "Account Inactive" @@ -1810,10 +1838,10 @@ msgstr "" #: templates/account/confirm_email_verification_code.html:27 #: templates/account/email_confirm.html:35 #: templates/account/reauthenticate.html:18 -#: templates/inventory/transfer_details.html:26 -#: templates/inventory/transfer_details.html:45 +#: templates/inventory/transfer_details.html:27 #: templates/ledger/bills/bill_detail.html:11 #: templates/ledger/bills/bill_detail.html:36 +#: templates/plans/billing_info_delete.html:13 #: templates/sales/estimates/estimate_detail.html:11 #: templates/sales/invoices/invoice_detail.html:11 #: templates/sales/invoices/invoice_detail.html:36 @@ -1827,14 +1855,15 @@ msgstr "تأكيد" #: templates/crm/leads/lead_form.html:17 #: templates/crm/opportunities/opportunity_form.html:89 #: templates/inventory/add_colors.html:56 -#: templates/inventory/add_custom_card.html:8 +#: templates/inventory/add_custom_card.html:12 #: templates/inventory/car_confirm_delete.html:14 -#: templates/inventory/car_detail.html:248 +#: templates/inventory/car_detail.html:270 #: templates/inventory/car_finance_form.html:41 +#: templates/inventory/car_registration_form.html:13 #: templates/inventory/color_palette.html:107 #: templates/inventory/reserve_car.html:30 -#: templates/inventory/transfer_preview.html:223 -#: templates/inventory/transfer_preview.html:242 +#: templates/inventory/transfer_preview.html:181 +#: templates/inventory/transfer_preview.html:200 #: templates/ledger/bank_accounts/bank_account_form.html:33 #: templates/ledger/bills/bill_form.html:42 #: templates/ledger/bills/bill_update_form.html:18 @@ -1861,7 +1890,7 @@ msgstr "إلغاء" #: templates/account/confirm_login_code..html:35 templates/account/login.html:6 #: templates/account/login.html:21 templates/account/login.html:45 #: templates/account/request_login_code.html:5 templates/account/signup.html:80 -#: templates/header.html:434 templates/welcome.html:77 +#: templates/header.html:452 templates/welcome.html:77 msgid "Sign In" msgstr "تسجيل الدخول" @@ -2215,7 +2244,7 @@ msgstr "إذا لم تقم بإنشاء حساب بعد، يرجى التسجي #: templates/account/login.html:52 templates/account/signup-wizard.html:16 #: templates/account/signup.html:5 templates/account/signup.html:79 -#: templates/header.html:437 templates/welcome.html:78 +#: templates/header.html:455 templates/welcome.html:78 msgid "Sign Up" msgstr "إنشاء حساب" @@ -2228,7 +2257,7 @@ msgid "Mail me a sign-in code" msgstr "أرسل لي رمز تسجيل الدخول عبر البريد الإلكتروني" #: templates/account/logout.html:3 templates/account/logout.html:11 -#: templates/account/logout.html:20 templates/header.html:427 +#: templates/account/logout.html:20 templates/header.html:445 msgid "Sign Out" msgstr "تسجيل الخروج" @@ -2291,8 +2320,11 @@ msgid "Enter the verification code" msgstr "أدخل رمز التحقق" #: templates/account/otp_verification.html:18 -msgid "An email containing a 6-digit verification code has been sent to your email." -msgstr "تم إرسال بريد إلكتروني يحتوي على رمز تحقق مكون من 6 أرقام إلى بريدك الإلكتروني." +msgid "" +"An email containing a 6-digit verification code has been sent to your email." +msgstr "" +"تم إرسال بريد إلكتروني يحتوي على رمز تحقق مكون من 6 أرقام إلى بريدك " +"الإلكتروني." #: templates/account/otp_verification.html:29 templates/otp/verify_otp.html:30 msgid "Verify" @@ -2450,13 +2482,13 @@ msgstr "السابق" msgid "Next" msgstr "التالي" -#: templates/account/signup-wizard.html:152 +#: templates/account/signup-wizard.html:140 #: templates/inventory/car_form.html:606 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:654 msgid "Please Wait" msgstr "الرجاء الإنتظار" -#: templates/account/signup-wizard.html:153 +#: templates/account/signup-wizard.html:141 #: templates/inventory/car_form.html:607 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:655 msgid "Loading" @@ -2546,8 +2578,9 @@ msgstr "" #: templates/email_sender/reminder_email.html:80 #: templates/email_sender/reschedule_email.html:64 #: templates/email_sender/reschedule_email.html:69 -#: templates/inventory/car_detail.html:287 -#: templates/inventory/transfer_preview.html:261 +#: templates/inventory/car_detail.html:309 +#: templates/inventory/transfer_details.html:59 +#: templates/inventory/transfer_preview.html:219 #: templates/ledger/coa_accounts/account_detail.html:64 #: templates/sales/estimates/estimate_preview.html:262 #: templates/sales/estimates/sale_order_preview.html:226 @@ -2716,10 +2749,11 @@ msgstr "" #: templates/crm/opportunities/opportunity_form.html:88 #: templates/customers/customer_form.html:29 #: templates/inventory/add_colors.html:55 -#: templates/inventory/add_custom_card.html:7 +#: templates/inventory/add_custom_card.html:17 #: templates/inventory/car_edit.html:12 #: templates/inventory/car_finance_form.html:40 #: templates/inventory/car_location_form.html:18 +#: templates/inventory/car_registration_form.html:18 #: templates/inventory/color_palette.html:106 #: templates/items/expenses/expense_create.html:16 #: templates/items/expenses/expense_update.html:16 @@ -2792,7 +2826,7 @@ msgstr "المدة" #: templates/administration/service_list.html:25 #: templates/administration/user_profile.html:106 #: templates/administration/user_profile.html:172 -#: templates/inventory/car_detail.html:283 +#: templates/inventory/car_detail.html:305 #: templates/items/expenses/expenses_list.html:22 #: templates/items/service/service_list.html:24 #: templates/ledger/bank_accounts/bank_account_list.html:21 @@ -2962,7 +2996,7 @@ msgstr "أعضاء الفريق" #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:71 #: templates/crm/opportunities/opportunity_list.html:65 #: templates/inventory/car_form.html:224 -#: templates/inventory/inventory_stats.html:48 +#: templates/inventory/inventory_stats.html:63 #: venv/lib/python3.11/site-packages/appointment/templates/administration/staff_list.html:40 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_table.html:43 msgid "Details" @@ -3185,14 +3219,15 @@ msgid "Payment Details" msgstr "تفاصيل الدفع" #: templates/appointment/appointment_client_information.html:101 -#: templates/inventory/car_detail.html:157 -#: templates/inventory/inventory_stats.html:57 -#: templates/inventory/transfer_preview.html:274 +#: templates/inventory/car_detail.html:179 +#: templates/inventory/inventory_stats.html:72 +#: templates/inventory/transfer_details.html:74 +#: templates/inventory/transfer_preview.html:232 #: templates/ledger/bills/bill_detail.html:216 #: templates/ledger/coa_accounts/account_detail.html:100 -#: templates/ledger/reports/tags/balance_sheet_statement.html:92 +#: templates/ledger/reports/tags/balance_sheet_statement.html:55 #: templates/plans/order_detail_table.html:12 -#: templates/sales/estimates/estimate_detail.html:128 +#: templates/sales/estimates/estimate_detail.html:125 #: templates/sales/estimates/estimate_preview.html:276 #: templates/sales/estimates/sale_order_preview.html:244 #: templates/sales/invoices/invoice_detail.html:218 @@ -3437,9 +3472,9 @@ msgstr "هل أنت متأكد أنك تريد حذف هذا العميل الم #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:155 #: templates/customers/customer_list.html:93 #: templates/customers/view_customer.html:26 -#: templates/inventory/car_detail.html:357 -#: templates/inventory/transfer_details.html:23 -#: templates/inventory/transfer_details.html:44 +#: templates/inventory/car_detail.html:402 +#: templates/inventory/transfer_details.html:24 +#: templates/inventory/transfer_details.html:46 #: templates/ledger/bank_accounts/bank_account_detail.html:26 #: templates/ledger/bills/bill_detail.html:20 #: templates/ledger/bills/bill_detail.html:45 @@ -3463,7 +3498,8 @@ msgstr "لا" #: templates/crm/leads/lead_list.html:98 #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:158 #: templates/customers/view_customer.html:31 -#: templates/inventory/car_detail.html:361 +#: templates/inventory/car_detail.html:407 +#: templates/inventory/transfer_details.html:47 #: templates/ledger/bank_accounts/bank_account_detail.html:31 #: templates/ledger/bills/bill_detail.html:24 #: templates/ledger/bills/bill_detail.html:49 @@ -3487,8 +3523,8 @@ msgstr "نعم" #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:27 #: templates/customers/customer_list.html:126 #: templates/dealers/dealer_detail.html:24 -#: templates/inventory/car_detail.html:115 -#: templates/inventory/car_detail.html:163 +#: templates/inventory/car_detail.html:137 +#: templates/inventory/car_detail.html:185 #: templates/ledger/bank_accounts/bank_account_detail.html:57 #: templates/ledger/coa_accounts/account_detail.html:114 #: templates/modal/event_details_modal.html:25 @@ -3527,6 +3563,7 @@ msgid "Amount" msgstr "المبلغ" #: templates/crm/opportunities/opportunity_detail.html:196 +#: templates/ledger/reports/dashboard.html:44 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_ic.html:5 msgid "Revenue" msgstr "الإيرادات" @@ -3628,6 +3665,10 @@ msgstr "تفاصيل العميل" #: templates/items/expenses/expenses_list.html:34 #: templates/items/service/service_list.html:44 #: templates/ledger/bank_accounts/bank_account_list.html:33 +#: templates/ledger/reports/tags/income_statement.html:104 +#: templates/ledger/reports/tags/income_statement.html:178 +#: templates/ledger/reports/tags/income_statement.html:252 +#: templates/ledger/reports/tags/income_statement.html:313 #: venv/lib/python3.11/site-packages/appointment/services.py:170 #: venv/lib/python3.11/site-packages/appointment/views_admin.py:374 #: venv/lib/python3.11/site-packages/appointment/views_admin.py:471 @@ -3734,7 +3775,7 @@ msgid "Active" msgstr "نشط" #: templates/dealers/dealer_detail.html:67 -#: templates/inventory/car_detail.html:253 templates/plans/current.html:23 +#: templates/inventory/car_detail.html:275 templates/plans/current.html:23 msgid "Expired" msgstr "منتهي الصلاحية" @@ -3863,7 +3904,7 @@ msgid "This is a reminder for your upcoming appointment." msgstr "هذه تذكرة بموعدك القادم." #: templates/email_sender/reminder_email.html:83 -#: templates/inventory/car_detail.html:97 +#: templates/inventory/car_detail.html:119 #: venv/lib/python3.11/site-packages/appointment/templates/email_sender/reminder_email.html:83 msgid "Location" msgstr "الموقع" @@ -4214,6 +4255,7 @@ msgstr "الخدمات" #: templates/items/expenses/expenses_list.html:4 #: templates/items/expenses/expenses_list.html:10 #: templates/items/service/service_list.html:4 +#: templates/ledger/reports/dashboard.html:48 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_ic.html:8 msgid "Expenses" msgstr "المصروفات" @@ -4232,7 +4274,11 @@ msgstr "الفواتير" msgid "Reports" msgstr "التقارير" -#: templates/header.html:259 templates/ledger/reports/income_statement.html:31 +#: templates/header.html:268 +msgid "Cash Flow" +msgstr "التدفق النقدي" + +#: templates/header.html:277 templates/ledger/reports/income_statement.html:31 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:146 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_update.html:71 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/income_statement.html:31 @@ -4243,7 +4289,7 @@ msgstr "التقارير" msgid "Income Statement" msgstr "بيان الدخل" -#: templates/header.html:268 templates/ledger/reports/balance_sheet.html:36 +#: templates/header.html:286 templates/ledger/reports/balance_sheet.html:36 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:144 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_update.html:66 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/balance_sheet.html:30 @@ -4255,7 +4301,7 @@ msgstr "بيان الدخل" msgid "Balance Sheet" msgstr "الميزانية العمومية" -#: templates/header.html:397 templates/header.html:401 +#: templates/header.html:415 templates/header.html:419 msgid "profile" msgstr "الملف الشخصي" @@ -4310,7 +4356,7 @@ msgid "trim" msgstr "الفئة" #: templates/inventory/car_detail.html:69 -#: templates/inventory/car_detail.html:372 +#: templates/inventory/car_detail.html:421 #: templates/inventory/car_form.html:111 templates/inventory/car_form.html:224 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:252 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:279 @@ -4330,67 +4376,70 @@ msgid "view" msgstr "عرض" #: templates/inventory/car_detail.html:90 -#: templates/inventory/car_detail.html:106 -#: templates/inventory/car_detail.html:168 -#: templates/inventory/car_detail.html:212 +#: templates/inventory/car_detail.html:112 +#: templates/inventory/car_detail.html:128 +#: templates/inventory/car_detail.html:190 +#: templates/inventory/car_detail.html:234 #: templates/inventory/car_location_form.html:10 #: venv/lib/python3.11/site-packages/appointment/services.py:170 msgid "Add" msgstr "إضافة" -#: templates/inventory/car_detail.html:100 +#: templates/inventory/car_detail.html:122 #: templates/inventory/car_inventory.html:92 msgid "Our Showroom" msgstr "معرضنا" -#: templates/inventory/car_detail.html:104 +#: templates/inventory/car_detail.html:126 msgid "No location available." msgstr "لا يوجد موقع متاح." -#: templates/inventory/car_detail.html:122 +#: templates/inventory/car_detail.html:144 msgid "Financial Details" msgstr "التفاصيل المالية" -#: templates/inventory/car_detail.html:141 +#: templates/inventory/car_detail.html:163 msgid "Additional Fee" msgstr "رسوم إضافية" -#: templates/inventory/car_detail.html:153 +#: templates/inventory/car_detail.html:175 msgid "VAT Amount" msgstr "مبلغ ضريبة القيمة المضافة" -#: templates/inventory/car_detail.html:166 +#: templates/inventory/car_detail.html:188 msgid "No finance details available." msgstr "لا توجد تفاصيل مالية متاحة." -#: templates/inventory/car_detail.html:178 +#: templates/inventory/car_detail.html:200 msgid "Colors Details" msgstr "تفاصيل الألوان" -#: templates/inventory/car_detail.html:185 +#: templates/inventory/car_detail.html:207 msgid "Exterior" msgstr "الخارجي" -#: templates/inventory/car_detail.html:194 +#: templates/inventory/car_detail.html:216 msgid "Interior" msgstr "الداخلي" -#: templates/inventory/car_detail.html:206 +#: templates/inventory/car_detail.html:228 msgid "No colors available for this car." msgstr "لا تتوفر ألوان لهذه السيارة." -#: templates/inventory/car_detail.html:223 +#: templates/inventory/car_detail.html:245 msgid "Reservations Details" msgstr "تفاصيل الحجز" -#: templates/inventory/car_detail.html:231 +#: templates/inventory/car_detail.html:253 msgid "Expires At" msgstr "ينتهي في" -#: templates/inventory/car_detail.html:232 +#: templates/inventory/car_detail.html:254 #: templates/ledger/coa_accounts/account_detail.html:69 -#: templates/ledger/reports/tags/balance_sheet_statement.html:27 -#: templates/ledger/reports/tags/balance_sheet_statement.html:57 +#: templates/ledger/reports/tags/income_statement.html:95 +#: templates/ledger/reports/tags/income_statement.html:169 +#: templates/ledger/reports/tags/income_statement.html:243 +#: templates/ledger/reports/tags/income_statement.html:304 #: templates/representatives/representative_list.html:20 #: templates/sales/estimates/estimate_list.html:19 #: templates/sales/invoices/invoice_list.html:20 @@ -4428,56 +4477,43 @@ msgstr "ينتهي في" msgid "Actions" msgstr "الإجراءات" -#: templates/inventory/car_detail.html:245 +#: templates/inventory/car_detail.html:267 msgid "Renew" msgstr "تجديد" -#: templates/inventory/car_detail.html:262 +#: templates/inventory/car_detail.html:284 #: templates/inventory/reserve_car.html:29 msgid "Reserve" msgstr "حجز" -#: templates/inventory/car_detail.html:277 +#: templates/inventory/car_detail.html:299 +#: templates/inventory/transfer_details.html:57 msgid "Transfer Details" msgstr "تفاصيل النقل" -#: templates/inventory/car_detail.html:285 +#: templates/inventory/car_detail.html:307 msgid "From Showroom" msgstr "من صالة العرض" -#: templates/inventory/car_detail.html:286 +#: templates/inventory/car_detail.html:308 msgid "To Showroom" msgstr "إلى صالة العرض" -#: templates/inventory/car_detail.html:353 +#: templates/inventory/car_detail.html:390 msgid "Are you sure you want to reserve this car?" msgstr "هل أنت متأكد أنك تريد حجز هذه السيارة؟" -#: templates/inventory/car_detail.html:379 -#: templates/inventory/car_form.html:234 templates/inventory/car_form.html:253 -#: templates/inventory/car_form.html:273 templates/inventory/car_form.html:285 -#: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:281 -#: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:287 -#: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:301 -#: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:321 -#: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:333 -#: templates/modal/confirm_modal.html:18 templates/modal/error_modal.html:17 -#: templates/modal/event_details_modal.html:19 -#: templates/partials/scanner_modal.html:6 -#: templates/partials/specifications_modal.html:8 -#: venv/lib/python3.11/site-packages/appointment/templates/modal/confirm_modal.html:18 -#: venv/lib/python3.11/site-packages/appointment/templates/modal/error_modal.html:17 -#: venv/lib/python3.11/site-packages/appointment/templates/modal/event_details_modal.html:19 -msgid "Close" -msgstr "إغلاق" +#: templates/inventory/car_detail.html:473 +msgid "Error loading form. Please try again later" +msgstr "" -#: templates/inventory/car_detail.html:456 +#: templates/inventory/car_detail.html:511 #: templates/inventory/car_list.html:542 #: templates/partials/specifications_modal.html:11 msgid "No specifications available." msgstr "لا توجد مواصفات متاحة." -#: templates/inventory/car_detail.html:460 +#: templates/inventory/car_detail.html:515 #: templates/inventory/car_list.html:546 msgid "Error loading specifications." msgstr "حدث خطأ أثناء تحميل المواصفات." @@ -4535,6 +4571,23 @@ msgstr "حفظ وإضافة آخر" msgid "Save and Go to Inventory" msgstr "حفظ والانتقال إلى المخزون" +#: templates/inventory/car_form.html:234 templates/inventory/car_form.html:253 +#: templates/inventory/car_form.html:273 templates/inventory/car_form.html:285 +#: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:281 +#: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:287 +#: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:301 +#: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:321 +#: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:333 +#: templates/modal/confirm_modal.html:18 templates/modal/error_modal.html:17 +#: templates/modal/event_details_modal.html:19 +#: templates/partials/scanner_modal.html:6 +#: templates/partials/specifications_modal.html:8 +#: venv/lib/python3.11/site-packages/appointment/templates/modal/confirm_modal.html:18 +#: venv/lib/python3.11/site-packages/appointment/templates/modal/error_modal.html:17 +#: venv/lib/python3.11/site-packages/appointment/templates/modal/event_details_modal.html:19 +msgid "Close" +msgstr "إغلاق" + #: templates/inventory/car_form.html:251 #: venv/lib/python3.11/site-packages/click/core.py:1396 msgid "Options" @@ -4676,23 +4729,19 @@ msgstr "إضافة لون الى" msgid "Color Type" msgstr "نوع اللون" -#: templates/inventory/inventory_stats.html:5 -msgid "Inventory Statistics" -msgstr "إحصائيات المخزون" - -#: templates/inventory/inventory_stats.html:36 +#: templates/inventory/inventory_stats.html:51 msgid "models" msgstr "الموديلات" -#: templates/inventory/inventory_stats.html:51 +#: templates/inventory/inventory_stats.html:66 msgid "Trims" msgstr "الفئات" -#: templates/inventory/inventory_stats.html:60 +#: templates/inventory/inventory_stats.html:75 msgid "No trims available" msgstr "لا يوجد فئات متاحة." -#: templates/inventory/inventory_stats.html:66 +#: templates/inventory/inventory_stats.html:81 msgid "No models available." msgstr "لا توجد موديلات متاحة." @@ -4716,96 +4765,116 @@ msgstr "نقل السيارة" msgid "transfer car" msgstr "نقل السيارة" -#: templates/inventory/transfer_details.html:7 +#: templates/inventory/transfer_details.html:8 msgid "Car Transfer Details" msgstr "تفاصيل نقل السيارة" -#: templates/inventory/transfer_details.html:16 +#: templates/inventory/transfer_details.html:17 msgid "Car Transfer Approve" msgstr "الموافقة على نقل السيارة" -#: templates/inventory/transfer_details.html:20 -#: templates/inventory/transfer_details.html:41 +#: templates/inventory/transfer_details.html:21 #: templates/two_factor/profile/profile.html:21 msgid "Are you sure?" msgstr "هل أنت متأكد؟" -#: templates/inventory/transfer_details.html:37 -msgid "Car Transfer Cancel" -msgstr "إلغاء نقل السيارة" +#: templates/inventory/transfer_details.html:38 +#: templates/inventory/transfer_details.html:107 +msgid "Cancel Transfer" +msgstr "إلغاء النقل" -#: templates/inventory/transfer_details.html:58 +#: templates/inventory/transfer_details.html:42 +#: templates/ledger/bills/bill_detail.html:15 +#: templates/ledger/bills/bill_detail.html:40 +#: templates/sales/estimates/estimate_detail.html:15 +#: templates/sales/invoices/invoice_detail.html:15 +#: templates/sales/invoices/invoice_detail.html:40 +msgid "Are you sure" +msgstr "هل أنت متأكد" + +#: templates/inventory/transfer_details.html:60 +#: templates/inventory/transfer_preview.html:220 +msgid "From" +msgstr "من" + +#: templates/inventory/transfer_details.html:61 +#: templates/inventory/transfer_preview.html:221 +msgid "To" +msgstr "إلى" + +#: templates/inventory/transfer_details.html:73 +#: templates/plans/order_detail_table.html:10 +#: templates/sales/estimates/estimate_preview.html:294 +#: templates/sales/estimates/sale_order_preview.html:265 +#: templates/sales/invoices/invoice_detail.html:238 +msgid "VAT" +msgstr "ضريبة القيمة المضافة" + +#: templates/inventory/transfer_details.html:92 +#: templates/inventory/transfer_preview.html:249 +#: templates/sales/estimates/estimate_preview.html:305 +#: templates/sales/estimates/sale_order_preview.html:276 +msgid "Total Amount" +msgstr "المبلغ الإجمالي" + +#: templates/inventory/transfer_details.html:93 +msgid "Total Amount written" +msgstr "المبلغ بالحروف" + +#: templates/inventory/transfer_details.html:93 +msgid "only" +msgstr "فقط لا غير" + +#: templates/inventory/transfer_details.html:104 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/card_estimate.html:80 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/includes/card_invoice.html:161 msgid "Approve" msgstr "الموافقة" -#: templates/inventory/transfer_details.html:61 -msgid "Cancel Transfer" -msgstr "إلغاء النقل" - -#: templates/inventory/transfer_details.html:63 -msgid "Return" -msgstr "عودة" - -#: templates/inventory/transfer_preview.html:201 +#: templates/inventory/transfer_preview.html:159 msgid "Download transfer" msgstr "تحميل النقل" -#: templates/inventory/transfer_preview.html:204 -#: templates/inventory/transfer_preview.html:216 +#: templates/inventory/transfer_preview.html:162 +#: templates/inventory/transfer_preview.html:174 msgid "Accept transfer" msgstr "قبول النقل" -#: templates/inventory/transfer_preview.html:207 -#: templates/inventory/transfer_preview.html:235 +#: templates/inventory/transfer_preview.html:165 +#: templates/inventory/transfer_preview.html:193 msgid "Reject transfer" msgstr "رفض النقل" -#: templates/inventory/transfer_preview.html:220 +#: templates/inventory/transfer_preview.html:178 msgid "Are you sure you want to accept this transfer?" msgstr "هل أنت متأكد أنك تريد قبول هذا النقل؟" -#: templates/inventory/transfer_preview.html:239 +#: templates/inventory/transfer_preview.html:197 msgid "Are you sure you want to reject this transfer?" msgstr "هل أنت متأكد أنك تريد رفض هذا النقل؟" -#: templates/inventory/transfer_preview.html:256 +#: templates/inventory/transfer_preview.html:214 #: templates/sales/estimates/estimate_preview.html:256 #: templates/sales/estimates/sale_order_preview.html:219 msgid "Thank you for choosing us. We appreciate your business" msgstr "شكرًا لاختيارك لنا. نحن نقدر عملك معنا." -#: templates/inventory/transfer_preview.html:262 -msgid "From" -msgstr "من" - -#: templates/inventory/transfer_preview.html:263 -msgid "To" -msgstr "إلى" - -#: templates/inventory/transfer_preview.html:273 +#: templates/inventory/transfer_preview.html:231 #: templates/ledger/bills/bill_detail.html:215 -#: templates/sales/estimates/estimate_detail.html:127 +#: templates/sales/estimates/estimate_detail.html:124 #: templates/sales/estimates/estimate_preview.html:275 #: templates/sales/estimates/sale_order_preview.html:243 #: templates/sales/invoices/invoice_detail.html:217 msgid "Unit Price" msgstr "سعر الوحدة" -#: templates/inventory/transfer_preview.html:291 -#: templates/sales/estimates/estimate_preview.html:305 -#: templates/sales/estimates/sale_order_preview.html:276 -msgid "Total Amount" -msgstr "المبلغ الإجمالي" - -#: templates/inventory/transfer_preview.html:296 +#: templates/inventory/transfer_preview.html:254 #: templates/sales/estimates/estimate_preview.html:310 #: templates/sales/estimates/sale_order_preview.html:281 msgid "If you have any questions, feel free to contact us at" msgstr "إذا كان لديك أي أسئلة، يرجى التواصل معنا على" -#: templates/inventory/transfer_preview.html:297 +#: templates/inventory/transfer_preview.html:255 #: templates/sales/estimates/estimate_preview.html:311 #: templates/sales/estimates/sale_order_preview.html:282 msgid "Thank you for your business" @@ -4902,6 +4971,7 @@ msgid "Add Bank Account" msgstr "إضافة حساب بنكي" #: templates/ledger/bank_accounts/bank_account_list.html:19 +#: templates/ledger/reports/tags/income_statement.html:8 #: venv/lib/python3.11/site-packages/django_ledger/forms/bank_account.py:83 #: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:1134 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:8 @@ -4923,14 +4993,6 @@ msgstr "لم يتم العثور على أي حساب بنكي." msgid "View Bill" msgstr "عرض الفاتورة" -#: templates/ledger/bills/bill_detail.html:15 -#: templates/ledger/bills/bill_detail.html:40 -#: templates/sales/estimates/estimate_detail.html:15 -#: templates/sales/invoices/invoice_detail.html:15 -#: templates/sales/invoices/invoice_detail.html:40 -msgid "Are you sure" -msgstr "هل أنت متأكد" - #: templates/ledger/bills/bill_detail.html:61 #: templates/ledger/bills/bill_update_form.html:4 #: templates/ledger/bills/bill_update_form.html:7 @@ -5019,7 +5081,7 @@ msgid "bill Status" msgstr "حالة الفاتورة" #: templates/ledger/bills/bill_detail.html:193 -#: templates/sales/estimates/estimate_detail.html:105 +#: templates/sales/estimates/estimate_detail.html:102 #: templates/sales/estimates/estimate_list.html:31 #: templates/sales/invoices/invoice_detail.html:195 #: templates/sales/invoices/invoice_list.html:38 @@ -5049,7 +5111,7 @@ msgid "Vat Amount" msgstr "مبلغ ضريبة القيمة المضافة" #: templates/ledger/bills/bill_detail.html:236 -#: templates/sales/estimates/estimate_detail.html:163 +#: templates/sales/estimates/estimate_detail.html:160 #: templates/sales/invoices/invoice_detail.html:252 msgid "Grand Total" msgstr "الإجمالي" @@ -5110,7 +5172,7 @@ msgstr "هل أنت متأكد أنك تريد حذف هذا الحساب؟" #: templates/ledger/coa_accounts/account_detail.html:39 #: templates/ledger/coa_accounts/account_list.html:43 -#: templates/ledger/reports/tags/balance_sheet_statement.html:21 +#: templates/ledger/reports/tags/balance_sheet_statement.html:14 #: templates/sales/payments/payment_details.html:16 #: venv/lib/python3.11/site-packages/django_ledger/forms/bank_account.py:82 #: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:428 @@ -5122,7 +5184,7 @@ msgid "Account Name" msgstr "اسم الحساب" #: templates/ledger/coa_accounts/account_detail.html:42 -#: templates/ledger/reports/tags/balance_sheet_statement.html:20 +#: templates/ledger/reports/tags/balance_sheet_statement.html:13 #: templates/sales/payments/payment_details.html:17 #: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:427 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:20 @@ -5132,7 +5194,8 @@ msgstr "رمز الحساب" #: templates/ledger/coa_accounts/account_detail.html:48 #: templates/ledger/coa_accounts/account_detail.html:50 #: templates/ledger/coa_accounts/account_list.html:45 -#: templates/ledger/reports/tags/balance_sheet_statement.html:25 +#: templates/ledger/reports/tags/balance_sheet_statement.html:18 +#: templates/ledger/reports/tags/income_statement.html:13 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:26 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:25 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:13 @@ -5203,8 +5266,10 @@ msgid "No account found." msgstr "لم يتم العثور على حساب." #: templates/ledger/reports/balance_sheet.html:38 +#: templates/ledger/reports/cash_flow_statement.html:33 #: templates/ledger/reports/income_statement.html:28 -#: templates/ledger/reports/tags/balance_sheet_statement.html:23 +#: templates/ledger/reports/tags/balance_sheet_statement.html:16 +#: templates/ledger/reports/tags/income_statement.html:11 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_item_formset.html:23 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_txs_table.html:9 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/balance_sheet.html:32 @@ -5219,6 +5284,7 @@ msgid "Unit" msgstr "الوحدة" #: templates/ledger/reports/balance_sheet.html:43 +#: templates/ledger/reports/cash_flow_statement.html:38 #: templates/ledger/reports/components/period_navigator.html:9 #: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:3158 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/balance_sheet.html:37 @@ -5226,65 +5292,254 @@ msgstr "الوحدة" msgid "Fiscal Year" msgstr "السنة المالية" -#: templates/ledger/reports/components/period_navigator.html:29 -msgid "Quarter" -msgstr "ربع السنة" +#: templates/ledger/reports/cash_flow_statement.html:31 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:148 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/cash_flow.html:31 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/invoice_detail.html:135 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html:54 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/unit/unit_detail.html:29 +msgid "Cash Flow Statement" +msgstr "بيان التدفقات النقدية" -#: templates/ledger/reports/components/period_navigator.html:40 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/components/period_navigator.html:26 -msgid "Month" -msgstr "الشهر" - -#: templates/ledger/reports/components/period_navigator.html:55 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/components/period_navigator.html:37 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_ic.html:17 -msgid "thru" -msgstr "عبر" - -#: templates/ledger/reports/components/period_navigator.html:64 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/components/period_navigator.html:41 -msgid "Go To Current Month" -msgstr "الذهاب إلى الشهر الحالي" - -#: templates/ledger/reports/income_statement.html:56 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/balance_sheet.html:54 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/cash_flow.html:57 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/income_statement.html:56 -msgid "By Unit" -msgstr "حسب الوحدة" - -#: templates/ledger/reports/income_statement.html:59 +#: templates/ledger/reports/cash_flow_statement.html:49 +#: templates/ledger/reports/income_statement.html:47 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/balance_sheet.html:57 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/cash_flow.html:60 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/income_statement.html:59 msgid "Download PDF" msgstr "تنزيل PDF" -#: templates/ledger/reports/tags/balance_sheet_statement.html:26 +#: templates/ledger/reports/components/period_navigator.html:41 +msgid "Quarter" +msgstr "ربع السنة" + +#: templates/ledger/reports/components/period_navigator.html:52 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/components/period_navigator.html:26 +msgid "Month" +msgstr "الشهر" + +#: templates/ledger/reports/components/period_navigator.html:67 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/components/period_navigator.html:37 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_ic.html:17 +msgid "thru" +msgstr "عبر" + +#: templates/ledger/reports/components/period_navigator.html:76 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/components/period_navigator.html:41 +msgid "Go To Current Month" +msgstr "الذهاب إلى الشهر الحالي" + +#: templates/ledger/reports/dashboard-copy.html:43 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:439 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:525 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/entity/entity_dashboard.html:50 +msgid "Receivables" +msgstr "المستحقات" + +#: templates/ledger/reports/dashboard-copy.html:75 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/entity/entity_dashboard.html:83 +msgid "Payables" +msgstr "الحسابات الدائنة" + +#: templates/ledger/reports/dashboard.html:20 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_bs.html:5 +msgid "Assets" +msgstr "الأصول" + +#: templates/ledger/reports/dashboard.html:24 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_bs.html:8 +msgid "Liabilities" +msgstr "الالتزامات" + +#: templates/ledger/reports/dashboard.html:28 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_bs.html:11 +msgid "Equity" +msgstr "حقوق الملكية" + +#: templates/ledger/reports/dashboard.html:52 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_ic.html:11 +msgid "Earnings (Loss)" +msgstr "الأرباح (الخسارة)" + +#: templates/ledger/reports/dashboard.html:61 +msgid "Net Receivables" +msgstr "صافي الذمم المدينة" + +#: templates/ledger/reports/dashboard.html:62 +msgid "According to the sales data" +msgstr "وفقًا لبيانات المبيعات" + +#: templates/ledger/reports/dashboard.html:74 +msgid "Financial Analysis" +msgstr "التحليل المالي" + +#: templates/ledger/reports/dashboard.html:75 +msgid "Solvency" +msgstr "الملاءة المالية" + +#: templates/ledger/reports/dashboard.html:76 +msgid "Current Ratio" +msgstr "نسبة التداول" + +#: templates/ledger/reports/dashboard.html:83 +msgid "Quick Ratio" +msgstr "النسبة السريعة" + +#: templates/ledger/reports/dashboard.html:91 +msgid "Leverage" +msgstr "الرافعة المالية" + +#: templates/ledger/reports/dashboard.html:92 +msgid "Debt to Equity" +msgstr "نسبة الدين إلى حقوق الملكية" + +#: templates/ledger/reports/dashboard.html:101 +msgid "Profitability" +msgstr "الربحية" + +#: templates/ledger/reports/dashboard.html:102 +msgid "Return on Equity" +msgstr "العائد على حقوق الملكية" + +#: templates/ledger/reports/dashboard.html:110 +msgid "Return on Assets" +msgstr "العائد على الأصول" + +#: templates/ledger/reports/dashboard.html:117 +msgid "Net Profit Margin" +msgstr "هامش الربح الصافي" + +#: templates/ledger/reports/dashboard.html:124 +msgid "Gross Profit Margin" +msgstr "هامش الربح الإجمالي" + +#: templates/ledger/reports/dashboard.html:144 +msgid "Start Date" +msgstr "تاريخ البدء" + +#: templates/ledger/reports/dashboard.html:148 +msgid "End Date" +msgstr "تاريخ الانتهاء" + +#: templates/ledger/reports/dashboard.html:151 +msgid "Apply" +msgstr "تطبيق" + +#: templates/ledger/reports/tags/balance_sheet_statement.html:19 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:26 msgid "Balance Through" msgstr "الرصيد حتى" -#: templates/ledger/reports/tags/balance_sheet_statement.html:77 +#: templates/ledger/reports/tags/balance_sheet_statement.html:43 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:76 msgid "Total:" msgstr "المجموع:" -#: templates/ledger/reports/tags/balance_sheet_statement.html:108 +#: templates/ledger/reports/tags/balance_sheet_statement.html:69 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:107 msgid "Retained Earnings" msgstr "الأرباح المحتجزة" -#: templates/ledger/reports/tags/balance_sheet_statement.html:119 +#: templates/ledger/reports/tags/balance_sheet_statement.html:80 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:118 msgid "Total EQUITY" msgstr "إجمالي حقوق الملكية" -#: templates/ledger/reports/tags/balance_sheet_statement.html:129 +#: templates/ledger/reports/tags/balance_sheet_statement.html:91 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:128 msgid "Total Equity + Liabilities" msgstr "إجمالي حقوق الملكية + الالتزامات" +#: templates/ledger/reports/tags/income_statement.html:14 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_txs_table.html:12 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:14 +msgid "Balance" +msgstr "الرصيد" + +#: templates/ledger/reports/tags/income_statement.html:20 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:20 +msgid "Operating Revenues" +msgstr "الإيرادات التشغيلية" + +#: templates/ledger/reports/tags/income_statement.html:57 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:74 +msgid "Net Operating Revenues" +msgstr "صافي الإيرادات التشغيلية" + +#: templates/ledger/reports/tags/income_statement.html:65 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:82 +msgid "Less: Cost of Goods Sold" +msgstr "ناقص: تكلفة البضائع المباعة" + +#: templates/ledger/reports/tags/income_statement.html:102 +#: templates/ledger/reports/tags/income_statement.html:176 +#: templates/ledger/reports/tags/income_statement.html:250 +#: templates/ledger/reports/tags/income_statement.html:311 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:100 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:64 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:58 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:119 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:193 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:267 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:328 +msgid "Detail" +msgstr "التفاصيل" + +#: templates/ledger/reports/tags/income_statement.html:118 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:135 +msgid "Net COGS" +msgstr "صافي تكلفة البضائع المباعة" + +#: templates/ledger/reports/tags/income_statement.html:131 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:148 +msgid "Gross Profit" +msgstr "الربح الإجمالي" + +#: templates/ledger/reports/tags/income_statement.html:139 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:156 +msgid "Operating Expenses" +msgstr "المصروفات التشغيلية" + +#: templates/ledger/reports/tags/income_statement.html:191 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:208 +msgid "Net Operating Expenses" +msgstr "صافي المصروفات التشغيلية" + +#: templates/ledger/reports/tags/income_statement.html:205 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:222 +msgid "Net Operating Income (Loss)" +msgstr "صافي الدخل التشغيلي (الخسارة)" + +#: templates/ledger/reports/tags/income_statement.html:213 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:230 +msgid "Other Revenues" +msgstr "إيرادات أخرى" + +#: templates/ledger/reports/tags/income_statement.html:265 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:282 +msgid "Net Other Revenues" +msgstr "صافي الإيرادات الأخرى" + +#: templates/ledger/reports/tags/income_statement.html:326 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:343 +msgid "Net Other Expenses" +msgstr "صافي النفقات الأخرى" + +#: templates/ledger/reports/tags/income_statement.html:339 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:356 +msgid "Net Other Income (Loss)" +msgstr "صافي الدخل الآخر (الخسارة)" + +#: templates/ledger/reports/tags/income_statement.html:353 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:370 +msgid "through" +msgstr "خلال" + +#: templates/ledger/reports/tags/income_statement.html:355 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:372 +msgid "Net Income" +msgstr "صافي الدخل" + #: templates/mail/change_plan_body.txt:5 #, python-format msgid "Your current plan is %(plan_name)s and it will expire on %(expire)s. " @@ -5499,7 +5754,11 @@ msgstr "" msgid "Provide billing data" msgstr "تقديم بيانات الفوترة" -#: templates/plans/billing_info_delete.html:9 +#: templates/plans/billing_info_delete.html:7 +msgid "Billing data" +msgstr "بيانات الفوترة" + +#: templates/plans/billing_info_delete.html:11 msgid "Are you sure to delete billing info?" msgstr "هل أنت متأكد من حذف بيانات الفوترة؟" @@ -5516,7 +5775,7 @@ msgstr "" "إذا قمت بخفض خطتك، يرجى ملاحظة أن الحدود الجديدة الأدنى ستُطبق فورًا بعد\n" " إكمال الطلب." -#: templates/plans/create_order.html:19 templates/plans/create_order.html:68 +#: templates/plans/create_order.html:19 templates/plans/create_order.html:66 msgid "Continue" msgstr "متابعة" @@ -5645,7 +5904,7 @@ msgstr "لا" msgid "Pricings" msgstr "السعر" -#: templates/plans/extend.html:44 templates/plans/plan_table.html:71 +#: templates/plans/extend.html:44 msgid "days" msgstr "أيام" @@ -5720,13 +5979,6 @@ msgstr "" msgid "Net price" msgstr "السعر الصافي" -#: templates/plans/order_detail_table.html:10 -#: templates/sales/estimates/estimate_preview.html:294 -#: templates/sales/estimates/sale_order_preview.html:265 -#: templates/sales/invoices/invoice_detail.html:238 -msgid "VAT" -msgstr "ضريبة القيمة المضافة" - #: templates/plans/order_detail_table.html:11 msgid "VAT total" msgstr "إجمالي الضريبة" @@ -5799,6 +6051,10 @@ msgstr "السعر" msgid "Change" msgstr "تغيير" +#: templates/plans/plan_table.html:71 +msgid "day" +msgstr "يوم" + #: templates/plans/plan_table.html:75 msgid "Buy" msgstr "شراء" @@ -5829,10 +6085,6 @@ msgstr "" "href=\"%(upgrade_url)s\" class=\"text-primary\">الخطط المتاحة حاليًا.\n" " " -#: templates/plans/plan_table.html:112 -msgid "Net prices" -msgstr "الأسعار الصافية" - #: templates/plans/pricing.html:5 msgid "See our great value plans" msgstr "اطلع على خططنا ذات القيمة الرائعة" @@ -5860,55 +6112,55 @@ msgstr "لم يتم العثور على ممثلين للشركات." msgid "View Estimate" msgstr "عرض التقدير" -#: templates/sales/estimates/estimate_detail.html:43 +#: templates/sales/estimates/estimate_detail.html:40 msgid "Send Estimate" msgstr "حفظ التقدير" -#: templates/sales/estimates/estimate_detail.html:44 +#: templates/sales/estimates/estimate_detail.html:41 msgid "Mark As Sent" msgstr "وضع كمدفوع" -#: templates/sales/estimates/estimate_detail.html:46 +#: templates/sales/estimates/estimate_detail.html:43 msgid "Mark As Accept" msgstr "وضع كنشط" -#: templates/sales/estimates/estimate_detail.html:51 +#: templates/sales/estimates/estimate_detail.html:48 msgid "Create Sale Order" msgstr "إنشاء أمر بيع" -#: templates/sales/estimates/estimate_detail.html:52 +#: templates/sales/estimates/estimate_detail.html:49 msgid "Preview Sale Order" msgstr "عرض أمر البيع" -#: templates/sales/estimates/estimate_detail.html:55 +#: templates/sales/estimates/estimate_detail.html:52 #: templates/sales/invoices/invoice_detail.html:72 msgid "Preview" msgstr "عرض" -#: templates/sales/estimates/estimate_detail.html:66 +#: templates/sales/estimates/estimate_detail.html:63 #: templates/sales/estimates/estimate_list.html:14 #: templates/sales/estimates/estimate_preview.html:261 #: venv/lib/python3.11/site-packages/django_ledger/models/estimate.py:247 msgid "Estimate Number" msgstr "رقم التقدير" -#: templates/sales/estimates/estimate_detail.html:76 +#: templates/sales/estimates/estimate_detail.html:73 msgid "Estimate Date" msgstr "تاريخ التقدير" -#: templates/sales/estimates/estimate_detail.html:100 +#: templates/sales/estimates/estimate_detail.html:97 msgid "Estimate Status" msgstr "حالة نموذج التقدير" -#: templates/sales/estimates/estimate_detail.html:109 +#: templates/sales/estimates/estimate_detail.html:106 msgid "completed" msgstr "مكتمل" -#: templates/sales/estimates/estimate_detail.html:111 +#: templates/sales/estimates/estimate_detail.html:108 msgid "canceled" msgstr "ملغى" -#: templates/sales/estimates/estimate_detail.html:143 +#: templates/sales/estimates/estimate_detail.html:140 msgid "Vat" msgstr "الضريبة" @@ -6495,7 +6747,7 @@ msgstr "تفاصيل المورد" msgid "Home" msgstr "الرئيسية" -#: templates/welcome.html:70 templates/welcome.html:115 +#: templates/welcome.html:70 templates/welcome.html:116 msgid "Features" msgstr "الميزات" @@ -6508,56 +6760,59 @@ msgid "Your Car Dealership Operations" msgstr "عمليات معرض السيارات الخاص بك" #: templates/welcome.html:96 +msgid "Because Inventory Needs Order" +msgstr "لأن المخزون يحتاج إلى تنظيم" + +#: templates/welcome.html:97 msgid "" "Manage inventory, sales, transfers, and accounting seamlessly with Haikal." msgstr "قم بإدارة المخزون والمبيعات والتحويلات والمحاسبة بسلاسة مع هيكل." -#: templates/welcome.html:97 templates/welcome.html:153 +#: templates/welcome.html:98 msgid "Get Started" msgstr "ابدأ الآن" -#: templates/welcome.html:98 +#: templates/welcome.html:99 msgid "Learn More" msgstr "تعرف على المزيد" -#: templates/welcome.html:116 +#: templates/welcome.html:117 msgid "Empowering Your Dealership with Precision and Efficiency" msgstr "تمكين معرضك بالدقة والكفاءة" -#: templates/welcome.html:121 +#: templates/welcome.html:122 msgid "Inventory Management" msgstr "إدارة المخزون" -#: templates/welcome.html:122 +#: templates/welcome.html:123 msgid "" "Effortlessly manage your car inventory with real-time updates and intuitive " "tools." msgstr "قم بإدارة مخزون السيارات بسهولة مع التحديثات الفورية والأدوات البسيطة." -#: templates/welcome.html:126 +#: templates/welcome.html:127 msgid "Seamless Accounting" msgstr "محاسبة سلسة" -#: templates/welcome.html:127 +#: templates/welcome.html:128 msgid "Integrated double-entry accounting tailored for car dealers." msgstr "نظام محاسبة مزدوج القيد مدمج ومصمم خصيصًا لتجار السيارات." -#: templates/welcome.html:131 +#: templates/welcome.html:132 msgid "Advanced Analytics" msgstr "تحليلات متقدمة" -#: templates/welcome.html:132 +#: templates/welcome.html:133 msgid "Gain insights and make data-driven decisions for your business." msgstr "احصل على رؤى دقيقة واتخذ قرارات مستندة إلى البيانات لنشاطك التجاري." -#: templates/welcome.html:141 -msgid "Choose the Plan that Fits Your Business" -msgstr "اختر الخطة التي تناسب عملك" - #: templates/welcome.html:142 -msgid "" -"Flexible pricing plans designed to meet the unique needs of every dealership." -msgstr "خطط تسعير مرنة مصممة لتلبية احتياجات كل معرض سيارات." +msgid "Choose the Plan that Fits Your Needs" +msgstr "اختر الخطة التي تناسب احتياجاتك" + +#: templates/welcome.html:143 +msgid "Flexible plans designed to meet the unique needs of every dealership." +msgstr "خطط مرنة مصممة لتلبية الاحتياجات الفريدة لكل معرض سيارات." #: venv/lib/python3.11/site-packages/alabaster/layout.html:99 msgid "Page source" @@ -9331,12 +9586,6 @@ msgstr "الأصول الحالية" msgid "Marketable Securities" msgstr "الأوراق المالية القابلة للتداول" -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:439 -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:525 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/entity/entity_dashboard.html:50 -msgid "Receivables" -msgstr "المستحقات" - #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:441 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:527 msgid "Uncollectibles" @@ -10653,16 +10902,6 @@ msgstr "مخطط الحسابات" msgid "CoA Role Default" msgstr "الدور الافتراضي لمخطط الحسابات" -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:100 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:64 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:58 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:119 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:193 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:267 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:328 -msgid "Detail" -msgstr "التفاصيل" - #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:105 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bank_account/tags/bank_accounts_table.html:52 msgid "Activate" @@ -10749,14 +10988,6 @@ msgstr "أمر الشراء" msgid "View PO" msgstr "عرض أمر الشراء" -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:148 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/cash_flow.html:31 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/invoice_detail.html:135 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html:54 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/unit/unit_detail.html:29 -msgid "Cash Flow Statement" -msgstr "بيان التدفقات النقدية" - #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:155 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/invoice_detail.html:141 msgid "Balance Sheet PDF" @@ -11067,11 +11298,6 @@ msgstr "عدد المعاملات" msgid "TX Type" msgstr "نوع المعاملة" -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_txs_table.html:12 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:14 -msgid "Balance" -msgstr "الرصيد" - #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/components/feedback_button.html:7 msgid "Feedback" msgstr "ملاحظات" @@ -11168,10 +11394,6 @@ msgstr "كيان جديد" msgid "New Entity Information" msgstr "معلومات الكيان الجديد" -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/entity/entity_dashboard.html:83 -msgid "Payables" -msgstr "الحسابات الدائنة" - #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/entity/includes/card_entity.html:16 msgid "Accrual Method" msgstr "طريقة الاستحقاق" @@ -11324,6 +11546,12 @@ msgstr "رقم المصروف" msgid "UOM" msgstr "وحدة القياس" +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/balance_sheet.html:54 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/cash_flow.html:57 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/income_statement.html:56 +msgid "By Unit" +msgstr "حسب الوحدة" + #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/cash_flow_statement.html:10 msgid "Cash from Operating Activities" msgstr "النقد من الأنشطة التشغيلية" @@ -11364,62 +11592,6 @@ msgstr "صافي التدفق النقدي" msgid "Net Cash From" msgstr "صافي النقد من" -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:20 -msgid "Operating Revenues" -msgstr "الإيرادات التشغيلية" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:74 -msgid "Net Operating Revenues" -msgstr "صافي الإيرادات التشغيلية" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:82 -msgid "Less: Cost of Goods Sold" -msgstr "ناقص: تكلفة البضائع المباعة" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:135 -msgid "Net COGS" -msgstr "صافي تكلفة البضائع المباعة" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:148 -msgid "Gross Profit" -msgstr "الربح الإجمالي" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:156 -msgid "Operating Expenses" -msgstr "المصروفات التشغيلية" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:208 -msgid "Net Operating Expenses" -msgstr "صافي المصروفات التشغيلية" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:222 -msgid "Net Operating Income (Loss)" -msgstr "صافي الدخل التشغيلي (الخسارة)" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:230 -msgid "Other Revenues" -msgstr "إيرادات أخرى" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:282 -msgid "Net Other Revenues" -msgstr "صافي الإيرادات الأخرى" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:343 -msgid "Net Other Expenses" -msgstr "صافي النفقات الأخرى" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:356 -msgid "Net Other Income (Loss)" -msgstr "صافي الدخل الآخر (الخسارة)" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:370 -msgid "through" -msgstr "خلال" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:372 -msgid "Net Income" -msgstr "صافي الدخل" - #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/card_markdown.html:20 msgid "No available notes to display..." msgstr "لا توجد ملاحظات متاحة للعرض..." @@ -11428,22 +11600,6 @@ msgstr "لا توجد ملاحظات متاحة للعرض..." msgid "Logout" msgstr "تسجيل الخروج" -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_bs.html:5 -msgid "Assets" -msgstr "الأصول" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_bs.html:8 -msgid "Liabilities" -msgstr "الالتزامات" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_bs.html:11 -msgid "Equity" -msgstr "حقوق الملكية" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_ic.html:11 -msgid "Earnings (Loss)" -msgstr "الأرباح (الخسارة)" - #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_ic.html:14 msgid "Accounting Period" msgstr "الفترة المحاسبية" @@ -11688,11 +11844,6 @@ msgstr "إنشاء وحدة كيان" msgid "JE Document Prefix" msgstr "بادئة مستند إدخال اليومية" -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/unit/unit_detail.html:23 -#: venv/lib/python3.11/site-packages/django_ledger/views/entity.py:210 -msgid "Dashboard" -msgstr "لوحة القيادة" - #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/unit/unit_list.html:13 msgid "Entity Units List" msgstr "قائمة وحدات الكيان" @@ -12013,12 +12164,17 @@ msgid "x" msgstr "س" #: venv/lib/python3.11/site-packages/sympy/solvers/simplex.py:565 -#, fuzzy -#| msgid "by" msgid "y" msgstr "ص" -#, fuzzy -#~| msgid "Didn’t receive the code" -#~ msgid "Didn’t receive the code?" -#~ msgstr "لم تستلم الرمز؟" +#~ msgid "Inventory Statistics" +#~ msgstr "إحصائيات المخزون" + +#~ msgid "Car Transfer Cancel" +#~ msgstr "إلغاء نقل السيارة" + +#~ msgid "Return" +#~ msgstr "عودة" + +#~ msgid "Net prices" +#~ msgstr "الأسعار الصافية" diff --git a/requirements.txt b/requirements.txt index 7e81373b..64c13cf9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -74,6 +74,7 @@ djangocms-admin-style==3.3.1 djangorestframework==3.15.2 djangorestframework_simplejwt==5.4.0 djangoviz==0.1.1 +docopt==0.6.2 docutils==0.21.2 easy-thumbnails==2.10 emoji==2.14.1 @@ -126,6 +127,7 @@ mypy-extensions==1.0.0 networkx==3.4.2 newrelic==10.4.0 nltk==3.9.1 +num2words==0.5.14 numpy==2.2.2 oauthlib==3.2.2 ofxtools==0.9.5 diff --git a/static/images/.DS_Store b/static/images/.DS_Store index 1b9636f948d04923fc4c894dd3ae9868595319c9..4ef6a7d26271536ffd21cc9b24ce8e884b097559 100644 GIT binary patch delta 27 fcmZqKz}T{Zal==e$=gKbH;dRl$D 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 Q0YEQBSv8qjDf6)Z0Vy&4lmGw# literal 0 HcmV?d00001 diff --git a/static/images/car_make/Lincoln_6AdvXuG.png b/static/images/car_make/Lincoln_6AdvXuG.png new file mode 100644 index 0000000000000000000000000000000000000000..a8b95d1788a616d78f0298fbf4c07aae2c84661c GIT binary patch literal 9879 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 Y^mE-hBf4E5xM_ya(=pVp(6kNzKcVGp_y7O^ literal 0 HcmV?d00001 diff --git a/static/images/logos/car_make/.DS_Store b/static/images/logos/car_make/.DS_Store index 28c9b019586b5ec4cc557d93395afc25f2f187b6..d6e73f23eea9cbbb5122814dfc70480b5442675b 100644 GIT binary patch delta 125 zcmZoEXh~3DU|?W$DortDV9)?EIe-{M3-ADmb_NCo?uiQej2RmPcFQxWZRSykXWqP6 zxshe^8*xc#1_oB3A|TM<1`@8wnl=kEzGt4yZ{o|t2r-iZNE=MfFqyd7Q1vqtP`d;G DELawo delta 146 zcmZokXem%&U|?W$DortDU@!nOIe-{M3-ADmb_NCoo{0+jjF}q)cFQxWZ{|^mXXfW& zaAwG4C}AjK$Y)4p=9rwIB+2T?z`&ZfIYGIHWwVOJV|Gbapl%>A;06+|$fj);WPHy& ZnP113hY4bt1xVfG44sLa52|o80{|H!83+IX diff --git a/templates/base.html b/templates/base.html index 3346df96..94b09045 100644 --- a/templates/base.html +++ b/templates/base.html @@ -92,7 +92,7 @@ function notify(tag,msg){
- +{% include "plans/expiration_messages.html" %} {% block period_navigation %} {% endblock period_navigation %} diff --git a/templates/inventory/add_custom_card.html b/templates/inventory/add_custom_card.html index c96443fa..4da51e42 100644 --- a/templates/inventory/add_custom_card.html +++ b/templates/inventory/add_custom_card.html @@ -4,6 +4,17 @@
{% csrf_token %} {{ form|crispy }} - - +
+ + +
\ No newline at end of file diff --git a/templates/inventory/car_detail.html b/templates/inventory/car_detail.html index 2c7a0879..b4971e64 100644 --- a/templates/inventory/car_detail.html +++ b/templates/inventory/car_detail.html @@ -58,7 +58,7 @@ {% if car.vendor %} {% trans "Vendor"|capfirst %} - {{ car.vendor.get_local_name }} + {{ car.vendor.vendor_name }} {% endif %} @@ -92,6 +92,28 @@ {% endif %} + {% if car.registrations %} + + {% trans "Registration"|capfirst %} + {{ car.registrations.plate_number }} | {{ car.registrations.text1 }} {{ car.registrations.text2 }} {{ car.registrations.text3 }} + + + + + {% trans "Registration Date"|capfirst %} + {{ car.registrations.registration_date|date }} + + {% else %} + + + {% trans "Registration" %} + + + + + {% endif %} {% trans 'Location'|capfirst %} @@ -313,7 +335,7 @@ {% endif %} - Cancel + Cancel @@ -325,12 +347,13 @@
+ @@ -382,29 +430,16 @@ -
-
-
- - - -
-
- -
+ {% else%}
diff --git a/templates/login_test.html b/templates/login_test.html new file mode 100644 index 00000000..f3cf6b31 --- /dev/null +++ b/templates/login_test.html @@ -0,0 +1,153 @@ +
+
+
+
+
+

+ Notifications Places +

Click to view notifications

+

+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+ +
+
+
+

Modal

+
+ + + + + + + + + + + + + + + + +
+
+
+
\ No newline at end of file diff --git a/templates/plans/account_activation.html b/templates/plans/account_activation.html index 233f51bf..582787af 100644 --- a/templates/plans/account_activation.html +++ b/templates/plans/account_activation.html @@ -3,7 +3,7 @@ {% block body %} -

{% if SUCCESSFUL %}{% trans "Activation successful" %}{% else %}{% trans "Activation failed" %}{% endif %}

+

{% if SUCCESSFUL %}{% trans "Activation successful" %}{% else %}{% trans "Activation failed" %}{% endif %}

{% if SUCCESSFUL %} {# {% include "messages.html" %}#} diff --git a/templates/plans/base.html b/templates/plans/base.html deleted file mode 100644 index 4facf5e1..00000000 --- a/templates/plans/base.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - {% block extra_js %} - {% endblock %} - - -

django-plans

- {% include "plans/expiration_messages.html" %} - - {% block body %} - {% endblock %} - - diff --git a/templates/plans/billing_info_create_or_update.html b/templates/plans/billing_info_create_or_update.html index eb32be35..3ffc404b 100644 --- a/templates/plans/billing_info_create_or_update.html +++ b/templates/plans/billing_info_create_or_update.html @@ -2,21 +2,20 @@ {% load i18n crispy_forms_filters %} -{% block body %} -
+{% block content %} +
-
- {% block "form-content" %} - {% trans "Provide billing data" %} + + + {% trans "Provide billing data"|upper %} {% csrf_token %} {{ form|crispy }} {% if object %} - {{ _("Delete") }} + {{ _("Delete") }} {% endif %} - {% endblock %}
diff --git a/templates/plans/billing_info_delete.html b/templates/plans/billing_info_delete.html index ffe91ce6..843acec3 100644 --- a/templates/plans/billing_info_delete.html +++ b/templates/plans/billing_info_delete.html @@ -1,15 +1,17 @@ {% extends 'base.html' %} {% load i18n %} -{% block body %} -

Billing data

+{% block content %} +
+
+

{{ _("Billing data")}}

-
- {% csrf_token %} - {% trans "Are you sure to delete billing info?" %} -

- -

+
+ {% csrf_token %} + {% trans "Are you sure to delete billing info?" %} +

+ +

+
+
{% endblock %} diff --git a/templates/plans/create_order.html b/templates/plans/create_order.html index 636c1273..c4430c44 100644 --- a/templates/plans/create_order.html +++ b/templates/plans/create_order.html @@ -1,7 +1,7 @@ {% extends 'base.html' %} {% load i18n crispy_forms_filters%} -{% block body %} +{% block content %}

{% trans "Confirm order" %}

{% if FREE_ORDER %} {# Free order is when user downgrades a plan and there is no additional payment it is handle by special a view. #} @@ -63,11 +63,7 @@ {% endif %} {% endwith %} -

- - - - + {{ form|crispy }} {% csrf_token %} diff --git a/templates/plans/current.html b/templates/plans/current.html index e5a55b7f..0e68e4bb 100644 --- a/templates/plans/current.html +++ b/templates/plans/current.html @@ -1,5 +1,5 @@ {% extends 'base.html' %} -{% load i18n %} +{% load i18n custom_filters%} {% block content %} diff --git a/templates/plans/extend.html b/templates/plans/extend.html index 867d4d38..5c21595a 100644 --- a/templates/plans/extend.html +++ b/templates/plans/extend.html @@ -5,19 +5,19 @@ {% block extra_js %} {% endblock %} -{% block body %} +{% block content %}

{% csrf_token %} {{ form.as_p }} -
+ {% if userplan.plan.available %}