From f1d8a113882f0512997344ea6839f8463e78ec85 Mon Sep 17 00:00:00 2001 From: roberto Date: Fri, 7 Feb 2014 17:12:11 +0000 Subject: [PATCH] Version 4.3.7 git-svn-id: https://192.168.0.254/svn/Proyectos.LuisLeon_FactuGES2/trunk@214 b2cfbe5a-eba1-4a0c-8b32-7feea0a119f2 --- Build/Build.fbpInf | 8 +- Build/Build.fbz6 | Bin 66023 -> 67705 bytes Database/scripts/factuges.sql | 13 +- Source/Cliente/FactuGES.dproj | 2 +- Source/Cliente/FactuGES.rc | 8 +- Source/Cliente/FactuGES.res | Bin 171984 -> 171984 bytes Source/Cliente/uBootStrap.pas | 1 + .../Data/uDataModuleFacturasProforma.dfm | 2 - .../Servidor/srvFacturasProforma_Impl.dfm | 2 + .../Data/uDataModulePedidosCliente.dfm | 5 + .../Model/schPedidosClienteClient_Intf.pas | 63 +- .../Model/schPedidosClienteServer_Intf.pas | 71 ++- .../PedidosCliente_Group.groupproj | 16 +- .../Servidor/srvPedidosCliente_Impl.dfm | 42 +- .../Views/PedidosCliente_view.dpk | 3 +- .../Views/PedidosCliente_view.dproj | 125 ++-- .../Views/uViewPedidoCliente.dfm | 118 ++-- .../Views/uViewPedidoCliente.pas | 23 +- .../Views/uViewPedidosCliente.dfm | 4 + .../Views/uViewPedidosCliente.pas | 1 + .../PresupuestosCliente_controller.dpk | Bin 1943 -> 1695 bytes .../PresupuestosCliente_controller.dproj | 26 +- .../uTiposPresupuestoController.pas | 222 ------- .../Data/uDataModulePresupuestosCliente.dfm | 33 -- .../Data/uDataModulePresupuestosCliente.pas | 20 +- .../Data/uIDataModulePresupuestosCliente.pas | 7 +- .../Model/PresupuestosCliente_model.dpk | 3 +- .../Model/PresupuestosCliente_model.dproj | 13 +- .../schPresupuestosClienteClient_Intf.pas | 124 +--- .../schPresupuestosClienteServer_Intf.pas | 134 +---- .../Model/uBizTiposPresupuesto.pas | 37 -- .../Servidor/srvPresupuestosCliente_Impl.dfm | 35 -- .../Views/PresupuestosCliente_view.dpk | 21 +- .../Views/PresupuestosCliente_view.dproj | 19 +- .../Views/PresupuestosCliente_view.res | Bin 4748 -> 384 bytes .../Views/uEditorPresupuestosCliente.dfm | 4 +- .../Views/uViewPresupuestoCliente.dfm | 2 +- .../Views/uViewPresupuestoCliente.pas | 40 +- .../Views/uViewPresupuestosCliente.dfm | 4 + .../Views/uViewPresupuestosCliente.pas | 1 + .../uGenerarPedidosCliUtils.pas | 23 +- .../Controller/TiposDocumento_controller.dcu | Bin 0 -> 16263 bytes .../Controller/TiposDocumento_controller.dpk | Bin 0 -> 750 bytes .../TiposDocumento_controller.dproj | 542 +++++++++++++++++ .../Controller/uTiposDocumentoController.pas | 220 +++++++ .../view/uIEditorTiposDocumento.pas | 26 + .../Data/TiposDocumento_data.dpk | Bin 0 -> 704 bytes .../Data/TiposDocumento_data.dproj | 546 +++++++++++++++++ .../Data/uDataModuleTiposDocumento.dfm | 59 ++ .../Data/uDataModuleTiposDocumento.pas | 112 ++++ .../Model/Data/uIDataModuleTiposDocumento.pas | 42 ++ .../Model/TiposDocumento_model.dpk | Bin 0 -> 923 bytes .../Model/TiposDocumento_model.dproj | 551 ++++++++++++++++++ .../Model/schTiposDocumentoClient_Intf.pas | 134 +++++ .../Model/schTiposDocumentoServer_Intf.pas | 143 +++++ .../Model/uBizTiposDocumento.pas | 103 ++++ .../Plugin/TiposDocumento_plugin.dpk | Bin 0 -> 746 bytes .../Plugin/TiposDocumento_plugin.dproj | 546 +++++++++++++++++ .../Plugin/uPluginTiposDocumento.dfm | 108 ++++ .../Plugin/uPluginTiposDocumento.pas | 73 +++ Source/Servicios/FactuGES.RODL | 9 + Source/Servicios/FactuGES_Intf.pas | 33 ++ Source/Servicios/FactuGES_Invk.pas | 16 + Source/Servicios/RODLFile.res | Bin 56133 -> 56460 bytes Source/Servidor/FactuGES_Server.RES | Bin 23204 -> 23208 bytes Source/Servidor/FactuGES_Server.dpr | 9 +- Source/Servidor/FactuGES_Server.dproj | 8 +- Source/Servidor/FactuGES_Server.rc | 10 +- 68 files changed, 3686 insertions(+), 879 deletions(-) delete mode 100644 Source/Modulos/Presupuestos de cliente/Controller/uTiposPresupuestoController.pas delete mode 100644 Source/Modulos/Presupuestos de cliente/Model/uBizTiposPresupuesto.pas create mode 100644 Source/Modulos/TiposDocumento/Controller/TiposDocumento_controller.dcu create mode 100644 Source/Modulos/TiposDocumento/Controller/TiposDocumento_controller.dpk create mode 100644 Source/Modulos/TiposDocumento/Controller/TiposDocumento_controller.dproj create mode 100644 Source/Modulos/TiposDocumento/Controller/uTiposDocumentoController.pas create mode 100644 Source/Modulos/TiposDocumento/Controller/view/uIEditorTiposDocumento.pas create mode 100644 Source/Modulos/TiposDocumento/Data/TiposDocumento_data.dpk create mode 100644 Source/Modulos/TiposDocumento/Data/TiposDocumento_data.dproj create mode 100644 Source/Modulos/TiposDocumento/Data/uDataModuleTiposDocumento.dfm create mode 100644 Source/Modulos/TiposDocumento/Data/uDataModuleTiposDocumento.pas create mode 100644 Source/Modulos/TiposDocumento/Model/Data/uIDataModuleTiposDocumento.pas create mode 100644 Source/Modulos/TiposDocumento/Model/TiposDocumento_model.dpk create mode 100644 Source/Modulos/TiposDocumento/Model/TiposDocumento_model.dproj create mode 100644 Source/Modulos/TiposDocumento/Model/schTiposDocumentoClient_Intf.pas create mode 100644 Source/Modulos/TiposDocumento/Model/schTiposDocumentoServer_Intf.pas create mode 100644 Source/Modulos/TiposDocumento/Model/uBizTiposDocumento.pas create mode 100644 Source/Modulos/TiposDocumento/Plugin/TiposDocumento_plugin.dpk create mode 100644 Source/Modulos/TiposDocumento/Plugin/TiposDocumento_plugin.dproj create mode 100644 Source/Modulos/TiposDocumento/Plugin/uPluginTiposDocumento.dfm create mode 100644 Source/Modulos/TiposDocumento/Plugin/uPluginTiposDocumento.pas diff --git a/Build/Build.fbpInf b/Build/Build.fbpInf index f2fd38b..1a4c31a 100644 --- a/Build/Build.fbpInf +++ b/Build/Build.fbpInf @@ -1,6 +1,6 @@ - {0F75D8EA-B6C2-4ECA-9E1E-45E235135301},{10527A84-0FB7-4007-9B23-9E5826133948},{154CD4CE-0F61-40F6-8CE6-CF525D3CFDCA},{331AC851-CE2F-4986-9381-A257AB26B1AD},{3F8BEF26-5F4F-4B97-B1BC-118F36CBDD68},{4968AB21-B759-4F4A-9214-8792F67DA1E2},{4B038673-47F7-4436-BD07-D557FA62337E},{6C425F09-E04B-49EC-89E2-8C93D60E9055},{7251A871-CE6C-41D1-A404-735619825EAE},{789902B1-5E64-4FD9-80BF-6113B13BFE12},{856B4CEA-BF27-4696-8FFC-4507B6E29943},{A181C54F-9BE8-4404-9AB9-FEE8A9C3443D},{AD23CE23-8728-48FA-84FD-264E27BA8F46},{B70F0EA3-7874-42B0-BFB8-430D43AC2D61},{C662116C-EB3F-4161-A768-49D13B08EFE5},{CE990EA4-7660-4997-8CBF-6C6AA978753A},{E8E8671F-894B-4049-B4A6-905B57207637},{F2541E28-3C45-4A17-BEC5-185CBF9D2A90} + {0F75D8EA-B6C2-4ECA-9E1E-45E235135301},{10527A84-0FB7-4007-9B23-9E5826133948},{154CD4CE-0F61-40F6-8CE6-CF525D3CFDCA},{331AC851-CE2F-4986-9381-A257AB26B1AD},{3F8BEF26-5F4F-4B97-B1BC-118F36CBDD68},{4968AB21-B759-4F4A-9214-8792F67DA1E2},{4B038673-47F7-4436-BD07-D557FA62337E},{6C425F09-E04B-49EC-89E2-8C93D60E9055},{7251A871-CE6C-41D1-A404-735619825EAE},{856B4CEA-BF27-4696-8FFC-4507B6E29943},{A181C54F-9BE8-4404-9AB9-FEE8A9C3443D},{AD23CE23-8728-48FA-84FD-264E27BA8F46},{B70F0EA3-7874-42B0-BFB8-430D43AC2D61},{C662116C-EB3F-4161-A768-49D13B08EFE5},{CE990EA4-7660-4997-8CBF-6C6AA978753A},{E8E8671F-894B-4049-B4A6-905B57207637},{F2541E28-3C45-4A17-BEC5-185CBF9D2A90} @@ -14,8 +14,8 @@ - 00:04:06 - 06/02/2014 17:13:55 - True + 00:00:00 + 07/02/2014 13:41:26 + False diff --git a/Build/Build.fbz6 b/Build/Build.fbz6 index ee748cf7ce0c42ea4fb224dc074aeb58edf64236..418fbb92c1b0b87806e10968114f5922b06c8a9c 100644 GIT binary patch delta 56736 zcmbsQWmuGN*u{;`(B0h~0s?}BbP5sz3XFg-fOL0z523VxAgzRSgOUmkf`GJ=5`utq zigfLJ2LI3dyw5)Nr~L&z#KQycS=YJN`CHe$5{`9}h()ibg^5K4fk5yeGA?&jS$Pnz zuW+Fd>0tU=dNM(vdKP#UhcK_JCK<)oGe;C~H7eF|zSs1k%BfrpHbG7qCOyzv&Tq(#k9U3!f7zCxV492GN zXnBNBk*`#VOM$`FiJY8sOC)pgHD+Tc_(GjX_O{B!e4}Bw!e51A0XaZ*tTIaV1M3*m z&BCytpLrJ-P~#HtoF`3FA6RLcsPx7-4%dAUGXuDvv+v4o`#)9Ip76o9@jWRP?N5Xm z%}0$AY;nCe4^=2>5DF5&yiBB?Wujv2=pL4$yWNa+&Mx5i8geO8r4N2lI5tk*2p8Cm zgziS>Tk~Q7=`0e^K1{mZ$h9g~B54SWE`Nzl= z0kQ)oC|lGcotg5-;>pj3-@E3O`+mQltfm9wVP9v9>NtAfPNx6hN!iI35tC|boa}6P zc!_GAvKsSEBh0(|6iiqjuyHNV-8#~mujZMs2%Bk5NVtpK2$hBAxI-z6BX~yZTcvX4 zsjKJN9!{sWz6uTRiE$-~VPaC%-=L9-vInMx+{xzIh}_9We%xE3XX^aS!W01|vBD!+ zAe4&w*y`f)X)ZJz#%Nc(#I}xz`gwjs*7p7lT&3nUtT#Jk>&5bUqkDJ>Iys$H8^!(a zn7i+rE3n{t$S|$MI`2-fR&0NNUmCzs^UH+x_jH$E+ks`NM=<|k&z;qenunJ6w7W+E zf0LIRIz@9YGzYb!RlL?Eb@(L@3#yC+MT8WdNYsW$kUM?|izuzZd#9So#o;UD2q4Gq zE!|+Mlm5_0U<`1v4glvTAI@uAt(`y>z?;{C(UX2#&f_%LXo8r4Q{>+_#3_PA9%N z>H@4zAC|YX=_|XmD*E46@6?D=d%!((XGEwYy6|}|9Zw>rOXvH4M-K%5CMn-?D!uV1 zK}oJNVWd0K(ENDfy!h~ajWa`kIFNscv25vrwQQMw)sBz9kO%5?0ovJt)@f8E%?AN8 z(q{_8M3b z7vVSTa4+eMbWnz?ZN)&6ipw@tr-bsDOWfg}tV|J4WAHlOA;C|jdKch_DZPJW#p-fy zPrD3Ny=$mnRKqOB4&-M$WJlz6rT3e58NtnV8M=Aq=kv^M2)~}`>G8ueX8*`~4_}Fo z;nrO*DBmTDIO0T{x@!AVhyqhrlN{k-9e5i8sa15Z?oq6VDeyScQ(zn6N-?_V8A)LO!j~NnJ4C1C{_3|cT|X#jyKEFD2hG! zD%#$0@046SLZ1bRRMqyofKb+Mf8K#}#JCEfe!L}Xmx-ARyL3F;B8kO*jy$)F2%cIs z|9Jxn_n}|n0C7g&(2M9}(akHFM|P1{8CR2UXj5GLS%gkJV9suF_LdtNv1SHWmR>ObP%$;htz7lGtdA% z)jAH`Kkg2r!7qYlZ}1{ySH%l^E^zO%SPiN?fU)lZA-ed~{p{>of)paZ^tbiJYR-+> zNXuOMe)b|{pQuUVs*x<^mG}_$sJ!2zNyKF%#Yv1@b1vK`TC%hxU22E?5yASii`}F0 z^JhcD+zvvvBL3YwB^IV>qVUdx=q)MHJl%VmaIxfqrzd?xAvB(1!E$0t?2N5M&xc6M zJ9qu}0Iwj&^w2<*mmR=^u@BtqH1T&)hhP^vk2(Zy2vX3?AgrlZCR5O0Iv*D=vF$OE z%&!=$wv)ZeM-!g37vhgb!)*Ti`lWMZP(%7}RBx()^J6SL1U0I^FkX-9O-xgBTBQ7v z^;TNxpXf8z+O)%+en6fp+B#@dOT)35CGT@Rexvd|t8SuF6`}6wUPjHvpHkBLrJ8ot zPiF1BW))O7a5ga~BRxKa)52MOv5@j{^~zMce^DpPX)`FMUXn61RIgl44+ef8Fs3u4v&K8_HDo zWIaEijcl*eN7G)$W8sJSrp$6swR-9|pW88)WufwA4v&qhPT!6tC;({+4QVBl{Ao3X zKkTt^oV1>NlfVo&B+jv+7cV=q_IPe`$3q!MK+g5fn;nwi%ClVj)$-STiWZ@5j$+s$ z_5M%4FN&>}$GW;WE)K@1pWY*VT+** z&m8g~9WQh4Uu|QU1>DDb@v-8Wx0Cdm*z@87BQkt77KTZ*v;Is{ZwtT##u{wgY~Yo3 z`B~u{xK4(nE!g8XrhEx2s9^$_6=U8F-ve-*>T7VFY!LMfVfCjN<2T&gOs9AJ;FaTD zzz_aMTG558myq6n9Bo4GQ-`%89qpH5Nlru2HPT2^$f+)hG9J zOk+!loY8{}2OMP273AraBv8jw0^xjpJbw&Z8S`M?DkQ+D%VQyd{19=9l}W}PdT*O| zCjKZT*yhEryv1?)F&UC7cEB-4`}U{Tp-v@fNxXjU#IH1rN>)E#yPZ=>71lh%pW4H| zhs~ca5=OMn{FWK|CnZXmr8*bzc}JJ|@hKB1vL5lT2u3%TUpCvUjWhDH-MGEB`Kn^g zx#}#^eiq>bnGo6b+r=>JcmZj8UOWD=QPw})$$$O+;ZX=bv`PtR>~_(Hx)U=5xf44Q zNyY~mwfRrqK_G8ea9`p~h{!(C18^sHiK;AZ&KLKFJc&zbrShm{RQ*Xf#fxb01DMFf zcCB3tQy07K4on%BC9@oo5|)#y-dqHm$eqoY7`?iQ@Bk+nQi_f-5rZyr#Rd2YScUo7 z>urSkfd(UT2plnfRLPp9_K#Hd!2Z}#;*>Sj^lpLfXI=r7?sF)rq2hc|#y$5~Ac?im~rLKhZtjB&{RPaUk|T|a)* zkbbuD{j8lM5K?821|Z=XX>i z{B&wodOugR)??*lRWjFR68xr)0HpPF-iwzsFI`(b2=Wb*2hG3M4KB9;QRBqJIJv~Y z;!|8ji#wIuTH#*JrhBWMZ03%0e_RhplgVRCanYbs0o6LWG&8pRxGf3=$s?ABZE)HTWmrlGOk zFN@-P7`BwZ(na(5v#QPZg4qdGXo8|M2$t`#y8ouQl^wfrOX%f&7T*>BN2}`zM#5FJ zq`>7(*3|mSWp2egp83yQ9V7sT(6K3sNACxaj)om}kCfxrFJRf9QgyQv$6A7>*80}^0GDh=0lpXJ&v}|D*h72zQyI(=Lt)PQr|^~=Nfmmvm9b;UZy&KnzN8xCi9AM!c;L?0%g8NMihpdh zP*|E(5P`3Y|2tYmS<9bmw}1G_=h{b10*|;+lTGkOJ)QQ%&hJ&o$ia;4yXB%}Chdu) zYCjC{t2$JBV(|{NM!qR*jRCQC_%tQ)~<>#ZseEYz!Dz_Dvd-ZND%+ zAm3{bx{)4*GP`uVpKVQ`*@=*YW(O?6InZubZMq9a%GX6y;2x>1nqD_*HNzcE>8?zf zmW*uBw)(*1^^6Rvr6Y1p8F;QKg9wT;z&TKqK@|}#0>)1iWe@==g9!OLUN5biDK1%h zRDI`MhzNNk(fXJ7Sd>s6Wriz%!M2?PePg~(OF%nf18==sNihu39dU<+Q;_KK%R8D2 z?_f>h8n0w38mbG+62FG^u6%u;mm_H-XsGV>`LU)UEjN2dbJI;>+Ec2%^A}=5f4<2s zM^>utjjZbgwZK}iCNhSp8TSohx^m?P0@k$0jIc< z`q59G#i*NA;JjGoZo+T)XoSe>>7EjP@SEdE!B==|E+cFH1+#l{QA8aZyLbZy1&*x- zmJLVEz{!=T)>mm%ri<1u{W8z7@Ft7 zndgal@fy~xBVO-M?7BcPqnfmF0g<#sWQiQQfGeOY2YLlm=+G(XU!wVab5BKvDn$9&lUOXTgr=A55 zpNs<28u+B7@&3o-&_q5eV?~X)mIm;2-FvqXj~~q`VF)J&&43b4{xQTS>6RaogDR<_ zCsfUh;daiVdE){;ocxXszvoqZZB)dGZ-01-lrEfNJt9<_U%HlZH&JHB_fN94;krisVp7a@>pl zbcW<0p&yNPz!$`TMTlSS!Gh;D-d5R1b=2VX9WHhr@OeDGiASxejKT7ubE&9CXPQVh zncolQVxeWoo{X)YHVc2yWnd%DJM-$Hk3M=r0e?L6hRE&SrnT>$SPE#$n#;P}r_?f5 zROfRPX5$=JXXAW+g3rr09|b<9c|0UJ>M`*mI88Qt3zUi;YC-Of?qef3ZEt&2`;KVS zsE@QftD4eR(4o0)m62i}#`$8}xcx3@7p2RMV!PxAxBk2*mCvX6N7}TYS|S{{auwzEXqY$h@3L@7=KT>Z>egp03I9^*KwJGux-ByRm-&6R|0_ zUY8e&KI9p3>*iW7?94kk$SV5F7-V34bK?EyFLQW*nr$c<2ogkwY=O=?p*hXqAz!sW zP~)3P1NGOjZfqL@eNHn56Ma9HZ=-=y@xQdF2Xhb& zLK8fptOcDua#=D!n@yqXF~K2-f0#~mj*EQ)IuRb*fk<#oVrGYtWbF?6e2v1VutRLUlYPA z-K{g<=rRoXgjbe18&Wo-i=%c@p}~MshNx_96WMzF&S{7SV=QwZiiY zppo_R-0reQn`Gi~okR$PDzBs!5(BOwF?7qt=^1S7;FD!zS5!tl**Ay?`&xk!tPBHI zC_bQ1N{NU_umAG;tAV}AyWx;b!I<`2XL@&)#kWCuQ6c}6*Dgw4MYxwJdEJw`me(#W z&iOxiT_Wkx<`J;5Hng{}wlaQ4025kUeu#nb`IrD>VJVrC zOf}qulnje4Dzx^~9D;3XvkIa_6(fLPQ-3@?+6BC(?p7glF?D#ziYJARXHsB1%LU_^ zI~j^a%(LB$FEm*@Twc-ZTDD*`#&IV*X(*y9^^84ZtwsSPCI1(TyIlDAIs++s)A#Yc zTGRbgJ7y;jvnTbvG*HUYyH*zFKV{*9a37^CDNtGNWYz#0K3C~(qNPQ0EiK&tFKJ1G z(t=1utyxmm$Ra|+)3;B-e`faCT)Pt0tV!EzuvO@us%n<8BgrR;S{bJ;d84>iEN1Qw^BKj5CI#0u*$%~Ej)PK|J#1dfYOw~5CaC|*yx;$c&c|ZS@C53}G zpYHvQyExu$uPnf|B(u&@}wHA@%<94$E!EHm(Fdl@Td)5GbmaaUl`oZw;pKDx?`bysGHktHJ%dR#n;Rj3UNe#OdW87Av^v0+{`;YTf!8#YBux zVAHq#R{G6un_K-z?v>(V(fWwo!+&e5Tw=}3fdoa#O+19_KajBcA4tgk2NGsMkTCndL4tRO39zsuzxo^`305Xyu8>)_ctG~@ zQHxRmM^V3SR0pMQ$!^H!0WL1~{RaXbl)V?Q<_^a*ld_m|%wgi+pJIZ=NqsJMS4P%< zt&D#!^TsF$2kVsYV4d>aGCk*sV^|;xGzCHqK+tp)gt4CYWt(7BC9er%-Ey>E$7SY` z2NiHIY{?nF-T{GveS!oO+CH6zB25^|DAI)0i6%`-ivN)&UBymYy37}Snq;2$>=(GX zG*n{ovc7fxO8sKJL5&sRh>9j;WTn(#GsbGJZxn)w(|Y?r}9sVpP-Ivq<33A>ZoQM^e~{0YVY0dQ8yEVRrFD9 z2b(>y6-k}w+hDV&+0gfqElOpVfrurM6BbNlP9mMYC}7PnWs zyZUdI!!EupCm-x^RQH|8<~$WL%?$0HBL6jCOLJ>%_fe{9y}?jI;nsp|z4t?q?ef2nD7=#U2~E+bon@hccKE9Yy_1}Wy-h?~-km-Tac*|-8g!l? z%xHJ~*jZ=urKY8WN0Xvk;$YbirocYxi%C&5!xh)!RBGx~MKd!7&XK97`l&V`?Anoqc^w!FO@cfr-J+JYYcECWOS>^yni?vfyhN3P1=pn@#lKRJ0Ye;J3J#OW zVC1s@D+L+;D+TSZOF=~y`%NX4lK++bh-*_5OVcmgvKqy4iTCipe?|3bXoRc{7;2qd zzUeU%F}PC`mXydVp-HJ5ur8{gf$?AEL#m{5PIq`^_~sl8cuQVR@rDf~SSY@N0p9(< z@F-}p}@4x+PQ}OYT*en~HrlWL3>eU?m@>I5n@WFTS-~`XsDgPTkalB~WdfsS4 zul4F%w!5*xn3`sf`^~DpzAr{5Qs_D{E8*!2+JxSI_gP}65$G-nxLtuIHMxJJ8S;2sg&%ysd|is$eJgy_&wwHVG@HME+}N0{?4h)|Jo&jUFjOkRIv( zDrgktPzBAwbwP8mOSFzIXzbVXNC0&HJ1j6D?I#fY_5J<%7ZPaRXaUy~SuTf{Sb|g} zg}UdbgQMX;G6FSNuK+jE;K1yJNzI3Ik(()-VMf1K69*f&1#Z6(u4Q>Nmo52KUVCjd zeM(1*p!MtDX;FTEeh>TQ^CJG*t~aB%zwU+na_5QKDCEg&@|O z`A@LlqSLIMj-n+96bJ~ZjI#LoDo{Y7P|5NiP+(HDESzl^E|G_bz)(m`1okn69YkXA z8Wa+1hd)LkF%}}DAL-vhZns>`6VcpPeffNb!_ppK*`Wu&Q8t-tw6MtSbVe)NSOiuE zpqg$Z+y>or06{d7pPIaenh21Lbnwg*Yeb@Avj#3^K{z@#Cz7CJ^A-JfB^bY!*&H{C&%g0h}C&rH3AD782Kar;~mZz3}KDJ{07S;;t?D#sip0swB9az z&4fSaV-#ztRzG6Re!feouHu*(aci4meK=)z_#XZNQ>^HN2+?;I;KWC-3dBk1RlzGd!~w%8<;L8951RLA8pZo_eue_i?HxUy?&Me)IXd7BlM#1K z(YZ1lRRr%f_&`FR!?ez4afv;8a?Q21hRJf-{|8H9D>137aJ~86{f1XVx%966!fAwu zCAltUWbNb&>$wNpHB)V=Wy(B+aW_A-7sVC!+Uqt6l&Dx~RJP{2Py zK?KD}NYA!%^;@qH|LF;i($fpvO_ZK`|LF-HxgG|Yyw;QA%+*5xC8)_z?9>`(0q&>k z{t?eVbHouONIj(}GIHi^*tikR0S?V#PO$r_=|FWqo4e@l2f-ZkaS$I#0unzYNdlz~ z>f4YSm2b6_P#JB~EQBP2xhv!~D}tE_Nz&B@Uc`aO{JV$)$K@q95U#;|iL;+2-~&9< z!r0bdcsHpdmzKeP+hT~&w?|z#{MY{S+nmKOZ-*-D4RL;2g2?`3_#XAg4*dUPC84q) zv4;kL#2z6F5_@nF6?mb_!XWvrL>@~Ibs2?HkMv^*KRBOqSy1yyNe+$dK_B@ypMd$% zaK>9BPa5ujobl)Gm3>!_PJqo|uWCAfN|uLw#a zwNzNdf3F+jhlIF({31lW&#Oneuar$4qDRW9M_LH>K6<3rz0Uz;UFm;%pPG(sg$CDm zttW>5fZ+bhhD?P`OT!Sxz5bN5h|Hq<%C1AgbL#Wy_HG1 zeXp#A@8C4~&&8MOOEsU&eqNu(Vx2uoa^i^=_c{LI{YrAJ_{F|ji-huL=({NW-rBE= zxo6RLQM_AIj-SF)FN*l_yWflg2Ytk5eoy_WJCE!Y?R)uu_20uMj^GTQ^HCF&pFibB z3D(AwD@WE@d*7nm!F;^+^zD}qA7Mk6IiLEvZ8FLOm_aw$O|^YXPF5w9q&7{2XM8(2 zb!@ccXTleK=e16J@~WRQ{onj%%T0+BrYfp^a-^Zd^_19%n~=vYMG&BcX6Sz4cbs9L zZ6uyY2->b>YyEFRR)dOO#a%N*O-QfD=n6_hxZ$G? z;%_gif-<~+sNjLBp#I*f9DY~9#U83cpI5q(Btnkw;gaSxL6PT%&DLrgv{gw|V2q|= z09z}F!xRJ6rd>n-VyxL9{$`?R7+WjNAzLd^qPa?t z_}g6~3&R3B8-#TEv|K)Kr6i~P=-0jIyid7uV5S)j`o(cgGT-HGVCoI8?L3$7m^o6D z&Z1p2IFA0bDn+%={vJe=svaO1LU0i&QUsY`zDzGW!(@y0m{^8teq8G!PzAHJGlptd zW3>o452MiYkSrQK4>yeDpsEW%*%e%6|D=|x^!tmmoJNp_#c4#~7Z%ZaQt&!xl+a6Y z{gu<*OegH7ZqN$X(-cNkZ!Xu@sRHb;uTw<-$t6?!4QX<}M>3 ziw3L8V(fiJ@L&((u#&etG62m7dV#FR(^)nwST#>8jDyP+JT8HUm z{J2~s^|bErFfW)dI_}}kY3+hs81wgL2Zv5wF}&y(N$g?^90~7ptUgV4QQ;8%1}M2G zkB|ID?rm078!;P?m05JuvVuR1&M`!l!^P+i9AA|qgFkC|FHMPyV?sQ{(u-nkd7a4V zI7}pRnk%ZLgUNFGIXU%UO>YBw;J)Yi2Dj+q>*e!pGA*4u{KJzB-gg`mwM*g|F|3~e z^m=F%+~&qs;tDO0+ysu*NPyc{9m&n}wXokPmy+61E|*e~x635x(~2Um<7S<=vRTtz z=pB7sR>*5u>Sz$7iFJSt!z&^00RM|y7IQ3p-fF~m_RN)N=+qj^Y}NMLDd^Oi<79Cm zZ+p}h-fP_RZos^|M?r_p3VA#Hw0bq8SgV_lXppl{Jla|nng_LuxC`{Nx8=T|^ytDQ zh+7zL;A!xLQ+Z7FDkbGdbD_cZ(F zWza#ByncVXE>n4H*lS?ewO!Y&hw4HPo->~ky;l|^S>s5}N_v9TlfsHq6vC7AmAcEeZPR89hbO5&MJ~CR zW!kMt@{l!7^Ef*w?>D|x`V8Bsm-j-}3pKNDPt^k4&-)$9F`7Wj!C*$Lna-Uc-s-5s ziHisCw?j1{$?5S7{!r}&4M=*Yw!_b9=a2hxLDM|^Wsqd4Qc}qqNG@0L=5L^t-%Q!6 zyrJvC*dbW%;YpfeNnyx+7>VS1?~I9~ZRN3vD-!*fQXZ15k@ZRz2L8mhy+r}%HX``E zb?MC5DXZlB_yBQOVhtY^7lF_8qVAJZdEso!S1v+^YMz$qs_sz$J2{RUcoCbtc z!A>y^@^cRf46N+146I%T9|~d%>KBe<3PNF474=6!B(VIhZIT*Q6L;*I&i4)(A%@!V zBS(?kgYi}K+%1N;1u{uf=ec`rmbzF!s@|k1#`lkAtON>V-aHh@fe7b)PvN*vJE%n` z`-F#(j{Gwz-T_AJ@rw=eUmoPQ`u=E72Vn~9zpsq0WcsL@E#aldHP8Lspb@F%O*)Gq z3^iBA6t0E2`j{iNDz@6S?B}_8=D9B+!bziPmCi?ZcPV5RkHrF_Z@K3;-XRz|_DV`4 zdtuG+oKpi>H6_n`ZcVm*hb2!?M9|{sGvE8Un+a)&YjcB3+|wor%Qh=TAwTYaW;rd3 zX$zuO_&eyY*ZLyD?lHYq{Jxvr&_{;H)L(^{$Jer*ax$rcUad`d8T>U^80|j|F?INP1 zUK%>I(eDjYVpvdk+nZ9FO50aSxh&^SGRkLuZg+j9mD{}VeiVP$>>UO6uvy1r40xjl z_P}kNfmagFs>5cnBRud1DCR)D)FGz$1W<*~s_0cXaF0b$$%|XeW<=IpY``!e>Xr1t zEd6+#;K=QeEcb~hJRhCpV_!0Ig<;~NpwzXEeD~*u4Pf2*l{<;N-CgwjX(H!kZJ<#O zN2)6#man8WEOwGUG&Y?pM_gJ-?ICzKQVqNfSgGG-`e+oq#9b)bO2jI^L(J9!a+n;2Z=T9+`;frf>IJ7B%bV@kPjQ=8^B43AotYvzx$6^^*KoWdXGiC|31YmsVSixkd*5~(Umq^O%On3UHdRRu+= zY7gh&fdd?u5Xyfl1@Cz;9y_K-^^mu?Jfr!B=}Ngi66OEGB~h_>W~Jz>i)8SJdpuS? zU5^UBdK<3n;6^X3Y-OE#i{i3+R2&k>D}TUd_0XrJu26kuLRx_Zi>@92xg!mWX87;{ zyy)^|j=F|oq{wD_B8bt@IzS&a#Xq@l02^s1r-LwXw7~FduiK_VdX|V;UL-ql6u+5L$+lGIy9l)iOA+A( zmPR@A9@K>w>FA_#O}m|?*WWH%fS7T)CVY3wclwyZNF62sACZ;LKM<4^FWD5m^6g{m z4kP%@GP*`dY@`m~X1fm6hPws*yO#&kQ&22dE8acYrs%Ky;em2O?K+68#ICvLc3zY= zkY}e^p~_u<6CW(xd7;Z^eRD5@mHe($w%CN1ORNQ(q{kV@gHNxo9uYUyJs4?Q} z8+Fo&Rl&!>tuzH2hs?`M2VDzoWyUJQrg!Tht=NI(g8IDdaT=ACg+|!=MX{r25}zfxtUnJGzK}*w%v>Y%#Dvs?VuU#QfMP7c2H#36sfW1& zKIS*^N9%65KpY*8AoaGKuUH}V;s_Iy>6f@#2$QecKg1Izh#U=BtWLbhgGFTL$axN; zm9`MWinQfo6)qGVM?R*0Qj*^0QXMy@P09!|1baf>RBzPQ&F&lVTT|Ik$;?zfe5yxL zcjxs}-zKSEBHWHI?q?;xaC7?VLglDN0rOC~%{YXd_DjG^9V4(rZvz?#`71I$btZ@V zSI;`F5PRWs2wrZarz>Q*qpslR^e%m0`A~^-UZ2V;s9YLY5p&xo3pVUO!km>A7n_X~{LhHp&l0yfyEy2&3{Q$2rVhggawtdM zLi64@k#z~CHTD0I?I3w(4GoY&Kerwg^m9{W0iPQ}7IldKK$es+|J0zI27K3GD^!;1 zu3p_!QyBz8c9RPs`!QR*gcbY+5-`aCFkXJ>!F>0&r(fQ}uyJOLe%z0F0XIp<+f*-- zkl~TiUtgD=@JZmQ(aGVLoFUEqA>kDy>x(h)J zN?cs~ks-d9rbV{kX-2hMw2eu=G|RU;H5f^&Mq?HB@-U1fzOa0+OMs>QUVNSZ3g=)lwY7`JN))FNl zdGDr>gwOawRXH9rok3NVF*$&|dZBg*r)u~DcW#?$rBcM?Rr3h`7`l}a$W zIu3Q+NZLB>5B?ybx-k9Z@6h&-9H9DX<$WSA5%O-wYB<=UIiMtWe4rHrqy%6c=#fQ_V2yUf z8+~WKUuL6=2-E{#-YO<6X8EW$f&EVQbFczi3NFpwM@2I7z`XYKjkTFT%mY325gENc zBDts|q9}(tBB)It^8kHBKuEl$Bxj$?;v3bWZb=pz2>YOS=e=)gWY&k}t{?BQz`qJ8 zfd{3CwDOJ*p-i^A+;NhfYMXBK7Zr8B5uJtRFp3F}nVw%Mk8B_Q@A)EpV=CZ(mYnlk zt|vZsE;ilulj#NQ9>eQyKjWiWMO8u`&tUUn+Di!3P!0|Ei z&D6Iyl@ymaJWL{(?o5Zi^~c8ub9+I=#`ZF!&hAfz)tSyAI9c%VEYfY^&*Vk@;gpWM zQT|1gNh02ywlzHxX03^GV1eNk#$imTsCYgTM*@(M36F_6*$`lG==5fTm{33;{E{tD zm8hf`r=*C|O&p@+MlC7E0uGjHX2}Hvniq-~o=TO4g(3dsc|5#?GeJ+Ym1)edX-%XR1Xn*LC8SSK-k`!LdbF?0fBY}P&G&e1b|k} zl^&>?OLkB-mzHSNM0Blv*d@J`ZUNxPr%t#8qUP8t*hBIcL|+lIEkB zCv_+VOp&ZDk?5;9xljNm*my@6d^s1qi4()g_vlk4vm%n!mjZ}KC}iI%nHZrs#@xkq zICn{xf4@E|bl`s8(eBWIO7u@|g!n!8!MeSrVZm(TvrgHotRzd5*-6Kte;8jdDDLd&! zkD_;MS)VOpv)Bm^3rX@lc~fAzlikxZhEW4okbH|NIH`5eZ;}y)t(AO>7a2Bij|v$^ zyh4zUBREMX2%D-Q?}Ld1)9bB?^tjN%+rNLQWd-2v;x%xzjnu%e(?)+7I&CDq+2!QD zn%;JaVA-65kmu#HaUDAOXA6VL-z?|mGMpE5&vsq=MmX*smSPoIH%eOMM>RHp-m z>w>z#+6&&X1zx013HZw5$TKg>nLm{X6ZTq+1WHFn_Pu8=6pu-bNtL%(dD@g$(dfdR z5{)hpS+I+T3p7p9pn=ZwAa#~*%=7%;eSL|3rqhwEdkw&w>7<%b<=LA6fAjy!wQDNn zy0Z%u#U7OX`7ONpQCJf3c+^#QWxae7R}W^?xP-t9PWL6>ojiKh0m1){y>Z;7gY8O zDp}z%_7RSvlGWQyFj?Jv#3RhGN3}!a)NbTm?r0>=D%ft60>0`Bos2Q#(v3Y%aAP!8dL|G-EBZOZfwH$m>0{5KW{-B{sqU)(bBJlJ zGqtJoWDIIy)Ib^)0EMohm8&c**bNxY&u|*7YG>9zno*eQ8(OhCe<7ZX5!XM1HYj77 zUfZPUKbx$feond0<4431timfU&TpCbHQLpHfll4N`e*B7NmDfHsp?_4Y7I2c5nhJe z0EGd4Xx|9Aanq?NEFbkO@*!$yVE{2GWl*Vs%Aop!h88eT8TovJgf)u1=v?(0%vB6v zuJT6bs$q~>pmJ4t4&=@?vUs5z0i_IOJ?^Zz5Zqc)jhId$H*OSKem*0HH5{!nojKVX zs@v%xhWq8`?l&qD-*PjIJLJWMx{%lDulOLZ0hr6VSKn+G^=c>Gsw(P)4C4n2s-aJa zA}{KMDDwL1luS12GTgSpQLGp_pGqPuRB^HkXlizH&DPOE0lR{|M$6OTvImWwozbfi zTWU!wcO#zRaHnLEScI}XJ{-jRPiGujhCN4kDDiZkc>eNNp z?UsW-JL7$e?&P%1`y>=y?+#*5Q);~l|Eel&QUC26#QWRH)tva10Fkd;iHpF1e1SRb z95F%E;vc7KM-eviLHK&t)g_`pN#Z&p>zaWM=@^#THK$1KEw>VxTuxA#h(|*hu3(%d9~x7@L>8E%e$XQ zJt`L`D*;>;^5Ov|Dtx+__oG50RI@6LNIgW}Fj7x2)%10mmK9&wz0L5vCa6jhkD~%o z&mPYAzJZ%G70w45wF66aMjl@{e_;9B-8evjmY$%ODdDV0DR{y*LOq4jmLbLerWj{8 zaT9r_TUxi?%(XqNh%hIZ6G$)Asf<3Q&%sjtYgm6dd1}7%x^7hJ>h!Sx!-!$hxm8u+ zU^8u*W}9)wQ#sxMVQ$@l<~ifSrDHFT+g?(V{C*)6H9Z`oc{eQ^D3cT$IpxTJ=PMiI z*j2V1`YJpzU*9}_8DI3n;_rlTa#F%L62XtlZ$(2@kd~Yc~m2Um%b~QHc3v1Pi(K~ zPZroon*MveiWxh}yhj$b)F)jp^>WA8OFc}a2993p!-hHrUwMH=+9X2H}8U31kGFsCU zN=dzhLLy68J=aL22Sg$=iIfiQ)QOY;h(rzz^>6Dc#AM?QMqk5^tnjSe4O-NpcSRri zrhkV%HU}d4k5lTn&wAP0XLi;%X_gGV-CWF4u`&_Fd#%`r=@^;?Ylx|2n)!z*c~AsM z2bGK^p{~l9lGg-C2P8l`_VYXd&pgj1MDia2a;HQQpeB47k&p=@W(v<_a)vuRdl;Nt zMT?W_tNPOte+5=}j3QsFWojG0x_X)|{`6;C#eHTk5h~Okzz6ODRJ1YZR%%;|dXO!bk(=dM2(K4?A&H0q?FP(F9xk{ah5W#L_L_m9X0crIiomp6JBYdajr?bxR9Tv; zM$E8@Q?Tzv?2vanv0O435+}V>Nbufxoy^#r>3yjCQ(&w5tk`}wyb@w6%6NMhz;OPO z1euJ<`2Ml+hktmbKg+=MSz8jsG%v;@=)t_nkC-xwGnE=@6A&4i)`G~;`3p!4LE}IX z!*(Ms6fwNK<@{_=Ti2&ub7_?(@3Uvr%DYW3>RAz@0IHTZeE$LMB}$k-wJYx z#|1B7=PBj)#6>tU(D?b}QuY~v8#nO!dgWe4t=z+?#GuHF(6v|Oy-$IWvMPBq#0qDJzr6dlT@HFi`v-H|A79LDe@4}|Y!h%rP@J1e!> zV#no4{O@OLPwNQ@XWg<^QHzmG>em=`h}uVz!XG)=bpOBR`u~jefjtbO>vWLj{OJJ2 zlU4FI^3;f3DTkhr=Wzfv(QZHDj-jN@HV?KVjo7caW&>BAs8{j4ZcRSAd$w`OZ*m0Z zL+bUb6MuxLcyK|UTNR1#xJdkj^S!ydf7s^6h14stn)yl9Wb{10tn-qL=vk@@67+!= z7Z85K|Y8=4z9o@x`?Vv?l*YM z930c{F||}f=bv>{)O{-~)405y9#$NCbv7pmmEHM^sqg!A%J_ndCcnCDC1_$dP&l!$ z>%_0#&OD_mW{K7d*JqGhPp7E0_wR;uMj*e3W7tL8jjR6;V`mu_RolJ&nV~~qXpoXl z1*JrU0qO1#NfnUp6lPFjhVD)gq(dYGff11q5tIfAQM#2-5P0_OtROW5VKHmb;*;|9Ug;kVjv%^UT_;PQ->$SI4 zIPKsggU#nkvX#7YUc=_ad8#lU`c>g!b1CN4D$N%S>vtCjJjPd5@Ny+uWu+_MOr@o@ z)W(_@He4qdHkW6<^f8LExWUP_;VveUWe6FzXG0q`;5v)qdI%$Mo@isvO`=MzY&n_WJJr z4w>O<6MrY<4)HUxdG68AT#GkMslJ&d4f*hSiI_;g1(9s@57=bnSie2!02}*Lo?otvYNo!-}zdG{F?%|(Z5z=z*V7_fBeQqK);#S}HO2lnMYL~Luuast&vH_`&N2Ck`fP*jD-#bUcBD<6e z?BctW0B;0dPHVjVJL>YKzwhw>zGGit|1y$&3jh1=lk}O^SrK`-Ug&)MT2_~jNK}jX zOOl6O+#e}?ILQ_82JB_`2NRar_j~@nYfk&?F(=|Kcb2vL#9%3R`rb}REg;vN4i4W0 z4;m-E{5y#JrQ3d8X5~{UudCI=M-*O`TN9L8wL z80c#<&T}I)dB@-L#ti^PAal#h{w0<}XJIY;t}sVFa#y-Oi%WK9<>QSivU_jCt8`uz zlsKgPIr<)$Kl>)3^bgq;_U#V2q9Brmg4dIvtzh#UXDf()dHmZ&E#B=l`^M9S9*l0c zT4%@3{+l`CSyNvR;?(^zdW3pd@^}`E#}cRmTM~L-fI4te0XTyd!XV@d0BSkm<_~1r zrz6Vf3WR3cg+YtZ8~|-W$48*&6Z8t_`E=rmuzD1hbeisKg<8*qHni8D+q@cOcw(Wj zN;M;)rFej*p1;BWE$o}h*YS`cfzawVz++EC|N1WEl@B)&(eRgybxh;+JU)b`16Lyr z@GB1~LNluE*SXvLF|y!E`uJsCzA5I?EkD0z8_kRclQ`lgAJ1w0kB8PvE|1FVUs4>U zi3#Cg&=C?(WRM4y-T`v-nQ99kjM}VdsAXGpfNZXYI+i#x=G)OzB<)^8(ck5Wm)_$Ym$95+Bm%&x zHt+(un^4d=geXIB#vvgsD5Lm68O48rQu?H8j{Qv$0g2R!t25iF)kI50-- zc>%`W(jYi5z*rJ`_@KP=jQvAREsfKyRF49}@IR$U;ybgy0v+E#F^r8j@*o(%_?PCV z=72vcw?J@$UnwE1e0Sf^ymO-|Ib`9e%an1vi-*2VVEP7dFn#yg9(A%=DhZUnq?|759L$ zUL9q!t3N%C*dYpBTzPOF!}Q_Py_2iZ1i*QPB}_6w6Ee9OMD@cofDaI*0ZGF-uXt%? z^#jSop5K1rmnq$Jg&5hH8|=6ujpCMWKQd|>UP?L`cpUN&coBDYPJuFAC{P=k$KF*C$qNO_Ipf|21}(HbQr3LN61sm(@d=Yjad+%8k!Y)~+>Ex@Pt2rLlxbc*E@v>56PD{#6I6snUq55qy$ht}tn;k!G;Vs6s^SK> zE8YZmQ;?2z*ZyytFq+mA7d+`;|ABVccyVBEw?>LZ1M?gfod?IF)qi4WXkEa0&INxG zjkCBX(adeakEj@~YGPGVzZ2MSrSlxjsf?J-#i%?avt-ln{5WCSeO*BRy-F^FX_)E- zho~a={srAdBk`DC&k(UC#dJSPLal-mG0!e>$4wPT0`SkA-|rp2)jR`G&>pVGIT1DL z+IB?3+@s#UU9dY;Qj0+gME2e0MtvgSH2f&3k^sx4A_e?+X|Vvpwl`0w14#fGPXgm7 zx}yOsR}Yr!OJtl`r0PPOq(+p2TN{Ke=_(S?scc2igo|ej{Gp|RZ|r5C#ip!Q>vY{X zyVuR7cx|6$0*&r1(=F3s+7s|69&w%b)1LJeKHB=Ziyq^36ldRdh`4o%NM$WJ9FxZc ztX8g{=u5QERo*Z6JQLZ!(3F9ab8-+4h~aACO&pD~qH( z%Bz7%4{1i?T@+ulQO)}>diqW*yLCTeBw%QHg87lielvGviVh&voqe^hLxFIL`|IBh zSN$&ESOCK*yBFb<+W`|pN4fbEmy1p+C@7%*tYa__hJ_j#L#*Y-N8eif>|p;U^W#5vQ}Sy;M0J!DG(yLm`!=X*;ESz+FBPtn>%jA-=6bH z%6&mJ8px?dFF)l$qrI|JsoXRlJ3^r^+7T7ljyS+}6o!Vti^9;L|BV1bEDFFM%fZRZ0fboK zN%`ZO2^^e$J$qwR@cfdQ)Yd1z(;v||8D#v9d`QjZq5Vw;F4Zo?!)cWf;a$rPi_o*l2eWqzr>Y75-1N|DlTCq)v;{U0Z_? zJsQ$rJsKk1u+x9+x63p}O^$-QuaiTKE8uan;y>gY9Y36C7* zwkq^~X2`4@i%B#*y|mC>mbV6clglU;h-~J9kxgkZvblhdC8?&)EtAUEc`2bav$g4_ zpd;*1%?$t1z4(eGz*=1=m01W(_8=P|IuA%8e4(S{)p<)JQ7D=v-=Vk$Cro6&RRW*&(S-ELXnAZAC6APPrvHlJe$gl2)ca@d0frUKj0F+7M{Bo+0s> zco|^3y;?L2%V_%F(P36{4ZR>sDG8q{}{prhD%;jUW7{+-%6woGH3Zk+J)}dJGhkCUy zc(A}<0}yz-^8{Q^`o_2{es}NQ(I{ge==Q&@!g-BcaiHFnUMYgB>SZ+mHRLYEnz=@+ zAb%~cP!4eKEk`6$UM@wKurGibc!ASTWr35o-(gV41`bSxHgGJke-uasV>z8Rw^7Q^ z2~1JS03ez&jrbycn<(b@ag73<5l#l{0Wx?UkiiPdI2la$PX@oIDf}mc%h93>PndPo zSeRGCRd|tn`D=mQhnb%?6I(gO6_j5|&~B?rG>!&9Er z=VlQi$87%^BN-n`49#idjwNUQqNjvRuLFjGX!MKP@BITuPigmDPG8BXe|)P9rh{XE zaIo^dZhQh}u=X-T#V=~FI8b}tVB(yAkcXeDr963pPpl*AM>BZ-=*g+?tNGS7a79R& zNUeQUVitR}LyW;BT?y`1?l>V!y(FFLO5RU+_Dij}+AVn8uyV5kdDqzabb7NDCT{2D znA3JTr!=CJrtIHlX})@^G( zBRS+}_^v&S*4LqImiJTmZE~NyvoG6L?r`%*xmLBe>&;qSk}b7Z*HabsG?#(52zv#x zf_Xe$x=uR;*pa>YmCjlBy@l!=m0BJE>pg6^(X*&Y+3O+`H+M>#?!u5SHd5aEOPQS1b;L-oSs>^kFu>=`Qq<8 z*D@eFQK5}lu+zKN@*C-wS50^7B#BzfvVXiNv{pY;-lIbjn{}2u+~BZz6H=sqof3f+ zN`BVl%4^daAlJ)n*h53cZ0s4KiHLo6uCm0vjSYYK@w3MO!l{WWQvXg6symli+MoLi3-!XaV zeI~9V<=fPv1(EUhZw#fSxuke)q|h*yWP2Uz7{~ZcoZf%64b|d?@cs;}WPtD<;zP8w z8kePz?}4$u+goO1JNOFJMv-CBuM~nJiMx%$II(YEzHidh0c<0MXu0q}wBE2ulp$f6 z0R*D;VrLS^!C{!hAmNv%C}}n_k~q5rQQN73cU63^X$+QcE=Gr8mJ}TF9a0|l7WgoI zUm4swd?SV@TVH!f7|_*1AnRFVNYA1Cbovq!L5iZirsCfTHFz~O3w_=vR0DaQ$uhl+ zV6aa4D};#FjeUg@1kQX8v|?dPGd?*GVx$jO|4FX*-oJR+S9U#J0a~W`qFjmX8cT)E z#~&S3S22uq;a{-axi{rV964Z7{gbb9{SkDJq(;OFqaOvKo^s+DB~7#vls!BDEP_DN zp#;ehbidxKtkCJbpJvmGfR@>jmn~8v=*)v>rdQ4&Wp>VQq!K74&m=yiA)`7*FKO1F zM^Q$ZZ&AYkDA)v5B8jQYL$%7>Uk{8pGt$h*YxBLbr0+IaBCZS>*Dx--r?B?RWo|du z|6x@{tbJ5lk|3pq`f>2zwq#DXbA2{sNhq(NUE#)#>A`+bOuxqW{no9mN6I4)Q#S3^ z^$$9Cq`MULqvTW1yewdx66U{mXPT5~>8PgMU3XrnLz1u$-k@Uo4ux>#%ZfleD29pLmie$rpH4%j_odakPe0 z=Ul>pT$RUSF0t8h`N*#zu6@MO6RriT;C9G1!B=4CWXr_yv3c_Zwmm4S@#gURFG~8X zp0kRkJtOW75)01^Ds-)Bjl=v7a)L}G*sr4e#st2s)j{{+lYyZ!jSTb%bau zE&oJWXgQ<$o5s;J)NJ4#!EnvLBI_rSZ#(5p7waM5uP7f+l47NWte*#snKTW?qqqGEi;+J0flvFn&<~Fvrq>+0GL|1jv+=CX(dB#n^WXK1cg`5!=I%uB@h21fPbXS6t^@qIA>K;njZ8a=eEmc zTPW;9Dg9^!fY>V1hfEDWkr+>{`*Ho}K+EkLW9!DGvmKIbi=^*1nbf+ysQ3a&x$R)w zc054q;l5}+2u_p||99)+zYZ@lTCZF=Jm38$T6sE+)b1`H5V41^g(vIv#;H@?iZu&e z_2MHYDE9mB6CCELCO(-~UvWK~bz7xEmcPEgQ}xfP#OxqRGm=1MtpMZ8xEl1=H>7>; zOZ^w=c8%cRyBMD-?zYVJ5rL(G^xWW-wFE=2Lyg6ir1Ha)QZ1I?ni{(=uNM0jbM=sH z+2Mp=Im7tUW3snS!q#^Cq^im8y}x*blO8ni&1zZGz5UXEn68&Wc}j%c%+<8AmCSKLl7_ ziM$M>3z8Va>n$7#?1s?U!@D@_pXY->COuN8pEi8W) z(E^+F(VSn(1vONpfU{ZtZ)JnQCvQ17C-k+r_CfbLf+(132QdF#7wN7Yy^E0pRFBDw!+ zA_7^vj-6i01$d5X*;G?JWe{4Z&o=L?)Zx7{*1Hx12{~==;!H=V1Mqi=AO3YtJ>T3n zkTUA_3{avq`+CHp@Hpl;{3;%aZTc3qKv&-$te0#_;;%H7koVg*^Tj2k0Ito{HXjY# z+xxX_72IR?n!xDUvqM57JLd<`w7#nkUcz!5_1d74P?yE`tJ_E9lS(nOf?0`1(fnB6 z^?p1XnwacRcTVSL>m^`OQ<(rn=b9OhP2`!ik3&|Jpf)hEjYoWimvwb(g}YSUow1_smCat z&c&snr5YX{8Jmoi;`xSTqdeuHivNDHlM$uYUA*$gLT*}{s`wIp%g_>usnSSyU;*DHi*{mE@tpT_GjZ+78&x_NCo^bkX;d>cvDmm7X_0sK2NSoy(Qf!f~ zUKH8%Mw+*jJu6&egr}(UZzXGl5n+C6nDHrJ7AuaB)=2ORRz}~>c z#R#>VezfU#rgY@($}u1!PG~?ZxQLeiv~DesrLUIhf&a~u ziYzATI#uYuGWviaLKW1G`(o;UgMIokM$@=ZT!K#SD6S?I6c@1Ryp(SkSh9M#5RTvi zPxBB;<<;aYG!7I*aTkI}Gv#l?XX3!e;6U!aK1FVW?`~~{O#O(5MMtY8J3zQPE=$yY z*Khtof&$jj^85_=X4754LT}NbTgDn3p53GkbGj8C=-J0Qb6Dcqi5IKZmK6^L>>)fB zS|%*|&A12(ewyG0jfF7ULSi$oNy^khxW*45T;wSDeH0uCiS3)78J9aELcuM*|8T;h zCw(I7-XIh4OCM3MPd^FwW2BNle9iaRtu-v9#3p?5G1ckX{nFnzZ~e7cBTww^n7+(G z@|`}hJ3`wS0;*&PFQ6#_l}soKY?>sp;jC?e+1TAUo}T`?b;Mi4TVc{Vvjto+k-*s$ zno~W{BdGtGSPQMqIQx}8WgAYvt8`JUk+5ChS|AxHB%dFs)*n>&an*VkUnrg)#fPib zO#R!JcYtdBjby%&(~UGosc8qkzL$vKu|#!))UwyNh3{T%a-e}*h!RJg@(-W4 zTamHjw-+$@yGnBI2e94le8>W(eEe_eq(5GMfR4j#$Te<=?yBO~PqavgY*9Uttp3)! zkozA$jQax{pBFII-30;*nEQkWL3d&Kz!$_K<8&hV*7-@dD2e{$(-;gSU{*v^hWV+& zM}~PNB}&@faJgof#MezbR2wNDHov8L2y1Dky|+^{gVa>T6p%b&Tx~s3W^JFNehD<# zyTNwlxc(|QD)10lnC^mWurCiZ7ALt+LJTS5Z<|ik_FaFPs7z7Mctp~8J7;(D24*YR z{)a)23%w=qR=<(|Atw2e*q~`zUEZ}9eD9a;$mf0f^m>xcK7|BbOUb#>#DuQ(`b`@# z8rsgj;cE7+n}^D}KwQ37N`=zLT^hCwoM{^?EYMlQkhs?R^wP(RLoKTPQ}^wg(myZ4 zjq5Cdd1esnw|97;+%JpTsz7rG5;kqL>Hm^p^L5UL%#@56aVBJZ@(V1YImu1txX!AG zH_v&c5wEL+X^$iItKFwtlQpk$))-wT#BT$5Eo|$9^DJy;?0l7e@@kzW;bhGpyW(F+ z(k5qD%BBIxj0EA#0nublRlDn!Hxe?_D53MI|3dJk#Syb;>KPK-5lQl;60+F}`v4Tc zo~Q$Dw$N$Kb@__wtpXk0=t`o{TX|uzpx6WU20e+DKHtP=0L9)_*ga6}?J%_f_f{FV za+Ig4W0gmX2^Ki%B~FoZ;a`-DmAbF0t~oyuEJKGH4pl6_BPc@$ zF*Obm(dkEX2hu%Wbp;k@^Og~tuy7!h9~f@s2pGoA9!*D_G8n>Zh(-8b3R6cYAj-CS z!*2omdB`5FlBSRh)ILv5wJ6A~;U7zF@UP&0)wa!E>`N)g38h0O4Oz59=<4|(f_4=W zodSomg`D{#=Kk|!Bzo{xs^%L62xVXyma@_RViJM?li({u?}Nt_1X!s7~4QWRKuKFR;sDv3NbgR|Qqgwi-+-INLY`6oW0865B)@Oj%fW! zf(%zu-ntYXUjI}Yl^AfkI>clz=m_YN%fr-#JYXSvnhwem5m1(hT*#6t-aji}s0-+9 z6m)PB`R3ahQ)WOSd*LK5@ zOKG9OM97;-em7X3=Hi6O^+cM$Y6}j&WA<6tO{iBFkbbvz@v&0S0Z_dTBL`m(2j3aw zW>RBwb;vd)2VYZ9|IL1kOt|8Sg+kHb6TKd}`j2S1VAh??g=8hSRl<7RVsyj~gSt+v z>7NLn@w1tmo4K3s5EDZ~+ushxW7B%pmZqd&v zSq$4QQ7LRb41xxc?F0LoR;v#V8r+H%+z%+64QFf0bc%m(M`@eLFd=U)tSu$R?h3sj8YH{1`^WGI$K?18o3x9$AL3TR%jj! zLo}4${gq=ke@T4fW}fd+dm<#egv|36kZt^2g)F5fLNs*X4Su-M&W>nkO4#KauKHV- z9tC_S!0;T|YM2I{WZ%795nRQ#Y-Q>EfKT`fEAmK?_$#U_(kofH{6h6EpBRTxc!{%b z{XNC%=H0NNIB{~vvcy{0P&i~IqJT>++#ok0UIAjQCztw)2Dd2^?^t;fB)`{eW-i zrwrb3k{NFCXjAI~5+2)*SYn!dR`2cIVT!phX`IMoxe$5iJD|vm0!5xQ#8VU{eIfEF z0Fg&QNEIbAq{ojWzt2J8%-|F?KK}Fj^0vqKu~+zukZuL0bLJ)aTkWHlraV{{ZKh4I zUHrWD{Y*tBE-8qYiQ%z^w`{)tdTn^K%c-EzfKJdYLm14^NZz zX4fv6M8!C1n7MQ)b$B0G4^4fW=QDMK_?MNnL;WY2q5g~xNQdlP1Uv8%q2wST;74>D z?|9g*S%aQCjgw?JDkuoD`tDivJf0}IJ~%dUttuO z_iu}$!Fm7ror`&2Ayt*oh6=}FzuFyb`2rl4G5q_aAJuO;co7e=?`vh)Bbn}dQtuF6 z*ZiJ8H1<*h)tX+a6E&k!1tF0rdSV&VC{93_37s3@wvVl);9)M)j02KI8Id{T;DW z{}bKOI&XtZc$V_=ZBY{z%qGk)Ol@_A!>;B$U@)|lDS0!JZ0&yi)KeqWN}VOgq|^OF zYyHZ4^wPBn?kijcdOdiGuesD6#WF;<#q8TUmWVQ1>@ZayB58k}bgp%pO4Rrm+%x-h zv~~0$$Km#^l~$9?Fy#0&&9}lv`nGo~y^X_n-=#PJuRwnb+s;!#yaJA_5*ZpevQ)Su z`z*{6II`Y_WCiMTXh&DYvivdTd=|C0jsRAX#4CP3V@eCuNR>(uBQRF~tC3#7ZFwL@ zu#zr**s9fsr4J8stNWY40N>8xO{$^MM6UPf*kJrc?}GS?vHAjk6{i9COU1d;n7P)g zj68PySbtEajZ$S`5@H^)L=~IWoRqm|(5;vmo5j(+|em zsgr>1h<-Zj_(MEhq_9Q!3ePc$p}1}S#xRA5Uu7!7Kp+C;S4KpLxFzg#+)k2@sR-%; zE<#~KbPkRa*ra&{99M~6Cmk>PSL?=$fKs>gRwflFb?=!jO5J!ET@-#D1@1A$w>z2z zAJdfOEOsPg)w>JL;oApjj*VeJbC?m;Q4pF%ftn*oz3M5j`)2%Y3(gF0j^#}FY*K>=tNI>O%3bIS`1}Vz%X90rTblM=0q8RJ~BJbm$ zE1HSghox<{oqFu+;!Jy8OIq{)0 zjgfitxwA_GegYdQzSv_QJL~!Y+r6OE&W3>gR~WX3veB-+bln(!3%3Gc1tbh^Ky4AL zBHo0jQX9r5;&AME>$54(Zy$p>^$!D4p$|}b-tUDzVpFy;9=p$DX21RVemCIDj}eE} zgPygpZB|tdt)n1l7j5{X90B4Hupzxv$UMY7-7nNbNp0_j59yLu+31{HcsVvY8xKcA z**`uKNG>ZsYv|TM2ID%>vQOiBb?c>NaU3@6+v=DHuwmxSM%d7|tHs>OMXF_7vR&G} zJZ=wetYzug474O$fz4?887Sig7VIzVoR5!S%i^G&v+Sb_`M7pr=e*68yRdU?bbPP4 zIgp}mj!izjS$+7eL(Kl+2C}UhZ}se&=!+6S$Y+k=gnW;Uj_HH)V`SB^0m6K z?yU;gr);<``jm?j(5EKRK%c^@pyEWaDjyk;0F9`FI|tXn2`ABFlW2LY%0C)0i3Vtd zgbO~IWq)-deCUWv@nJW~4NLWB($VE~-CdXRjy4`}rAOrk=4+?tg-&bI$-8ei^2IVq zV?r9GJg9p_q%oQ~l{UOU&%tV;vT$wL{u$7gKPv6L=%V=84fJLI6J$F{6{aG6+pq2A z@M$q|&Ak0aSG|U@_;ngP8kGVa()tCye^h3H51=wkkiR$^Q0aooEby6mwm{^8PT*du zrQtUp$Z%-=QP(WJ?RYI%g>&czNnA)y9rh9?@#;bGaPig3P?Y)WgZ}bZ1MQo^FQQf3 zHqMY@caIkMsCQ}pycr|gr3r>D@ck1pp^N`SjC>I&VjzFRd)WReHBuhMi3wTEyRssV zkYNS%iT4myQsJ;9T_?SE& zoqWMO`yXd76lwSRLEL$sG1BzK_U^075MENiBG{VP{}m+E2UrAlTbQ&jphFO?_rfUb zuGfV_FeZe#Z@77+%_Mzz&$1mhPg%BR5#HeO+WzxW7u}@38q23Q{2p(x4S=cF4w`!W zp9g;$iwNhXHYfl5S!AsTm;>9OIWRmygaqAzVbh!c+Z>1;o=6xfcs6mloTxQ}CG22& zgTU-sot0~;P5b!7Q0pM!#@MYY06OOL{t>7GzBHi<@doGH>@99-#sa?0qA}>(peO$M zHn*YOnisy!9_dqrh9)uR^Y8EvS~;Thx4MysE;*Pbb}pxOygdzoQiKI)<0u7HEkG$a ztUyY!2U~my*~w~ z5n@N2Io)pE>8fS|YE;McBq8$q5kB9Co91h2lM{>otUkJ?{Wlot(-$?$LCPU9VDcPXFw-H;X^REP6VL_I?;0l1A%l%VwnRuL=Egjm{Lqd46YOD1D%M+ zE-f|S_~kzY3yN;pXFwx53{wRg5f8^jBa(eW*9&ZQz%`=W`$tHeaUBrOenVlfkF%5* zPmybgr^rKlF|uPRuww&*GV#*E-{X7 zO+>3MkV!YbD}0rQ2YmHODDc&CT?JUKpYQInT}7#a4GbChyWlMsEQY9lOQpN%S*Biw zD)$3>Elw%FuE~d8->baB$K;$#1YZtxadj`Zt?CB9UR>GSbuSfaMri~e5{^X2N`szvSdp{#whn9xdQU#B#=L*^U{|90PY+(NEyDX5R-xT4T zL;ImP_KIuV0B!{v_wND)enr(xWiLCDA+NGsZpyVrPTJ0%HKY`H zU^>t4TDj@c2w7u62N(-Dz*xWm_Wq=Yr3Tm*iU*>3;Q*%t4sgk(WR2JObxOD0A!axS zSX$fYA4vbUfepbGfa{r$J#IlluIOJYK0M*z)=1*6RitVk#D4yY zf8}lTQ+#3!;AP!-I9-1d+E#aNr`T0elbFPsI82?aca_Oj!4a+*ew{qvfoi&i`ZX}y z;Chj52>h3A2v>qB;<62jK(-xLK2kczql_~8@9 zga^7*)U_Pkl0BU&$ZJ>NW}M6S@VO}-s5#OGaEn_;b@LWWzKGWh>HP0Q!pWW7KQr+A z;L$Z*Sxam8A=(=VYG6o1amQL9s2Ogkzf~76n?!m z4=&L!pO+#n(F9Awjc7)|irDMGh*qWqj%bC{xDl<);y1n?NnR;+;2RI4u9SG2d;zsp z75bvD%i%GTd=%dIVl<*&r~jfb;@q;AArut5@N9TM&qiY(@NA4=W#LdGJJ7SSqDBga z&3`XrB`n!uDN~Z0Kf(iluM3C^ctDL5NjBB!ng(cworDBy;b~>}dEL_azLjfKxhK@o zUwS?un?W4a2E>w+Ifywq-=MEaN#ys7{O7|kswvzLlyndH)OOv(Sf%0JtXdjT$r3Mr zUR*`iw>d;~E8b|$S=J;nDy*j0dSYTj5f%yshibsP7g**w7BZ z22@bHq;6G-fL^U^r8lf>0&ts|4mT`5e7klNsY$WOta}FwysKu;+l`AeSBG%-hbK zP`CN|gPO3^)za^+K=-ky78HpB?ts5`{v&wc+|%@U^HhWBzbY@obS9;nJRF4H!~paT z?^f2*+Xb#Elmagu!a;9#5PHjj&|3~nKH*scc8Kl@*AEg;Iv*t@SPh4P%jUv>YFNkx z7Q?Xkf5q?_A3_yZ3`<7f!hZMYz3s?!sn%~vlE^YA4!;y(%aVPic*5#~Gmd30jAMi< zU>t|VgT}EB{wgt^Pd6~cw0^a(cwb4|8saMZjxKWQ#wvP=QRgQu_ys)3i^vi#w#j8e z9uBBp4q_6SML_k2amE*Oxj5ZneK%chS$_wqo;I4wN)MY<*LZdUSU1=JiCrsEJ!xD!?Ve zQYV?iQUNZ(aNS%%8>|Z15DBm<1QR+vd+(N}r6wprt4DLN04>8PYj;W|N$4+qX>ltO zD&7F#gjbap-QZ}q!+SF-+KVWS=DRPCiJvS!jg=ul6@vZ%srrRKfKMP4&%nWt^9LUF zZ(D%=07>+uL;lu#InO~eB-MHYT6DmN#FulZaWV0@-mqUDET&od73x&9<;*M`{8l-9 z<6mg;mGj4LLZ8^(ErvX?6CW8ZRM0~e_EA2Da_}$r4t54p(M}m{5D}B&;VYX0j}yK! z?r}P2dcsNS(l0x7g{>h(aZ3&G{8xcbk~E{IXi4ojv;-gdzSi@2ek!!)ckR;Bp|BX9 zB$%9W0g^M4o=i7rtCWD`j2THCH5i6X~S<9WlqGz=R+efI!o}Ln)mXTR^xWYN>*EAk2Qw~~0w%99_F9XhlSonn&@czpngOWRjukXOwH9&ZLaiA9YK

