From 0f323f8fab6b3cfca043fec699c8110546845f1c Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 1 Feb 2011 02:03:22 +0530 Subject: [PATCH] Moved numpad control to Tanshu.Common. Billing feature complete. Delete not working as expected Signed-off-by: unknown --- Include/Tanshu.Common.dll | Bin 29184 -> 34304 bytes .../Attributes/CascadeAttribute.cs | 18 + .../Attributes/NotNullAttribute.cs | 18 + .../Attributes/SecutiryAttribute.cs | 18 + .../Data Contracts Display/BillInventoryBO.cs | 54 +- .../Data Contracts Display/BillItemKey.cs | 9 +- .../Data Contracts/InventoryBO.cs | 4 + .../Data Contracts/InventoryModifierBO.cs | 3 + .../Data Contracts/ModifierBO.cs | 5 + .../Data Contracts/PrintLocationBO.cs | 12 +- .../Data Contracts/ProductBO.cs | 2 - .../Data Contracts/SettleOption.cs | 4 +- .../Data Contracts/VoucherBO.cs | 2 + .../Tanshu.Accounts.Contracts.csproj | 3 + Tanshu.Accounts.Helpers/ControlFactory.cs | 45 +- Tanshu.Accounts.Helpers/SelectWaiter.cs | 1 - .../{Sales => Advances}/AdjustAdvanceForm.cs | 0 .../AdjustAdvanceForm.designer.cs | 0 .../AdjustAdvanceForm.resx | 0 .../{Sales => Advances}/RecieveAdvanceForm.cs | 0 .../RecieveAdvanceForm.designer.cs | 0 .../RecieveAdvanceForm.resx | 0 .../Controllers/BillController.cs | 99 +- Tanshu.Accounts.PointOfSale/MainForm.cs | 347 ++++--- .../MainForm.designer.cs | 368 ++++--- Tanshu.Accounts.PointOfSale/MainForm.resx | 3 - .../Products/ProductsForm.Designer.cs | 53 +- .../Products/ProductsForm.cs | 2 - .../Products/ProductsForm.resx | 12 + .../CheckoutForm.Designer.cs | 0 .../{Sales => Reports}/CheckoutForm.cs | 0 .../{Sales => Reports}/CheckoutForm.resx | 0 .../{Sales => Reports}/SaleAnalysisForm.cs | 0 .../SaleAnalysisForm.designer.cs | 0 .../{Sales => Reports}/SaleAnalysisForm.resx | 0 .../Sales/BillHelperFunctions.cs | 12 +- .../Sales/DiscountForm.Designer.cs | 111 ++ .../Sales/DiscountForm.cs | 73 ++ .../Sales/DiscountForm.resx | 0 .../Sales/SalesForm.Designer.cs | 365 +++---- .../Sales/SalesForm.cs | 19 +- .../Sales/SalesForm.resx | 6 - .../Tanshu.Accounts.PointOfSale.csproj | 38 +- Tanshu.Accounts.Print/Thermal.cs | 10 +- .../BusinessLayer/ProductBI.cs | 4 +- .../BusinessLayer/ProductGroupBI.cs | 13 +- .../BusinessLayer/ProductGroupModifierBI.cs | 11 +- .../BusinessLayer/SaleVoucherBI.cs | 81 +- .../BusinessLayer/SalesAnalysisBI.cs | 9 +- .../BusinessLayer/WaiterBI.cs | 13 +- Tanshu.Accounts.SqlDAO/DbValues.cs | 5 +- .../Fluent/CascadeConvention.cs | 43 + Tanshu.Accounts.SqlDAO/Fluent/Fixtures.cs | 949 +++++++++++++++--- .../Fluent/NotNullConvention.cs | 24 + Tanshu.Accounts.SqlDAO/Fluent/SetupStore.cs | 28 +- .../Fluent/StoreConfiguration.cs | 8 +- .../Tanshu.Accounts.Repository.csproj | 2 + Tanshu.Accounts.sln | 6 - .../NumpadControl.Designer.cs | 242 ----- .../NumpadControl.cs | 89 -- .../Properties/AssemblyInfo.cs | 36 - .../Tanshu.Common.KeyboardControl.csproj | 78 -- .../UnselectableButton.Designer.cs | 36 - .../UnselectableButton.cs | 18 - 64 files changed, 2029 insertions(+), 1382 deletions(-) create mode 100644 Tanshu.Accounts.Contracts/Attributes/CascadeAttribute.cs create mode 100644 Tanshu.Accounts.Contracts/Attributes/NotNullAttribute.cs create mode 100644 Tanshu.Accounts.Contracts/Attributes/SecutiryAttribute.cs rename Tanshu.Accounts.PointOfSale/{Sales => Advances}/AdjustAdvanceForm.cs (100%) rename Tanshu.Accounts.PointOfSale/{Sales => Advances}/AdjustAdvanceForm.designer.cs (100%) rename Tanshu.Accounts.PointOfSale/{Sales => Advances}/AdjustAdvanceForm.resx (100%) rename Tanshu.Accounts.PointOfSale/{Sales => Advances}/RecieveAdvanceForm.cs (100%) rename Tanshu.Accounts.PointOfSale/{Sales => Advances}/RecieveAdvanceForm.designer.cs (100%) rename Tanshu.Accounts.PointOfSale/{Sales => Advances}/RecieveAdvanceForm.resx (100%) rename Tanshu.Accounts.PointOfSale/{Sales => Reports}/CheckoutForm.Designer.cs (100%) rename Tanshu.Accounts.PointOfSale/{Sales => Reports}/CheckoutForm.cs (100%) rename Tanshu.Accounts.PointOfSale/{Sales => Reports}/CheckoutForm.resx (100%) rename Tanshu.Accounts.PointOfSale/{Sales => Reports}/SaleAnalysisForm.cs (100%) rename Tanshu.Accounts.PointOfSale/{Sales => Reports}/SaleAnalysisForm.designer.cs (100%) rename Tanshu.Accounts.PointOfSale/{Sales => Reports}/SaleAnalysisForm.resx (100%) create mode 100644 Tanshu.Accounts.PointOfSale/Sales/DiscountForm.Designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/Sales/DiscountForm.cs rename Tanshu.Common.KeyboardControl/NumpadControl.resx => Tanshu.Accounts.PointOfSale/Sales/DiscountForm.resx (100%) create mode 100644 Tanshu.Accounts.SqlDAO/Fluent/CascadeConvention.cs create mode 100644 Tanshu.Accounts.SqlDAO/Fluent/NotNullConvention.cs delete mode 100644 Tanshu.Common.KeyboardControl/NumpadControl.Designer.cs delete mode 100644 Tanshu.Common.KeyboardControl/NumpadControl.cs delete mode 100644 Tanshu.Common.KeyboardControl/Properties/AssemblyInfo.cs delete mode 100644 Tanshu.Common.KeyboardControl/Tanshu.Common.KeyboardControl.csproj delete mode 100644 Tanshu.Common.KeyboardControl/UnselectableButton.Designer.cs delete mode 100644 Tanshu.Common.KeyboardControl/UnselectableButton.cs diff --git a/Include/Tanshu.Common.dll b/Include/Tanshu.Common.dll index 621f5d36f7b4de5fd6bfac0e0d3ccb081bf382fa..063d73d2a5d07d3353c23e20c994c24ead08672e 100644 GIT binary patch literal 34304 zcmeIb33wdUu|HbfJ=4=OlE&6(v#f1o3?5`zNM67OY%E(|1m0z1o6U@*u{=SVmS;w` zW#J&P1rsn3n|%q3Ng#n-NFafP5V#Ns;lhP1EVRXyI(3%r9xp%bN-~JZgYQ58N%Rn|{FyKClff{OgLU5x(gXhI z>L1dUJy*YWOFR|sPue}nXkWN1nn>8`aAz!>97u%YiE!J>j&Psd9cwBo3QTrHuUbU3 zOf%>k_bp!T*7gSJ^#z(m^m%Yh#Xak0T*LU@iZ5#y#zj|p0~7uEN^jr`{e7Djd!GEOeL%Ey#Q<&`UEEQByj$BMrKH7XZ?v ztEuD8SAx?QFMI_i7e|vd~-hYi5BFLg3f2V z;={V>#uxt>GEIxMJkY_2JJxzT_{b|Hn&vXCC*5=Wm*@`1L35 zczi`e+sm&UGcNY^b)A12eDA5YA6)$RyL$FK@ZfDntb6ZIJDXpf@$9enjQsqRt!I4k zxL5!BrNmcXdFhW$&z#u$>d>6ZE+yWOH*z8)9(@Ro>uC(CgveYl8?^?9 zny08@kIz1d(Q¦K8<3OG$`DE3$?fld0IIB3ZzOfy)INedVckPR>bWVfLPHnO363o~sjE#j;!&Y4@GnTtK##wbMrU$IL)0({~va!&#Uc3ydYLOL?7w}bV zDDdfGq3KtfP^vt#ij_H4kF3TOUAcxY6_F0+Lie?N<;Do|Ielmy7}E;$6b4&h7ZZvl zd6?uvh)k-GAXUve!R0sv6dR3G4SNHU3#JBr_C_E9-He=utIs|iaN2JV1bmI~P4@BE z8c0JJ)G0s{Cj;Qavfxx0@hoeWVV{9~1yd*Z>@$Ht)@9?6=}vTPRj$-G@}%Jrl)i5s2w07#rSvr$l-wdZqB$!U zBU0L~M_6LE;f85P!5FjQN{){v*1K{H!YCp%thgM0qDMMWG=T2oj?yDt3=O**mx2Qp zOv>!ne2sNCZ*?@T&8+c$Pg; zu&e|E%!cIEIWn2WGWpt&yp3fJW@Ji6k$HnYv=i)U6}mnoIu5alsUd(}oS>2$&ew;| zl~9a%y~vQPlc0b6sHRP`3Wiix8!{pn11t0yGm2CWkJtVJIEo1A zkxM|}vKtpk;8=%Jmx7-5_<>-^I9SfDP(yVLF|4-X@ut4W0xkn^{6(kPv~Y-mXacR# z4Nv59qqe_@Mb3a(KE2v) z6nAoC(A9{$zoMa>Z7c?gV2H!8XyENYR0A{ixC5+)gRUU9PU94ZQXQwHI<*=(-J8>A zC%ZN6M|su3D;$>7J9lz5$17RrS_EiWAaUo~+;HxJi}j(e0G$@n&*f{1V`gdOtAIzT z6mEiqlDoiTX-q)c-AuY^Ut{7leViH-xbQ%Bd@IvxjD=hQ7|%>PWyD?$WMIskjDFzH z3*2jwuOpj%55Vv?fEU=2b9fv>UpNikBfOl{dy!CnP#fl;?5xAFY>;(0UnP*hTHoMg z)Ma2U{W2yk{^%($78AQ*E{}tTvMB0zxusbYO>?;OG zw{h9;WatX}p$v{i0@f~O>S1u~?+Tl3Q+Gn$3ArjTFS#?Tg5(*c0`n>y6&NqKl?qb! z!mJ7^pHhKwsBrcu6}V3-^EF^r@{+6uOpi7K^CmbNFz#v~WxtfwfN9qVj6;J>qcmVw zs7vLmz`W!&SrsJDC?hbh(ounNR|P41YgPrOT@@II3Rr&T^#i*g`XQCu56nyM&#EAK zMybHOiH-`4yDCW8Z)8e71;GF^EF^r@|#%=m>%5^%&T%VVBFO}%080S zfN56)#-YI(qcq?VhknR20`roOWmS+oqm013YDWdeT@|G4kFzQ;?W({yR5)vt3Ov&5 zP6#7xQEpc-JNbN83&}Q03+B~0S}^WvA!T35YQeOt1>?{nHcAT)GNMDiEts8rEvp67 z=#J0j#s=oqI$AL9Y9VFc$!fv0s|DlGqGyyA9N+3vhuDJI$^Xh~A=yURLU?{h4JKSQ zr10OfYB24p!8p{w-Xw2maBNk^$cs|UPGX1Z21=$!`=;;$jv7q3YDnQA7ygcfL8e_b z7>63zf#s>ealP(@yjabwWO-Hv$ui0k!Ygo8V8T^F3Wu{QFzu?qI8^8wr2@|sV+M`^)RXyqY}$=u}9tQJg<)l2RRIGLmq=oo5$ep&SS6(<}r9^1L0GEM5f3C z%q)*QhD*a{J@U91=QLPW4`Tqk$E{6Co-HE(%DI}7Ja@S`hj16?ncc;Co#Em<-MTn0 zfn1zNn2R^%;2e-$KF1>$-w{G(7L*3G=Dc<%_ZK-POb;OLxuSOWCd#zLf8p&X?pfEbY{QBxYr zUws$TISD^JG+}nO1U5zbE~ce~N{|xS1SmU)GqAFPfN{Lb5Cn`9T!tVx4>ahj=w~Q| zy&G#Z=SGl9k~*(_3VO}Cn3=qzFtOg{qKzl1Yenj5q!;*7Kf}Q3OJ)5k!+<@guJjI@J^Y&s-kZk@qnf4&+$C)NZnobL8+!}SZ zr_+fP=~j42vq>Y+6&_t|49#LicT`DD1-^36?Y;`{W!T#4xBDg-L)<@?^+1W+eU-)# zcbY>@G=`c%-R?tM*>0{uNrUn2vdTNPTF5YgIXPG|x6%;5k{kvu&i{BjLp;8{^p@U}N zs7N)#v|mLwKCki78_*d+EKg^1h>I8a4EqG2($bTT? z)RPo%Pu$udIu$7zda%ZO;*r;o%P9^fyM!tUg*k_Lq~dK*quES`VU8+gpHFLx@_DD% zU+3n*zOzw&qLgpgsmlP9v8tD+4j{)a?nM<|_~ho7VCj5DW;)yF`AFv5SbTN2&u<`8 z1Mi(*)?gBRoI6_cSybv2mO7VFRVwu+Gv-O!=@7i@Bu0mrVgIL8_b&{GxJX@*{i`fd zSXY?4nC1-0li4}GnaLA=1J&1+=B{Kpo4dsnH4d6z;!b}Uh3vO7CE*L#F#Ffcemj@F zm)XBz_B+BB)$MmPxY*GCtv$UzID^j`M z<2u6s3r!4%U}`lhzRyf&(ZGfB=2dR6VpK+c#~I5b|D`U!=Sy-2)KZge@>16DJIqym z@duUfF}_4T0Bn$ZHju|Goo zx}q6DtoHuKMI#@xA`ZW5MyWnQ@k=9Y5GNTo9Jg{dT>tJ|9eQYqTY(^`ajDA?1dMi< zAqW^Jy9`0Vzz9`J3IcoZ{Tqx7s^A!inrK$}3D_N@A%l<{XSpCMyvyx z_nX|A(urbkohIU1$$l6}&NX3fKMEB1Ogn(9T>#La`sL?3ao%FRu}DR4=XQ3ISEA!d zms{e>#|u#koJbLi2r@VhR*_r!c^Q)Js4%$_z;=ox*D>exTuziZJ-M7d=A?2tgUmTE zmm|BPaj1G)N%A5j=oR*OP;wIus>y9^J-M6972pnw)Gy491#aTyV}4XQQ9eU`mf{;xoI760a6R(tFg_y5IH;vMP>+b%=o#=!_T7%I5uj9o(VJv0Pis$#!KIfO>{Hmy9*f+u1oAiHT-0v7mQKt5e=1w=xgqC1(T?G4KFQ;uz?Mu zoF4fWgz4d&4Xk=zXgTb_3oX973oV3z?DImL0LBB5_56>2|0vc2bQQk69fPTKtgmTJ zEM*TQyJD#fwk8(sjwKtzeW@-x*&FX{44)cHrs8&D?)0W+{%Z^`9Oz9CBx7?Ev4M0l z+S?djHPG1`?>Z$mxYj-=mYCal+;P!aU9*mDnKNT%taAd!yu#oXFEVrj&y z%x6_=8~LC47pG)yb}Da3ah8*f(ganli7`Kgv(z;o+~j`%#$JGj0u33x|3 z8Bg@2ILAY9vfY-g6{+#qZN_>dK$jaV z=X!%>-Xi!Nz)iYWINuS@bHe!rV30~Z2T|&D50|>g!#Pba*AnzHUT4mO}5;V+}8`7(QZg>eB@*`JLj|i%s%|J}wT>Lm`$wqhwM^fUYay*8Nur z*V|Ic{0qvs?CvtIF${Y zmnM9Bf=Pb?3{Yt$*EO}0Epr_3AT6lm7A*tEr0tcbRhqP?@_fLr3I3$uKateGSN;b4 zs)-EuOk@c^n8?!p0^FpgD%NLp)p{dDJymS0o2w2QcyJcbr1z^hk5$dE7I27~;WFn5 zG--MDq>>?ugEK_i0U=*<{s1sQzo=fXmy=cVQFS>LmVH!hQfJLPa0bB%(6u$|^)J(R z;GhBe6>yV2K&naOYd?nNs{~FKIJcJh3u`Bp1Zkt-3Bj+deZ4qHUl;gnEo)v_$Nh42 z-Fno%8W8<1oL7W1JIwq(f!*V{#%IIx^oiuD|F7^w3JIK7KeawcTj~!Q6DcY9E%oPt zvtQuX08M(beo~1^uh+9y9||-kFKSzCYAbX?e@++iyDNN@`+TSH-7^gw3XQ|dia}g2JLLC9hOVb?c1c%xo zoi$rd|03mT^_9Sv)BT|8Jbi$t zct!v_1TOHt0(_O1IiCYuJsj|zthG?RZw+9Rz_~t7?e?vMfwucL0bb?n1H93<4e(Cn zcP00adjgw@0f9ROo+t1^fx89n5x7_2bpme@c&EU71l}+3+XBBYaNGEoAbH>T5o|MO z6`!n~Iy|@dclxQr3k04laJ9gV0y_mJ1a1>JBJhiVtB3bOf=Ra&FUM%VyBIR*A;F&z z{__GqEMAS&!qBOJRiV?3)x(V;Zt3jMChU%wqtP9qHQ+oJ+5!9kaFg0f_8K0#qU5W9 zUn%)I;6o+%AyrxasgegEZDT3dct$DbS1>Ag9DM9nfGcSl?JDIOFA#W{z-48e%F_5_ z(8UuTGnS*2qMp*8GCKIVTYL<9N_)rH$On23^(UhX&sn|@W}3^zG2(tJ)RWZU*$T>E z&uJqx-4n<7EEnn;TI|^dYI24;7f-wm3-u)Rc`n3!e+EyXbg{L=b16J8?ogL|_JF$H zp>FZ)1$CQ4-HZB)=xYx32-1S|O^13GX+ip)qD0Se^rTR%%egX#bA3;FtGxR$GSufO zZ`k_)pXbWwDeq+OBWg(r`l+I+-XHS5U8NPx^gfF?vE&FQl_e(9stmOiJIT$8vd;JJ z#rirS)P>fUy<0(TchVm5zJa**C5L*>`!1*(9qIte)zBRd^%2U|&^?NxQu9NsGyYeG z`Ulm~s>z}YO*IR&Fx}-)&E`a{p8nuaRo=^X(jWT-)H3Z0RmKCeY+bB5Zj9ZgpXbrpTvceOT^ ze&kS3`)<@4sd@_6H)8$5cbhhi7CO|szI#A*3-zXES>FS-&7n>e>Jo>#!g?HOH#pRf zt*1fVBh=d(_un+y5#bu%)MokL)SBr^q2AUK{y{AH-cgjF`*tQ3Vn;#rwx9cU7M&y1 zoBr+oceLYZ(4oHR|D86QE>V>BJO78;@w8W!)7X1Xq(_{zBLg36^XNqBH=s_Z z-469fP-oKB4)qUEo9H%&vc^BHN9kUNDgo6+4?9#Xs2Kgwp^gUCLoYhiOi*!p-Jx1R zokQX8_N3;Hr;J)-*h%Bs zk2WsKP+a?E4yDRno=JPkm~C8$DY4)qSo-9QH&>dz>516i|0Cg~+{x{+QHYJ>_(E;VkXEps?+gqD?DXWT+>Inkx6#@2 zT}J0{Yt0{t+LXe8TZnA4s}H7tDyemz>l0&^?d}#0qMYcB|q7!qZJWOqhvaTz&jfZKO zL)}%H0=3Se*z(_{GaZU8|6SVbP!E+}O5dY|Lp@$PsC|#NJJgSn_6VKlP%k0v5xT^o z{u626rz;)m1EhVQZW8Jmnp}3!c$6-i&w9VD@tWaZNo!?FjhrW`P^fEYMw#V#l4d&8 z+_ECi52>t8a#|b8Y~v}aQ51SJ1*%b~Ybae7@;puFI@F%B37#Jj7WtVPo}r0CseXTk z<_M*t+mDe;qpNX_q0>!(SXE}APImz}BvqsPh5wMie+AU(#~ECse;5449LRYzdKpls z*9Cu9aFyqGf-}dUEJq{7SDX)}RIW^gvrHvfqr!5=Ckj-xC`}r`(H*T6r$zD{FOYGa z6uwY6Ssip5t<|9%rDwjjta&~sx4oZ)Yf|GUL*20w%TYO9&T?sss{P$E9qm$W$@Zg0 zD$jY+QpH#Om}{l~Q}A40W&hOk{8P34QnAUk(%vj?(0<|MN{E)SgztcF(4&AJdIr!- zKb4%HlxoW8@a5H>EBO_Xz;LW_r1bnO@HZlXH8Dg_jouf@zZam_VS}$YAG1>bj;8gEBfHS?n(+Vk!Rc;I5$AIT!z1>3J#mc&cG^~tU zs0^#+7U~szs`m)sGm&!+eTWtB96A#5YQt$Y#iw#t`1_4-4VuX~P`JT3amm2Uxmqw-x(CB0l} z8*?jx&5dmpCXPTWcx^@9_SLaJHCISZ;9y^o_UgWBU% zQ8nFLFYWT{HC3~{8}%tw^N_Qna-la0ol`~|Qn%7%$XKo|j0k_FHQycM_(=sQO z&z#muzn?*is;~nxnz}tcIPK;|w8C)uAA`f<(51`e3z}fSkq!X&Qd7q?()g$Hu#FlvyIX{Gi z$=-`0fp_Nnh+(Uu02y-;d@o*aWO}GuR2a|!WvV2bF^U1G{CBw zl<}^^dAxKcIFoAzwK-Z#4d1&gC-^=Bz5p`Mt62(oXU$5KdZy-7 zpWg_3FTeR&cP1td|#{4QM;GgIj3>7HdJ|=?`}w2PDg8J);_PVHU^P;8;#U9>ql!h z)jsIkX#Ak|`@Xm_)%%u*N7)nL{Id2(z839++UEg3u6^5AuNigk3;YQ3t-8I`ig>aW zyARfRL{974!5L?5HR|eElVj`3tT|e1-3h)CXu@`g)>T`(9elX%2&-MYqOJjOe;uM6 zeXDLJeD)cE@6@$eBlPz=mR}f#WsK@D%bYB5dU!ARCx>T4{uyDmd<<}ec7{)aw2Q*4 zt<~Bdl-j6WA3h6m?hJPWvVC@owsZ7vhyU*J>;Dlx$9h<-^srG=KVUs$EUix&&lnr( zFQpd^j*YL1ZC?`~drN%yeT?y&thdB_-;}a%8vE<-wLUQJtKW-w^+^5qtdERm>mLWS zCO&QX^|z{?1FWg~iKThCNBsJ4>Y39~`LgBra6H_o|E<0VccC9M-m$Jy{Z5UO{QkH$ zZ_+sbRkUVOxxWRem=VaH)Znkzcy9U=a$*khguN&Dua{C5PWzVQS5Yn#cqRPL!g%@% z;C1vd;7wQxSad6S0r&HhGC0Q{2Y3(e2U>I=RRTUhO95X2Y@+vQwZDmGXa@kF75t~v z4g5a@{)#>a{6iW7{8%^z8mE?Mw*VfY{RnWX_H)0X4e2Yr3k7x=-?Dyh{lQb^ZTDW_ zz0Lc8_h;Vsy_z|}yxhFc{J!~$`L_8*-wnR6`F`Q^Sc|NU){wQ|dcZnh)%)lBLs$<$fx{32F#4c?s-LfjPcP?xX&~b1m}!%5x*&A3V1Lek^dV z_b0%gGnwmD~n+vEVC9e*>J#n6Eg6Wh|#yV5Pt< zNVRY;N5|>%=K*z`cpJcnu~M>dC(r{`*{^b=hF<}BY+xR zh|^P@E)aMT9S6?EfI5784)Ci5ei<6+IQL+9EADe?h;Va(-%ck1zeC`ixC5rc^BH~x zT5EWoeIf9Bu`v!%C+r!ZZrCtDn_;~GZGqizR~;4$;C@>X;5Jw(fU~P&z;j`r0QBTF z<%O_JfG&Ye0<;G<3DA|Y#=HhL!QE=uBtSR78n~YhI|QKN6u`S+hX8#Ib_ie$P6PY~ z>=1z5FdYl+7n7xJ^q%eQ@g}@O-YdMwU^=nq_8M1F=QJW$hVN0Z$P?L<0>-`QB+J&P8{d(*LGta~kfpJ{=;gVwBE+cJaN zJM3f{kB^|5oT;)!mqYoXoC)q;?7wNM*=X{JUGRRBCB7 z(cPPq4HoO~jiqCw`R$3#Hm#3!y5guk(LW$L^oI-Fgs3*#;ipG%IvlKavU4UL0 zt1i`SjJ8-Wt?W#pzYg)`b>O;Vg#{DajTUW-CDP&%**=oa;NjEMm9~>`m2G%%joMq; z)g7-Ad||Y=w=>#x4lRiF#1l@oMTu?)%hd`YCG(bN`7^+&s6E6<^5Z~vAkt}xsx9xqw_S0-E@^~BPf+7oHj?QQ7d zzG$y79b6@FuGZdOdwU1Vrc^$eNp0mCv#E+4EnP{>ktV2RMgIhfK92K&_$bIaC^Jh-U&I&5J@nkX;U&9PsO;Rg;fo zB_(2&Dmih=EtF~TSQ1&G+z~E{A^!X9~#*=v291?rqO z#QN-QvDWlh%6^Ij?oNp}|NY8&s2{Fq#za|H$!mHO2f#6^%YH5_%NRQ|6Tc0ZI#N0VtNwK#G;Iq|6gVFN6u z3A_i0c4Du9OkH*&!6z7CIVhO?LXka?#x{8~mXb2ZDU^o<4PdX29k$}625*-I!5lizq#G2UFffyEm?$t?cUr9K4iADR6fE^z8It~dra^8{M zL#|uAc+r|o9qp$r!X%;&Ju->W?ruycqnJrq?;OhK%!i0~G9SX}wV!*#fFxAK)^ zEgvauO2sg5C)JdqP|nh!&`q1sC$e(qDTmKWgy0+*B6B>mt{+B?xumOxYs9r%*kifJ za7=_%yX-t<3x^GFZyS38cAT+fA__wFc*dX^BXLhMv4FSa+zdz0j56sR*nr@ah!!Q2 zb`m;li*xH@xfCCq5Kaejj<|SV!beBEkl$i&C;stsoDOi#O$?k37cGopgVLMbkmu$@ zfO1Zs#F!2ViEOPbg4%9**IhxFI^M;1i&D7cJTm>%xf{pVAU87ulNel;NnS(cKmu;Es z+1A>E+vP0D!& zor85P_Q|mw?5<;LQ&p9;y&ksj*Gu0q$SS0tNcRM`D| zKp975q?H5d>^YW{kd-&yomGbe;u-1Ob6Tzmp%jOd8D*TK*|eRG_AcO{r$Qf(FNuc& z+;NCV80WKCY*3;+uVCo13Dfa3&Q814w%?6?Y(Hlt?Z9yt4Ki@@@JOOWY`g0TqA5n5 z9K;eF+YRQ>RJ{s`dNG(Ce6!;wY2L6q!560n&QUf_qf@cI&fdYbtX9@SE<49#4oyTf z+#K&2!0~zBNv>O#<8m}HcxX8UnC^kDoc_p`=pRhRd$x>`v^I(NYx|BR?cz2d^D|Ft`Jv4#G;US5x^&A)D_90s`<70{;)>sqkjqVUEl@;#z zrr0GN@8m=C9P2o9OGkRJ7mn2tLk9xmgA+ahM`sT*0|%t?ek&+TV|<(5++%UbuyS?-YBG(_M0(f-77&ki-dA z+F=u-TxTrF!7YkO3FC+JIMoPF%BN zJcxEr&~PTT9H%`iIBFc`xU^Ny1;qq8=!)2O-jm=CkSc~zntN!Ysgty<>hxy zHVEgkn79&YMBtU1<%D<9j;@&8{mG=Q80hUil$+(`9Qkpp(Q%?Z=6&40kx-BSCgmJN zTp3%*7)r`%H{T7&nuga213CBca2rGJV>siI=R(yWc7LW8C+$9m!__W^mJ)qMj!d1r zW>3MNczAMd?qfAB8R4a3$3Tk5!m{Wfud9mh!s`^YjIqZb||gjB-Z zwb4#BO*uqI+U}Pe;*re6%^Sozc&bDTUg4p=SU$;WDYtvnK8+U}i$y}~K-%uW{2pt= z1|Y$|RFI+!kMGFj=Ms+7rW}ik52}`?c;Shjc3X-@!}=V_5D79ymMG(+NG8 znOt*nF}f1fv)-*dEAx~dQ~MOP4Z)4b?!3aW&ZU^&W4J};4lyaMm?`4E8tqp(<(*c^ zjWAg!K)hV}K!u|`ZbA?A_hW;Wy~E|+HbW3<#XV#@>C6e---n zFKxJQX!o#lV)?}z6~$oV%YH{RP)3rTm6+l9e_mO38r;Ift-5G-zG`QkqUp@0Ns*a> z4g==mO}J@}kqCS7?Q_^%HsolBPCDsP2_=nQUe1hBp_%518~|7m-}Fqd$oyy@UaiTkVr{+li5_gqG0fGgxa zO45XNNOu35Q;NJhXgZ$M3-jae#a$G|6H!s>qBx#G8YDVt3h;d16bj=P3kE2K9AP}i z6a!4)*8>uGrYHdlr#485qnk2o|fGP8NH|@ zM$|F|l3ePum5xJ?Zj{|YH2lRWP{k$3DtE+Yg`o&$6#TJ@TZF4HRy76bJ4I=? z5nF`nfJ>xDG@N)D_$;4$TdQDOZ3o?pD~>Fjx~X`vU~$yNJq|g=X*e7v zMda;At6|@&#Nk_CoXxiYlHsZaYauZ$K10Rbs4I(k~$)o&8 zZN>Z2EN?EpQ}9bLEs!yV8b{?@409|)zC-g*A2WXk@}HKGJA~&kccGpIhsa%y`ZvH1 z`MGBvCbz4_5?Ep-{&z*ZZ{cV@gr_`J4Y{p7IO8#{ko+Ef};sMM&9(Fu5I56`t z49no$jC?#IR31)AAVuX4Bh5w{&tAQdgz#sah3_%=;>QJysYE?1k)H#5emJ*LGfU+` z$r4nZhnMVX#FGnauL1!}h$Hx*UO&&SER#PyvoE-O{oJD$UGeSmvnHG|V?9~l*?GpP zl{4SiZIy-U^%6YfURV}7QY$My+9jrC2&?4>vroPE*cG$Pvd}E8gis_bxj zdV)8s0r!WE(CQKjt*d4_v>LO%W|*Ok9#FcM^k6XPAuSlxOJ}#{5WuX{^mWASgzOZhwqE^_@1c3lhCTh1zG;f3npQDl$Mj_VCk9u=478hvN zm>JV*3C#$GflroN`Z5Kq48}E!rdzq9>d=4?16IVTKsPN9TUa-PepEgvhA9HJD{DVc z!y}NRo7HRwDDikW{WkVbqr1n}E& ztAfGM2FtR@P$-+VIy8JY_u~esb%VpYmrc1r8EI`G>mrL&Faa-^vl!Gfa3Xfqy0v0Q8!U))sEDhQHTe@`U&8`QTgs_}U|X z{&iP$&#J+FzdU#OR~|jMyR^d?U;FR>yymsQS3{Rg*_(Lxy1G{nRIV<1Jhc6x`ETC- zT4>7T3+5mEDDb7rA{#IK=I*%@{0rZo-O#ai=k!He_jEt`!?&j0)OcNZ!*9Oz#L@i+ zE-n3M(;dHB)cD$jp%=dVX5-yA242~+@~^9|y^7mdJp5+_6$*{`1s0+8=rUNg#)~cq zBhCO1jg$ood>&*%myMKJk`)e*V)f`4gKc0SGYkRi8v&n*1jMPJ0h?IGQA90-E#Sq` zAO=s+!hqKdF!UhCk!3vu zcOQMKaxqTtBm z>heQ%=~HRXsLOMxws_=4u4);sp;e((+&ToTAp6x?N&dOY`=XzWU})skU=8LR47oQ^ z3iRv1&{zrO?BFr>TK6c&ET&~Ef9`Eyp&aY%c&Q&7|KlfaecYcB;Do;6FZ-Gh(w4_Vk4s`JCU-#mjp9_8@=o1Hs(X^7Xj0h2yTwnG?>S@ahMv)p)aH6tIHv zaF))+-2W>*mq&}3V0?{eH@Q!k#xV)Awp=lbW76rP`-{r}Sxzf&l`zdoF=CYzA3 zOQA#foNp<<8*W89FD9H%vw>q3I+Z$T6CfWs@V<)obenKpfw$jQO3v?let(dCG5d}g z&#pKK6NpI{SH*D{xU}J`K`QS}_*j4sjCgy`yAA$KmQs9l!AD9d*?aH_86Q=s&wZXN zAyk7-d_2N?mYy*r^-7**v|Ih*aX7XC-jpmvSw6;4M=c5LEmokeK4*Wi)~R<3_B~<@8KlI4zms`HcsfYJwtbH@QIxFK;$l%>kw(NB5cA7I^wiUlu z%hpjR7YXRro1^XF>uSROj*rxc&c@r0{EnwOYs9ln(4`-3X3cxBFT~Ny7`!mujn?PN z&)Oo4Gf=iEhBrRTM8}nmJnjwF(X|s(%Cfn#^6iq<^+d7pD#)^-{{ZZZo0}O4l&4R= z48rd@ux<0pj<)b<`!1FDYg^F=yf^NHhxEcSVR&bL&$#7gqSZ6uL3r~Tf6aKi6^Dxd XlbC1RxCO37CTl#7R7N)oRyt8v6C3G+u0}~$hHy-WM4;;6FbIW zv!o;h0wqw^7E++4FSMnF7FuY5vXm|q3Y6xRrcjmw-JqrP(H8i9XU^5)!~x!K`Mf`V z3Ys%BXU?2CbIzHw+$*!}j4R0?A{V|NeMEF0QvS>r`0-#6+5W2U`sp6;&&J=UE&bW} zmX265)Sa-mBqE)mwn$f(oeH%^Ly4ZQP^>G|u%bECX}3pf3krM_9n~uviI!>xy^`0s zEM416q>sqr6(6=uCpWd6 z02~hS3O5T@hKL5U$Xnro*A8d<@Y8&@XCS218b(9vtvmA+o*A`&p)<({F61Oo~_re`_8QW zhra55bX&kXS2w~_hU~F>CekQl#igj2NF@5?;<+*pB(&6WawjNAF(=#`HWrxeDn36N)7=Omd;soU#W5 z89PHKj2oW50i$M`VK*Z?Z<^m@w*c|!W_S%!kG&Rf`df#5o*InJbs%1>CasXin2*XQ z0^q~CFf=e*S=SuHUJtpvX{8=}0}$xiGYUetqhrVBYJF+AR=C5_JFzya7bA;9ZXkIE zt1|7+AjzLrVu_h~hQ~e=j2aJ&V|y)S@5_gLR*h*Xd(CR4w}6hBk=2U{CT-WltTEeg z!?ZVoF=E4&9uJj|PwO!V^MKH>KrzON9zF|2eds>!C_TK1p<$nmB=3*~moocBPffmF zo{RvsTLCa}m0lN(o1jAU*cmR`2E7*aDxEc*1_x8$^s@}Rol9bP!st03I|@WR>ofPT zgL_VczM2X}q?ph@G&e&ixrNJh061;?;h})12jf}G&-w~OZJ13JRKJk|Fa`6%O_fM7 z2?M2up&P0@W32fc0Q9nI&H~3`4|JW2474u~F)zqU@X2lZA!G6(LO!>jKYl+Mn2p+G zy?Asu&SfX-Mg}W36z>i_+=;wmqpmPffVrQj0!Vg&wF86OMyk68y1DcreR^I3ozR`! zD!D!Epc;=ZrdKE6knZyn$dLf81d}YtF&d8HP7dhPE6&Hd=&SJs>BBKaP+(RkuF28K zEY`_sb>ddm*^|*Jf}-;Vy&qlbn_i;p{bFN3o0vqX@eOc>%C5dp@9$-?fFqXdV*zHV zjOs;tcn2uEA7D>0*Eu5RJeCg)dbMu2!WRK^hc5;UU&2g@n+R5fXdG}MRnr0tY7t!Qfco* zvAm!b{w&gTJ@%y_lmVu_3;5*fBE*(4(3>xFL9CIY=#KDiNMQKL*lhkkt=n{|HeQxB z!Da8^8h8o69LOH&;uE;}((o%dvzp1hz$RDkSC$*DVXjkJuY`nhc*zF#pg7Rcqe`FU zbnI0kDZTYMu3)aC)xKI$s%Us0Q@&#U4@)D)nJu*daZvaMFeY;YZv>(mnDNI=U{!yZR>a<^ znc`5YxWApJurcjF#{n^iU-DX zQZg_ONp<-ee#~_$#O>g>j@0FrAZe=aCsxvL!I;^#P`(gvyW-*$nK2!YshX3IfK| zG(!+D5LJ|fAY(D7&~!q}F+bR#<1rpdDN_5-ufnY3cQP{!XPJoBT(ag=m6jy`1NnKL z`2#C}hi(I3iE}@oGKj26V!YnZ9j%6p^fR}}gKZDSwVAvJ z#Vq??rB8H!n{i7_;C0JG7;L;h2^jWwkd;C=>)6gD;u>{VhLccY_VbuE?E8?Nhn$;` zGfr|m_Wj@`9st+s!S{VJ)kncQIvgl`FtM#+~{dVX0Z%*vpCE2*bksUf$1GM z1|nXwpJz&Oh-VI(u`S&U(|!t4Ey_HO7STOUS#(3+^QMt zXf>tbrgW?o{s9E1ovL_O#H{sVQ-Pvk2U~naEc_6poZ?{ekWeLIFiV(|6mPwn%x2;c z+%Z=9=abr^#=O((4|DV2-}g|yT*_DP&}D+jRMm@7Wt?4M=W2}{Q)c`8Gf+CR_WiE_?+Izyw|&*N@? z1|0hr!e;w2RWea*Kby%Yb*g86sP~BKnVkq_t7p2*sb2C<$X3rZs>cR%SoQ3as=}&J zZmXD=SdvxCbm$hYeRT3Uw)}Z9kl7_pZBir;yFsV1Ory3zuI-mxvGkDdgs!_QHaem_LtU*jyO{pr#wT5}cjx{3Rn{7LH@o4)$S-M(Y=no%aPWZQg<(Fe7YS`)M{anR^JR~ zxL8^EWloC2zf;L8oFsO_wD41cUYD`5IQ%L&SoKGTFNA;e@M}!s218QJcs`HwS~LdZ zJlP8oOkOra7oVGkO2igjWPW$?%o4NMejVCOzsvr;q;C5SPTjosH%f!V0SDjAr?Nx>nXSp)fXkblvOwNRaLO-k)hYtT&Wo84o^ga@Fi z`YgR)CYLCa`EI|3f+!~Eie{wP=-@0o1nHX7k{2Vv?lY(EIov$S#yJ#iN8FtUR?RpJ zmp?#NZUtulTx6*lu-4B6A-e%V;Koj_8tEUM)S>&2OA88ulE^PU{3qCCR^`cJUEnR&_j^kWdpFv< z-&<<%aRo@3VP646t=isl!@e?0jWz7gWvL36Q?^oe%qTm~m0PyT>&h)$<#Xkh4*wa( z_}t0AAj$LCZzJKo%{xdf`>%kLE&FdsJodW+8Al9uQw;4bMSF{VhW&Ri^QNsY&Y#xk zGA#Q&kcL&VUJ&~qpwP;?$xcoYM6$X6<;VtHHlrmzl*`A-g;kbpnE4G)$p-9aX540S zXG$lEzjZ1{TE^qampI)GcfXGUc^=dLCsO-g02p{|=kq$TY(TFmP^*x0&6rq+QiY_; zRizrP|3)cr!XL1T4;f%I`Q)l~m_Xt)D4K`>*iMne7Up#3a+1vH%jI0aoJ(>!moew6 zT+Zj2_z1O5FG}19TraV4%d9RpV47Sn>WMFMIf=hqzc4rCr8B=YLT0|ls?AG$897M} z>UMaF>(0=X9;vNly`JE5wvOB!{)Unba%EcJ4PS>5S7fR@uLy??2nWru3yC~aZDYI&rqMH_y!c`j#s79Bl7cbJ|f8^n58;U54+)Yz7al| zgAtCl9_~3~KuErCX~6s#%i|v9uHlQDtr#jhba~EzClwaNP1_5Y=Xo0QNS9+{*at=r zlh^}$Ec<%Y>ocqQF0%vrDja>6vmK%@nTG;cFY`r_U4W!u+C;D1Xr>CVV&InC;)B1L z^doN%cClmaQNSj9)h+LHhemtl0+Y{2H6Db4b+Gfr^nLFHnz5Rn7JEL~ajCnKXF~=>BujWJjG3OH)MiJiTqQEt~0?~(@eKDs^@jb zEMC*Ze!2(rJ}>eX#QFYHJ_sAyx~gyIdAas~YO{Fp;@bQ1<=6v9(@ppuz_$=zG>Xt* zK3}q*L>4;anb!oQC*WIxFHDm>m?C+qMLwrxCcUG*rJ1-weM|FE6^<}|TCLC0P3qO7 zfENq=5B*Bu_X~VN;4cNfirgTLHU5p9stzGzb5brfxi>@fxzMtE>$h?xDqbAO5hbGT_q-cP2f*USpPpt{u3O3sa^{CQpOtu zUtP+%=ap^&|3-oSGWOxAW!#Ewz@ev%H9u3v9{xQzLHb)6dueJpw`D#cda9fy_X+$e z;JNew28=Dxq=V%<0_W1-!8w-2jP@4$VuXdJik>*LT*a+;LE!HNek8Co#2%X_uqhPfDdCKDp3PW|Fk5Odf0-J>2J<9PUf|3rr1_u< zfO#ZurQ{iyW4A)fT2TCquTZGX4i%7c{h)%#8za<}QqH8wQr~T$+|aRB@*b4DQFMmn zJr8OQ?l3k9^{Pl#IMlx#s!hs`*4WMp+9K3=p(Y_pvenZ;9ZxmXE7V-cn?)B1)d=cj z)N!%Ya3&}>9Y>c)-Zqguj&@0FcM5ef?UTIg9qJm%`FrfM4fg&Nl&94R)A|v^u)LTn@NL;Eg8dK4Pvy$2@O-2JkOt4Dfw( zE1=<71o)KyA#4-==ucsTe)*_H+Sn(tD%k879sb&`E`bjE^m3{$zot7oG@Cd*OV*WMQMRYVcz4HM+8}340LcX!Nhb z<=~VCT7l0EEJxX!0t1GN{v5ap@E-zw!E1pR2X6$N5&R+~mj-VGTo=3(nterFdqEMG zRWK-cIrtil2d*@0R9nQg&lY&Hzz>kiBio>zr7MkPkXO{>+FGL-+%(l|Y~Twad<=SA zyVz*M$bLG+^tE(_5yR8Mmok)%*?H1<&U=*ZHMZlaOerrUw9|UX7{D4h$)TP%hCr=x zsMn31pf)a~CFJdRN+@Z#}Ujwzyp(eX`Vh(O{sCxHqP#ub*Gu?l|)6RP`)caU_ z^CyZelyrNvDr$GAUU#t;q5}@q<_c-!$u)^3AEjH})!GEQPN*Sz)jdNyh8}kE^2~YK zBzjJ$om6S=rOD))EHy}LCzC%zrL@UZnxXo%DKsHNU8IF+sZdwZXwMZ|HC^mblRW#h zY4j_hhOFZ}H)u8VkwY!^+zu*)dsCv9wauP;K+SZhdxUCms6Tn`N8Vb83R~X?)gjdD z8uwof?RWC7wtlG{OZPc>KebZYOezd>4X=B-Z)eeLhvL4SO;-!`viEuGH`-jf)u9T# zztiT?Hx#9v?tMc$p1!BbX*_yPq*tB1i@a}ZC)4{*-W}e(bSed=N`2Y^?|a&*R3+5Q z+I`-CYx8NkqP%Z^o6k zPBcwf{l~lpP$dqvEPtiGf+jiCxAM=_SJG^UDk)g0ucii}t|~1W`=Hs(DiC{AluA<^ zrS{SqC+~5s*SJs5QXHk$(G8+S&EoZRkD{!CQ9EfpJ>XDvqjrOOOi{FE)D!v!dLlzT zrGI8v?Pq1`TZaBV zY)sJyphAeBw-zqLidbBusBeSnp<^BDslsMs8!d6DS3qs22q=!b6xd+&Qp};Oz(!CB zhYAI@7=5(Ep{4~oL0#lf^HFXGUFJ~BP;Lk9Qxu&M*o!ko`*f~hh}r@vqo3Y&sM`V; z8s}3tZ*!1$Z=j9Nr-`_NWa@EH7f|60rc|#C(y>AfNoxn`WT76V*5Ga$q%&0>ofF)P z($%w+mh*#mVf8rPp{@dT5j6;PE!`5l$GC*v$WRX%m(kxH$=e~hmkM!P$hQ0}_+#TL z;)@cZi>+6Kzc8+*?GE+V;0vGzg;I9zqf3WTTq->x_c7u0?eC0hGgPnfrhyv>Cy)E~ zCb}|5%guD1qO7K(4aUuMi$iTF+6d}ShvI(t0^RLU+z(%%?>bbhXn?**k2qAKD5ZUo ze&SI5$h(D}b*RrG?-qK|p{_>Wt@Nrx?ML3N^tMpf((^^{8vE&`Ic)dq8n2>v(3-hS zDNlTb&KBxgdbQ|7<12KjL;bnPaNS9<<3-Z)j^1E=m9{DheY+9VpitM+q|uh^Kj>+P zI(4+)bpVAlS~MDGcv=RiQA-Buv;nvwxf-IoUJ6_7lq&e?OTU6~=j@HpG)s_~~si2aXJSN+- zxqZ$3s}Jj6rJ)Y;I-Me=vbaH~3ny1Yu!tqk0^gu0po_Wz-Lyj_KQ0%ib=2+|R(r1I z3q%9Mk;b92^V7g9L<3u5h@Cj)h~{er?iZLlW^(ZZQubSb2Hg+nq9*~}^emuBzXH@K zSLQbv8I5xFB$9Fn*?d3F{?!Yc`s=y6^ z_v3YhJ3K$r##7w&OTeV-H-P84ey8PA2lhu(0pA9E2|Kl^REj;>RN90+)l^DipEZ?! ztZ-K;@be&9N2{<`s-u0_71hzR*bR+_hGty%y@Z|LXyl#)4)53^8lO&LfE$gi0{a9G z3EU;{DuLGvyj9?xfV=5#!S5INu)rq)Q`$3td+DI|Y)K3|!GD$9?|M@!Dg6Q9_|nH* z?`X%B{>1gZ$Y}by(q8~SyYvNDfYz06Fv>JOk9qY=OW$&N^#i4EW3Tui_yPS_0^b3= zp7gT!TxBQ=dA+FYpTH{s4{8(3K5~_5)5R}3$KjMCvD$0N4eg}FcVQCO$ z6|^lQul9?v_vvrye@5;udT;C`-KzyECVAe`XID)3XhzcY3m1>=S>Uu(9OnsWn=4KM z?5 z_f+h}%T6neYdvM!e^%TC`1^{Dn7MCPq_i^a1K{J4yA1M0m0v<`WhG{uBcCYxs;AD$ zZLGW-xh*2o4w>V%t(AyEw72p;&sMsn@~eQ~7W@g|W!f8+Kk(EWXSyE)-#zYUfMw&@ z{;7av+VO(354Y0#aleNAIpf%#B;Z!+ANM=Y@!HOD?|PcFy^!paR(tgu#=V6o@q=-i z6@gV7jfkODp`PPtF7@)$?7p)E2gwXBa%nco|4k8y3o0>xpS(?Uc$GebxLpx}6xSp{rJUMQ{ zZ?TpLTuQ&zEm}!00k+UQ_?!SbSr*UqPHVd3%w2gq%v~#?#P_urr`xs52 zG0VEdI^^=Y=efJxd)!}eKj?nm{id7DP3BhfGV^-#U#8Df?m5kq@;v8x!}D)Xz&gP? z%}QC{v3_Y4l7?OQm4(LvCJSd{-R2u?H*WWMmG$yX9&U-tu>MwH{jCJX*KQMBR|8IS z;b9*g=i+Be3k6={dW!iba~jN(p?a0z{RIgfCy9aqKqYfo!5-j`6tLu<1pZgSRp3hJ*H?&rZL{0kHh@B;93 z$`@FK91XhwhNZ~Su^VAnhC4_N`;t+>$HI3SycYmogZoDvdltUyp9@(Xx9be&p@fFJ z^)le6qJ&QK;cFc?MOA=}*xzWhn2rIyNZ=Bh1Wps6PN&lpz@^y1;1q?67oC=)1|6gH zSje1-{fbVX0o14ycVarm=8A#7RZq=kWd~cDR5#?)Mwvp)=u6FP#M+dg*L<&r7ZNdTBE}=0)x7 z%WindO9}YLi(jD>0iGv2z4PH2FD&65-=*-07nW24UJ0Lg>2vUj7jx4e$>5!Hc&ok44WFQ3xJC8UAx=i`~oJYusnLJKX*53*EcipLc)V{b%+nye zsM{+~cTwo1Wp;Z{JbDVXM7ok4J+%w%&Q80lwmlxF#nG;4BG%RrjYqdcQqi;PhRe{h z_BpgD7EeVJ(e@VnoO6NQORHD3)Xk!%W;>C>6K#~*(uZ?{i9%+q77uxZ7RQQk_Nw7ZI*VWdMu)FM@WJ@G@ZrUI^JY!j;E3ze;pay$;SKN-Y zH>V=0o@9nx$v@1ECX-7dUG4E4F*Lb59!*6L=Qnk2wrO3oHLZ@Cy1IL$m1$&kG}#kR zW%z3&@mPB#h3EM72|UVAOJ&*V8k)Dp8zQMlYa|(k1EU1GIhxoOO{_`9;;~dLnxq9i zt?27T~J=#YtXh;u?6-5{* z>26EbHg`wcVrcx1X!{6#Jwgd;$_@o;%BmVcwALAhxkWH~atdMCz&tT-Wh9p1O!iGQ z!J~^uUzQ@Lc?;nAk?K;uz?6u_X+>)ieR9MIWo5+Pp~h{|u9Wn2*7vn-DLa9l-)5g1 zrKWlwxy~RFd|@OWZ;iB_OADe~VqK0{V^_O_Er}#MDA^rpi>^4ABJu8y2vW3dB@f$d zbt}5kJlYaXZEEUDsh(*-FLXxY!gO$z!BX|{xV^oZbyIRUnaQo^8nd~IJY2idn4?Wl zM|No}nS#f8Mnw{_q}>IA$1v5mV`Ox}p($lD4@EYki4g&tk~uMhHo;N$cJY}r^Os^m zV`kB&L?o7sazzU}B3)ae?c$fDs8y!qgo|{cOp8a-$nDRaXkyqf21~3SxmwnIlq|G) zHCu>HB08`gvrdBOBFr!zK#h^M4q9%fVw?N26Ck%uGPG879g#_y8Q9rvcVP^w@rv+< zDWB>)LdB7RR@{D=Jgw+DoP&`YO>t>?GwG<#9pMgkO0JG>#`@9KCb^W29hmEz;8w08lwq}#Z7GvPMc(E+IEUI#SSxSq1}a0oNBQ#%h(zWXNMtUUsyaMvS!HO z->*Cq#YQNaaZz@t3~PEVhs6=f<#s2FER07Z2_A;2NUSRf-+fY{v}mTxClwF}Bp1bc zqwURD##N9$f?gesw6Exje`58l4OXh4EJ#yVd$f1OW;R`Q(7=+K8C9w(2mJ(( zeq3kgdOp*$^@&7ec_Fx1hnE{$r_P;rYk1~?~?^Tc)(*IAJ;dI~s(>k1?os9{y zZjCe{J}K_;=4k{|a|dx#&Lrk_^wUjXnX{ju`O{4{iK?G!CNvG71tZm-9i_FI;Vz~+ zwqVzoKnwe@&2H<7%Sp`H)9{gMQ!H7}tG=_LL{1yF)!5rKcJVI1-3fXhFC#(W6ZGIX z5bf+vZ#Wxoy1v*|dqeu&bkFDw0USsLc_a5Zfu))5g{kZ(#VaN;sv-A(!{W zkyh-TA=GAfb@5ReEC&TM73+-JJt>?hH)9he(OscD7^nwFP@D!8CrLQIMiegS(rDL~ zR0p;8rJ_m4U(o1u&GKl9kH@Q{TYI9|`lM4Qw`m381|S;gL`D+()MV5lp+}D4*|X4^ zMT;6&Z)$EjqY>d#H7}DHX>Ug$J&c)805k7*ysVAY1N^6jEw{pr+CSk|1 zJ&a<-N~mC}P!?%c=%&r+6WOzJu;nAX5G;`)GPee6y5ZDlnoOIKc4A8hk67+8++JY6 zDtm4@(%=9XZ{U%D6Ie9S6#=1oJmb)elej0DSinb1ZiZuL#+U^?sT8gZa6N!z#pw>R zFoGR*oR&sf0pko|9R@D(ALqht4xj$1F_Ewn;BSkuKccym+07x#n!*I-L^^Df_eM;vBPiSK!>m zNFO>R?BPzzQdtaMk@hUZEW<65qntLy?JYRD#nlNV$$O(sosnLdMluW*C+zK*B0Lb5 z=7@4NxwNdxTv~<^Bg|RmXkum>PY)?aF=ufjnTsZBl9P@cgIa9CZFPmz8BKNI?*YVk zS%S;dO$V+n_>Qd8aceRHB1+rjDv2dkNQ)%ox`58b1`!9&XfKcckuLx?BR_MVrl@LC z<~GZjw{7VYCJ)L84u7oKx#>b(+3nnF?9mV)Yh{wz-FyufL!hMBbZljZIuouJ(~bHVI5IM%%+2Rs58SQM1_qDKDS(l~RIRod&OvH}Ou`NBgCmwcz znJ&wLBGT1&WI2SR_MWz!4$7A3?n}hBbc~SIl8CfNJ0pp6k5so1e(p)+7>|nA#*#5? z3bMkBdt&WbDqZ2)Xd*eH?K~Zi$V_|B8FSn|h$S+EPBFwAtE2HquVBe+t;~9jCwGRNOSBd#V{TJ^``Xg^9lI6#r$)?v6fM)-Z=ult|0TAZhGsvt=#f7*yZ9 zu&D_T0a9w@^4(;8e2Wcb9i6gHBa+C4rK)#9Pb|(W1WQwk?HE(v-HjzPUCCnnXbt0Z zhqQ|vx63s4XR%gkXox1G&V%yn6Hva*PqJ($+R zGWdB$Y+JNBwxvsyU=N8k1t)9}1qb-)xav2JH$#55L4xlU$w zGoF>mZ4_oct~y(6)~Jq;9LLrDKhE>&LJ9c@JF{j|OCr`ucK4?AjTNnoB=~~5r!^@* z3v?7AD9bI{GEBH=B0DU&X2*F@oxWqjt<5srhb-qs947)^g?XEMv@6GYv0L1cgD#J5 z=N&vAW~iG=%)H!7MqF$Tqh&2lKjmvOtFT7V~l&^F7=@=f9t;1}?NR$M(Kx!YwBSsv(E)q*QmdLgdTfdlkvH(*vD?^SH zqbpE7+g;CV3@=bowTV}IbUZw2A67Wpx&*6LG?C*VF0GhJ;+7xoz?||T${j7ik1Li(IpHS`SN!hYpW1S6Hd(|AKCbcu?O*9`nIJX`Ly>1-HWXCQHE{pwC zl*3F$iLxU{3^t<`lJBTHtj`>7Ql4Hdu=$a!cv@=ZID0q`TgzA{wyOMKmkn8loANZx zebE_px{V7<#9L`6al!96{7BBy=w{V1Ep|8Y)?RfZ4+J@8NG;B(ghv@3i{UX+B)cXw zspSAsM;%8LnOdKJO_4GLCi~`(jy6qoG0Pb(3;L< z7dW_DE!Ea@x!tv@Cz|M!Fr&^jTqawYx;p0~wX36Bu<=eb_I4+*ABLlnILvLqZWm8> z@ia)*Dw&tl_gwhN2AC z5=p?}$#jfE9E!&AR1&K$X0s5aMr@k5uqTi9uaE8`!*@OGe)OQ0Y02Jg+h2!r3b%=NdarcSs{csMQnVhg$F~h_t+I&=E%+`0Y;J6lh9QpRRNacC@2xFVWy- zQ(#J(9I5!xOb?+_E*F9!I27U^o7f>-g|VqgXx|}5ryJ2BR2v+EBRlXmaR$3bJGKR{ z(ct(5e2Zwa0T)9CcQb%VxSr*bz{7Y=hK@O$8$x;376jw8i+(y5yQiv)|IF18nX0XF{Dsnbu0M{yP%w-t zVGDXuegQP};=Kk%QAr$Sc#y>L!cziyooHnWrMq*fKoe~277J8)%4>mzDe)i$+My#Q zdhqlcy2!)r*+O*TWoxJzZ!+ZEv-iB(CQh1XYSUrrc zcl7kr3>tvG+%hZh##SyJ9!7bQTaP!p*ou?!or2$B)j`J;yiJx{%8PfKn$SIsBgoGj zQN9`SXJqvDBD&=${*g!LFqkCmB{GsKY zh4<;&@n+jZ#8do4&OHs&Q3E^%_;kUi1K04AQRY_*|5(9~75ps0&tlww1pnCCz|UC? zgo4f%nW!9;a1g;n;mIBX#*vdFHU|dg@pR@X!r_XicSt7vX2|i(P%@m;g&ZXvLY|F0 zj_EvE@%Eg7-%}d+aiD=8jT-o&uadcC~nuuh^UZ@|f;sQ2`JvtOBYZ{2GaS>M@l=GwB^FYU6%1S|C-ymFgACOBRj z6PT1Hre+AM?gz)My=(6BIp&yPomNCBQXx{HOF_Fsx>ix@4r#!>AtTsWM8T#Crh|=c z(*1rvUbFT4byFAKGOUi4D@1`+Ky>`1ThoDP=o`xwW^S1DQ6XI)6I=s@V}ct1Jt5s< zBdw632?9-^Ow?=@Y3?u+9>*LjghFhW7pikHR_B|cF>{SJj?e^u2skvMz{X4gD}!;( zVseBlst87fh+1K%0^PJ+yz1+w-;2s);*UCKDJ$Dy75Oy zse++a;bZHSCO@NDRd89bhe4lY3}ot%1`j}m$=<2piYhGb6srP$10Nn@`?*VCBC>VJ zP_PU%oC#X1Fxj7iS4g4Y;E;u0sSw@ckz=7pil~sg09Jvc<*|F6@d8{=;{~XzGEG=) zK_!a&*lA9?7|m%{80MnqgJmZ7Ba8r}0;8Zp94(b|39b{`f{hqlra0Np-Qo|1c~l?? zh7B_?!=<4|Tsi}O^VG#XookX!QyX83%SZhy!VY;$)>Y_$ zN;ewmccbNlmox7g2G>Jl0V6jvxE0h&HTX`>BQv-JlPS2;vb^|vJql<4Rs;uc=MG&d zmaJr7I)#?{LatzAMQ|xvfHLq>OR$Bfqt2kf@5aOo&anvg-5DIbYw#A1wyr_^(Iq&? zWG8}N-CSSCt>-@k^P69~Li?_G=UX3q^?|>?))u*9W#7Kvp116d?|-;!bhA-7?&lv} z`=am5!97#1?t1gOs)L8hRuw!P+*P}J!ap8Y z-Q2QcX5-c?+8=%F)#*3YTo+pZ`)~blYWJbtqd%(s(kqQMFP8Q{{l%AS?!3|WtBw`_ zSowMUNj7-v9f5yGYte1+ZlxRD5<-Xp9vu9@pXYHw2;DaLfyJUjZtjR7FFMEIwi^(J z1JDD8&toD3UiBOBg%wzZfQ5(!Jg~}-S>v}b#We#A-H!?6F~Gpz=5p~Z5j>=#2a+=} zZjnq?2~S3-N8B0{9I6E2^I-Cf3Cbj8sc|ekz(Hsn=Z%v*VQz$Up~p~)bINd3;(-(x znuNc;t0R;WP;S@Yoif0Nrh7dGB5z-CXuLP%V!;Z`D~}e8Ak0jZ*u-G~fw)Km8#6gQ zArbns(=iY8J1}&z$a}MxaO+`20eJP9iEpJRx(dY{E-~5jrMXUQU`J>^Po@Z3&hZZe zm+PPckC9PQgddS1kdskSSW!{ImIQ~I#1e%s6CBeTKT$zX-xU~Ig|_R!+}s3z9_hiM z4eCFh82-QzLO0L8U5H;5$f&IFdoWspLmPub(aMU-3e%%=BKj@~4sG>$3_wir;7J~g zrlCHpVLW&SFbph=2>5$fUdSD6taMuzW)+XMlOW~?AC0$yjrrt8g+ms9Egxah4-PTz z6G>Q7=~f+iiAr`^-#B&C1%c;%CrHf3qQDN7}~|wH6RTx2`*uWK-$kkVyTx5e{kq7e^*<%9C>x%YV%Y^sHv+BTcrsaj()hKlZPpxNA3*e zn1MfKH&vsFb2dlj&Wg^RGd+5IbjI}Ac!WH?byi*7^tO4kBXc*;sjHiP+#LKt zJN%}I{{|lZ;r}wC5wAA*^Ku+MTlC^}cqD;4l*~m2E;jH2I?Q@>m&ge?#CRx6=VIyq zhm+#riYCzzk1vbFy41_>(Wv~Ifpb5aM4|agY(xnEgI`KCI6RvzCG69W;xEK+Lr3b0v zI1D5W_-fF~yK+8g^ECh;aCx82pNUe6F9Z0BAt}3VzA@p$zxsRwe?gCRG-IEfklp&0 z5j4d`W(L}={>{cg8$Q7Al=4xQF9!Iq&2{vlMSOCIiux9(-VW@)Lt>fizG1f?<g?VH+u}La z9=)zwoNV}th3IVj?g)Q>3w80`6W$SlE!}7{du|I(M7VAkffu4X(fVBdSzm;3C&oUN zKL`oUY~u;7$I?ZCWO&Byl2woW~0@!(e7G!U?#Ac_@&wZ=x0# Modifiers { get; set; } public BillInventory() { + Quantity = 1; printed = 0; isNew = true; Modifiers = new List(); diff --git a/Tanshu.Accounts.Contracts/Data Contracts Display/BillItemKey.cs b/Tanshu.Accounts.Contracts/Data Contracts Display/BillItemKey.cs index 2076513..441a5e8 100644 --- a/Tanshu.Accounts.Contracts/Data Contracts Display/BillItemKey.cs +++ b/Tanshu.Accounts.Contracts/Data Contracts Display/BillItemKey.cs @@ -5,10 +5,11 @@ namespace Tanshu.Accounts.Contracts { public class BillItemKey { - public BillItemKey(int productID, bool isNew) + //Old = 0, New = 1, Modifiers = 2+ + public BillItemKey(int ProductID, bool IsNew) { - ProductID = productID; - IsNew = isNew; + this.ProductID = ProductID; + this.IsNew = IsNew; } public int ProductID @@ -41,7 +42,7 @@ namespace Tanshu.Accounts.Contracts { if (object.ReferenceEquals(null, a)) return object.ReferenceEquals(null, b); - + if (!(a is BillItemKey)) return false; if (!(b is BillItemKey)) diff --git a/Tanshu.Accounts.Contracts/Data Contracts/InventoryBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/InventoryBO.cs index 6fc15b7..6ffcd5e 100644 --- a/Tanshu.Accounts.Contracts/Data Contracts/InventoryBO.cs +++ b/Tanshu.Accounts.Contracts/Data Contracts/InventoryBO.cs @@ -2,13 +2,16 @@ using System.Runtime.Serialization; using FluentNHibernate.Mapping; using System.Collections.Generic; +using Tanshu.Accounts.Contracts; namespace Tanshu.Accounts.Entities { public class Inventory { public virtual int InventoryID { get; set; } + [NotNull] public virtual Voucher Voucher { get; set; } + [NotNull] public virtual Product Product { get; set; } private decimal quantity; @@ -72,6 +75,7 @@ namespace Tanshu.Accounts.Entities } + [Cascade] public virtual IList InventoryModifier { get; set; } decimal? amount; diff --git a/Tanshu.Accounts.Contracts/Data Contracts/InventoryModifierBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/InventoryModifierBO.cs index 193b5b3..0ec01db 100644 --- a/Tanshu.Accounts.Contracts/Data Contracts/InventoryModifierBO.cs +++ b/Tanshu.Accounts.Contracts/Data Contracts/InventoryModifierBO.cs @@ -1,13 +1,16 @@ using System; using System.Runtime.Serialization; using FluentNHibernate.Mapping; +using Tanshu.Accounts.Contracts; namespace Tanshu.Accounts.Entities { public class InventoryModifier { public virtual int InventoryModifierID { get; set; } + [NotNull] public virtual Inventory Inventory { get; set; } + [NotNull] public virtual Modifier Modifier { get; set; } } } diff --git a/Tanshu.Accounts.Contracts/Data Contracts/ModifierBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/ModifierBO.cs index d57a716..5dc327f 100644 --- a/Tanshu.Accounts.Contracts/Data Contracts/ModifierBO.cs +++ b/Tanshu.Accounts.Contracts/Data Contracts/ModifierBO.cs @@ -1,6 +1,8 @@ using System; using System.Runtime.Serialization; using FluentNHibernate.Mapping; +using System.Collections.Generic; +using Tanshu.Accounts.Contracts; namespace Tanshu.Accounts.Entities { @@ -9,6 +11,9 @@ namespace Tanshu.Accounts.Entities public virtual int ModifierID { get; set; } public virtual string Name { get; set; } + [NotNull] + public virtual IList ProductGroupModifiers { get; set; } + public override int GetHashCode() { return ModifierID.GetHashCode() ^ Name.GetHashCode(); diff --git a/Tanshu.Accounts.Contracts/Data Contracts/PrintLocationBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/PrintLocationBO.cs index 102230d..1006e29 100644 --- a/Tanshu.Accounts.Contracts/Data Contracts/PrintLocationBO.cs +++ b/Tanshu.Accounts.Contracts/Data Contracts/PrintLocationBO.cs @@ -6,12 +6,12 @@ namespace Tanshu.Accounts.Entities { public class PrintLocation { - public int PrintLocationID { get; set; } - public ProductGroup ProductGroup { get; set; } - public string Location { get; set; } - public string Printer { get; set; } - public int Copies { get; set; } - public string CutCode { get; set; } + public virtual int PrintLocationID { get; set; } + public virtual ProductGroup ProductGroup { get; set; } + public virtual string Location { get; set; } + public virtual string Printer { get; set; } + public virtual int Copies { get; set; } + public virtual string CutCode { get; set; } public override bool Equals(System.Object obj) { diff --git a/Tanshu.Accounts.Contracts/Data Contracts/ProductBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/ProductBO.cs index 2c493c0..8ccbb05 100644 --- a/Tanshu.Accounts.Contracts/Data Contracts/ProductBO.cs +++ b/Tanshu.Accounts.Contracts/Data Contracts/ProductBO.cs @@ -15,8 +15,6 @@ namespace Tanshu.Accounts.Entities public virtual decimal ServiceCharge { get; set; } public virtual decimal SalePrice { get; set; } public virtual bool Discontinued { get; set; } - public virtual decimal MinimumLevel { get; set; } - public virtual decimal MaximumLevel { get; set; } public virtual int SortOrder { get; set; } } } diff --git a/Tanshu.Accounts.Contracts/Data Contracts/SettleOption.cs b/Tanshu.Accounts.Contracts/Data Contracts/SettleOption.cs index 098f536..1ef7d55 100644 --- a/Tanshu.Accounts.Contracts/Data Contracts/SettleOption.cs +++ b/Tanshu.Accounts.Contracts/Data Contracts/SettleOption.cs @@ -7,8 +7,8 @@ namespace Tanshu.Accounts.Entities { public class SettleOption { - public int SettleOptionID { get; set; } - public string Name { get; set; } + public virtual int SettleOptionID { get; set; } + public virtual string Name { get; set; } public override bool Equals(System.Object obj) { diff --git a/Tanshu.Accounts.Contracts/Data Contracts/VoucherBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/VoucherBO.cs index 44fe5ca..03cdb03 100644 --- a/Tanshu.Accounts.Contracts/Data Contracts/VoucherBO.cs +++ b/Tanshu.Accounts.Contracts/Data Contracts/VoucherBO.cs @@ -3,6 +3,7 @@ using System.Runtime.Serialization; using FluentNHibernate.Mapping; using Tanshu.Accounts.Entities.Auth; using System.Collections.Generic; +using Tanshu.Accounts.Contracts; namespace Tanshu.Accounts.Entities { @@ -17,6 +18,7 @@ namespace Tanshu.Accounts.Entities public virtual DateTime CreationDate { get; set; } public virtual DateTime LastEditDate { get; set; } public virtual char Type { get; set; } + [Cascade] public virtual IList Inventories { get; set; } public Voucher() { diff --git a/Tanshu.Accounts.Contracts/Tanshu.Accounts.Contracts.csproj b/Tanshu.Accounts.Contracts/Tanshu.Accounts.Contracts.csproj index 5375232..ddaef3f 100644 --- a/Tanshu.Accounts.Contracts/Tanshu.Accounts.Contracts.csproj +++ b/Tanshu.Accounts.Contracts/Tanshu.Accounts.Contracts.csproj @@ -85,6 +85,9 @@ + + + Code diff --git a/Tanshu.Accounts.Helpers/ControlFactory.cs b/Tanshu.Accounts.Helpers/ControlFactory.cs index 416c7ea..0df92ea 100644 --- a/Tanshu.Accounts.Helpers/ControlFactory.cs +++ b/Tanshu.Accounts.Helpers/ControlFactory.cs @@ -7,6 +7,8 @@ using System.Drawing; using Tanshu.Accounts.Contracts; using Tanshu.Accounts.Entities; using System.Collections; +using Tanshu.Accounts.Repository; +using Tanshu.Common.KeyboardControl; namespace Tanshu.Accounts.Helpers { @@ -31,7 +33,12 @@ namespace Tanshu.Accounts.Helpers for (int i = 0; i < list.Count; i++) { var item = list[i]; + var status = SaleVoucherBI.GetTableStatus(item.Name); var control = GetButton(string.Format("g{0}", i), item.Name, size.X, size.Y, item, bcDelegate); + if (status == "printed") + control.BackColor = Color.Green; + else if (status == "running") + control.BackColor = Color.Red; //var control = GetButton(string.Format("g{0}", i), string.Format("{0} {1}", item.ProductGroupID, item.Name), size.X, size.Y, item, bcDelegate); panel.Controls.Add(control); buttonList.Add(control); @@ -56,7 +63,7 @@ namespace Tanshu.Accounts.Helpers for (int i = 0; i < list.Count; i++) { var item = list[i]; - var control = GetButton(string.Format("p{0}", i), string.Format("{0} ({1})", item.Name, item.Units), size.X, size.Y, item, bcDelegate); + var control = GetButton(string.Format("p{0}", i), item.Units == string.Empty ? item.Name : string.Format("{0} ({1})", item.Name, item.Units), size.X, size.Y, item, bcDelegate); //var control = GetButton(string.Format("g{0}", i), string.Format("{0} {1}", item.ProductGroupID, item.Name), size.X, size.Y, item, bcDelegate); panel.Controls.Add(control); buttonList.Add(control); @@ -64,6 +71,24 @@ namespace Tanshu.Accounts.Helpers + } + public static void GenerateGroups(ref FlowLayoutPanel panel, ref IList controlList, Point size, IList list, ButtonClickDelegate bcDelegate) + { + if (controlList.Count != 0) + { + for (int i = controlList.Count - 1; i >= 0; i--) + { + controlList[i].Dispose(); + } + controlList = new List(); + } + for (int i = 0; i < list.Count; i++) + { + var item = list[i]; + var control = GetUnselectableCheckbox(i.ToString(), item.Name, size.X, size.Y, item, bcDelegate); + panel.Controls.Add(control); + controlList.Add(control); + } } public static void GenerateGroups(ref FlowLayoutPanel panel, ref List