*`N}9&0)*R{v*`XAfe^~ z3AF&!pv#e)XF87W`xvvmi@zTrn&?M#DB)$u?!PT00rO~$|6~af8dbCijlXV8fM4Ew z?F!HOi4}8gD-T6g1yU3cZ5scmgVD42tQPb9@E4n}qct*9qaMEwzVhW4eo?GNI8nN) z;>;zNfnWFSdjYFh<7>xRqsybzgoZi9cwV-j@({i(xzFt19~4&Z^=3#QIGAy}o*x$+ zY+p-#qO0kL3l2^N0>ME8AUL?vlV7=!<}=%uYL7^dNmVXuKVGwtdeD6%WR2K%D!%TT zM?1B78uOISj&Z$E-sZjEfL+Wmy+0Bgw=w2Loaasi#C=}^8vuBMU~jc$}Ag{MJBPJO;B#=lpC&5-do?9otR^5i8%nhsmXxHx$W*+2zYCW-1gM9oF(UK9 zj?wIm8uQhT!SOWfG~h0Bs{i8eDkr&n5YMs(8hkT3>Vfx90COY*=JzS0Rur$Rk*_PvL&Ps?D8X5w zWpYAmWFu}8Z#E_#;~CH7IC!O!=){O=dIYBbRqB6SSv+vZbhUj0BGcqMVZ?t9;R{g==b z?-Fopil~Of(q@{>(OdzTqktZ#0e>Y1VA4F5p@JMsjASQ7`$`ShM)}OmA1T6CGp=@T zT?+G7?gTQoh1NYmrv&@Xo~ykDh|VVM-vq0sbJag)c!q0TN?n0FpjA4VkLm;)J7&7P zuHrEf@p=jzA&HkdxMTYR8WSFdGOFu(B@|o}g~u~|ch5H3OQ=7N^q38Go@ZU4rfYOq zpuWYmK%KJrlt{n^upQwxBv|SM6=dfMisvqH)u84NI#YtbxfK18L*!Dcf};B zk=>+G!%aO*VMwz6b$E>FBqR;DyPKXLSP&74;MX>3{vJ>^_nbKOf1XQpjU8JcMHb&$wB5yATD72%&Q ztrbU7+8w`bgPU(V3!}7IDsJQDh+YlT&i#QRQ2bmd2~&iIFMeL#k)n#0Y^x-piguZ& z!R@)Vr15oYwch%mbfgNml^>K+?Gt?TIa06Bm3uaXvp)gTfE9?;mZ;30zZzx; zcsR2Vk7&@t>F!3_%yaMROfNh{Y}Ex^sBew(q!Olz zYTQ?h*ih>&9*xh_xT^8`phrCp#Aqd-k`Gsa$gvyBkQ*!TQ@N4>D?ovdGW_^zx!7*@ zQtslFyd%&G)Bz}3@EwSBL=T&^awCNlK+$Htx^5v6Qu1Mjsnp04tU&zQXpSvOE=)S& z`k73qgpPi%u_Mw4?Il&%G(gX<4=r`${l8Z6S&90yw5(8PnS zv~Fa5|6xw)z1)DZPxmF8Mc8iT2E0AKBx6LVq(@Jka#H#ZPc>ls<{JgoTcZ;W_t$)a zuL;!phfK8o?lZ3y&Cv;a(oQv%DuQ~FHv2-_n05T5-aLg)=P?Hfn#? z-P)&jA?L8OF?-U#&fceYGN!SegtH&sj4O|FBaxTR=sHzh2!2Yq0GkH-Oo!$A`Lk|u zSmSbgk1ZJ`624nW?WuEE134crm`1qr((#LGJZiHpKAqJdKjHSoEa021 zM@SND&8OcgWI_Lc5sIG@kJsoEuW?utCf2_9s{Doj!}&htj{(R}3FyxQrasegD`ZpC z><;SjR%}XwQU`E47mK1bx+T4{xbEAj+AEb^z7qB^Wr=lqIZ2%_1WkZeSW{W!u9ST!_HCatVq`rj3&s4ho z2%=?YZn)zrt35j9cu(qcn%Kbz^0Bv86*bNLoY+fPGNa^Jl~ZUNJ~x0wO#Y&9NW_ck zscSEQM7Xa+SL1VFTuMW(KU}Uqf6`WmbWrO`>Y$74;=1a~s<<`D3q6?Vlu>fkHSlii zvrQuhV)1b_3}7r?Badop=%m+i7Lu$6QU4KRat)%+LJUdHd^CtuecyUHvHOn9&JGZZ zR|8`4hmjBtAQsPoabk6224eBAXQsp4LSf1LJP>tR*0J(VNOAy-yI$f<=BzzY3AjBt z<2uKcU))7qq$JHeeCa#c^?Y~}ey1PkO=f`JZqG-k-nX^!rIXb@hW+LCj)7@BG_$Pi zHeROaRj5|(0@8y(7ChXt&;Z=wUI56M5Edk7SQ_ALTW#1mCwJbK-Lu!H=XhUNZtsnv zRXFh}ey|NOz-fFnPuo%1_~2Puey9OBE1qJW(&n0f{RPvJUH4Q}wn;{js&MwW7Sv}R z3;!iZAx4#*B4K+^pWeUEj_$xBL;g2(=o#Yx`Fgs6>C|`RdFLOypQ7W@+m(;0&I*kKk*;x{j>63z zy*U#-{OQYARLS|ipXGY{a_S47B;XR06=&)_jm3eaKfkWhB)wl8_LbG(y!DghlA?~; z=43b7X&>gcP~G2!c0SI5RT;Rep_EkR?cO)1rk&m8AJt8wZkD?*iQcvi3OYW~(iJSa z8na&w9CX8YhF-<+}XyyUI+E(~S3rh7aqdgZcjt#870 zm}HP1nN2ZPWkxG3&aDQyn#?r0T4<3q9mE$+730j?s{88_*9)D89lpfKoOeMlpkWj_ zP9_qamM~a#hQ5#=q7W2hH;3LfeFp>?Or#lxLNsI@_NVeyo@RWBI1Rp2$VQ1zNq}jg z3eV2hY^jr7BpIQBrxZP$N|Q|lAA8D@yTrue#(8*DtA@X@ce7xy!3G&VNZ2PQT1Z&D zf7{7yD;?D;7soL2&3&$Mg+gr}D?C^`1V7s$NFEZloxMxOG5p4&zgZJeIHffs?!Q7F zCb@0<{tn$k53X;&M;kFr%CUL_WF#5%Tw;_W^FQsjvo>AyB0b(PGGr~V=Y^UpKpsdN z1rzq!+=D&%9ruok@y^p}Vn#gCNY&!bc`PGvqbf=aXxJ#E7|^lHtNoMN#N(XmusVV zI0zBsAAWC0pMTjXa+`|y&Ox|*lj2tkcfC7NxPd%(*UJ!2bAD|pdnjeaMT;u;B2dWy z-~R_7i4d?R{Iz~^h0N29gJnBp4srSnySN@hhx~(CeBI(6+DQP@XUH%S;J6^{j(GC`P{RL$M2f0 zpgv|ha)>D4W2{(i)&f|Sd;9z2QEx18*} zu}Y=Sq#}$aIVe{ydv~uZ^C9&zQCCTla|3_b157G#L1Qfcm?Daze4Pctnx9QH{(-je z4hThtZB2?H!?v;$xwLpb0r;zl{w_)=ikR<&3zra4=D;ghg-@ZwZ&xjTZc&3jQgU$i z=2Hsa?x%-DUYST9t@W&2wW0r0*jqk8e4hJz?|av}|IBi&(Y55T&)%QdahD(_$G67coAtfq zPlB|r`#L-0DpY`ze^6Sx!C%#D>_w*DFrR&BXs-U`Ik6Q38ga_j@QD5E>u_X)g3*=F8rl0Ut- zFhE}W%8V`i)y&fcY(@!1pGtk> zF7!U^jv9P-ZOY^0%F`Lo2yN@QVVOf#J~oztBD3|$_lrlawpUACfD=?T`$9G#cYylh z>|&=^UidJ9_?+|P;}ycv!m6V=ap!_;JthWhF_X2Dv(HrbW<#xCZyyUz8PLakW`&IdId1UIxxpeU9 z0)5|SI~jVTlZh;AKXV!U_<8YqFkN~2F z6u=uwkyg_44aoB7vb?36gi35?t!FRruhKXJ4pDNnLC$9grbRGdxSUY`u|H8Q9hes3 zORvWvv^%YM!2vex^3e!38{T&y7o6uWc+!a$x4R+V%TQZKZW9*nAUQ8*}*s zu+T*?-h+Fy#p^19kH&%zi*Eut`GZMV`yP+b4u+cr!#yFS;d0_Np5F8cZhP{nSGnCH z#@}#T2M8Nc)8D+L%w^NT*2)^KG-?lo{%;GtJ-!PKPeNBdg zcr-UeizZEmL(4HAGuvM0CPp?)blZOS;N~23pAUtcM^v;E&vjNiWt@OTBBKg9Nt*_Z z0$R4DcjP=Wf` zbKVc;WpdsVOfQ=l>XC*kjfrnlCNkEV%;P%}Nc`y#-Mu5m0ntqUOPYxgoVw(h!U?df z9*AdViIRd1HJ3cI68Vp3PJ}@`6T^byhQ9^HsQ8S~r+3btbv0NRSre+KDVSNJMGxFw zuvHRRP=LIAcwj{_L(Dz$0f(UTm`?l}3Biu367x7E*HSEnZ_t0@7+gdAwLgkjovjvI z2zS01UGqMv2s{YZ(fgJgq5}>!=xBVPxLJ+5edC)F>UQu0$s1>9xma)P-#21vK^?AI z{2N9~H9YO?M~!ooZr7bc^a-;Zh4GBYsD?(*3zpXH;7_FNZJU)6=-`WqUTZFH*Y`9(hAle_)1LNM`#aCjtocsRIdxx zhn4XK>q84)Ir6D)`sY*O4o4CUM-Itwe%Sv|vk`<>ZS^=ifYs>B6=QqEn;z?ej+|lE zmJJ;_d4qTRA7UBXk@5~7XOJ^K7dgyTg4WxQ#p$HqmA~1s3^YbW#wjpW->E430=m^X zW5yYJTmDLVJ$xma@v>+a(6A)s>5U2(5%n?vr&yaK3l8_O_5xn+*KF!4=Qk2N z!auH(tci8}p1SsYa!p?_?M@oULuF!v<~92mazp+G5rwXE&fh?f88*#YV`%t=`~B{3 zeeeq^VZZV-VvW5);6qU6~HjPHLRk^jRlfMl_Nq{86fVV7Orm1I6mcYhomP(GNYe`oJM< zD`)_P(>uFadJD8{V-<2@d`aOoYKDFBW`q?w72Rc^T5}~eC0S`|1p_D%JiwyAiMfnW z^Ad{@W^9PwJHDzgK0i!CYTC$tido3HrT=$hb%C+rtH}s}Um9L_H!T(6`G&5Rnu5FQ zsH@228P?=!GJ*+5!L>-fh_|+Wgle z)JQpbWq@a&E2~E1UyP-Ke3N#5nu>T&AX*3jhA5_cCjc03C@|(|5X=INIkFU)_BV~; zd}T!t(ZWw&Fi}Z%LImUwsqD#2q0J^r9!)?<{t=J>jyCyA0r6R{ z-V<71(E3J5*KLI#)m~BCS)TM1H`i;?6k!bg^@sCGDM|mzuani!$9Vy-Kk(E_A-PZ* z2%xisW`Gk)8R<4}B!b!=3Khqo9tM~C3LS&>;Re7-&=O-!d3nv9YR?|CKGIgRxvouE z_e}}>yMh7kjP}mDnDpG8^V2~~>UD^oJ=~dQn}`BK00uCB^bkM=jk5$80+_g}>nw*d zvk}}#x=oRJX0Y)5Orna~_4foqFY_Mq`7XZqz}|`WTXknw!Klde7pd=9%OSw^7n%Yv zSeJsc1=q% z$E&j*m?DJjJ{P)7rFSS={;oesyOX;(IV5zJu!to)z zPlYl%+?5J^*6CO+jv#r~xo&oT7oS{SWaR8i2IG-t0X1na6lgN6vL}?U0Mku?0&NW| z0Y>Q8z;|JL&coMvnnu9aX^$n(#UrPbp=<)Eu1g<*Creb1N`1S)Bbo`{+sbYuz0%Z# zOczW(7bj5>FSqJ0IFLO03vND&Kf-t`B6#c8IGb^c5Ci9`qN*-#BmR4_LaJpPee`_2 z;JK<{Bt>H+N#6KwY$kD~T>OKat_y$uxZyK$?R<`#iY z;wVRJtmmTncz6SwO02xB*0_}Ez3$^l z28UsYHW1)43?Kz-(|{DzT#|xMg_)YyrmDAt3Fo&v=EWEcDk`LN-;MN?HmZ($d4%qO zhizE%^=DAUL9l9c=$8@U(=pK=HjBh|e7;^*iBYlQKNLc$%~SY7y|bC@Z#Rsei&-S< zkBo$?t}B%)!-@Hjqs^yIDApIQg`A5B01T@VIvrv`y)wm@*109JcockzgU{8Xddp&&O-d5KrN61IA-E# z+h5^-A5IBE4XBZ80kQCH+Qy@Y-Lh6-?|^2y*$a<7GaGFqKtPUCexye<)V* z?DRM_fX+A1u~}FczCu_4q`LTk;t29j%{C#R*Sq$co8ySRi>>HU=D?4Y|<^T-O^JPq=rC zs2!6|rHT{6eFz%n6d}AHN=-2Jm;vB@vsX~dwr|4KmrL*&ZAWtaIYkH+fvV3-j+-rU z-<^4Yk6lQZn_Qt*{nd4&qAfKEg!?n|IYo3*WWG#_yosP^+sp>aiOh3~gnyW!oJi2r z^NGGmr3TM7tFep@zo|!SzJju;hd<}3AXi&dFtzR{^X{WGGZOD8ByD$8&#)~Ib+Yda zoFL`P)2nNZolj^EXeIJfy<4O$ck=Idg;H--^6*qh-+q&X*pg#Q+^LodotfKvs4pd7 zwp%^>OW2-l!J?^}sQ&I2oWST6A11dzua@iBZCY%u`xU~NT$qNxfDnB^Td5NDU0gj; zPb(Z2^=;=`uwv?6fFh?9=&-xJDNL`s03rJE{GF>i8}e2>h6(@ZXeBeCqiHbxR}dW~ zMhKw!XeD#uL{KnQuiX^K19poO-Y!6k>=e^ijzjvd!(X!ia+r?IP88wviT+KN&*?L& z6&G;~P64!xRmluwEDJ?Q#p1-&?}TxFfK)70r1N@PB#nh4yM^MtP^#Wb70WOo2ks&K zPQ~7+C_Ys=d$ctSp|(O!@1Ept{ORk@B9`lCH!GPJyS6P-A9t<2rAU!6J4@R2m#Bex zz>D_@f3??Rd%*vOQuly;7Wh3l@llYNA;SZS877dJVRGp{RI8rn_9*^M<)`jJOLmOZ zvM0ZQWEX6Lu9zPGDrVTN5R=~sv}VUbtvkmTml=(n+C>01G!I0xSgG|{YnPwHZ^uWq z6j3lzU&e+9w9eueR4*B+Wq8!67^$6d-i(Sr7&Lo5y!c>&y_|1=KG@`)I6U!<3{Q~^ z&lu3vWq2-i^lvVHe?2SKC?I!A^*E87Pz}F?d zl{#BqW+^Hf)55lv=!Yp^-nrM^UsO^pStTqV&x#_x{>#^-Y1S|Gan|VJvGv+1yy-~n z&){o%F`LC(`B9Nmg85N7Wcg95Pd;=|Pe6}r0;dxFxI8VWxu2|s$=?^V$9STvjo^Vb z8jgW`t4NNp8nJy72CFqa4~8&!!(Ii^On25==jjL%5-b;}Ydo&;tI_D*58N65_>8)$=`iz0 z{_)7v^xACS)<##Bo=4u+7O2%gHn-r7R!3A)FY`YOF$b_C*c{dh!49HR&?SB4P!S9- z9d-d`1};5k{c?*lANact4uIlEL+ThK-?RPeD!nryD6~3;xqw#38XoCBLqVM$Clnlf z^{Ol*(cD&jDx{8L*9cf^RGe`vX?>%O%g?T2D?$1grZv#V5IS~@d_W+Ru|NxCvHHQN zOM#4$FPhs`*YL+P6j~p{{&cC2g`gmP4Ac6*`j}Xx=Kk#ep^xDclG6NFA8U(Rz$fG_ ze9z#QI5C67ui1!qpC*c+^B1<3!%f{n7+iwZ`-@kid7y*7C4Kh#;GnO^OV)?pxZ`Vs zig#mZ(~jmJZErMDi~Yje8*SNJPMoJ$55FwnGqYhalP-7N~cjXxqj4 zeHm@TP_!k3Xmi8})Ft5yZb1i|Glh2vI@nMMDBAc+lRwqPU1_x7{b!Q3nE{im8FL~E zGRb_q&>mTvS%eh@z+Y&OY4~SfBTzcrGAkG@85Ty!SBE722LgQ!bil?pBw94EE7>chke#; z2$eaM8C2#hcnK@1(Wut~gf|-Xu0J1=+Uy))HoL_wXKI%*C zz7Qf;>dlT~ZJy8%ZMLDvU)#r39w#>z!8?huJFl~G{r7V?!R|ca3*Me6V4wC}ji(0n z4HP&tsK7NrZADG#=mO`IbQ;qW^-Dy-G?==hD02|Q40~fFF7YFlFM1)*T-S5m9nnqi z2Zh+a&P|(xBY=WM~_!@68b(Fj`%xpbV zr^-3U%dzwBz4xkTH}QDBJpp_4`nybh7WOK!eKG#X0XgeZ&2oc7YSy}a4Mi>z@2-EU zv7wzG+3Ob7u-ndZQnPIBW@i;!)7NU6<3Cv<_L^fL()9n2zg=$u^XO$P0hOYmxTH4? zfg>&Jc$Vbj4UsK=R6_^19s$eZ8?Y>tiy+G)Td8?Tw3w{}ZCMEHLY4(`FRQ323)l^h z+G7Kh-m*T^jnhdB57Tv}=(lTG=&X&upF5Y$h5%8%_%Urj-*_&(Yqg>xX;<3+;^J(1 z^?)b-MhFDTFZiP4 zK%n%*SOx;+XGoyDYCmUkDNx?J&r+W8``)0)yU4!Spf!4_@V%DM-WzDM4bh05^pN-E z*p|fyr~%o^;L>eNdgw}svayBe3W@k}MKM&4KhzIpM~E{O=xY$vG^e|Nc5dfha_6yL zCD2zTz6}nJ6X}*bZ;k799K}dZ*_2ES{s6PZ=xgAEKEGPC)NohO;TRyaZ}mG=V)rs}7^`uOb%{)AYe!JrFdpBRSy(Q?fqnbP8OGbMPp>X>S5=7FE&L^vJi-8oefI z@HdHIO12pereq&{HhcRZ_ss8trtD@sF(aLw10Ju8I4yp#7qA_byV`HQ>Hw}I0f_Yc($kB*@%@rox0!-_$w@*mpym6 z!|_E@!*Ge&Fhs29;nxIKr`}WKbZnhRj6T`1+!-J5J??j#zPLE|+`CvycK<%+*lJ@z z47w>Sh$X-yN|Rq%n)qWdY_(ft%suyAinrGv@e=badM;r!C^-&jLP`3q8`@eky((u3x7@-n{J zEmgF#%ng$>;2gg2T28>8MZj7x0y>^!wEX;b^rH5fFXoSUGn%bX5up@cqNbmPIBvym zPh8l55qs_MMGfZR3x*u=r8J*~n?^3`kOy3oi^E^CT@p(mUcv2J@(H(vhw8dkU>0n||M~T=!f2#G0hdq9N$J2v0G5gV7V5_)a+A5!ct@6$H{C*+f<(spt z<4S@OLlga^@H1-AktX3uT<+C0A#nY@MnAIr74%0fs|21CRi3vo* z1HP={h=yZfxDyMO9Tgk;gnIg_ET4gW6hD$Y!CFGCG0*h(#*?O)UWT8a-er~v?}B5w zH=mc_(K*J{c-K3CjV4R3PI#Ehl}U%3ILq!DZ+;N=i+?U?*?hg-VDw=jwHr&;Cq38SsaN zPEvz|Q~T?@zx#>L>xLbWv_6YJFsWOdI>6tRSKPS1+X2pLb+Dcs!mqGG8WSs~3ZyY@ ziN%BM3Y?5&z~p8`kfB}fXO4*?%w*H3V^zAgQp&En1L6t`b~Lxjz@J*a4!D&adSyU5 z63wmFmhKVQLA&5KwX-uSGrCOZC&G@NDA*53F*l`CnBz|`>;9Tz#uWTA?uBW0*|uZB z4p0tC18Uo`!yE|1u!9b;N#-EP1w&?AiZ{Rj0Oo)~i|8&E^j$mJtQt^2n^n>;GXBsy z8n;j?)DLhZ>&m99n#w)rWnq`R9k3IffwbA-2EAI&+nZOPcsG^@z6l0XBDo=&G-)Vy zE$8BAkm?Q{=R>RRzaZ7U2O4)6R#%63gkfWrabm=H5BmP-R9ONhp$WlU4085GE z9~qb2{%0xW4x=q4UpZ?M-@^Z4DWNDJO9@4BX(@po2B-#KnEA>nxc0cTsn}QiB;XW6 z&V{H37~uD6aN<8VpKN!WHhSB)zA%T}?f#{F7xD1a`@>OUPJ=Ex5>d`m`z9iVVUF#N zB9(x<5aMi6|GR}kjb8` z1BFsX5zV)#{_(A74q3%Zh4KLz)8pDMQI=XNK7^d+ZB+}gMA2xR1m%w%w~Hfw6jA7q zUD7Qoh;H41=#~yyJ~N>X8Jddgb$+7P3&Xf$g?VRQusGsfv$IR%Y)It9b&kjKiaH~a ziq2}x2L6xazDH2l;qY62g=cKxFi}6=RzvPGDw+g^@Ra?EXbkevf<*&|9Dz$?X@VIo zip01g480@5n9gV&wi41|DJsb(TR6e=rYU-JZzlVy3E145g4~Q_E)2?ai;Z}AzYrOt zB22bBodBoug?@NQfcyh(A(_IXhXlx!;7bAW55BH53mEx=D!OOvS=uznOABO0)`)FG zK2LxU$Wb-y@b}9=r>|_Ws>lW*-gsx^m6iess>_Wh4vi{#rbB?vGVHdX)cwjw@-G7FVG;BP%4)kdj}<1rrn(a!_25k~6Xrl9Hq2A`HYuSQv(!6{g(0AU^V6 zT*RZ}LS-U0`Xi_Fyn;u~^Vc&RA@Rg;2U3q|@^ZxEsn*ZQ@wZx3In0)jjX`NzutcbF zf)zwXqG*Qf6)h+#v@o+TGp8u>8tDBKMS|Wxck+L|f4UUj_aHKZpw!(P3Gmc=mq;;~ zt?&U^(C8m%&8dU@r@Q2n1KnkmL=U}dl!zZKyX2E23MaH+DQIxB#Bjp<5r7*dHWO7T zSKKuN6?av8N~JJ(6a}Y{{7CZqt*b`8f)LX4gC@-?zKMM~Zvxwsh;)$P&P9v;9%gZ8 z2uuf=F&3crt}#SS^3~2c*rF@L1}4qi@L?&#ph2>D>}L@eyGDyx#hu{H4(QP*s6r~JEU&9}pE=V8e za;AQ7G$<}iOkK3eIkja}A(KOOJz7Rp<3rrdJQ$b`P=baSAPWzd5lrLYfZ>LEOc|@G zngN89DOhAQ4kO>b84d=nA-2<|guSs71=!9_G~03Rykt9`x!CA|>w`C+l?=^nR5ufb z7nusmZNmI&wdDlyP1s$o;eF<JZBhf-RPPO7qGd1WhJR7pctYY~QPrhs`}og6pBt3Day<@&ha z2ePiT-}BUu=F4Xbz$QP)-Bkv4hDFOJ;#oXYXX0T@P@VB7mIE_1Iif0e@YoqySDCO# z$@?>(x-B>qepXs&fYL`1ls=FTtqKtd@hZYhyVLIzsN(;VKNyi9f6U{tqVq@SW&U6! z&;^@eRnhrFFz$?c2ILQU@{ldjXgr>6=Mg47zC8SXBz{tAmxIE`1Lh8>$aMZ|TTu8{ zV_3;$$kA;JP`;yfra zDsmIdS2SliWaqlVj1tM{!M$43X)i1eVa<_>OZm!ne>=XDYe=|sgL?L*dSw4BC@^)) z5h*M%R#0GItkF{K7>MA`5p_h+_#bRqs11)6L-eu@F9K@AgAfYp5};T)B(@UJ^7qd& z1G0h6D10EJn1PJ)pOtL?GRj|86#ivG;cK@uqg3f<)%v9_ch@{vFY-z489A2q+{_~D zq9tV>ChYol$0GN+WoU(jgu7XymGxBKJ`M{#-(phKC10G^Z0XJLxwpP?t@(%1!I~ipN_%LRX}m0_?~5p z64C*;!NoV%&4^)@*Ga>mckcW6a{K6V&TO8w1xs!TcuAb2QA*Jwqj%2yI>^A*N!bk= zu+}jG?{(|!?LPqDNxG2gm#YUWf1|)fv0S^mXU6-+5-xb-o2J)d;_+=$GjeJNB(CH< z;^S3L{L2)Tc9j&QsIDM}FooOX><{s+Dv4=(`?o!Lv+B!W z$OB^LVcM+Yd)qFi9LfBld(IeuOQOYQNU>+)FE<#e7)j zNt?&#_%v+l9$R^lSf}@MxB746fkTIe$sMcQ^@AKavj}U@5>_&ZA?_Rv6OUdHp-;A; zyYVfyO+47!SLgU7=b5+t`~D;>%fO2!mJqO+pKsveQAyjTlJ#-8t=+R9yqR}c{oN5#pUoqTrSDBk9v^f2?|$5C zsQE)csG#UVj4LOGfdw~Yp|Su_hab9lK%$0d#ZaoA%)yLSxl;~{_FXqx%5Z)}l%&LG z)m+_2fXp*<3BeKL2aoTH$FsU2q2~jDY(%Q0cQSIsCTDKeCk#TH)--NwXMluX&z$Vgjn-7}kP6_B&U@A!7N57}K7 ztdoS(2{+Z!D|!12r=h~wi0wkJey_bZ`hJ=Fes#U{RPMpS7jZl=wZW`5)eMu{R)FDm z={W{9P5EFI)JJ_iZ>eAn)7h$q?nN)gGPwA&cZ|V3_S*u@FjU z->$pW5SKLC|D=?|@(A8dy+KoneBj;(sD;B?xH-VfNJ({3gx9yVX0j(fTO~>+a+C z7iCo`N3UluhDT*`!RrIeH}_RDeUB#)8&VDJH%Y;Kkr+M*DtsjTw8fe-9ttW(0vU32 zP{{yx;kU~8&LjhtSiDRKQ$+`rPRINcbWkZmL3NAgK1ED?r)QeJJ2?Q64+nXv=U7*5 zBc-H8k@s0ON^W&p(1|97&#_Ld@?mI!s^VXyac_SXj)1CJ5+C;is@l2EFIXwVsD;kE zfk}LW@YslK`*cH-$g5= ztBCtK^}4z z6zwZe((cc@E8R8(V_4RePQ-^yo$qG*`>GK#pNC^CYg$ev)B{E9si3L*^d_tkjZ1;MEk`DC2W`(f3cU!PA6 zPZ@5yg2wIT4)SVjdu03J(`1v~)o*uM-!pI*ApA0U!)}s(7bcX`H0Ox+jB$U+H(gZ| zyal`XTFaxSn80}}Q0p<#MickThqkN|Gc|gCI^>GpxQ~y17T$YE%QKrlElJc5DqtC> z2_~PeZWdPh1Pw+yO*bB&PMd~MF4P;{f$cfb>D-FpOYCfQqxTdhTmZ|u zLIjh*YkgFwej1?yDp;?H7mtQ@kO5{+@aaq5`$3|>FrwW7E$!&asANM*a1q>Kj?=V}EhsKNEcWhWt5?%w)PGC^( z*Aj|=!1BRQoMeihZ=dN52_vn=>EC-9Q^Z=oN8vGjnf4--vqHlmMpg(8sSx@gzGE_B z$jMX zzTTY^Q=#0eSfOPaO6E^a{-WZM$#{h2+O>jM9RiV$+5uUascToei4+#`IbGJ|9#VdM z_I257Z20rEfYC#x4;`lJh!i|FUA@QdsSG^xyTT_2qC+AIE35wDA`Ag%se!|}*LeDH z$v{|zMoiFvQ)S(5V$8BKP*?@SFfPLi1BBHZoc2C%eEf)~5isn|!m=Nh@SW@5G`#Y@ zE`E1QaH-#@3L;)>##{Ukud;E41$6e%$5f{B>r9-S*W(*K(qicu<8bYRX zkBL+05Ucy^5MQ|!&VMUBPe!bB!&ZIz>`HRSC(%>BjHfR0%8PMD5Yzhb z-R)aP&3ES4sujO9>Vy*})wirU5ie+v>~5jx(3Ok$GUsf@gPb#C3384*-W>52_i!lZ z^zLVLtv|eyqj7@-&e?HDTrYpE(~=y+#}|7uUi}pOVS=MLt%Dpu$?*TCp2bRrO~zY$ zLQw*U`E=JOVSAEE?y^|zv<7=0*)W8{qFT2As`Lp~r*!6j< zL{PM!gc|LxxjQ~S6;fOjE2wzS4Rwxn&{ zqQN1A-ZL6ZKIlE$qU2MEGR+mo=QLnP1T(GrVWLQ*GM`pZf2*vgBU)u|@X$R==HZQu z`qsJO#8WoM3X(Sjl2EDuB>4xqlS3d$Hv$ck+Egn?Eitnd&>$&by>$TsNgS3sj=nAI z5ub_DbT&`I1b(4nH8UcOP8c0`YB*2mI4fKC%K}lScz?~dy0YWEn4v@q- z3WAepLX!>&vK3~`YOB9jpj4fsJ4iZIe`h*mmbj3biV(?VSW=9S(iPq;x2+!-n#DRi z*A+v$AN`ow7}40?eIHOzzS&u`L8^lUEUXxmEWP>Q7q_8>#h`}dUzV&?djzOi+)&Np zzN}f9H`sZ#)g}GCarn@<#{%FUK@dH`XdDe=|A%`5F;V|;kA>Wxl=`wTM@VU7*cAhg zY`+^nbKjK4_F}pgn3T3tTh#@XJ zuv5e4t8awy^-n$(Fb$d*VHkTdV51fg8--D1u_rqlcjw&T@1{?^9khtNT2oN-e&+j( zx5(#kwqODn#q;gGTOWUqzID>FlD25y_WB&=NNR~KTp%gY-H_=(YV1CZZ=&^Zww%`T zwTo$SB(p)j*CV1@+v<{NoA5?ND!5WpSp0d8OWLG!Wn)ovIz1K_p&(sh_J;FbJu>M0 znES-XU%&p=4SR@`2w7QU3t7>&{tU*(h9U|dlk_s8NTGl)+GC z{Q)5qP&go|O7`CkL znrg+L3ESVvaL5ThG=7{~@o4{m~E)^!JSG!fwdOOulH5k!O^+(-(h z2Ur?I3icEYrGJCX!<57F07?&cprQ0t`}8K#-O7XeS2iud6b0oBmRsI~D;b>bBvc7} zNJN_y?d`kY;VfCp*!6fBc1#|gb2Fi<4@^Bxv+&zQ3uXk7Ymcsx#kxFLU6aihpKX(Z zLTZlwGNd+{KuFDWD3uC*-YF)W>G<&W>yOP)f1R=Tj=sO-Gob>%rz7U*|EU|BmLQ(o zN&Xv8Z>Up`0ucX4K-J^9ll(WJW-O&Q+en1^EgKk9hpSlLm0f91ccAF-)*R818b2uc ze`hIw+SgU0y{)9alD$6Dx(!b`%YEHH9RC4{s$-uL{u2*B0s&r5?9Na4*qx$56<-Lh zK{^r_w&A6YWC-aqxIH;Vft!$pg}nh^bd1rpF)Y$tqr&WG2Cp z#c8+qkMfz-68PReBMJ4MQ=xwrX;F%WT^!+iXCp&kbOKS)`~hKmr+ukm5wWU4+Cf4q zC)L4W!k5MOU4X955cRMz@jj#*cqzVJYNn(5Qi8?BJmt$8tO$#OU4y@ZKABqU%Ut|c zZi(VtJcYrFD=NXZ_m3QrOs?<#R5vQ@m&m;55n0NAZhWZH=vw#<1%Mift(esBtD_iZ@>Cif*^*R zvl0^__k0LxeIyP~FXdMsl`2}Dl~vYrF&@*$6=&9H5W7{|{^r}v6P=Q3VNL5{vJsU{ z?B5aKB-8H*=LK*AMz}nmgE%?NRCBE@x8<$76*!v-}I^Ztt;FH6WbSMGfY%xP@7 zK~q$r|GDxKiF4^RyuF}qk0$fyWxBHuxu{p z(Lcg^ba)@Ek7EcVGh5!brNUi9B}iiT=+I-s1Uer$3?=urolC5woNGb9@9d#Mskt|EZh61Wu9txiG%5AqrUpRPS#}>SNUroFm<8)2*g$V|2N1(dB3zr*;KiJyvW;nwOYj>}H&xcv$ z({Nfj(;K8kSMm(oD|a50+4_Duh->E$>-U+|e>>;UO+8Jc^8%!+e8N5gofjhXk@?p_ zx{?(PwnL{YL?)E4grIyS1m&yOd&Ei24lgpFgJuumU}zHeK8&a-@c5QZIZQ}Tp`8_X z*!|TvuWq8?7fpPxPn^9x=VU@V0=f%RHPats`w923&3uq7G&Ups9lPSLjWawv?gfTf zAOMn*x@E4kEq?^7hY^v$ZX^ODG2gOw7B+BT4!Z&1 zH*C1lL9Vyfd*&^fCzoYLgF$Y+&P}76{oe;c*H?fcraf#}hsHcEG0H5bVTmU9ywWpW z>a$k+2(xVq*q9!x`PRXcTr@;}wcHN(ERk~`ICAhGe1-V`0<8N*NgD<8 zvbkMZ+RM7)Q6s0*{#*3j8F*jj1}MBAzuhSOL0~PK^zdA>-)nOL#voi47a*HPHH{o=~l}5{2Je%z{mFmA8nnW+H${Piqg1O3O|^$=pUN( zwkD=^9xj6<=4X@yXuUNt<@SfFx{9i=#E7*uf}qR!#zo9i!)6UQ4@_D=GE9|-@AkYhYnYOK!UJ@PhFVdb)2qhk21ZiMM7wsaTG91K(uEH!k z*5FLm69Zc=+P->rjnKoA&-kxR*kbA2nQ6Zdb4~Bkl>}b&M0f3pUNr1h-h-cVpFAHb zORFNZ=z35ihPtwdZP6u5Y&c9wAG{CiB~R%*^@sP8naHhWAE& zrOZhiw+vhi)*(coJ1b0J1)ykX!DMc!B~;REP_wb|8{)awd3 z$ru>r$aq>)P5)k9%LYjJbbh~KVZ7ES|JEHxPaVpeEIO16hn1hWWFo;)G3#JT*lnn; zyn)>|TGzt3&kCBJ?n{EcFQY9!Ki&Akp(_&aDi{nSp;S-_*0$!}wkbz}i#W@+jdbkpRu{RzS46&$4s>%Or7Vbq=fqeuHA~M{+^$BHtDtfYtC1Q z@dzBPeE%5^yL=D1kADd2>Xiv)>FDc=>>eziaLQ9TJ}$OO*`^y4VfEMkD_ipS-D<#$ z`cJuqql1c}rqh8)8$8d7-R!6w^p5qks^XF-JSDv zQZmBU^w=8QDrLOIMrpTdmYFqI#Hooc9Pq9^idmYr@Dj;lIHAtldZTJ;_xSI5(r6!H z`WOWnv4+!ox_kXnUn+lG-3nwXJ73sbC@-0gso4}`C>~8R5-QNoE9%Ozfe*Kyk-zRY zoxPI7_2Yz=Cfh6@X)LD_eu8qL`d_&_0ei;JfTKjo+H^Z`kPGsj0COFGczBW0)AHzs`A#ov~Q;N_! zrnY#0PozxJc3@`RDEnB3_C~tmo zq#{Lrsj{ug&8^4!d4JjVfH732h^YFaw??u((89boQxoojDeD9n= zvU`;LI;#FJ)5mZZGtMt$hm-s*CZ{#G%Rl98jF!SpxSKtso{B{~Ei-bxuJfAydRJ2r zsc9Og<2n^~l&LK=^t#11v(~i%PgO&s`=!kvnm3`_th1HMD;B$=^$Z-3Vis%=v?QA^ zWx;~XGKowV>PeW6=!=Dk7o$eVoZ24ik1R@XcBe=Ym#{ehEK_^Qi}}M0k@t@h)-8BG z=6d#j^Pm{EIbIYKA$Z=|^7cFj$uoD6Koo=1SgPgSuKRqU^jUiJR9M5Lc6s^Ak$T!p zm4gLti0HsuSN@82IdNgLeiuKIqG{^QQuLvMjQ)4seZ&ce-c?9LvD_lSw17(|>M zqO;fS%h}gFDYo;7#IwPni*%c;Df8};ch@wsH($e3?9Sp{HjEMTP~iR&lCi) z-z@BTGS3yY3I&zg_jks-F&cI6rtC_OU^`c+jPtc8KE!LL|WPD0Vq> z%xBTE%v~7xKl_6O)fbFQ(^Tl=GYW2#t8Med||ksPg(7%kP(%8}o_c zwSTypa;ftpiM)3vt2~}}uU{OPc(|WkWIxI-NmU*|i4YKBritcSlBQ&q4+Z|jDL)Eq z%+9R+Q7yQ@MZxD~CDD-Porfr)2!F4UI<4oOjr#sN>J@R-<3-wUpT)u%^O#aA7*i_7 zh}IgD0ZsX78pnvZhgiP2pY_w?o4>Sidfq*!1)nFPS+%K}vPmmx%g%S$hm4LJ2POym zL-PhN#223Z&b&$L=%*wcck>Pb7ss%W{9!qrURwCEK)+TJwT;Bg;-m>8ebD%+e*6l> zl7!K{*ORH;f78zP_K_OGA>lYqlFpg>7314_#~r34RotId^QW&Bw10@O)=9C)5PX>D zIY{;Hd){O1w`LgS+|oZDPWq|7tB-CnHRF83YvJd>;Z$oGD7qB2VM;EIY)zf~%}P{t zt6$EwRMFRE{Y7KPL0wN?0AkJ3XY8)b{E@i)-FH6ugb4v;y26dMecjSQSRgP~u9u}V@cH=XX3M&q)73_S9WOGXr4@UD9@^`yJCnCs zXB!!2V>YYu3VRu!(%KZ%^aRALeR%MAr=@N6=*>@Uj)sz{AH8YXb#E3Bd5DR#b(jMXeIiD@^$qmi7FAY42;I_Z^wA_ufTi0~nh->)mVil^=jCXeoQ?tNe zP&s!o!Yg}8-OJ}FExI8U4soa8f;kWr878|aVp1^F6owS%9$eeem^>f|%qH@0z)f7)e)@fVOy z8&m}g5*C!6Hg~vq&L4g=-DYDcYZ>PNJ>ZHRL~H#m^v#OV?@{C-o9Uf|AN~{)dq=!< zik>KO%gE-}Hjwz$XpRv1RMcyCu)VTxCD!Jh7SwBTl0PyvmdW?dXYT3lHH>Aa5WA1; zY(-0lVPBo?JT=CdUVN64;E>R)k~jP7jrDnl(;?ZJs#z*yhF54WJjYOSFo{R|Uc(vr znOU_$!`{O9)vZ~hpvjwqO6HS884NEQGuC~c<5$V&@2ct?{PI0QG$gL~9yha3%JUvC zU3}C?G>>{P$&3BcYoD!;LPKx=aLc2#b-eg_(qfu*XVNzpFoC`(Oz8pyB#~~ zsBiISeQe{1lh(9TX`7+XODoPoe(6dtXI+Qd2cl*ddfzr#*C9q3UPnpJUbxVnF`ayG zHK#OK{qWepAvwYqA)r3rP4CuY!EXHc`yJ$fWiu!E)ufMnIBR_@7ES)}s-9d1d&HV8 z$9;9GkTt&$#To;R7saMaLfaK}8M9v&ewU^VIhFRuY)(ZqGwkS`h-Y4iz2iN5n%pE? z52kZtd+*M#rpgyETu=j;u?05V?$2L)sOfShe^&_G4!?=q-(mLuG on3OO|7z~CFlW5DDo{ML_!O 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%0D;)%zJ>=%nU&2 z%Yl7>LbQ6_#4EKbI*X^M(|6^c@N=E-%^uao&L}*XI9aZ$yqzLf-8r3fuG0d(vEzvS z4s_snlDelphi.Personality VCLApplication -FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse4360FalseFalseFalseFalseFalse30821252Rodax Software S.L.4.3.6.0FactuGESFactuGES4.3.6.0FactuGES.dprFalse +FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse4370FalseFalseFalseFalseFalse30821252Rodax Software S.L.4.3.7.0FactuGESFactuGES4.3.7.0FactuGES.dprFalse diff --git a/Source/Cliente/FactuGES.rc b/Source/Cliente/FactuGES.rc index 09c03f7..ba8cc98 100644 --- a/Source/Cliente/FactuGES.rc +++ b/Source/Cliente/FactuGES.rc @@ -1,7 +1,7 @@ MAINICON ICON "C:\Codigo\Resources\Iconos\Factuges.ico" 1 VERSIONINFO -FILEVERSION 4,3,6,0 -PRODUCTVERSION 4,3,6,0 +FILEVERSION 4,3,7,0 +PRODUCTVERSION 4,3,7,0 FILEFLAGSMASK 0x3FL FILEFLAGS 0x00L FILEOS 0x40004L @@ -13,10 +13,10 @@ BEGIN BLOCK "0C0A04E4" BEGIN VALUE "CompanyName", "Rodax Software S.L.\0" - VALUE "FileVersion", "4.3.6.0\0" + VALUE "FileVersion", "4.3.7.0\0" VALUE "InternalName", "FactuGES\0" VALUE "ProductName", "FactuGES\0" - VALUE "ProductVersion", "4.3.6.0\0" + VALUE "ProductVersion", "4.3.7.0\0" END END BLOCK "VarFileInfo" diff --git a/Source/Cliente/FactuGES.res b/Source/Cliente/FactuGES.res index 2652a546589718e478f81bfc7d6fc06710d6593a..437687161ddd0d92a269fa6ec058cf12c586fe31 100644 GIT binary patch delta 42 xcmcbxpXYrJf_(|s&zh-Hvk_Y4H5tV delta 42 xcmcbxpX Params = <> StreamingOptions = [soDisableEventsWhileStreaming] diff --git a/Source/Modulos/Pedidos de cliente/Model/schPedidosClienteClient_Intf.pas b/Source/Modulos/Pedidos de cliente/Model/schPedidosClienteClient_Intf.pas index 473b77f..ac8e9c5 100644 --- a/Source/Modulos/Pedidos de cliente/Model/schPedidosClienteClient_Intf.pas +++ b/Source/Modulos/Pedidos de cliente/Model/schPedidosClienteClient_Intf.pas @@ -9,13 +9,13 @@ const { Data table rules ids Feel free to change them to something more human readable but make sure they are unique in the context of your application } - RID_ListaAnosPedidos = '{B03310DC-4A84-4779-BF7B-33FF0F741912}'; - RID_PedidosProveedor = '{95F27FC7-2016-4B25-A964-29A647BEB277}'; - RID_PedidosCliente = '{11401A1B-9CA5-4528-BD63-FCA01EA10603}'; - RID_PedidosCliente_Detalles = '{69AF4753-C444-4247-AAD5-59E95435B041}'; - RID_PedidosCliente_Articulos_Pendientes = '{5A42E580-E6B3-4B44-83B7-FDFDCD5C1980}'; - RID_PedidoCliente_ArticulosPendientesPedirAProv = '{23A4639E-E866-4BAB-969A-DC5AE706B5CB}'; - RID_PedidoCliente_ArticulosPendientesPedirAProvNoArticulos = '{35396E3E-190B-4197-9979-7753ED63C5B7}'; + RID_ListaAnosPedidos = '{0EEEB91E-B94E-492A-9B55-D9D69121A15D}'; + RID_PedidosProveedor = '{42F2265A-DFC1-486D-8B10-CE0B7882F99B}'; + RID_PedidosCliente = '{114B3685-0624-44E5-A2E8-9E41682B17D3}'; + RID_PedidosCliente_Detalles = '{79001C87-40EC-4A80-AAEC-469ABF51992A}'; + RID_PedidosCliente_Articulos_Pendientes = '{3C095CF4-7C99-422E-9353-41457E08D356}'; + RID_PedidoCliente_ArticulosPendientesPedirAProv = '{0918991D-A6AF-43DB-BE3A-EF0BC296C52D}'; + RID_PedidoCliente_ArticulosPendientesPedirAProvNoArticulos = '{6AEA860C-3542-4087-9AC0-E9BBC0BE53A0}'; { Data table names } nme_ListaAnosPedidos = 'ListaAnosPedidos'; @@ -81,6 +81,7 @@ const fld_PedidosClienteNUM_CORREOS = 'NUM_CORREOS'; fld_PedidosClienteID_PRESUPUESTO = 'ID_PRESUPUESTO'; fld_PedidosClienteREFERENCIA_PRESUPUESTO = 'REFERENCIA_PRESUPUESTO'; + fld_PedidosClienteTIPO_PEDIDO = 'TIPO_PEDIDO'; { PedidosCliente field indexes } idx_PedidosClienteID = 0; @@ -119,6 +120,7 @@ const idx_PedidosClienteNUM_CORREOS = 33; idx_PedidosClienteID_PRESUPUESTO = 34; idx_PedidosClienteREFERENCIA_PRESUPUESTO = 35; + idx_PedidosClienteTIPO_PEDIDO = 36; { PedidosCliente_Detalles fields } fld_PedidosCliente_DetallesID = 'ID'; @@ -215,7 +217,7 @@ const type { IListaAnosPedidos } IListaAnosPedidos = interface(IDAStronglyTypedDataTable) - ['{B3BAA253-80EF-4183-8FD5-6CA4B0593DAE}'] + ['{ECDA790C-408A-47C4-B0E9-F3E501591DCD}'] { Property getters and setters } function GetANOValue: String; procedure SetANOValue(const aValue: String); @@ -250,7 +252,7 @@ type { IPedidosProveedor } IPedidosProveedor = interface(IDAStronglyTypedDataTable) - ['{A4FF4E03-9C95-4B87-AFCF-B3A8F53EC5CC}'] + ['{23013245-EFE7-4449-A38A-C01A1D8024D3}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -321,7 +323,7 @@ type { IPedidosCliente } IPedidosCliente = interface(IDAStronglyTypedDataTable) - ['{1B16009A-2B49-46C3-955E-6FD4F533D570}'] + ['{685137A5-B5E4-4EB9-8268-7D49FAF6B111}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -465,6 +467,10 @@ type procedure SetREFERENCIA_PRESUPUESTOValue(const aValue: String); function GetREFERENCIA_PRESUPUESTOIsNull: Boolean; procedure SetREFERENCIA_PRESUPUESTOIsNull(const aValue: Boolean); + function GetTIPO_PEDIDOValue: String; + procedure SetTIPO_PEDIDOValue(const aValue: String); + function GetTIPO_PEDIDOIsNull: Boolean; + procedure SetTIPO_PEDIDOIsNull(const aValue: Boolean); { Properties } @@ -540,6 +546,8 @@ type property ID_PRESUPUESTOIsNull: Boolean read GetID_PRESUPUESTOIsNull write SetID_PRESUPUESTOIsNull; property REFERENCIA_PRESUPUESTO: String read GetREFERENCIA_PRESUPUESTOValue write SetREFERENCIA_PRESUPUESTOValue; property REFERENCIA_PRESUPUESTOIsNull: Boolean read GetREFERENCIA_PRESUPUESTOIsNull write SetREFERENCIA_PRESUPUESTOIsNull; + property TIPO_PEDIDO: String read GetTIPO_PEDIDOValue write SetTIPO_PEDIDOValue; + property TIPO_PEDIDOIsNull: Boolean read GetTIPO_PEDIDOIsNull write SetTIPO_PEDIDOIsNull; end; { TPedidosClienteDataTableRules } @@ -693,6 +701,10 @@ type procedure SetREFERENCIA_PRESUPUESTOValue(const aValue: String); virtual; function GetREFERENCIA_PRESUPUESTOIsNull: Boolean; virtual; procedure SetREFERENCIA_PRESUPUESTOIsNull(const aValue: Boolean); virtual; + function GetTIPO_PEDIDOValue: String; virtual; + procedure SetTIPO_PEDIDOValue(const aValue: String); virtual; + function GetTIPO_PEDIDOIsNull: Boolean; virtual; + procedure SetTIPO_PEDIDOIsNull(const aValue: Boolean); virtual; { Properties } property ID: Integer read GetIDValue write SetIDValue; @@ -767,6 +779,8 @@ type property ID_PRESUPUESTOIsNull: Boolean read GetID_PRESUPUESTOIsNull write SetID_PRESUPUESTOIsNull; property REFERENCIA_PRESUPUESTO: String read GetREFERENCIA_PRESUPUESTOValue write SetREFERENCIA_PRESUPUESTOValue; property REFERENCIA_PRESUPUESTOIsNull: Boolean read GetREFERENCIA_PRESUPUESTOIsNull write SetREFERENCIA_PRESUPUESTOIsNull; + property TIPO_PEDIDO: String read GetTIPO_PEDIDOValue write SetTIPO_PEDIDOValue; + property TIPO_PEDIDOIsNull: Boolean read GetTIPO_PEDIDOIsNull write SetTIPO_PEDIDOIsNull; public constructor Create(aDataTable: TDADataTable); override; @@ -776,7 +790,7 @@ type { IPedidosCliente_Detalles } IPedidosCliente_Detalles = interface(IDAStronglyTypedDataTable) - ['{040BF8A0-FB19-40A1-B02F-37914032D78C}'] + ['{7B004CF5-7D51-44A7-837C-248351E59D5A}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -967,7 +981,7 @@ type { IPedidosCliente_Articulos_Pendientes } IPedidosCliente_Articulos_Pendientes = interface(IDAStronglyTypedDataTable) - ['{23014D12-09EB-408F-9986-D7E3297DE88B}'] + ['{0B5561A6-EC77-4F1A-9790-4D6FD000EA26}'] { Property getters and setters } function GetID_ARTICULOValue: Integer; procedure SetID_ARTICULOValue(const aValue: Integer); @@ -1038,7 +1052,7 @@ type { IPedidoCliente_ArticulosPendientesPedirAProv } IPedidoCliente_ArticulosPendientesPedirAProv = interface(IDAStronglyTypedDataTable) - ['{8CBCEE12-469C-4C52-B76B-9BDE025988D8}'] + ['{3D4781F8-058F-449F-A40F-2D9D61A7546C}'] { Property getters and setters } function GetID_PEDIDOValue: Integer; procedure SetID_PEDIDOValue(const aValue: Integer); @@ -1181,7 +1195,7 @@ type { IPedidoCliente_ArticulosPendientesPedirAProvNoArticulos } IPedidoCliente_ArticulosPendientesPedirAProvNoArticulos = interface(IDAStronglyTypedDataTable) - ['{2A72E2BD-CAF4-4187-A671-8BA3E9F36C27}'] + ['{3F66BB5C-DBB8-42E9-BEC7-1DE96E609CAD}'] { Property getters and setters } function GetID_PEDIDOValue: Integer; procedure SetID_PEDIDOValue(const aValue: Integer); @@ -2234,6 +2248,27 @@ begin DataTable.Fields[idx_PedidosClienteREFERENCIA_PRESUPUESTO].AsVariant := Null; end; +function TPedidosClienteDataTableRules.GetTIPO_PEDIDOValue: String; +begin + result := DataTable.Fields[idx_PedidosClienteTIPO_PEDIDO].AsString; +end; + +procedure TPedidosClienteDataTableRules.SetTIPO_PEDIDOValue(const aValue: String); +begin + DataTable.Fields[idx_PedidosClienteTIPO_PEDIDO].AsString := aValue; +end; + +function TPedidosClienteDataTableRules.GetTIPO_PEDIDOIsNull: boolean; +begin + result := DataTable.Fields[idx_PedidosClienteTIPO_PEDIDO].IsNull; +end; + +procedure TPedidosClienteDataTableRules.SetTIPO_PEDIDOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_PedidosClienteTIPO_PEDIDO].AsVariant := Null; +end; + { TPedidosCliente_DetallesDataTableRules } constructor TPedidosCliente_DetallesDataTableRules.Create(aDataTable: TDADataTable); diff --git a/Source/Modulos/Pedidos de cliente/Model/schPedidosClienteServer_Intf.pas b/Source/Modulos/Pedidos de cliente/Model/schPedidosClienteServer_Intf.pas index 14aeaf8..f744192 100644 --- a/Source/Modulos/Pedidos de cliente/Model/schPedidosClienteServer_Intf.pas +++ b/Source/Modulos/Pedidos de cliente/Model/schPedidosClienteServer_Intf.pas @@ -9,18 +9,18 @@ const { Delta rules ids Feel free to change them to something more human readable but make sure they are unique in the context of your application } - RID_ListaAnosPedidosDelta = '{5366095E-0D85-41E6-BDE1-4A242E0624D2}'; - RID_PedidosProveedorDelta = '{15E9212C-237F-43DA-93BB-F731DCF39D72}'; - RID_PedidosClienteDelta = '{67B51E78-FF9E-4546-92F0-FF273F32237F}'; - RID_PedidosCliente_DetallesDelta = '{503A2F9C-8B5D-4889-8071-8EF2D1716D29}'; - RID_PedidosCliente_Articulos_PendientesDelta = '{73729328-922F-4458-A20F-ECE1969FD04D}'; - RID_PedidoCliente_ArticulosPendientesPedirAProvDelta = '{E0FA4DF3-2220-4992-9563-754ACEE319D3}'; - RID_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosDelta = '{054BBD78-D3EB-4180-BDA1-19DEC4400A55}'; + RID_ListaAnosPedidosDelta = '{2DABA86C-B83B-47E8-AC84-4582BABA59DA}'; + RID_PedidosProveedorDelta = '{E6BDD968-AB7B-495D-96E5-84F8FB0923D0}'; + RID_PedidosClienteDelta = '{C42DF2D8-C429-4A99-8CFD-FD381E24C388}'; + RID_PedidosCliente_DetallesDelta = '{729FD8AB-C4B8-4F8E-AFCD-2C6E926C0EB8}'; + RID_PedidosCliente_Articulos_PendientesDelta = '{599B5358-26CF-4318-ACE3-64EF8ACA44C0}'; + RID_PedidoCliente_ArticulosPendientesPedirAProvDelta = '{C84B6802-337E-47D5-A769-8F54782202C4}'; + RID_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosDelta = '{26C4CE72-8E30-424C-9054-8E6BA023C82F}'; type { IListaAnosPedidosDelta } IListaAnosPedidosDelta = interface(IListaAnosPedidos) - ['{5366095E-0D85-41E6-BDE1-4A242E0624D2}'] + ['{2DABA86C-B83B-47E8-AC84-4582BABA59DA}'] { Property getters and setters } function GetOldANOValue : String; @@ -54,7 +54,7 @@ type { IPedidosProveedorDelta } IPedidosProveedorDelta = interface(IPedidosProveedor) - ['{15E9212C-237F-43DA-93BB-F731DCF39D72}'] + ['{E6BDD968-AB7B-495D-96E5-84F8FB0923D0}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldREFERENCIAValue : String; @@ -124,7 +124,7 @@ type { IPedidosClienteDelta } IPedidosClienteDelta = interface(IPedidosCliente) - ['{67B51E78-FF9E-4546-92F0-FF273F32237F}'] + ['{C42DF2D8-C429-4A99-8CFD-FD381E24C388}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_EMPRESAValue : Integer; @@ -162,6 +162,7 @@ type function GetOldNUM_CORREOSValue : SmallInt; function GetOldID_PRESUPUESTOValue : Integer; function GetOldREFERENCIA_PRESUPUESTOValue : String; + function GetOldTIPO_PEDIDOValue : String; { Properties } property OldID : Integer read GetOldIDValue; @@ -200,6 +201,7 @@ type property OldNUM_CORREOS : SmallInt read GetOldNUM_CORREOSValue; property OldID_PRESUPUESTO : Integer read GetOldID_PRESUPUESTOValue; property OldREFERENCIA_PRESUPUESTO : String read GetOldREFERENCIA_PRESUPUESTOValue; + property OldTIPO_PEDIDO : String read GetOldTIPO_PEDIDOValue; end; { TPedidosClienteBusinessProcessorRules } @@ -425,6 +427,12 @@ type function GetOldREFERENCIA_PRESUPUESTOIsNull: Boolean; virtual; procedure SetREFERENCIA_PRESUPUESTOValue(const aValue: String); virtual; procedure SetREFERENCIA_PRESUPUESTOIsNull(const aValue: Boolean); virtual; + function GetTIPO_PEDIDOValue: String; virtual; + function GetTIPO_PEDIDOIsNull: Boolean; virtual; + function GetOldTIPO_PEDIDOValue: String; virtual; + function GetOldTIPO_PEDIDOIsNull: Boolean; virtual; + procedure SetTIPO_PEDIDOValue(const aValue: String); virtual; + procedure SetTIPO_PEDIDOIsNull(const aValue: Boolean); virtual; { Properties } property ID : Integer read GetIDValue write SetIDValue; @@ -571,6 +579,10 @@ type property REFERENCIA_PRESUPUESTOIsNull : Boolean read GetREFERENCIA_PRESUPUESTOIsNull write SetREFERENCIA_PRESUPUESTOIsNull; property OldREFERENCIA_PRESUPUESTO : String read GetOldREFERENCIA_PRESUPUESTOValue; property OldREFERENCIA_PRESUPUESTOIsNull : Boolean read GetOldREFERENCIA_PRESUPUESTOIsNull; + property TIPO_PEDIDO : String read GetTIPO_PEDIDOValue write SetTIPO_PEDIDOValue; + property TIPO_PEDIDOIsNull : Boolean read GetTIPO_PEDIDOIsNull write SetTIPO_PEDIDOIsNull; + property OldTIPO_PEDIDO : String read GetOldTIPO_PEDIDOValue; + property OldTIPO_PEDIDOIsNull : Boolean read GetOldTIPO_PEDIDOIsNull; public constructor Create(aBusinessProcessor: TDABusinessProcessor); override; @@ -580,7 +592,7 @@ type { IPedidosCliente_DetallesDelta } IPedidosCliente_DetallesDelta = interface(IPedidosCliente_Detalles) - ['{503A2F9C-8B5D-4889-8071-8EF2D1716D29}'] + ['{729FD8AB-C4B8-4F8E-AFCD-2C6E926C0EB8}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_PEDIDOValue : Integer; @@ -770,7 +782,7 @@ type { IPedidosCliente_Articulos_PendientesDelta } IPedidosCliente_Articulos_PendientesDelta = interface(IPedidosCliente_Articulos_Pendientes) - ['{73729328-922F-4458-A20F-ECE1969FD04D}'] + ['{599B5358-26CF-4318-ACE3-64EF8ACA44C0}'] { Property getters and setters } function GetOldID_ARTICULOValue : Integer; function GetOldCANTIDAD_PEDValue : Currency; @@ -840,7 +852,7 @@ type { IPedidoCliente_ArticulosPendientesPedirAProvDelta } IPedidoCliente_ArticulosPendientesPedirAProvDelta = interface(IPedidoCliente_ArticulosPendientesPedirAProv) - ['{E0FA4DF3-2220-4992-9563-754ACEE319D3}'] + ['{C84B6802-337E-47D5-A769-8F54782202C4}'] { Property getters and setters } function GetOldID_PEDIDOValue : Integer; function GetOldID_ARTICULOValue : Integer; @@ -982,7 +994,7 @@ type { IPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDelta } IPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDelta = interface(IPedidoCliente_ArticulosPendientesPedirAProvNoArticulos) - ['{054BBD78-D3EB-4180-BDA1-19DEC4400A55}'] + ['{26C4CE72-8E30-424C-9054-8E6BA023C82F}'] { Property getters and setters } function GetOldID_PEDIDOValue : Integer; function GetOldID_ARTICULOValue : Integer; @@ -2447,6 +2459,37 @@ begin BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosClienteREFERENCIA_PRESUPUESTO] := Null; end; +function TPedidosClienteBusinessProcessorRules.GetTIPO_PEDIDOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosClienteTIPO_PEDIDO]; +end; + +function TPedidosClienteBusinessProcessorRules.GetTIPO_PEDIDOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosClienteTIPO_PEDIDO]); +end; + +function TPedidosClienteBusinessProcessorRules.GetOldTIPO_PEDIDOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosClienteTIPO_PEDIDO]; +end; + +function TPedidosClienteBusinessProcessorRules.GetOldTIPO_PEDIDOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosClienteTIPO_PEDIDO]); +end; + +procedure TPedidosClienteBusinessProcessorRules.SetTIPO_PEDIDOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosClienteTIPO_PEDIDO] := aValue; +end; + +procedure TPedidosClienteBusinessProcessorRules.SetTIPO_PEDIDOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosClienteTIPO_PEDIDO] := Null; +end; + { TPedidosCliente_DetallesBusinessProcessorRules } constructor TPedidosCliente_DetallesBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); diff --git a/Source/Modulos/Pedidos de cliente/PedidosCliente_Group.groupproj b/Source/Modulos/Pedidos de cliente/PedidosCliente_Group.groupproj index 576ac24..66e2719 100644 --- a/Source/Modulos/Pedidos de cliente/PedidosCliente_Group.groupproj +++ b/Source/Modulos/Pedidos de cliente/PedidosCliente_Group.groupproj @@ -31,6 +31,7 @@ + @@ -401,14 +402,23 @@ + + + + + + + + + - + - + - + \ No newline at end of file diff --git a/Source/Modulos/Pedidos de cliente/Servidor/srvPedidosCliente_Impl.dfm b/Source/Modulos/Pedidos de cliente/Servidor/srvPedidosCliente_Impl.dfm index a7f7e43..869c05d 100644 --- a/Source/Modulos/Pedidos de cliente/Servidor/srvPedidosCliente_Impl.dfm +++ b/Source/Modulos/Pedidos de cliente/Servidor/srvPedidosCliente_Impl.dfm @@ -242,6 +242,10 @@ object srvPedidosCliente: TsrvPedidosCliente item DatasetField = 'REFERENCIA_PRESUPUESTO' TableField = 'REFERENCIA_PRESUPUESTO' + end + item + DatasetField = 'TIPO_PEDIDO' + TableField = 'TIPO_PEDIDO' end> end> Name = 'PedidosCliente' @@ -439,6 +443,11 @@ object srvPedidosCliente: TsrvPedidosCliente Name = 'REFERENCIA_PRESUPUESTO' DataType = datString Size = 255 + end + item + Name = 'TIPO_PEDIDO' + DataType = datString + Size = 255 end> end item @@ -1043,6 +1052,12 @@ object srvPedidosCliente: TsrvPedidosCliente Name = 'ID_PRESUPUESTO' DataType = datInteger Value = '' + end + item + Name = 'TIPO_PEDIDO' + DataType = datString + Size = 255 + Value = '' end> Statements = < item @@ -1057,15 +1072,15 @@ object srvPedidosCliente: TsrvPedidosCliente 'AS_ACTIVAS, OBSERVACIONES, FECHA_ALTA, FECHA_MODIFICACION,'#10' ' + 'IMPORTE_NETO, IMPORTE_PORTE, DESCUENTO,'#10' IMPORTE_DESCUENTO, ' + 'BASE_IMPONIBLE, IVA, IMPORTE_IVA,'#10' ID_FORMA_PAGO, REF_TIENDA' + - '_WEB, FECHA_PREVISTA_ENVIO, ID_PRESUPUESTO)'#10' VALUES'#10' (:ID, :' + - 'ID_EMPRESA, :ID_CLIENTE, :ID_DIRECCION, :USUARIO, :FECHA_PEDIDO,' + - #10' :CALLE, :CODIGO_POSTAL, :POBLACION, :PROVINCIA, :PERSONA_C' + - 'ONTACTO,'#10' :TELEFONO, :REFERENCIA, :REFERENCIA_CLIENTE, :IMPO' + - 'RTE_TOTAL, :INCIDENCIAS,'#10' :INCIDENCIAS_ACTIVAS, :OBSERVACION' + - 'ES, :FECHA_ALTA,'#10' :FECHA_MODIFICACION, :IMPORTE_NETO, :IMPOR' + - 'TE_PORTE,'#10' :DESCUENTO, :IMPORTE_DESCUENTO, :BASE_IMPONIBLE, ' + - ':IVA,'#10' :IMPORTE_IVA, :ID_FORMA_PAGO, :REF_TIENDA_WEB, :FECHA' + - '_PREVISTA_ENVIO, :ID_PRESUPUESTO)'#10 + '_WEB, FECHA_PREVISTA_ENVIO, ID_PRESUPUESTO, TIPO_PEDIDO)'#10' VALUE' + + 'S'#10' (:ID, :ID_EMPRESA, :ID_CLIENTE, :ID_DIRECCION, :USUARIO, :' + + 'FECHA_PEDIDO,'#10' :CALLE, :CODIGO_POSTAL, :POBLACION, :PROVINCI' + + 'A, :PERSONA_CONTACTO,'#10' :TELEFONO, :REFERENCIA, :REFERENCIA_C' + + 'LIENTE, :IMPORTE_TOTAL, :INCIDENCIAS,'#10' :INCIDENCIAS_ACTIVAS,' + + ' :OBSERVACIONES, :FECHA_ALTA,'#10' :FECHA_MODIFICACION, :IMPORTE' + + '_NETO, :IMPORTE_PORTE,'#10' :DESCUENTO, :IMPORTE_DESCUENTO, :BAS' + + 'E_IMPONIBLE, :IVA,'#10' :IMPORTE_IVA, :ID_FORMA_PAGO, :REF_TIEND' + + 'A_WEB, :FECHA_PREVISTA_ENVIO, :ID_PRESUPUESTO, :TIPO_PEDIDO)'#10 StatementType = stSQL ColumnMappings = <> end> @@ -1250,6 +1265,12 @@ object srvPedidosCliente: TsrvPedidosCliente DataType = datInteger Value = '' end + item + Name = 'TIPO_PEDIDO' + DataType = datString + Size = 255 + Value = '' + end item Name = 'OLD_ID' Value = '' @@ -1276,7 +1297,8 @@ object srvPedidosCliente: TsrvPedidosCliente 'E_IMPONIBLE,'#10' IVA = :IVA,'#10' IMPORTE_IVA = :IMPORTE_IVA,'#10' ' + ' ID_FORMA_PAGO = :ID_FORMA_PAGO,'#10' REF_TIENDA_WEB = :REF_TIEND' + 'A_WEB,'#10' FECHA_PREVISTA_ENVIO = :FECHA_PREVISTA_ENVIO,'#10' ID_' + - 'PRESUPUESTO = :ID_PRESUPUESTO'#10' WHERE'#10' (ID = :OLD_ID)'#10 + 'PRESUPUESTO = :ID_PRESUPUESTO,'#10' TIPO_PEDIDO = :TIPO_PEDIDO'#10' ' + + 'WHERE'#10' (ID = :OLD_ID)'#10 StatementType = stSQL ColumnMappings = <> end> diff --git a/Source/Modulos/Pedidos de cliente/Views/PedidosCliente_view.dpk b/Source/Modulos/Pedidos de cliente/Views/PedidosCliente_view.dpk index c29b3a1..e127bea 100644 --- a/Source/Modulos/Pedidos de cliente/Views/PedidosCliente_view.dpk +++ b/Source/Modulos/Pedidos de cliente/Views/PedidosCliente_view.dpk @@ -86,7 +86,8 @@ requires Almacenes_controller, PedCli_PedProv_relation, PedidosProveedor_model, - PedCli_FacProforma_relation; + PedCli_FacProforma_relation, + TiposDocumento_controller; contains uPedidosClienteViewRegister in 'uPedidosClienteViewRegister.pas', diff --git a/Source/Modulos/Pedidos de cliente/Views/PedidosCliente_view.dproj b/Source/Modulos/Pedidos de cliente/Views/PedidosCliente_view.dproj index 8d1566a..a33733e 100644 --- a/Source/Modulos/Pedidos de cliente/Views/PedidosCliente_view.dproj +++ b/Source/Modulos/Pedidos de cliente/Views/PedidosCliente_view.dproj @@ -49,68 +49,69 @@ MainSource - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
frDialogListaPedidosClienteEnvioEMail
T diff --git a/Source/Modulos/Pedidos de cliente/Views/uViewPedidoCliente.dfm b/Source/Modulos/Pedidos de cliente/Views/uViewPedidoCliente.dfm index 4314066..2da26f2 100644 --- a/Source/Modulos/Pedidos de cliente/Views/uViewPedidoCliente.dfm +++ b/Source/Modulos/Pedidos de cliente/Views/uViewPedidoCliente.dfm @@ -21,7 +21,7 @@ inherited frViewPedidoCliente: TfrViewPedidoCliente 560) object edtFechaPedido: TcxDBDateEdit Left = 112 - Top = 82 + Top = 109 Anchors = [akLeft, akTop, akRight] DataBinding.DataField = 'FECHA_PEDIDO' DataBinding.DataSource = DADataSource @@ -42,11 +42,11 @@ inherited frViewPedidoCliente: TfrViewPedidoCliente StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.SkinName = '' - TabOrder = 2 + TabOrder = 3 Width = 333 end object memObservaciones: TcxDBMemo - Left = 474 + Left = 528 Top = 265 Anchors = [akLeft, akTop, akRight, akBottom] DataBinding.DataField = 'OBSERVACIONES' @@ -63,7 +63,7 @@ inherited frViewPedidoCliente: TfrViewPedidoCliente StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.SkinName = '' - TabOrder = 8 + TabOrder = 9 Height = 200 Width = 459 end @@ -95,7 +95,7 @@ inherited frViewPedidoCliente: TfrViewPedidoCliente end inline frViewDireccionEntregaPedidoCli1: TfrViewDireccionEntregaPedidoCli Left = 22 - Top = 193 + Top = 220 Width = 432 Height = 248 Font.Charset = DEFAULT_CHARSET @@ -104,43 +104,53 @@ inherited frViewPedidoCliente: TfrViewPedidoCliente Font.Name = 'Tahoma' Font.Style = [] ParentFont = False - TabOrder = 6 + TabOrder = 7 ReadOnly = False ExplicitLeft = 22 - ExplicitTop = 193 + ExplicitTop = 220 ExplicitWidth = 432 ExplicitHeight = 248 inherited dxLayoutControl1: TdxLayoutControl Width = 432 Height = 248 - ExplicitWidth = 422 - ExplicitHeight = 345 + ExplicitWidth = 432 + ExplicitHeight = 248 DesignSize = ( 432 248) inherited Bevel1: TBevel - Top = 283 - ExplicitTop = 283 + Top = 256 + Width = 566 + ExplicitTop = 256 + ExplicitWidth = 566 end inherited lblObra: TLabel Left = 239 ExplicitLeft = 239 end + inherited rdxDestino3: TRadioButton + Width = 566 + ExplicitWidth = 566 + end inherited cbListaAlmacenes: TcxDBLookupComboBox DataBinding.DataField = '' Style.LookAndFeel.SkinName = '' StyleDisabled.LookAndFeel.SkinName = '' StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.SkinName = '' + ExplicitWidth = 551 + Width = 551 end inherited bModificar: TBitBtn - Left = 284 - Top = 247 - ExplicitLeft = 284 - ExplicitTop = 247 + Left = 338 + Top = 220 + ExplicitLeft = 338 + ExplicitTop = 220 end inherited txtDireccion: TStaticText + Width = 882 Height = 68 + ExplicitWidth = 882 ExplicitHeight = 68 end inherited rdxDestino2: TRadioButton @@ -148,12 +158,14 @@ inherited frViewPedidoCliente: TfrViewPedidoCliente ExplicitWidth = 223 end inherited edtEntregarA: TcxDBTextEdit - Top = 314 + Top = 287 Style.LookAndFeel.SkinName = '' StyleDisabled.LookAndFeel.SkinName = '' StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.SkinName = '' - ExplicitTop = 314 + ExplicitTop = 287 + ExplicitWidth = 334 + Width = 334 end inherited dxLayoutGroup1: TdxLayoutGroup inherited dxLayoutControl1Group1: TdxLayoutGroup @@ -182,7 +194,7 @@ inherited frViewPedidoCliente: TfrViewPedidoCliente end object cbFormaPago: TcxDBLookupComboBox Left = 112 - Top = 136 + Top = 163 DataBinding.DataField = 'ID_FORMA_PAGO' DataBinding.DataSource = DADataSource Properties.KeyFieldNames = 'ID' @@ -211,20 +223,20 @@ inherited frViewPedidoCliente: TfrViewPedidoCliente StyleHot.LookAndFeel.Kind = lfStandard StyleHot.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.SkinName = '' - TabOrder = 4 + TabOrder = 5 Width = 195 end object bFormasPago: TButton - Left = 312 - Top = 136 + Left = 366 + Top = 163 Width = 132 Height = 21 Caption = 'Ver las formas de pago...' - TabOrder = 5 + TabOrder = 6 OnClick = bFormasPagoClick end inline frViewDatosYSeleccionClientePedido1: TfrViewDatosYSeleccionClientePedido - Left = 474 + Left = 528 Top = 28 Width = 480 Height = 201 @@ -234,36 +246,40 @@ inherited frViewPedidoCliente: TfrViewPedidoCliente Font.Name = 'Tahoma' Font.Style = [] ParentFont = False - TabOrder = 7 + TabOrder = 8 ReadOnly = False - ExplicitLeft = 474 + ExplicitLeft = 528 ExplicitTop = 28 ExplicitWidth = 480 ExplicitHeight = 201 inherited dxLayoutControl1: TdxLayoutControl Width = 480 Height = 201 - ExplicitWidth = 469 + ExplicitWidth = 480 ExplicitHeight = 201 inherited edtlNombre: TcxDBTextEdit Style.LookAndFeel.SkinName = '' StyleDisabled.LookAndFeel.SkinName = '' StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.SkinName = '' + ExplicitWidth = 224 + Width = 224 end inherited edtNIF_CIF: TcxDBTextEdit - Left = 356 + Left = 302 Style.LookAndFeel.SkinName = '' StyleDisabled.LookAndFeel.SkinName = '' StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.SkinName = '' - ExplicitLeft = 356 + ExplicitLeft = 302 end inherited edtPersonaContacto: TcxDBTextEdit Style.LookAndFeel.SkinName = '' StyleDisabled.LookAndFeel.SkinName = '' StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.SkinName = '' + ExplicitWidth = 283 + Width = 283 end inherited edtDireccion: TcxMemo Style.LookAndFeel.SkinName = '' @@ -274,16 +290,16 @@ inherited frViewPedidoCliente: TfrViewPedidoCliente Width = 121 end inherited Button4: TButton - Left = 436 - ExplicitLeft = 436 + Left = 382 + ExplicitLeft = 382 end inherited Button5: TButton - Left = 436 - ExplicitLeft = 436 + Left = 382 + ExplicitLeft = 382 end inherited Button3: TBitBtn - Left = 261 - ExplicitLeft = 261 + Left = 207 + ExplicitLeft = 207 end end end @@ -314,7 +330,7 @@ inherited frViewPedidoCliente: TfrViewPedidoCliente end object edtFechaPrevistaEnvio: TcxDBDateEdit Left = 112 - Top = 109 + Top = 136 Anchors = [akLeft, akTop, akRight] DataBinding.DataField = 'FECHA_PREVISTA_ENVIO' DataBinding.DataSource = DADataSource @@ -335,9 +351,34 @@ inherited frViewPedidoCliente: TfrViewPedidoCliente StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.SkinName = '' - TabOrder = 3 + TabOrder = 4 Width = 323 end + object cbTipoPedido: TcxDBComboBox + Left = 112 + Top = 82 + DataBinding.DataField = 'TIPO_PEDIDO' + DataBinding.DataSource = DADataSource + Properties.DropDownListStyle = lsEditFixedList + Properties.HideSelection = False + Properties.ImmediatePost = True + Properties.OnInitPopup = cbTipoPedidoPropertiesInitPopup + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + Style.ButtonStyle = bts3D + Style.PopupBorderStyle = epbsFrame3D + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 461 + end object dxLayoutControl1Group_Root: TdxLayoutGroup ShowCaption = False Hidden = True @@ -363,6 +404,11 @@ inherited frViewPedidoCliente: TfrViewPedidoCliente Control = eRefCliente ControlOptions.ShowBorder = False end + object dxLayoutControl1Item4: TdxLayoutItem + Caption = 'Tipo pedido:' + Control = cbTipoPedido + ControlOptions.ShowBorder = False + end object dxLayoutControl1Item2: TdxLayoutItem Caption = 'Fecha del pedido:' Control = edtFechaPedido diff --git a/Source/Modulos/Pedidos de cliente/Views/uViewPedidoCliente.pas b/Source/Modulos/Pedidos de cliente/Views/uViewPedidoCliente.pas index 0b85202..83e12f4 100644 --- a/Source/Modulos/Pedidos de cliente/Views/uViewPedidoCliente.pas +++ b/Source/Modulos/Pedidos de cliente/Views/uViewPedidoCliente.pas @@ -12,7 +12,8 @@ uses cxTextEdit, cxMaskEdit, cxCalendar, dxLayoutControl, cxControls, cxMemo, uViewDireccionEntregaPedidoCli, cxLookupEdit, cxDBLookupEdit, cxDBLookupComboBox, uFormasPagoController, ActnList, uDAInterfaces, uBizFormasPago, - uPedidosClienteController, uViewDatosYSeleccionClientePedido; + uPedidosClienteController, uViewDatosYSeleccionClientePedido, + uTiposDocumentoController; type IViewPedidoCliente = interface(IViewBase) @@ -61,6 +62,8 @@ type eRefCliente: TcxDBTextEdit; dxLayoutControl1Item15: TdxLayoutItem; edtFechaPrevistaEnvio: TcxDBDateEdit; + dxLayoutControl1Item4: TdxLayoutItem; + cbTipoPedido: TcxDBComboBox; procedure CustomViewCreate(Sender: TObject); procedure CustomViewDestroy(Sender: TObject); procedure bFormasPagoClick(Sender: TObject); @@ -69,12 +72,14 @@ type procedure frViewClientePedidoButton1Click(Sender: TObject); procedure frViewClientePedidoButton2Click(Sender: TObject); procedure CustomViewShow(Sender: TObject); + procedure cbTipoPedidoPropertiesInitPopup(Sender: TObject); protected FPedido : IBizPedidoCliente; FController : IPedidosClienteController; FViewClientePedido : IViewDatosYSeleccionClientePedido; FFormasPago : IBizFormaPago; FFormasPagoController : IFormasPagoController; + FTipoController: ITiposDocumentoController; function GetPedido: IBizPedidoCliente; procedure SetPedido(const Value: IBizPedidoCliente); virtual; function GetController : IPedidosClienteController; @@ -114,11 +119,26 @@ begin FFormasPagoController.VerTodos(FFormasPago); end; +procedure TfrViewPedidoCliente.cbTipoPedidoPropertiesInitPopup(Sender: TObject); +begin + with cbTipoPedido.Properties.Items do + begin + BeginUpdate; + try + Clear; + AddStrings(FTipoController.DarListaTiposDocumento); + finally + EndUpdate; + end; + end; +end; + procedure TfrViewPedidoCliente.CustomViewCreate(Sender: TObject); begin inherited; FFormasPago := Nil; FFormasPagoController := TFormasPagoController.Create; + FTipoController := TTiposDocumentoController.Create; FViewClientePedido := frViewDatosYSeleccionClientePedido1; eReferencia.Enabled := False; end; @@ -129,6 +149,7 @@ begin FController := Nil; FFormasPago := Nil; FFormasPagoController := NIL; + FTipoController := NIL; end; procedure TfrViewPedidoCliente.CustomViewShow(Sender: TObject); diff --git a/Source/Modulos/Pedidos de cliente/Views/uViewPedidosCliente.dfm b/Source/Modulos/Pedidos de cliente/Views/uViewPedidosCliente.dfm index f511410..0e7a352 100644 --- a/Source/Modulos/Pedidos de cliente/Views/uViewPedidosCliente.dfm +++ b/Source/Modulos/Pedidos de cliente/Views/uViewPedidosCliente.dfm @@ -88,6 +88,10 @@ inherited frViewPedidosCliente: TfrViewPedidosCliente DataBinding.FieldName = 'SITUACION' Width = 95 end + object cxGridViewTIPO_PEDIDO: TcxGridDBColumn + Caption = 'Tipo pedido' + DataBinding.FieldName = 'TIPO_PEDIDO' + end object cxGridViewFECHA_PEDIDO: TcxGridDBColumn DataBinding.FieldName = 'FECHA_PEDIDO' Width = 45 diff --git a/Source/Modulos/Pedidos de cliente/Views/uViewPedidosCliente.pas b/Source/Modulos/Pedidos de cliente/Views/uViewPedidosCliente.pas index d438547..c1c4b07 100644 --- a/Source/Modulos/Pedidos de cliente/Views/uViewPedidosCliente.pas +++ b/Source/Modulos/Pedidos de cliente/Views/uViewPedidosCliente.pas @@ -51,6 +51,7 @@ type cxGridViewNUM_CORREOS: TcxGridDBColumn; cxGridViewREFERENCIA_CLIENTE: TcxGridDBColumn; cxGridViewREFERENCIA_PRESUPUESTO: TcxGridDBColumn; + cxGridViewTIPO_PEDIDO: TcxGridDBColumn; procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; diff --git a/Source/Modulos/Presupuestos de cliente/Controller/PresupuestosCliente_controller.dpk b/Source/Modulos/Presupuestos de cliente/Controller/PresupuestosCliente_controller.dpk index 9c874c3fdf33e1d731d6cbdcf4852632b638d9d7..25e2249bb27c0af4c18700fc3bf0aad9ffabcf2a 100644 GIT binary patch delta 25 gcmbQvKc9C)C(~vdW-b;UYhEs1uGG8~Jzg#b09V%qe*gdg delta 275 zcmbQwJDq<+CsVx+FPDNsQArM%E=z{cDM>JqZ&1{zoa))thS>z|aBnp{#G50a0EDK~LREJ<`sDlREXOfEr{0_sgk zg4kJ{mskL1C8p#9UADQCiHju=EKnMfS&&~GP?TC+T2Pu=T$1mcpI1_ppOceXq>!1X ZppHjguOP8l-I|w+mn$_dMUR(@0RZT%QOf`T diff --git a/Source/Modulos/Presupuestos de cliente/Controller/PresupuestosCliente_controller.dproj b/Source/Modulos/Presupuestos de cliente/Controller/PresupuestosCliente_controller.dproj index 58eb2f0..3e3f599 100644 --- a/Source/Modulos/Presupuestos de cliente/Controller/PresupuestosCliente_controller.dproj +++ b/Source/Modulos/Presupuestos de cliente/Controller/PresupuestosCliente_controller.dproj @@ -49,30 +49,16 @@ MainSource - - - - - - - - - - - - - - - - + + + + + + - - - - diff --git a/Source/Modulos/Presupuestos de cliente/Controller/uTiposPresupuestoController.pas b/Source/Modulos/Presupuestos de cliente/Controller/uTiposPresupuestoController.pas deleted file mode 100644 index 3da3024..0000000 --- a/Source/Modulos/Presupuestos de cliente/Controller/uTiposPresupuestoController.pas +++ /dev/null @@ -1,222 +0,0 @@ -unit uTiposPresupuestoController; - -interface - - -uses - Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem, - uIDataModulePresupuestosCliente, uBizTiposPresupuesto; - -type - ITiposPresupuestoController = interface(IControllerBase) - ['{7BFA4153-A300-462F-A4C5-F3140360F088}'] - function BuscarTodos: IBizTipoPresupuesto; - procedure VerTodos(ATiposPresupuesto: IBizTipoPresupuesto); - procedure Anadir(ATipoPresupuesto : IBizTipoPresupuesto); - function Eliminar(ATipoPresupuesto : IBizTipoPresupuesto): Boolean; - function Guardar(ATipoPresupuesto : IBizTipoPresupuesto): Boolean; - procedure DescartarCambios(ATipoPresupuesto : IBizTipoPresupuesto); - function Localizar(ATiposPresupuesto: IBizTipoPresupuesto; ADescripcion:String): Boolean; - function DarListaTiposPresupuesto: TStringList; - end; - - TTiposPresupuestoController = class(TControllerBase, ITiposPresupuestoController) - protected - FDataModule : IDataModulePresupuestosCliente; - procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override; - function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean; - function ValidarTipoPresupuesto(ATipoPresupuesto: IBizTipoPresupuesto): Boolean; - procedure AsignarDataModule; virtual; - public - constructor Create; override; - destructor Destroy; override; - - function Eliminar(ATipoPresupuesto : IBizTipoPresupuesto): Boolean; - function Guardar(ATipoPresupuesto : IBizTipoPresupuesto): Boolean; - procedure DescartarCambios(ATipoPresupuesto : IBizTipoPresupuesto); virtual; - procedure Anadir(ATipoPresupuesto : IBizTipoPresupuesto); - function BuscarTodos: IBizTipoPresupuesto; - procedure VerTodos(ATiposPresupuesto: IBizTipoPresupuesto); - function Localizar(ATiposPresupuesto: IBizTipoPresupuesto; ADescripcion:String): Boolean; - function DarListaTiposPresupuesto: TStringList; - end; - -implementation - -uses - cxControls, DB, uEditorRegistryUtils, -// uIEditorTiposPresupuesto, - uDataModulePresupuestosCliente, - uDAInterfaces, uDataTableUtils, - uDateUtils, uROTypes, DateUtils, Controls, Windows, schPresupuestosClienteClient_Intf; - -{ TTiposPresupuestoController } - -procedure TTiposPresupuestoController.Anadir(ATipoPresupuesto: IBizTipoPresupuesto); -begin - ATipoPresupuesto.Insert; -end; - -procedure TTiposPresupuestoController.AsignarDataModule; -begin - FDataModule := TDataModulePresupuestosCliente.Create(Nil); -end; - -function TTiposPresupuestoController.BuscarTodos: IBizTipoPresupuesto; -begin - Result := FDataModule.GetTiposPresupuesto; -end; - -constructor TTiposPresupuestoController.Create; -begin - inherited; - AsignarDataModule; -end; - -function TTiposPresupuestoController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; -begin - Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); -end; - -function TTiposPresupuestoController.DarListaTiposPresupuesto: TStringList; -var - ATiposPresupuesto: IBizTipoPresupuesto; -begin - ATiposPresupuesto := BuscarTodos; - ATiposPresupuesto.DataTable.Active := True; - Result := TStringList.Create; - try - with Result do - begin - ATiposPresupuesto.DataTable.First; - while not ATiposPresupuesto.DataTable.EOF do - begin - Add(ATiposPresupuesto.DESCRIPCION); - ATiposPresupuesto.DataTable.Next; - end; - end; - finally - ATiposPresupuesto := NIL; - end; -end; - -procedure TTiposPresupuestoController.DescartarCambios(ATipoPresupuesto: IBizTipoPresupuesto); -begin - if not Assigned(ATipoPresupuesto) then - raise Exception.Create ('GrupoCliente no asignado'); - - ShowHourglassCursor; - try - if (ATipoPresupuesto.State in dsEditModes) then - ATipoPresupuesto.Cancel; - - ATipoPresupuesto.DataTable.CancelUpdates; - finally - HideHourglassCursor; - end; -end; - -destructor TTiposPresupuestoController.Destroy; -begin - FDataModule := Nil; - inherited; -end; - -function TTiposPresupuestoController.ValidarTipoPresupuesto(ATipoPresupuesto: IBizTipoPresupuesto): Boolean; -begin - if not Assigned(ATipoPresupuesto) then - raise Exception.Create ('TipoCliente no asignada'); - - if (ATipoPresupuesto.DataTable.State in dsEditModes) then - ATipoPresupuesto.DataTable.Post; - - if Length(ATipoPresupuesto.DESCRIPCION) = 0 then - raise Exception.Create('Debe indicar al menos la descripción de este tipo.'); - - Result := True; -end; - -procedure TTiposPresupuestoController.VerTodos(ATiposPresupuesto: IBizTipoPresupuesto); -//var -// AEditor : IEditorTiposPresupuesto; -begin -{ - AEditor := NIL; - - CreateEditor('EditorTiposPresupuesto', IEditorTiposPresupuesto, AEditor); - if Assigned(AEditor) then - try - AEditor.Controller := Self; //OJO ORDEN MUY IMPORTANTE - AEditor.TiposPresupuesto := ATiposPresupuesto; - AEditor.ShowModal; - finally - AEditor.Release; - AEditor := NIL; - end; -} -end; - -function TTiposPresupuestoController.Eliminar(ATipoPresupuesto: IBizTipoPresupuesto): Boolean; -begin - if not Assigned(ATipoPresupuesto) then - raise Exception.Create ('TipoCliente no asignada'); - - ShowHourglassCursor; - try - if (ATipoPresupuesto.State in dsEditModes) then - ATipoPresupuesto.Cancel; - - ATipoPresupuesto.Delete; - ATipoPresupuesto.DataTable.ApplyUpdates; - HideHourglassCursor; - Result := True; - finally - HideHourglassCursor; - end; -end; - -procedure TTiposPresupuestoController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); -begin - inherited; -// -end; - -function TTiposPresupuestoController.Guardar(ATipoPresupuesto: IBizTipoPresupuesto): Boolean; -begin - Result := False; - - if ValidarTipoPresupuesto(ATipoPresupuesto) then - begin - ShowHourglassCursor; - try - if (ATipoPresupuesto.DataTable.State in dsEditModes) then - ATipoPresupuesto.DataTable.Post; - - ATipoPresupuesto.DataTable.ApplyUpdates; - - Result := True; - finally - HideHourglassCursor; - end; - end; -end; - -function TTiposPresupuestoController.Localizar(ATiposPresupuesto: IBizTipoPresupuesto; ADescripcion: String): Boolean; -begin - Result := True; - ShowHourglassCursor; - try - with ATiposPresupuesto.DataTable do - begin - DisableControls; - First; - if not Locate(fld_TiposPresupuestoDESCRIPCION, ADescripcion, []) then - Result := False; - EnableControls; - end; - finally - HideHourglassCursor; - end; -end; - -end. diff --git a/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.dfm b/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.dfm index a05f07e..e65c906 100644 --- a/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.dfm +++ b/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.dfm @@ -419,37 +419,4 @@ inherited DataModulePresupuestosCliente: TDataModulePresupuestosCliente Left = 248 Top = 144 end - object tbl_TiposPresupuesto: TDAMemDataTable - RemoteUpdatesOptions = [] - Fields = < - item - Name = 'ID' - DataType = datAutoInc - GeneratorName = 'GEN_PRESUPUESTOS_TIPOS_ID' - Required = True - DisplayLabel = 'TiposPresupuesto_ID' - DictionaryEntry = 'TiposPresupuesto_ID' - InPrimaryKey = True - end - item - Name = 'DESCRIPCION' - DataType = datString - Size = 255 - DisplayLabel = 'TiposPresupuesto_DESCRIPCION' - DictionaryEntry = 'TiposPresupuesto_DESCRIPCION' - end> - Params = <> - StreamingOptions = [soDisableEventsWhileStreaming] - RemoteDataAdapter = rda_PresupuestosCliente - LogicalName = 'TiposPresupuesto' - IndexDefs = <> - Left = 464 - Top = 208 - end - object ds_TiposPresupuesto: TDADataSource - DataSet = tbl_TiposPresupuesto.Dataset - DataTable = tbl_TiposPresupuesto - Left = 464 - Top = 152 - end end diff --git a/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.pas b/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.pas index 25776cf..a683336 100644 --- a/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.pas +++ b/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.pas @@ -11,7 +11,7 @@ uses uIDataModulePresupuestosCliente, uBizPresupuestosCliente, uBizDetallesPresupuestoCliente, uIDataModulePresupuestosClienteReport, uDataModuleBase, uDAInterfaces, uRODynamicRequest, uDADataStreamer, uDARemoteDataAdapter, uDABin2DataStreamer, - uDAMemDataTable, uIntegerListUtils, uBizTiposPresupuesto; + uDAMemDataTable, uIntegerListUtils; type TDataModulePresupuestosCliente = class(TDataModuleBase, IDataModulePresupuestosCliente, IDataModulePresupuestosClienteReport) @@ -25,8 +25,6 @@ type RORemoteService1: TRORemoteService; tbl_ListaAnosPresupuestos: TDAMemDataTable; ds_ListaAnosPresupuestos: TDADataSource; - tbl_TiposPresupuesto: TDAMemDataTable; - ds_TiposPresupuesto: TDADataSource; procedure DAClientDataModuleCreate(Sender: TObject); private @@ -49,7 +47,6 @@ type function GetRptPDFPresupuesto(const AID: Integer; Const AVerSello: Integer): Binary; function GetAnosItems : TStringList; - function GetTiposPresupuesto : IBizTipoPresupuesto; end; implementation @@ -109,21 +106,6 @@ begin // Result := (RORemoteService as IsrvPresupuestosCliente).GenerarInformeEnWord(AID, AVerSello) end; -function TDataModulePresupuestosCliente.GetTiposPresupuesto: IBizTipoPresupuesto; -var - ATipoPresupuesto : TDAMemDataTable; -begin - ShowHourglassCursor; - try - ATipoPresupuesto := CloneDataTable(tbl_TiposPresupuesto); - ATipoPresupuesto.BusinessRulesID := BIZ_CLIENT_TIPOSPRESUPUESTO; - Result := (ATipoPresupuesto as IBizTipoPresupuesto); - finally - HideHourglassCursor; - end; - -end; - function TDataModulePresupuestosCliente.NewItem: IBizPresupuestoCliente; begin Result := GetItem(ID_NULO) diff --git a/Source/Modulos/Presupuestos de cliente/Model/Data/uIDataModulePresupuestosCliente.pas b/Source/Modulos/Presupuestos de cliente/Model/Data/uIDataModulePresupuestosCliente.pas index b244ba3..abd8e70 100644 --- a/Source/Modulos/Presupuestos de cliente/Model/Data/uIDataModulePresupuestosCliente.pas +++ b/Source/Modulos/Presupuestos de cliente/Model/Data/uIDataModulePresupuestosCliente.pas @@ -4,17 +4,16 @@ interface uses Classes, uROTypes, uBizPresupuestosCliente, uBizDetallesPresupuestoCliente, - uIntegerListUtils, uBizTiposPresupuesto; + uIntegerListUtils; type IDataModulePresupuestosCliente = interface ['{F0DDD126-9E62-4FEC-A849-FDCA75718F5B}'] - function GetAnosItems : TStringList; + function GetAnosItems : TStringList; function GetItems: IBizPresupuestoCliente; overload; - function GetItems(const AListaID: TIntegerList) : IBizPresupuestoCliente; overload; + function GetItems(const AListaID: TIntegerList) : IBizPresupuestoCliente; overload; function GetItem(const ID : Integer) : IBizPresupuestoCliente; function NewItem : IBizPresupuestoCliente; - function GetTiposPresupuesto : IBizTipoPresupuesto; end; implementation diff --git a/Source/Modulos/Presupuestos de cliente/Model/PresupuestosCliente_model.dpk b/Source/Modulos/Presupuestos de cliente/Model/PresupuestosCliente_model.dpk index 6e4e584..4f2be43 100644 --- a/Source/Modulos/Presupuestos de cliente/Model/PresupuestosCliente_model.dpk +++ b/Source/Modulos/Presupuestos de cliente/Model/PresupuestosCliente_model.dpk @@ -35,7 +35,6 @@ contains uBizPresupuestosCliente in 'uBizPresupuestosCliente.pas', uIDataModulePresupuestosClienteReport in 'Data\uIDataModulePresupuestosClienteReport.pas', schPresupuestosClienteClient_Intf in 'schPresupuestosClienteClient_Intf.pas', - schPresupuestosClienteServer_Intf in 'schPresupuestosClienteServer_Intf.pas', - uBizTiposPresupuesto in 'uBizTiposPresupuesto.pas'; + schPresupuestosClienteServer_Intf in 'schPresupuestosClienteServer_Intf.pas'; end. diff --git a/Source/Modulos/Presupuestos de cliente/Model/PresupuestosCliente_model.dproj b/Source/Modulos/Presupuestos de cliente/Model/PresupuestosCliente_model.dproj index d72cc2a..c332512 100644 --- a/Source/Modulos/Presupuestos de cliente/Model/PresupuestosCliente_model.dproj +++ b/Source/Modulos/Presupuestos de cliente/Model/PresupuestosCliente_model.dproj @@ -43,12 +43,6 @@ Package FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0 - - - - - - RemObjects Pascal Script - RemObjects SDK 3.0 Integration EurekaLog 5.1.9 PresupuestosCliente_model.dpk @@ -58,16 +52,15 @@ MainSource - - - + + + -
diff --git a/Source/Modulos/TiposDocumento/Controller/uTiposDocumentoController.pas b/Source/Modulos/TiposDocumento/Controller/uTiposDocumentoController.pas new file mode 100644 index 0000000..d2f50b2 --- /dev/null +++ b/Source/Modulos/TiposDocumento/Controller/uTiposDocumentoController.pas @@ -0,0 +1,220 @@ +unit uTiposDocumentoController; + +interface + + +uses + Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem, + uIDataModuleTiposDocumento, uBizTiposDocumento; + +type + ITiposDocumentoController = interface(IControllerBase) + ['{4D248341-1FE0-466E-BD84-10B540CA57EA}'] + function BuscarTodos: IBizTipoDocumento; + procedure VerTodos(ATiposDocumento: IBizTipoDocumento); + procedure Anadir(ATipoDocumento : IBizTipoDocumento); + function Eliminar(ATipoDocumento : IBizTipoDocumento): Boolean; + function Guardar(ATipoDocumento : IBizTipoDocumento): Boolean; + procedure DescartarCambios(ATipoDocumento : IBizTipoDocumento); + function Localizar(ATiposDocumento: IBizTipoDocumento; ADescripcion:String): Boolean; + function DarListaTiposDocumento: TStringList; + end; + + TTiposDocumentoController = class(TControllerBase, ITiposDocumentoController) + protected + FDataModule : IDataModuleTiposDocumento; + + procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override; + function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean; + + function ValidarTiposDocumento(ATipoDocumento: IBizTipoDocumento): Boolean; + + //Estos son los tres métodos a sobre escribir si se desea heredar toda la logica de + //este controller + procedure AsignarDataModule; virtual; + public + constructor Create; override; + destructor Destroy; override; + + function Eliminar(ATipoDocumento : IBizTipoDocumento): Boolean; + function Guardar(ATipoDocumento : IBizTipoDocumento): Boolean; + procedure DescartarCambios(ATipoDocumento : IBizTipoDocumento); virtual; + procedure Anadir(ATipoDocumento : IBizTipoDocumento); + function BuscarTodos: IBizTipoDocumento; + procedure VerTodos(ATiposDocumento: IBizTipoDocumento); + function Localizar(ATiposDocumento: IBizTipoDocumento; ADescripcion:String): Boolean; + function DarListaTiposDocumento: TStringList; + end; + +implementation + +uses + cxControls, DB, uEditorRegistryUtils, schTiposDocumentoClient_Intf, + uIEditorTiposDocumento, uDataModuleTiposDocumento, + uDAInterfaces, uDataTableUtils, + uDateUtils, uROTypes, DateUtils, Controls, Windows; + +{ TTiposDocumentoController } + +procedure TTiposDocumentoController.Anadir(ATipoDocumento: IBizTipoDocumento); +begin + ATipoDocumento.Insert; +end; + +procedure TTiposDocumentoController.AsignarDataModule; +begin + FDataModule := TDataModuleTiposDocumento.Create(Nil); +end; + +function TTiposDocumentoController.BuscarTodos: IBizTipoDocumento; +begin + Result := FDataModule.GetItems; +end; + +constructor TTiposDocumentoController.Create; +begin + inherited; + AsignarDataModule; +end; + +function TTiposDocumentoController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; +begin + Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); +end; + +function TTiposDocumentoController.DarListaTiposDocumento: TStringList; +var + ATiposDocumento: IBizTipoDocumento; +begin + ATiposDocumento := BuscarTodos; + ATiposDocumento.DataTable.Active := True; + Result := TStringList.Create; + try + with Result do + begin + ATiposDocumento.DataTable.First; + while not ATiposDocumento.DataTable.EOF do + begin + Add(ATiposDocumento.DESCRIPCION); + ATiposDocumento.DataTable.Next; + end; + end; + finally + ATiposDocumento := NIL; + end; +end; + +procedure TTiposDocumentoController.DescartarCambios(ATipoDocumento: IBizTipoDocumento); +begin + if not Assigned(ATipoDocumento) then + raise Exception.Create ('TipoDocumento no asignado'); + + ShowHourglassCursor; + try + if (ATipoDocumento.State in dsEditModes) then + ATipoDocumento.Cancel; + + ATipoDocumento.DataTable.CancelUpdates; + finally + HideHourglassCursor; + end; +end; + +destructor TTiposDocumentoController.Destroy; +begin + FDataModule := Nil; + inherited; +end; + +function TTiposDocumentoController.ValidarTiposDocumento(ATipoDocumento: IBizTipoDocumento): Boolean; +begin + Result := False; + + if not Assigned(ATipoDocumento) then + raise Exception.Create ('TipoDocumento no asignada'); + + if (ATipoDocumento.DataTable.State in dsEditModes) then + ATipoDocumento.DataTable.Post; + + Result := True; +end; + +procedure TTiposDocumentoController.VerTodos(ATiposDocumento: IBizTipoDocumento); +var + AEditor : IEditorTiposDocumento; +begin + AEditor := NIL; + CreateEditor('EditorTiposDocumento', IEditorTiposDocumento, AEditor); + if Assigned(AEditor) then + try + AEditor.Controller := Self; //OJO ORDEN MUY IMPORTANTE + AEditor.TiposDocumento := ATiposDocumento; + AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +function TTiposDocumentoController.Eliminar(ATipoDocumento: IBizTipoDocumento): Boolean; +begin + if not Assigned(ATipoDocumento) then + raise Exception.Create ('Almacen no asignada'); + + ShowHourglassCursor; + try + if (ATipoDocumento.State in dsEditModes) then + ATipoDocumento.Cancel; + + ATipoDocumento.Delete; + ATipoDocumento.DataTable.ApplyUpdates; + HideHourglassCursor; + Result := True; + finally + HideHourglassCursor; + end; +end; + +procedure TTiposDocumentoController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); +begin + inherited; +// +end; + +function TTiposDocumentoController.Guardar(ATipoDocumento: IBizTipoDocumento): Boolean; +begin + Result := False; + + if not Assigned(ATipoDocumento) then + raise Exception.Create ('TipoDocumento no asignado'); + + if ValidarTiposDocumento(ATipoDocumento) then + begin + ShowHourglassCursor; + try + ATipoDocumento.DataTable.ApplyUpdates; + Result := True; + finally + HideHourglassCursor; + end; + end; +end; + +function TTiposDocumentoController.Localizar(ATiposDocumento: IBizTipoDocumento; ADescripcion: String): Boolean; +begin + Result := True; + ShowHourglassCursor; + try + with ATiposDocumento.DataTable do + begin + DisableControls; + First; + if not Locate(fld_TiposDocumentoDESCRIPCION, ADescripcion, []) then + Result := False; + EnableControls; + end; + finally + HideHourglassCursor; + end; +end; + +end. diff --git a/Source/Modulos/TiposDocumento/Controller/view/uIEditorTiposDocumento.pas b/Source/Modulos/TiposDocumento/Controller/view/uIEditorTiposDocumento.pas new file mode 100644 index 0000000..1286c64 --- /dev/null +++ b/Source/Modulos/TiposDocumento/Controller/view/uIEditorTiposDocumento.pas @@ -0,0 +1,26 @@ +unit uIEditorTiposDocumento; + +interface + +uses + uEditorDBBase, uBizTiposDocumento, uTiposDocumentoController, uGUIBase; + +type + IEditorTiposDocumento = interface(ICustomEditor) + ['{F65EA16E-7CBC-4E78-8014-BB9E4DC1692A}'] + function GetTiposDocumento: IBizTipoDocumento; + procedure SetTiposDocumento(const Value: IBizTipoDocumento); + property TiposDocumento: IBizTipoDocumento read GetTiposDocumento write SetTiposDocumento; + + function GetController : ITiposDocumentoController; + procedure SetController (const Value : ITiposDocumentoController); + property Controller : ITiposDocumentoController read GetController write SetController; + + function ShowModal : Integer; + procedure Show; + end; + + +implementation + +end. diff --git a/Source/Modulos/TiposDocumento/Data/TiposDocumento_data.dpk b/Source/Modulos/TiposDocumento/Data/TiposDocumento_data.dpk new file mode 100644 index 0000000000000000000000000000000000000000..1cb0cffddf93038b09fc5ad2f19161e1c1e538bb GIT binary patch literal 704 zcmZ{iPfvp|6u>=`@Ev+ESz^qhi3g*n2Yuj+rCr(%ofktGF+>C$%*(RxE@Ok~j6L+d z{QCa))k*rEyk*Shb=B}HU4LX{TfHumHo12l*V&wFb}?OL&331Qpir{gy>1L@OG+B1 zWKTS$1jZnk3W6SR^yVSSKn)i7Y*BLLW+5#+50s*r(iS-f3nNqh1Nx6+Y@vJ*W)XQx z{9rOPR#SHmZfb_|53&@|3+zfA&0^GnP)|dSL%kYgh^Gt#)F^%Y*@uAuImN_r?A2KC z9|H{$cEudx*~JVwaIVoDVGMd-;gD!QyeCZ-!4v3r6SZTAh$PB+WatIibw5;!AVd!g zvh$m(-8s;iAfK!^C&3TiuCvNM*LnAOuEW@>EiQNRE8R;kX|f)Ka~gH1>mpB+Hm}N& zovg-3wakisH`1zXlf3MsuX(pIQMFtb*>8K6mu&Ly>$Faq3ETYVe8(&YzsS3tJeq9# L + + + {55d06c67-fc74-4d88-8787-801dee872bb3} + TiposDocumento_data.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\TiposDocumento_data.bpl + + + 7.0 + False + False + 0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + RELEASE + + + 7.0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + + + Delphi.Personality + Package + +FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0TiposDocumento_data.dpk + + + + + MainSource + + + + + + + + +
DataModuleTiposDocumento
+ TDAClientDataModule +
+
+
+ diff --git a/Source/Modulos/TiposDocumento/Data/uDataModuleTiposDocumento.dfm b/Source/Modulos/TiposDocumento/Data/uDataModuleTiposDocumento.dfm new file mode 100644 index 0000000..206fb19 --- /dev/null +++ b/Source/Modulos/TiposDocumento/Data/uDataModuleTiposDocumento.dfm @@ -0,0 +1,59 @@ +inherited DataModuleTiposDocumento: TDataModuleTiposDocumento + OnCreate = DAClientDataModuleCreate + Height = 248 + Width = 489 + object RORemoteService: TRORemoteService + Message = dmConexion.ROMessage + Channel = dmConexion.ROChannel + ServiceName = 'srvTiposDocumento' + Left = 48 + Top = 24 + end + object rda_TiposDocumento: TDARemoteDataAdapter + DataStreamer = Bin2DataStreamer + GetSchemaCall.RemoteService = RORemoteService + GetDataCall.RemoteService = RORemoteService + UpdateDataCall.RemoteService = RORemoteService + GetScriptsCall.RemoteService = RORemoteService + RemoteService = RORemoteService + Left = 203 + Top = 23 + end + object Bin2DataStreamer: TDABin2DataStreamer + Left = 48 + Top = 96 + end + object tbl_TiposDocumento: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datAutoInc + GeneratorName = 'GEN_TIPOS_DOCUMENTO_ID' + Required = True + ServerAutoRefresh = True + DictionaryEntry = 'TiposDocumento_ID' + InPrimaryKey = True + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + DisplayLabel = 'TiposDocumento_DESCRIPCION' + DictionaryEntry = 'TiposDocumento_DESCRIPCION' + end> + Params = <> + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rda_TiposDocumento + LogicalName = 'TiposDocumento' + IndexDefs = <> + Left = 344 + Top = 72 + end + object ds_TiposDocumento: TDADataSource + DataSet = tbl_TiposDocumento.Dataset + DataTable = tbl_TiposDocumento + Left = 344 + Top = 24 + end +end diff --git a/Source/Modulos/TiposDocumento/Data/uDataModuleTiposDocumento.pas b/Source/Modulos/TiposDocumento/Data/uDataModuleTiposDocumento.pas new file mode 100644 index 0000000..bcc1253 --- /dev/null +++ b/Source/Modulos/TiposDocumento/Data/uDataModuleTiposDocumento.pas @@ -0,0 +1,112 @@ +{ +=============================================================================== + Copyright (©) 2007. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los términos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versión: + Versión actual: 1.0.0 + Fecha versión actual: +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uDataModuleTiposDocumento; + +interface + +uses + SysUtils, Classes, DB, uDADataTable, uDABINAdapter, + uDAScriptingProvider, uDACDSDataTable, uROWinInetHttpChannel, uROTypes, + uRORemoteService, uROClient, uROBinMessage, + uDADesigntimeCall, + + uIDataModuleTiposDocumento, uBizTiposDocumento, uDADataStreamer, uDARemoteDataAdapter, + uDAInterfaces, uRODynamicRequest, uDABin2DataStreamer, uDAMemDataTable, + uDataModuleBase; + +type + TDataModuleTiposDocumento = class(TDataModuleBase, IDataModuleTiposDocumento) + RORemoteService: TRORemoteService; + rda_TiposDocumento: TDARemoteDataAdapter; + Bin2DataStreamer: TDABin2DataStreamer; + tbl_TiposDocumento: TDAMemDataTable; + ds_TiposDocumento: TDADataSource; + procedure DAClientDataModuleCreate(Sender: TObject); + public + function GetItems: IBizTipoDocumento; + function GetItem(const ID : Integer) : IBizTipoDocumento; + function NewItem : IBizTipoDocumento; + end; + +implementation + +{$R *.DFM} + +uses + FactuGES_Intf, uDataModuleConexion, uDataTableUtils, cxControls, + schTiposDocumentoClient_Intf; + +{ TDataModuleTiposDocumento } + +procedure TDataModuleTiposDocumento.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmConexion.Channel; + RORemoteService.Message := dmConexion.Message; +end; + +function TDataModuleTiposDocumento.GetItems: IBizTipoDocumento; +var + ATipoDocumento : TDAMemDataTable; +begin + ShowHourglassCursor; + try + ATipoDocumento := CloneDataTable(tbl_TiposDocumento); + ATipoDocumento.BusinessRulesID := BIZ_CLIENT_TIPOS_DOCUMENTO; + + Result := (ATipoDocumento as IBizTipoDocumento); + finally + HideHourglassCursor; + end; +end; + +function TDataModuleTiposDocumento.NewItem: IBizTipoDocumento; +begin + Result := GetItem(ID_NULO) +end; + +function TDataModuleTiposDocumento.GetItem(const ID: Integer): IBizTipoDocumento; +var + Condicion: TDAWhereExpression; +begin + ShowHourglassCursor; + try + Result := Self.GetItems; + + with Result.DataTable.DynamicWhere do + begin + // (ID = :ID) + Condicion := NewBinaryExpression(NewField('', fld_TiposDocumentoID), NewConstant(ID, datInteger), dboEqual); + + if IsEmpty then + Expression := Condicion + else + Expression := NewBinaryExpression(Expression, Condicion, dboAnd); + end; + + finally + HideHourglassCursor; + end; +end; + +end. diff --git a/Source/Modulos/TiposDocumento/Model/Data/uIDataModuleTiposDocumento.pas b/Source/Modulos/TiposDocumento/Model/Data/uIDataModuleTiposDocumento.pas new file mode 100644 index 0000000..d718114 --- /dev/null +++ b/Source/Modulos/TiposDocumento/Model/Data/uIDataModuleTiposDocumento.pas @@ -0,0 +1,42 @@ +{ +=============================================================================== + Copyright (©) 2007. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los términos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versión: + Versión actual: 1.0.0 + Fecha versión actual: +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uIDataModuleTiposDocumento; + +interface + +uses + uBizTiposDocumento; + +type + IDataModuleTiposDocumento = interface + ['{7352F969-3F55-4D44-B67D-F9EF47AF4943}'] + function GetItems: IBizTipoDocumento; + function GetItem(const ID : Integer) : IBizTipoDocumento; + function NewItem : IBizTipoDocumento; + + end; + +implementation + +end. diff --git a/Source/Modulos/TiposDocumento/Model/TiposDocumento_model.dpk b/Source/Modulos/TiposDocumento/Model/TiposDocumento_model.dpk new file mode 100644 index 0000000000000000000000000000000000000000..21f90da69cb058d5bc2762c0f8daef8a97cdf8cb GIT binary patch literal 923 zcmaKrO^=%}5Qck3;y?JX(n?hoHBt|idNO#R)*3sqo$O{+DRRJVX$eq1_Ry;Tz2F2k z>9*m3M~~-yXFQnNq~FaKi*#OBEveG}V9T!B9jeS0AAHaEe%(m)dePYS_ZVYFV~*Y* zW2Hc9D!4*|I}!-NV1pSFQRD!DU>#E)i75jfG;jh$ZMnt|6Q#*YNDYKwjb|ppj}YF? z-b{p;scjMncE)(Dw4}p(l8F`Y7f92DKH{;}Ic)d=ZB9OpCI6sHN z5fHke1m?3Ujl;W0;sl0fPJVj30)h#Vpq}9d%VURAq2uuGCDnif2H`MKJzFG{179bK zJ_1_0q0$7$5MTx9=H1)zInfoPA=SZ}GICP;USogs`S9_4522 + + + {82fe21d8-609d-444d-879e-4d9e1c291607} + TiposDocumento_model.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\TiposDocumento_model.bpl + + + 7.0 + False + False + 0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Release\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + RELEASE + + + 7.0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + + + Delphi.Personality + Package + +FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0TiposDocumento_model.dpk + + + + + MainSource + + + + + + + + + + + + + + + + + + + diff --git a/Source/Modulos/TiposDocumento/Model/schTiposDocumentoClient_Intf.pas b/Source/Modulos/TiposDocumento/Model/schTiposDocumentoClient_Intf.pas new file mode 100644 index 0000000..89a1c7e --- /dev/null +++ b/Source/Modulos/TiposDocumento/Model/schTiposDocumentoClient_Intf.pas @@ -0,0 +1,134 @@ +unit schTiposDocumentoClient_Intf; + +interface + +uses + Classes, DB, schBase_Intf, SysUtils, uROClasses, uDAInterfaces, uDADataTable, FmtBCD, uROXMLIntf; + +const + { Data table rules ids + Feel free to change them to something more human readable + but make sure they are unique in the context of your application } + RID_TiposDocumento = '{A199C235-5C39-42C1-99AA-D4BC2211F6EE}'; + + { Data table names } + nme_TiposDocumento = 'TiposDocumento'; + + { TiposDocumento fields } + fld_TiposDocumentoID = 'ID'; + fld_TiposDocumentoDESCRIPCION = 'DESCRIPCION'; + + { TiposDocumento field indexes } + idx_TiposDocumentoID = 0; + idx_TiposDocumentoDESCRIPCION = 1; + +type + { ITiposDocumento } + ITiposDocumento = interface(IDAStronglyTypedDataTable) + ['{BF70DBB3-DDC6-42E7-821C-1A2A7EE4977B}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetIDIsNull: Boolean; + procedure SetIDIsNull(const aValue: Boolean); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetDESCRIPCIONIsNull: Boolean; + procedure SetDESCRIPCIONIsNull(const aValue: Boolean); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property DESCRIPCIONIsNull: Boolean read GetDESCRIPCIONIsNull write SetDESCRIPCIONIsNull; + end; + + { TTiposDocumentoDataTableRules } + TTiposDocumentoDataTableRules = class(TIntfObjectDADataTableRules, ITiposDocumento) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetIDIsNull: Boolean; virtual; + procedure SetIDIsNull(const aValue: Boolean); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetDESCRIPCIONIsNull: Boolean; virtual; + procedure SetDESCRIPCIONIsNull(const aValue: Boolean); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property DESCRIPCIONIsNull: Boolean read GetDESCRIPCIONIsNull write SetDESCRIPCIONIsNull; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants, uROBinaryHelpers; + +{ TTiposDocumentoDataTableRules } +constructor TTiposDocumentoDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TTiposDocumentoDataTableRules.Destroy; +begin + inherited; +end; + +function TTiposDocumentoDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_TiposDocumentoID].AsInteger; +end; + +procedure TTiposDocumentoDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_TiposDocumentoID].AsInteger := aValue; +end; + +function TTiposDocumentoDataTableRules.GetIDIsNull: boolean; +begin + result := DataTable.Fields[idx_TiposDocumentoID].IsNull; +end; + +procedure TTiposDocumentoDataTableRules.SetIDIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_TiposDocumentoID].AsVariant := Null; +end; + +function TTiposDocumentoDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_TiposDocumentoDESCRIPCION].AsString; +end; + +procedure TTiposDocumentoDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_TiposDocumentoDESCRIPCION].AsString := aValue; +end; + +function TTiposDocumentoDataTableRules.GetDESCRIPCIONIsNull: boolean; +begin + result := DataTable.Fields[idx_TiposDocumentoDESCRIPCION].IsNull; +end; + +procedure TTiposDocumentoDataTableRules.SetDESCRIPCIONIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_TiposDocumentoDESCRIPCION].AsVariant := Null; +end; + + +initialization + RegisterDataTableRules(RID_TiposDocumento, TTiposDocumentoDataTableRules); + +end. diff --git a/Source/Modulos/TiposDocumento/Model/schTiposDocumentoServer_Intf.pas b/Source/Modulos/TiposDocumento/Model/schTiposDocumentoServer_Intf.pas new file mode 100644 index 0000000..9ef6fba --- /dev/null +++ b/Source/Modulos/TiposDocumento/Model/schTiposDocumentoServer_Intf.pas @@ -0,0 +1,143 @@ +unit schTiposDocumentoServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, FmtBCD, uROXMLIntf, schTiposDocumentoClient_Intf; + +const + { Delta rules ids + Feel free to change them to something more human readable + but make sure they are unique in the context of your application } + RID_TiposDocumentoDelta = '{2BEC1ADF-406D-406A-8FEC-09FF6995EC1D}'; + +type + { ITiposDocumentoDelta } + ITiposDocumentoDelta = interface(ITiposDocumento) + ['{2BEC1ADF-406D-406A-8FEC-09FF6995EC1D}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldDESCRIPCIONValue : String; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + end; + + { TTiposDocumentoBusinessProcessorRules } + TTiposDocumentoBusinessProcessorRules = class(TDABusinessProcessorRules, ITiposDocumento, ITiposDocumentoDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetIDIsNull: Boolean; virtual; + function GetOldIDValue: Integer; virtual; + function GetOldIDIsNull: Boolean; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + procedure SetIDIsNull(const aValue: Boolean); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetDESCRIPCIONIsNull: Boolean; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONIsNull: Boolean; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + procedure SetDESCRIPCIONIsNull(const aValue: Boolean); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property IDIsNull : Boolean read GetIDIsNull write SetIDIsNull; + property OldID : Integer read GetOldIDValue; + property OldIDIsNull : Boolean read GetOldIDIsNull; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property DESCRIPCIONIsNull : Boolean read GetDESCRIPCIONIsNull write SetDESCRIPCIONIsNull; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldDESCRIPCIONIsNull : Boolean read GetOldDESCRIPCIONIsNull; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers, uDAInterfaces; + +{ TTiposDocumentoBusinessProcessorRules } +constructor TTiposDocumentoBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TTiposDocumentoBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TTiposDocumentoBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_TiposDocumentoID]; +end; + +function TTiposDocumentoBusinessProcessorRules.GetIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_TiposDocumentoID]); +end; + +function TTiposDocumentoBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_TiposDocumentoID]; +end; + +function TTiposDocumentoBusinessProcessorRules.GetOldIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_TiposDocumentoID]); +end; + +procedure TTiposDocumentoBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_TiposDocumentoID] := aValue; +end; + +procedure TTiposDocumentoBusinessProcessorRules.SetIDIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_TiposDocumentoID] := Null; +end; + +function TTiposDocumentoBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_TiposDocumentoDESCRIPCION]; +end; + +function TTiposDocumentoBusinessProcessorRules.GetDESCRIPCIONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_TiposDocumentoDESCRIPCION]); +end; + +function TTiposDocumentoBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_TiposDocumentoDESCRIPCION]; +end; + +function TTiposDocumentoBusinessProcessorRules.GetOldDESCRIPCIONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_TiposDocumentoDESCRIPCION]); +end; + +procedure TTiposDocumentoBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_TiposDocumentoDESCRIPCION] := aValue; +end; + +procedure TTiposDocumentoBusinessProcessorRules.SetDESCRIPCIONIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_TiposDocumentoDESCRIPCION] := Null; +end; + + +initialization + RegisterBusinessProcessorRules(RID_TiposDocumentoDelta, TTiposDocumentoBusinessProcessorRules); + +end. diff --git a/Source/Modulos/TiposDocumento/Model/uBizTiposDocumento.pas b/Source/Modulos/TiposDocumento/Model/uBizTiposDocumento.pas new file mode 100644 index 0000000..82c842e --- /dev/null +++ b/Source/Modulos/TiposDocumento/Model/uBizTiposDocumento.pas @@ -0,0 +1,103 @@ +{ +=============================================================================== + Copyright (©) 2007. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los términos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versión: + Versión actual: 1.0.0 + Fecha versión actual: +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uBizTiposDocumento; + +interface + +uses + uDAInterfaces, uDADataTable, uDBSelectionListUtils, schTiposDocumentoClient_Intf; + +const + BIZ_CLIENT_TIPOS_DOCUMENTO = 'Client.TiposDocumento'; + +type + IBizTipoDocumento = interface(ITiposDocumento) + ['{4F74FAFE-D9A3-40FB-A13B-77D8ED3F2AE6}'] + function EsNuevo : Boolean; + end; + + TBizTipoDocumento = class(TTiposDocumentoDataTableRules, IBizTipoDocumento, ISeleccionable) + protected + FSeleccionableInterface : ISeleccionable; + procedure OnNewRecord(Sender: TDADataTable); override; + procedure AfterOpen(Sender: TDADataTable); override; + public + procedure IniciarValoresTipoDocumentoNuevo; + function EsNuevo : Boolean; + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + property SeleccionableInterface : ISeleccionable read FSeleccionableInterface write FSeleccionableInterface + implements ISeleccionable; + end; + +implementation + +{ TBizTipoDocumento } + +uses + SysUtils, uDataTableUtils; + +procedure TBizTipoDocumento.AfterOpen(Sender: TDADataTable); +begin + inherited; + DataTable.Sort([fld_TiposDocumentoDESCRIPCION], [sdAscending]); +end; + +constructor TBizTipoDocumento.Create(aDataTable: TDADataTable); +begin + inherited; + FSeleccionableInterface := TSeleccionable.Create(aDataTable); +end; + +destructor TBizTipoDocumento.Destroy; +begin + FSeleccionableInterface := NIL; + inherited; +end; + +function TBizTipoDocumento.EsNuevo: Boolean; +begin + Result := (ID < 0); +end; + +procedure TBizTipoDocumento.IniciarValoresTipoDocumentoNuevo; +begin + // +end; + +procedure TBizTipoDocumento.OnNewRecord(Sender: TDADataTable); +begin + inherited; + ID := GetRecNo; // -1, -2, -3... + IniciarValoresTipoDocumentoNuevo; +end; + +initialization + RegisterDataTableRules(BIZ_CLIENT_TIPOS_DOCUMENTO, TBizTipoDocumento); + +finalization + +end. + diff --git a/Source/Modulos/TiposDocumento/Plugin/TiposDocumento_plugin.dpk b/Source/Modulos/TiposDocumento/Plugin/TiposDocumento_plugin.dpk new file mode 100644 index 0000000000000000000000000000000000000000..c3297f698abd90c9e996bfd3cfc31fd5e273237d GIT binary patch literal 746 zcmZva!D{0$5Qg_`@H^;GC@f3Zz#bO%G`7a>5Lq&kk~X~*x!a z+4x`$-^~2_HBwiU&&88tw(8m)Z_C4rYxeC!S0A3L=2sYm!P}K)Ul+aGy$>-6N+tU_ z#>Swwq@-a=dJ-uma07y=B=LY_v`$GTYO26Hi;^QZTWR5LqLk%ITjU%p%uK~M7_Vk+ zp<)nbn?*`|Vlp*W)A2vGsT}2h$Wli4Fj$?-HmDP!Zl^s?el^Gx&lx7DQO5ZB90n5P zv>}f3S&fBwm1xNDXy&A6w>fg)T%-Ab8_=V}X`^v?x0)`(7WG<>Ueo!z*xVpzYXhaIj*_CWW!eve7V#< z6%{+@gLF-E3|&`OWwEc?W@cya<+XBueBT)_+h*Ulb?y2~*_Zaw)&7wUbw$;9n}^ZY dze=oX*!9KCqAPaS?Cnz1yVrKj<01^c`~?L9+KB)F literal 0 HcmV?d00001 diff --git a/Source/Modulos/TiposDocumento/Plugin/TiposDocumento_plugin.dproj b/Source/Modulos/TiposDocumento/Plugin/TiposDocumento_plugin.dproj new file mode 100644 index 0000000..5a293a0 --- /dev/null +++ b/Source/Modulos/TiposDocumento/Plugin/TiposDocumento_plugin.dproj @@ -0,0 +1,546 @@ + + + + {139324a2-0c57-446d-aebd-edd9578e22fd} + TiposDocumento_plugin.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\TiposDocumento_plugin.bpl + + + 7.0 + False + False + 0 + .\ + .\ + .\ + ..\..\..\..\Output\Release\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + RELEASE + + + 7.0 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + + + Delphi.Personality + Package + +FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0TiposDocumento_plugin.dpk + + + + + MainSource + + + + + + + + + + + +
PluginTiposDocumento
+
+
+
+ diff --git a/Source/Modulos/TiposDocumento/Plugin/uPluginTiposDocumento.dfm b/Source/Modulos/TiposDocumento/Plugin/uPluginTiposDocumento.dfm new file mode 100644 index 0000000..bf7d240 --- /dev/null +++ b/Source/Modulos/TiposDocumento/Plugin/uPluginTiposDocumento.dfm @@ -0,0 +1,108 @@ +object PluginTiposDocumento: TPluginTiposDocumento + OldCreateOrder = True + DefaultAction = actTiposDocumento + Description = 'Tipos de IVA' + ModuleMenu = MainMenu + ModuleName = 'Tipos de documento' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software S.L.' + Version = '1.0.0' + Height = 234 + Width = 459 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000011E4944415478DA + 6364A010ACCA60F80FA2C366303062936724CD384CC3FD2AD63030B3F132AC6F + 72C76A09D916800C5FF7218261715F22C3D7EBD31998B86418762C9C82610959 + 1620BB7C612DD0E529397039744B48B600D97098CBD101B2252459802D58D0C1 + BF6F4F18AE5DDEC0F0E40624E289B600D9E597B7B933A868E7E0349C8307C2BF + 7386481F10132C30C3279D8860287359C1F0E30B03D817042D202558602EEFDA + 13C11024B0827010E14B2DB80C87B99C602453122C049329A5C182AC8E119BE1 + A4A6166C2EC76A01B58205AB05D40C160C0BA8915A705A408B60C1EA03B7D000 + AA050BCE38F088CFC16B38292EC7B000DD124A8205A705C8C14549B0E0B50066 + 898A09F9C142D0029825321A94198ED702982594180E0200B0F2324A4753EBA6 + 0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = SmallImages + Left = 40 + Top = 72 + object actTiposDocumento: TAction + Category = 'Datos' + Caption = 'Tipos de documento' + ImageIndex = 1 + OnExecute = actTiposDocumentoExecute + end + end + object MainMenu: TMainMenu + Images = LargeImages + Left = 40 + Top = 16 + object Ventas1: TMenuItem + Caption = 'Datos' + object TiposDocumento: TMenuItem + Tag = 313 + Action = actTiposDocumento + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000C14944415478DA + 63642001ACCA60F81F36838111598C9158CD111111FF17F72532AC6F72674036 + 842803403607D6ED645858EBCE101215C0B06BF506B821040D80D9FCF7D76786 + 1F7797303071C930FCFBF6046E082331365FDEE6CEA0A41800D7EC51FD82615A + CA09862D5BF0B80097CDF7EE6F00CB8334D76DC0E102743F63B319A4196B1810 + 6B33D65820C6CFC89A510C20D566140348F133860130CDA4DA8CE102B750D26C + C608039821C4DA8C3316544C88D78C351D340530FC275633080000DE09BBE2B0 + 1D07420000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000001514944415478DA + 6364A0225895C1F03F6C0603233E358CC41A468C6581952B19D6B78733E0B394 + 2A16822C5BF7218261715F2298BFBEC91DA7A5145B08F31903AB00C3E56DEE0C + BA5E3B19BE5E9FCEB06BF506AC96526421B2653000B28C894B06CCDEB1700A86 + A5645B881E8CE896C100BAA5645988ECB385B5EE0CF1CD3BB15A0602574E4E61 + 787283016E29C916120A4674CB387820EC3B672096926421B1C1886CD98F2F0C + 701AE453A22DC4951A09F90C04B2E6583014199C20DE87E4062308C07C46741C + 92138C5D7B2218CA5C56605846D042525323AE604456C7488C65940623410BA9 + 911A892E4BA9951A71851C232ECBA8198C582DA4766AC46B212D52234E0BE911 + 8CD87D58B79328CB884D8D44C5A15B68004D8211AB85304B3DE273A81E8C382D + 44B79492D448B485304B653418A8168C042D8459AA62429D6024CA42649F52CB + 328216C22CA59665200000B1F5433DEC7F85AD0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/Source/Modulos/TiposDocumento/Plugin/uPluginTiposDocumento.pas b/Source/Modulos/TiposDocumento/Plugin/uPluginTiposDocumento.pas new file mode 100644 index 0000000..db53590 --- /dev/null +++ b/Source/Modulos/TiposDocumento/Plugin/uPluginTiposDocumento.pas @@ -0,0 +1,73 @@ +unit uPluginTiposDocumento; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCTiposDocumento = interface(IInterface) + ['{14A4B6F3-2D05-44BE-BF61-3CD770905FB7}'] + end; + + TPluginTiposDocumento = class(TModuleController, IMCTiposDocumento) + actTiposDocumento: TAction; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + SmallImages: TPngImageList; + Ventas1: TMenuItem; + TiposDocumento: TMenuItem; + procedure actTiposDocumentoExecute(Sender: TObject); + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, SysUtils, + uTiposDocumentoController, uBizTiposDocumento, uTiposDocumentoViewRegister; + +function GetModule : TModuleController; +begin + Result := TPluginTiposDocumento.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +procedure TPluginTiposDocumento.actTiposDocumentoExecute(Sender: TObject); +var + ATiposDocumentoController : ITiposDocumentoController; + ATiposDocumento : IBizTipoDocumento; +begin + ATiposDocumentoController := TTiposDocumentoController.Create; + ATiposDocumento := (ATiposDocumentoController.BuscarTodos as IBizTipoDocumento); + ATiposDocumentoController.VerTodos(ATiposDocumento); +end; + +constructor TPluginTiposDocumento.Create(AOwner: TComponent); +begin + inherited; + uTiposDocumentoViewRegister.RegisterViews; +end; + +destructor TPluginTiposDocumento.Destroy; +begin + uTiposDocumentoViewRegister.UnregisterViews; + inherited; +end; + +initialization + RegisterModuleClass(TPluginTiposDocumento); + +finalization + UnRegisterModuleClass(TPluginTiposDocumento); + +end. diff --git a/Source/Servicios/FactuGES.RODL b/Source/Servicios/FactuGES.RODL index 16b2953..298d695 100644 --- a/Source/Servicios/FactuGES.RODL +++ b/Source/Servicios/FactuGES.RODL @@ -1232,6 +1232,15 @@ + + + + + + + + + diff --git a/Source/Servicios/FactuGES_Intf.pas b/Source/Servicios/FactuGES_Intf.pas index 89e14cb..0a5e4ec 100644 --- a/Source/Servicios/FactuGES_Intf.pas +++ b/Source/Servicios/FactuGES_Intf.pas @@ -61,6 +61,7 @@ const IsrvInfVentasArticulo_IID : TGUID = '{669DBB17-90F9-4346-AD92-B2A85D2A6200}'; IsrvInfMargenArticulo_IID : TGUID = '{E5A8F350-B355-476A-9674-412BA01BDA2B}'; IsrvFacturasProforma_IID : TGUID = '{FC9178C7-1213-4735-9FC1-C20F15C7B424}'; + IsrvTiposDocumento_IID : TGUID = '{7636B6A8-368C-4345-967F-004DB7C56720}'; { Event ID's } @@ -104,6 +105,7 @@ type IsrvInfVentasArticulo = interface; IsrvInfMargenArticulo = interface; IsrvFacturasProforma = interface; + IsrvTiposDocumento = interface; TRdxEmpresasArray = class; TIntegerArray = class; @@ -1066,6 +1068,23 @@ type function DarListaAnos: StringArray; end; + { IsrvTiposDocumento } + IsrvTiposDocumento = interface(IDataAbstractService) + ['{7636B6A8-368C-4345-967F-004DB7C56720}'] + end; + + { CosrvTiposDocumento } + CosrvTiposDocumento = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvTiposDocumento; + end; + + { TsrvTiposDocumento_Proxy } + TsrvTiposDocumento_Proxy = class(TDataAbstractService_Proxy, IsrvTiposDocumento) + protected + function __GetInterfaceName:string; override; + + end; + implementation uses @@ -3456,6 +3475,18 @@ begin end end; +{ CosrvTiposDocumento } + +class function CosrvTiposDocumento.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvTiposDocumento; +begin + result := TsrvTiposDocumento_Proxy.Create(aMessage, aTransportChannel); +end; + +function TsrvTiposDocumento_Proxy.__GetInterfaceName:string; +begin + result := 'srvTiposDocumento'; +end; + initialization RegisterROClass(TRdxLoginInfo); RegisterROClass(TRdxEmpresasArray); @@ -3498,6 +3529,7 @@ initialization RegisterProxyClass(IsrvInfVentasArticulo_IID, TsrvInfVentasArticulo_Proxy); RegisterProxyClass(IsrvInfMargenArticulo_IID, TsrvInfMargenArticulo_Proxy); RegisterProxyClass(IsrvFacturasProforma_IID, TsrvFacturasProforma_Proxy); + RegisterProxyClass(IsrvTiposDocumento_IID, TsrvTiposDocumento_Proxy); finalization @@ -3542,5 +3574,6 @@ finalization UnregisterProxyClass(IsrvInfVentasArticulo_IID); UnregisterProxyClass(IsrvInfMargenArticulo_IID); UnregisterProxyClass(IsrvFacturasProforma_IID); + UnregisterProxyClass(IsrvTiposDocumento_IID); end. diff --git a/Source/Servicios/FactuGES_Invk.pas b/Source/Servicios/FactuGES_Invk.pas index 6e73b86..ac1f1bf 100644 --- a/Source/Servicios/FactuGES_Invk.pas +++ b/Source/Servicios/FactuGES_Invk.pas @@ -402,6 +402,14 @@ type procedure Invoke_DarListaAnos(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); end; + TsrvTiposDocumento_Invoker = class(TDataAbstractService_Invoker) + private + protected + public + constructor Create; override; + published + end; + implementation uses @@ -3171,5 +3179,13 @@ begin end; end; +{ TsrvTiposDocumento_Invoker } + +constructor TsrvTiposDocumento_Invoker.Create; +begin + inherited Create; + FAbstract := False; +end; + initialization end. diff --git a/Source/Servicios/RODLFile.res b/Source/Servicios/RODLFile.res index fddd0847d62d5164d6e7f0c026444204f9f45c60..a38a018ae4b2d2dd27dd52480772335bcb488b11 100644 GIT binary patch delta 135 zcmX@Qjk#wh^8^JZn>!nobWTm4U?w;@!Iah1B|o_|H#M&$Ur8a<)5TV)+R@C&)zsX= zP}khp+(g&J3`jT{yBX*jo4A-6I~%!~8X7rIW~@-1yj~|=#oWx;%*o8rLf6>L!dchE n*u+%V(#+gV*TBHU#mU^+)Xdz-V6vi<$Yfp}i_Lzgz6$^V%J(Kj delta 20 ccmeC#$$WGh^8^K^ueUZT>73d;_4IcE0A-~LD*ylh diff --git a/Source/Servidor/FactuGES_Server.RES b/Source/Servidor/FactuGES_Server.RES index aca08ab8120ba12e1eaa3adaed40886a58cfafb2..8f367b331b1ed7049106d19c389f9d8a0e21e3af 100644 GIT binary patch delta 109 zcmZ3om2t&Z#tnBO7}rd`8zB!Q|3;W{vNJF;XdHd!}Ho85xJiouk@XmVnd FI{=C;8>9dL diff --git a/Source/Servidor/FactuGES_Server.dpr b/Source/Servidor/FactuGES_Server.dpr index b30bb3f..cb9f857 100644 --- a/Source/Servidor/FactuGES_Server.dpr +++ b/Source/Servidor/FactuGES_Server.dpr @@ -165,10 +165,13 @@ uses schFacturasProformaServer_Intf in '..\Modulos\Facturas proforma\Model\schFacturasProformaServer_Intf.pas', schContactosClient_Intf in '..\Modulos\Contactos\Model\schContactosClient_Intf.pas', schContactosServer_Intf in '..\Modulos\Contactos\Model\schContactosServer_Intf.pas', - schPresupuestosClienteClient_Intf in '..\Modulos\Presupuestos de cliente\Model\schPresupuestosClienteClient_Intf.pas', - schPresupuestosClienteServer_Intf in '..\Modulos\Presupuestos de cliente\Model\schPresupuestosClienteServer_Intf.pas', schPedidosClienteClient_Intf in '..\Modulos\Pedidos de cliente\Model\schPedidosClienteClient_Intf.pas', - schPedidosClienteServer_Intf in '..\Modulos\Pedidos de cliente\Model\schPedidosClienteServer_Intf.pas'; + schPedidosClienteServer_Intf in '..\Modulos\Pedidos de cliente\Model\schPedidosClienteServer_Intf.pas', + srvTiposDocumento_Impl in '..\Modulos\TiposDocumento\Servidor\srvTiposDocumento_Impl.pas' {srvTiposDocumento: TDataAbstractService}, + schTiposDocumentoClient_Intf in '..\Modulos\TiposDocumento\Model\schTiposDocumentoClient_Intf.pas', + schTiposDocumentoServer_Intf in '..\Modulos\TiposDocumento\Model\schTiposDocumentoServer_Intf.pas', + schPresupuestosClienteClient_Intf in '..\Modulos\Presupuestos de cliente\Model\schPresupuestosClienteClient_Intf.pas', + schPresupuestosClienteServer_Intf in '..\Modulos\Presupuestos de cliente\Model\schPresupuestosClienteServer_Intf.pas'; {$R *.res} {$R ..\Servicios\RODLFile.res} diff --git a/Source/Servidor/FactuGES_Server.dproj b/Source/Servidor/FactuGES_Server.dproj index cc1f17a..b2acc9d 100644 --- a/Source/Servidor/FactuGES_Server.dproj +++ b/Source/Servidor/FactuGES_Server.dproj @@ -35,7 +35,7 @@ Delphi.Personality - FalseTrueFalse/standaloneTrueFalse4360FalseFalseFalseFalseFalse308212524.3.6.04.3.6.0viernes, 17 de enero de 2014 16:53 + FalseTrueFalse/standaloneTrueFalse4370FalseFalseFalseFalseFalse308212524.3.7.04.3.7.0viernes, 07 de febrero de 2014 13:34 ExpressPrinting System by Developer Express Inc. FactuGES_Server.dprFalse @@ -356,6 +356,12 @@
srvTiposIVA
TDataAbstractService + + + +
srvTiposDocumento
+ TDataAbstractService +
diff --git a/Source/Servidor/FactuGES_Server.rc b/Source/Servidor/FactuGES_Server.rc index e6bad20..fa556c7 100644 --- a/Source/Servidor/FactuGES_Server.rc +++ b/Source/Servidor/FactuGES_Server.rc @@ -1,7 +1,7 @@ MAINICON ICON "C:\Codigo\Resources\Iconos\Servidor.ico" 1 VERSIONINFO -FILEVERSION 4,3,6,0 -PRODUCTVERSION 4,3,6,0 +FILEVERSION 4,3,7,0 +PRODUCTVERSION 4,3,7,0 FILEFLAGSMASK 0x3FL FILEFLAGS 0x00L FILEOS 0x40004L @@ -12,9 +12,9 @@ BEGIN BEGIN BLOCK "0C0A04E4" BEGIN - VALUE "FileVersion", "4.3.6.0\0" - VALUE "ProductVersion", "4.3.6.0\0" - VALUE "CompileDate", "jueves, 06 de febrero de 2014 18:52\0" + VALUE "FileVersion", "4.3.7.0\0" + VALUE "ProductVersion", "4.3.7.0\0" + VALUE "CompileDate", "viernes, 07 de febrero de 2014 16:32\0" END END BLOCK "VarFileInfo"